<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://spectrum.alioth.net/doc/index.php?action=history&amp;feed=atom&amp;title=Gu%C3%ADa</id>
	<title>Guía - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://spectrum.alioth.net/doc/index.php?action=history&amp;feed=atom&amp;title=Gu%C3%ADa"/>
	<link rel="alternate" type="text/html" href="https://spectrum.alioth.net/doc/index.php?title=Gu%C3%ADa&amp;action=history"/>
	<updated>2026-05-07T20:34:43Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://spectrum.alioth.net/doc/index.php?title=Gu%C3%ADa&amp;diff=335&amp;oldid=prev</id>
		<title>Winston at 14:31, 25 April 2011</title>
		<link rel="alternate" type="text/html" href="https://spectrum.alioth.net/doc/index.php?title=Gu%C3%ADa&amp;diff=335&amp;oldid=prev"/>
		<updated>2011-04-25T14:31:29Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 15:31, 25 April 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l244&quot;&gt;Line 244:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 244:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  10%listen #4,2000&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  10%listen #4,2000&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Cuando ejecuta esta línea, el Spectrum empieza a escuchar al puerto 2000 (tcp). &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Para &lt;/del&gt;necesitamos hacer un poco más para aceptar conexiones: tenemos que usar el comando &amp;quot;%accept&amp;quot;. Pero %accept va a esperar para una conexion, y va a parar la ejecución de nuestro programa. Por eso hay un canal de control. Se abre así:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Cuando ejecuta esta línea, el Spectrum empieza a escuchar al puerto 2000 (tcp). &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pero &lt;/ins&gt;necesitamos hacer un poco más para aceptar conexiones: tenemos que usar el comando &amp;quot;%accept&amp;quot;. Pero %accept va a esperar para una conexion, y va a parar la ejecución de nuestro programa. Por eso hay un canal de control. Se abre así:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  20%control #5&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  20%control #5&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Winston</name></author>
	</entry>
	<entry>
		<id>https://spectrum.alioth.net/doc/index.php?title=Gu%C3%ADa&amp;diff=329&amp;oldid=prev</id>
		<title>Winston: /* %aload */</title>
		<link rel="alternate" type="text/html" href="https://spectrum.alioth.net/doc/index.php?title=Gu%C3%ADa&amp;diff=329&amp;oldid=prev"/>
		<updated>2011-04-11T20:33:34Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;%aload&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:33, 11 April 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l117&quot;&gt;Line 117:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 117:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  %aload &amp;quot;codigomaquina&amp;quot; CODE 32768&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  %aload &amp;quot;codigomaquina&amp;quot; CODE 32768&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;La diferencia entre %load y %aload es &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;similar de &lt;/del&gt;un fichero &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;guardado en cinta con y &lt;/del&gt;sin cabeceras. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Efectivamente, %aload es para cargar &lt;/del&gt;ficheros &amp;quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;sin cabeceras&lt;/del&gt;&amp;quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. Por ejempo&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;si has escrito &lt;/del&gt;un &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;programa &lt;/del&gt;en &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ensemblador &lt;/del&gt;en &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;tu PC sin &lt;/del&gt;los &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cabeceras que usa &lt;/del&gt;el &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Spectranet&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;puedes usar &lt;/del&gt;%aload &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;para &lt;/del&gt;cargar &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;este &lt;/del&gt;fichero. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;(Las cabeceras &lt;/del&gt;que &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;escribe el comando &lt;/del&gt;%&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;save son identicos de las de &lt;/del&gt;un fichero &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;del tipo TAP)&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;La diferencia entre %load y %aload es &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;que &amp;quot;%aload&amp;quot; efectivamente carga &lt;/ins&gt;un fichero &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;quot;&lt;/ins&gt;sin cabeceras&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;quot;&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Los &lt;/ins&gt;ficheros &amp;quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;normales&lt;/ins&gt;&amp;quot; &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;son del formato tap (es decir&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;tienen los mismos cabeceras que &lt;/ins&gt;un &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;fichero guardado &lt;/ins&gt;en &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;una cinta, contienen la dirección &lt;/ins&gt;en &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;que se necesita cargar &lt;/ins&gt;los &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;datos, &lt;/ins&gt;el &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;tipo de datos&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;por ejemplo &amp;quot;Program&amp;quot; o &amp;quot;Bytes&amp;quot;). El comando &lt;/ins&gt;%aload &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;puede &lt;/ins&gt;cargar &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cualquier &lt;/ins&gt;fichero. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Por eso, siempre tienes que poner la dirección en que los datos debe cargarse porque no hay cabecera &lt;/ins&gt;que &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;especifica esta información.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Entonces &lt;/ins&gt;%&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;aload es algo imprendiscible cuando quieres cargar &lt;/ins&gt;un fichero &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;que ha creado un ensemblador en un PC&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== %tapein ====&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==== %tapein ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Winston</name></author>
	</entry>
	<entry>
		<id>https://spectrum.alioth.net/doc/index.php?title=Gu%C3%ADa&amp;diff=327&amp;oldid=prev</id>
		<title>Winston at 20:18, 11 April 2011</title>
		<link rel="alternate" type="text/html" href="https://spectrum.alioth.net/doc/index.php?title=Gu%C3%ADa&amp;diff=327&amp;oldid=prev"/>
		<updated>2011-04-11T20:18:57Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:18, 11 April 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l260&quot;&gt;Line 260:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 260:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;El stream #4 es nuestro stream-de-escuchar. El variable &amp;quot;chan&amp;quot; contiene el número del stream nuevo que queremos abrir.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;El stream #4 es nuestro stream-de-escuchar. El variable &amp;quot;chan&amp;quot; contiene el número del stream nuevo que queremos abrir.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=== Código máquina ===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Si quieres escribir programas en asm o C, hay un guía (en inglés) con ejemplos. Se usa los sockets en la misma manera de los de UNIX o Windows, si ya sabes cómo escribir programas de la red para sistemas operativos modernos, no tendrás ningún problema. Si nunca has usado la librería de BSD sockets, hay tutoriales en esta página.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Software|La guía está aquí]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Spectranet]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Spectranet]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Winston</name></author>
	</entry>
	<entry>
		<id>https://spectrum.alioth.net/doc/index.php?title=Gu%C3%ADa&amp;diff=326&amp;oldid=prev</id>
		<title>Winston: Created page with &quot;== Para empezar ==  ¿Qué tipo de maquina tienes?  * Si tienes el gomas, Spectrum+, Spectrum 128K con disipador o el Spectrum +2 gris, quita el jumper J3 (el jumper más cerca d...&quot;</title>
		<link rel="alternate" type="text/html" href="https://spectrum.alioth.net/doc/index.php?title=Gu%C3%ADa&amp;diff=326&amp;oldid=prev"/>
		<updated>2011-04-11T20:13:34Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;== Para empezar ==  ¿Qué tipo de maquina tienes?  * Si tienes el gomas, Spectrum+, Spectrum 128K con disipador o el Spectrum +2 gris, quita el jumper J3 (el jumper más cerca d...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Para empezar ==&lt;br /&gt;
&lt;br /&gt;
¿Qué tipo de maquina tienes?&lt;br /&gt;
&lt;br /&gt;
* Si tienes el gomas, Spectrum+, Spectrum 128K con disipador o el Spectrum +2 gris, quita el jumper J3 (el jumper más cerca del puerto JTAG).&lt;br /&gt;
* Si tienes el +3 o +2 negro, necesitas instalar el jumper J3.&lt;br /&gt;
&lt;br /&gt;
Para las máquinas de 128K, necesitas usar el modo &amp;quot;USR 0&amp;quot; para usar las extensiones de BASIC (los +3 lo hace de forma automática. Se va a arreglar esto para los otros modelos de 128K en una actualización del firmware).&lt;br /&gt;
&lt;br /&gt;
=== Configuración ===&lt;br /&gt;
&lt;br /&gt;
La configuración por defecto es usar DHCP para configurar la dirección IP y DNS. Si no tienes un servidor de DHCP, desde ZX BASIC teclea:&lt;br /&gt;
&lt;br /&gt;
 %ifconfig&lt;br /&gt;
&lt;br /&gt;
También puedes tocar el NMI para entrar en el menú de configuración.&lt;br /&gt;
&lt;br /&gt;
=== Configuración de sistemas de ficheros ===&lt;br /&gt;
&lt;br /&gt;
Se necesita un servidor de ficheros (el tnfsd; es una tarea pendiente hacer un paquete de instalación para este programa). Hay un servidor de ficheros público disponible en vexed4.alioth.net. Para montarlo desde BASIC:&lt;br /&gt;
&lt;br /&gt;
 %mount 0,&amp;quot;vexed4.alioth.net&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Es probable que quieras montar un sistema de ficheros de forma automática. Puedes configurar el &amp;quot;automounter&amp;quot; usando este comando:&lt;br /&gt;
&lt;br /&gt;
 %fsconfig&lt;br /&gt;
&lt;br /&gt;
Aparecerá este menú:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fsconfig.jpg|thumb|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Pulsa la tecla &amp;quot;A&amp;quot; para añadir un nuevo sistema de ficheros. Por ejemplo, para usar &amp;quot;tnfs://vexed4.alioth.net&amp;quot; como sistema de ficheros por defecto:&lt;br /&gt;
&lt;br /&gt;
* Pulsa &amp;quot;A&amp;quot;, &amp;quot;Set a filesystem&amp;quot;&lt;br /&gt;
* Teclea &amp;quot;0&amp;quot; (y Enter) para seleccionar FS 0&lt;br /&gt;
* Teclea tnfs://vexed4.alioth.net&lt;br /&gt;
* Pulsa &amp;quot;D&amp;quot; para guardar los cambios.&lt;br /&gt;
&lt;br /&gt;
Cuando se resetea el Spectrum, se va a montar el servidor &amp;quot;vexed4.alioth.net&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Si hay problemas en montar el sistema de ficheros (por ejemplo, si el servidor &amp;quot;vexed4.alioth.net&amp;quot; ha dejado de funcionar), puedes pulsar BREAK mientras el Spectrum está tratando de montarlo para abortar la operación.&lt;br /&gt;
&lt;br /&gt;
== Guía breve a los comandos de BASIC ==&lt;br /&gt;
&lt;br /&gt;
=== Navegando el sistema de ficheros ===&lt;br /&gt;
&lt;br /&gt;
==== %mount ====&lt;br /&gt;
&lt;br /&gt;
%mount &amp;lt;fsnum&amp;gt;,&amp;quot;&amp;lt;url&amp;gt;&amp;quot; - Montar un sistema de ficheros. Ejemplos:&lt;br /&gt;
&lt;br /&gt;
 %mount 0,&amp;quot;vexed4.alioth.net&amp;quot;&lt;br /&gt;
 %mount 0,&amp;quot;192.168.0.1&amp;quot;&lt;br /&gt;
 %mount 1,&amp;quot;tnfs://192.168.0.1&amp;quot;&lt;br /&gt;
 %mount 3,&amp;quot;tnfs://example.com/games&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El URL funciona como los de la Web. Si hubiera un modulo de sistemas de ficheros para el DivIDE, se podría teclear '''%mount 0,&amp;quot;ide://0&amp;quot;''' (o algo muy parecido).&lt;br /&gt;
&lt;br /&gt;
==== %umount ====&lt;br /&gt;
&lt;br /&gt;
%umount &amp;lt;fsnum&amp;gt; - Desconectar de un sistema de ficheros. Ejemplo:&lt;br /&gt;
&lt;br /&gt;
 %umount 0&lt;br /&gt;
&lt;br /&gt;
==== %cat ====&lt;br /&gt;
&lt;br /&gt;
%cat &amp;quot;&amp;lt;fsp&amp;gt;&amp;quot; - Mostrar los contenidos de un directorio. Ejemplos:&lt;br /&gt;
&lt;br /&gt;
 %cat&lt;br /&gt;
 %cat &amp;quot;foobar&amp;quot;&lt;br /&gt;
 %cat &amp;quot;0:/foo/bar/baz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
El &amp;quot;path&amp;quot; funciona como Unix. El separador entre los directorios es el &amp;quot;/&amp;quot;. &amp;quot;..&amp;quot; significa un directorio por arriba, &amp;quot;.&amp;quot; significa el directorio corriente.&lt;br /&gt;
&lt;br /&gt;
==== %cd ====&lt;br /&gt;
&lt;br /&gt;
%cd &amp;quot;&amp;lt;fsp&amp;gt;&amp;quot; - Cambiar el directorio. Ejemplos:&lt;br /&gt;
&lt;br /&gt;
 %cd &amp;quot;/&amp;quot;&lt;br /&gt;
 %cd &amp;quot;juegos&amp;quot;&lt;br /&gt;
 %cd &amp;quot;/programs/basic&amp;quot;&lt;br /&gt;
 %cd &amp;quot;..&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== %fs ====&lt;br /&gt;
&lt;br /&gt;
%fs &amp;lt;fsnum&amp;gt; - Cambiar el sistema de ficheros. Ejemplo:&lt;br /&gt;
&lt;br /&gt;
 %fs 1&lt;br /&gt;
&lt;br /&gt;
El sistema de ficheros por defecto es 0.&lt;br /&gt;
&lt;br /&gt;
=== Leyendo y guardando ficheros ===&lt;br /&gt;
&lt;br /&gt;
==== %load ====&lt;br /&gt;
&lt;br /&gt;
%load &amp;quot;&amp;lt;fsp&amp;gt;&amp;quot; [CODE dirección] - Cargar un fichero. Ejemplos:&lt;br /&gt;
&lt;br /&gt;
 %load &amp;quot;manic&amp;quot;&lt;br /&gt;
 %load &amp;quot;imagen&amp;quot; CODE 16384&lt;br /&gt;
 %load &amp;quot;/foo/bar/baz.zx&amp;quot;&lt;br /&gt;
 %load &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
El comando %load &amp;quot;&amp;quot; cargará el programa BASIC &amp;quot;boot.zx&amp;quot;. (Si has seleccionado la opción &amp;quot;Autoboot&amp;quot; en el menú de %fsconfig, el Spectrum cargará &amp;quot;0:/boot.zx&amp;quot; cuando se resetea).&lt;br /&gt;
&lt;br /&gt;
==== %save ====&lt;br /&gt;
&lt;br /&gt;
%save &amp;quot;&amp;lt;fsp&amp;gt;&amp;quot; [CODE dirección,tamaño] - Guardar un fichero. Ejemplos:&lt;br /&gt;
&lt;br /&gt;
 %save &amp;quot;programa&amp;quot;&lt;br /&gt;
 %save &amp;quot;imagen&amp;quot; CODE 16384,6912&lt;br /&gt;
 %save &amp;quot;programa&amp;quot; LINE 1&lt;br /&gt;
&lt;br /&gt;
==== %aload ====&lt;br /&gt;
&lt;br /&gt;
%aload &amp;quot;&amp;lt;fsp&amp;gt;&amp;quot; CODE dirección - Cargar datos arbitrarios. Ejemplo:&lt;br /&gt;
&lt;br /&gt;
 %aload &amp;quot;codigomaquina&amp;quot; CODE 32768&lt;br /&gt;
&lt;br /&gt;
La diferencia entre %load y %aload es similar de un fichero guardado en cinta con y sin cabeceras. Efectivamente, %aload es para cargar ficheros &amp;quot;sin cabeceras&amp;quot;. Por ejempo, si has escrito un programa en ensemblador en tu PC sin los cabeceras que usa el Spectranet, puedes usar %aload para cargar este fichero. (Las cabeceras que escribe el comando %save son identicos de las de un fichero del tipo TAP).&lt;br /&gt;
&lt;br /&gt;
==== %tapein ====&lt;br /&gt;
&lt;br /&gt;
%tapein &amp;quot;&amp;lt;fsp&amp;gt;&amp;quot; - Cargar un fichero del tipo .TAP. Ejemplo:&lt;br /&gt;
&lt;br /&gt;
 %tapein &amp;quot;jsw.tap&amp;quot;&lt;br /&gt;
 LOAD &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Efectivamente, %tapein es para emular la cinta. Para cargar lo que contiene el fichero, debes teclear LOAD &amp;quot;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== %loadsnap ====&lt;br /&gt;
&lt;br /&gt;
%loadsnap &amp;quot;&amp;lt;fsp&amp;gt;&amp;quot; - Cargar un snapshot del tipo .SNA. Ejemplo:&lt;br /&gt;
&lt;br /&gt;
 %loadsnap &amp;quot;matchday.sna&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Se puede cargar .SNA de 48K o 128K.&lt;br /&gt;
&lt;br /&gt;
=== Abrir y cerrar ficheros ===&lt;br /&gt;
&lt;br /&gt;
Hay un secuencia de comandos que se usa con el sistema de streams de ZX BASIC. Funciona con ficheros, directorios y sockets de la red. Aquí tienes un ejemplo y una explicación breve (escribiré más en las semanas que vienen...)&lt;br /&gt;
&lt;br /&gt;
  10 %open #4,&amp;quot;file&amp;quot;,&amp;quot;r&amp;quot;&lt;br /&gt;
  20 %oneof 100&lt;br /&gt;
  30 INPUT #4,a$&lt;br /&gt;
  40 PRINT a$&lt;br /&gt;
  50 GO TO 30&lt;br /&gt;
 100 %close #4&lt;br /&gt;
&lt;br /&gt;
Este programa abre el fichero &amp;quot;file&amp;quot; y lee los contenidos, poniendolos en la pantalla. La primera linea:&lt;br /&gt;
&lt;br /&gt;
  10 %open #4,&amp;quot;file&amp;quot;,&amp;quot;r&amp;quot;&lt;br /&gt;
&lt;br /&gt;
...abrirá el fichero que se llama &amp;quot;file&amp;quot; para leer. Linea 20 es para coger el fin del fichero. Se dice que vamos a saltar a la línea 100 cuando acabe el fichero. Líneas 30, 40 y 50 son comandos estandares del Spectrum para leer el &amp;quot;stream&amp;quot; y poner los resultados en la pantalla. Entonces llegamos a la línea 100 donde cerramos el fichero. (¡Es muy importante cerrar el stream!)&lt;br /&gt;
&lt;br /&gt;
=== Abrir y cerrar sockets ===&lt;br /&gt;
&lt;br /&gt;
Es muy fácil hacer cosas similares con una conexión de la red. Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
  10 %connect #4,&amp;quot;spectrum.alioth.net&amp;quot;,80&lt;br /&gt;
  20 %oneof 100&lt;br /&gt;
  30 PRINT #4;&amp;quot;GET HTTP/1.0&amp;quot;&lt;br /&gt;
  40 PRINT #4&lt;br /&gt;
  50 INPUT #4;a$&lt;br /&gt;
  60 PRINT a$&lt;br /&gt;
  70 GO TO 50&lt;br /&gt;
 100 %close #4&lt;br /&gt;
&lt;br /&gt;
Así que -con código muy similar- podemos conectar a una máquina en la red con un socket de TCP. La sintaxis de %connect es:&lt;br /&gt;
&lt;br /&gt;
 %connect #&amp;lt;streamno&amp;gt;,&amp;quot;dirección&amp;quot;,puerto&lt;br /&gt;
&lt;br /&gt;
Aqui tienes un ejemplo de un servidor muy sencillo:&lt;br /&gt;
&lt;br /&gt;
  10%listen #4,2000&lt;br /&gt;
  20%accept #5,4&lt;br /&gt;
  30 INPUT #5;a$&lt;br /&gt;
  40 PRINT #5;&amp;quot;Me has enviado: &amp;quot;;a$&lt;br /&gt;
  60%close #5&lt;br /&gt;
  70%close #4&lt;br /&gt;
&lt;br /&gt;
Puedes probarlo desde un PC con telnet:&lt;br /&gt;
&lt;br /&gt;
 telnet &amp;lt;ip-del-spectrum&amp;gt; 2000&lt;br /&gt;
&lt;br /&gt;
Por ejemplo:&lt;br /&gt;
&lt;br /&gt;
 serendipity:~ winston$ telnet 172.16.0.41 2000&lt;br /&gt;
 Trying 172.16.0.41...&lt;br /&gt;
 Connected to 172.16.0.41.&lt;br /&gt;
 Escape character is '^]'.&lt;br /&gt;
 hello&lt;br /&gt;
 Me has enviado: hello&lt;br /&gt;
 Connection closed by foreign host.&lt;br /&gt;
&lt;br /&gt;
Un ejemplo un poco más complicado, un servidor que puede acceptar hasta 3 conexiones al mismo tiempo a través de tcp puerto 2000:&lt;br /&gt;
&lt;br /&gt;
   1 DIM c(4)&lt;br /&gt;
  10%listen #4,2000&lt;br /&gt;
  20%control #5&lt;br /&gt;
  30 PRINT #5;&amp;quot;p&amp;quot;&lt;br /&gt;
  40 PRINT &amp;quot;Esperando...&amp;quot;&lt;br /&gt;
  45 INPUT #5;a;a$&lt;br /&gt;
  50 IF a&amp;lt;&amp;gt;0 THEN GO TO 200&lt;br /&gt;
  60 LET a$=INKEY$&lt;br /&gt;
  70 IF a$=&amp;quot;x&amp;quot; THEN GO TO 700&lt;br /&gt;
  80 GO TO 45&lt;br /&gt;
 200 IF a=4 THEN GO TO 400&lt;br /&gt;
 210 IF a$=&amp;quot;disconn&amp;quot; THEN GO TO 600&lt;br /&gt;
 220 INPUT #a;c$&lt;br /&gt;
 230 PRINT &amp;quot;Strm &amp;quot;;a;&amp;quot;: &amp;quot;;c$&lt;br /&gt;
 240 IF c$=&amp;quot;rnd&amp;quot; THEN PRINT #a;RND: GO TO 40&lt;br /&gt;
 250 IF c$=&amp;quot;foo&amp;quot; THEN PRINT a;&amp;quot;Foo bar baz&amp;quot;: GO TO 40&lt;br /&gt;
 260 IF c$=&amp;quot;quit&amp;quot; THEN PRINT #a;&amp;quot;Adios&amp;quot;:GO TO 600&lt;br /&gt;
 300 PRINT #a;&amp;quot;No te puedo entender&amp;quot;&lt;br /&gt;
 310 GO TO 40&lt;br /&gt;
 400 FOR i=1 TO 4&lt;br /&gt;
 410 IF c(i)=0 THEN LET chan=i+5: GO TO 500&lt;br /&gt;
 420 NEXT i&lt;br /&gt;
 430 PRINT &amp;quot;No hay canales&amp;quot;&lt;br /&gt;
 440 STOP&lt;br /&gt;
 500 PRINT &amp;quot;Conexion aceptado en canal &amp;quot;;chan&lt;br /&gt;
 510%accept #chan,4&lt;br /&gt;
 520 LET c(i)=1&lt;br /&gt;
 530 GO TO 40&lt;br /&gt;
 600 PRINT &amp;quot;Cerrando #&amp;quot;;a&lt;br /&gt;
 605%close #a&lt;br /&gt;
 610 LET c(a-5)=0&lt;br /&gt;
 620 GO TO 40&lt;br /&gt;
 700 PRINT &amp;quot;Se acaba el programa&amp;quot;&lt;br /&gt;
 710%close #5&lt;br /&gt;
 715 PRINT &amp;quot;Cerrando socket&amp;quot;&lt;br /&gt;
 720%close #4&lt;br /&gt;
 730 PRINT &amp;quot;Cerrando conexiones&amp;quot;&lt;br /&gt;
 740 FOR i=1 TO 4&lt;br /&gt;
 750 IF c(i)=1 THEN %close #i+5&lt;br /&gt;
 760 NEXT i&lt;br /&gt;
&lt;br /&gt;
Para probarlo desde un PC, teclea &amp;quot;telnet &amp;lt;ip-de-spectrum&amp;gt; 2000&amp;quot;. Puedes escribir &amp;quot;rnd&amp;quot;, &amp;quot;quit&amp;quot; o &amp;quot;foo&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Destaco estas partes de este programa:&lt;br /&gt;
&lt;br /&gt;
 10%listen #4,2000&lt;br /&gt;
&lt;br /&gt;
Cuando ejecuta esta línea, el Spectrum empieza a escuchar al puerto 2000 (tcp). Para necesitamos hacer un poco más para aceptar conexiones: tenemos que usar el comando &amp;quot;%accept&amp;quot;. Pero %accept va a esperar para una conexion, y va a parar la ejecución de nuestro programa. Por eso hay un canal de control. Se abre así:&lt;br /&gt;
&lt;br /&gt;
 20%control #5&lt;br /&gt;
&lt;br /&gt;
Ahora el canal de control está conectado a stream #5 de BASIC. Así que podemos escribirlo y leerlo. Los siguentes:&lt;br /&gt;
&lt;br /&gt;
 30 PRINT #5;&amp;quot;p&amp;quot;&lt;br /&gt;
 50 INPUT #5;a;a$&lt;br /&gt;
&lt;br /&gt;
le dice al canal de control &amp;quot;dime si hay datos pendientes&amp;quot; (el comando &amp;quot;p&amp;quot;). En línea 50, llegan dos cosas: el número del stream en que hay datos, y información sobre los datos. El canal llega en el variable &amp;quot;a&amp;quot;, la información en &amp;quot;a$&amp;quot;. Si el stream es 4 (es decir, stream #4) sabemos que debe ser una conexión nueva porque #4 es el &amp;quot;socket de escuchar&amp;quot;. Si el variable &amp;quot;a&amp;quot; contiene 0, entonces no hay datos pendientes.&lt;br /&gt;
&lt;br /&gt;
 510 %accept #chan,4&lt;br /&gt;
&lt;br /&gt;
En esta línea, aceptamos conexiones nuevas. La sintaxis de este comando es:&lt;br /&gt;
&lt;br /&gt;
 %accept #stream,stream-de-escuchar&lt;br /&gt;
&lt;br /&gt;
El stream #4 es nuestro stream-de-escuchar. El variable &amp;quot;chan&amp;quot; contiene el número del stream nuevo que queremos abrir.&lt;br /&gt;
&lt;br /&gt;
[[Category:Spectranet]]&lt;/div&gt;</summary>
		<author><name>Winston</name></author>
	</entry>
</feed>