111 lines
3.2 KiB
HTML
111 lines
3.2 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<style>
|
|
/* CSS Begins */
|
|
|
|
* {
|
|
background: #111;
|
|
color: #44dd44;
|
|
font-family: monospace;
|
|
}
|
|
|
|
.text {
|
|
color: white;
|
|
}
|
|
|
|
.colon {
|
|
color: red;
|
|
}
|
|
.comment {
|
|
color: #888;
|
|
}
|
|
.string {
|
|
color: yellow;
|
|
}
|
|
.number {
|
|
color: cyan;
|
|
}
|
|
.pointer {
|
|
color: mediumorchid;
|
|
}
|
|
.fetch {
|
|
color: orchid;
|
|
}
|
|
.store {
|
|
color: orchid;
|
|
}
|
|
.character {
|
|
color: brown;
|
|
}
|
|
.inst {
|
|
color: tomato;
|
|
}
|
|
.defer {
|
|
color: #888;
|
|
}
|
|
|
|
.immediate {
|
|
color: orange;
|
|
}
|
|
|
|
.primitive {
|
|
color: greenyellow;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<span class='text'>#!/usr/bin/env retro</span><br>
|
|
<span class='text'></span><br>
|
|
<span class='text'># Bi-Directional Pipes in Retro</span><br>
|
|
<span class='text'></span><br>
|
|
<span class='text'></span><br>
|
|
<span class='text'>## Configuration</span><br>
|
|
<span class='text'></span><br>
|
|
<span class='text'>Let's set some constants and a string template</span><br>
|
|
<span class='text'></span><br>
|
|
~~~<br>
|
|
<span class='string'>'23</span> <span class='string'>'PORT</span> const <br>
|
|
<span class='string'>'localhost</span> <span class='string'>'HOST</span> const <br>
|
|
<span class='string'>'telnet_%s:%s</span> <span class='string'>'TEMPLATE</span> const <br>
|
|
~~~<br>
|
|
<span class='text'></span><br>
|
|
<span class='text'>And now that we have configurable variables, let's make a template of the shell command we need for `unix:popen`</span><br>
|
|
<span class='text'></span><br>
|
|
~~~<br>
|
|
PORT HOST TEMPLATE s:format <br>
|
|
~~~<br>
|
|
<span class='text'></span><br>
|
|
<span class='text'>We've now got a formatted string on the stack. Probably looks like `telnet materiamagica.com:4000`. Isn't RPN funny?</span><br>
|
|
<span class='text'></span><br>
|
|
<span class='text'>Let's save that for later:</span><br>
|
|
<span class='text'></span><br>
|
|
~~~<br>
|
|
<span class='string'>'SHELL_CMD</span> const <br>
|
|
~~~<br>
|
|
<span class='text'></span><br>
|
|
<span class='text'>## Prepare the Shell Command</span><br>
|
|
<span class='text'></span><br>
|
|
<span class='text'>Let's get a file handle:</span><br>
|
|
<span class='text'></span><br>
|
|
~~~<br>
|
|
SHELL_CMD file:R+ unix:popen <br>
|
|
~~~<br>
|
|
<span class='text'></span><br>
|
|
<span class='text'>...and save it as `TELNET_FD`:</span><br>
|
|
<span class='text'></span><br>
|
|
~~~<br>
|
|
<span class='string'>'TELNET_FD</span> const <br>
|
|
~~~<br>
|
|
<span class='text'></span><br>
|
|
<span class='text'>## Is This Thing On?</span><br>
|
|
<span class='text'></span><br>
|
|
~~~<br>
|
|
TELNET_FD file:read s:put <br>
|
|
~~~<br>
|
|
<span class='text'></span><br>
|
|
<span class='text'></span><br>
|
|
<span class='text'>I don't have any more time for tonight to keep coding sorry.</span><br>
|
|
</body>
|
|
</html>
|