A webserver, written in FALSE. Not such an easy task, considering that FALSE doesn't support file-IO. But by putting all the pages in the program, it can be done! Here it is, in all it's glory:


--- Cut ---

{ HTTP server in FALSE }
{ copyright 2001 Carl Drougge }

ß0

{ Page-definitions.. In reverse order, of course. A maximum of 10 pages can be supported. }

["<title>Dreadful..</title>
<body bgcolor="34,"#FF5555"34,">
This is the third page. It has a nasty colour..<br>
<a href="34,"0.html"34,">Back to first page</a>.
</body>
"]

["<title>Woho!</title>
This is the second page!
<a href="34,"0.html"34,">Back to first page</a>.
"]

["<title>Wow!</title>
This is the first page.
<a href="34,"1.html"34,">second page</a>
<a href="34,"2.html"34,">third page</a>
"]

{ End of stuff any reasonably sane person would want to change. }

[20460`2048`8782`11384`4`20142`65122`28672`20085`]e:
e;b: 
["HTTP/1.0 404 Not Found"13,10,
"Content-type: text/plain"13,10,
h;!13,10,
"404 Not Found
"e;!]n:
["Server: FALSE webserver 0.1"13,10,
"Accept-Ranges: bytes"13,10,
"Charset: ISO-8859-1"13,10,]h:
["HTTP/1.0 200 OK"13,10,
"Content-Type: text/html"13,10,
"Allow: GET"13,10,
h;!13,10,
"<!DOCTYPE HTML PUBLIC "34,"-//W3C//DTD HTML 3.2 Final//EN"34,">
"]o:

1[$ø0=~][1+]#1-0
[^$$1_=~\$13=~\10=~&&][]#
%%'.=~[b;!]?'1=~[b;!]?'/=~[b;!]?'P=~[b;!]?'T=~[b;!]?'T=~[b;!]?'H=~[b;!]?' =~[b;!]?
$'l=$
[%'l=~[n;!]?'m=~[n;!]?'t=~[n;!]?'h=~[n;!]?'.=~[n;!]?'0-1_]?
~[0]?
\'/=~[n;!]?\' =~[n;!]?\'T=~[b;!]?\'E=~[b;!]?\'G=~[b;!]?\0=~[b;!]?
$@1->[n;!]?
$1_>~[n;!]?
o;!ø!
[][]#

--- Cut ---

The inline assembly (the e-function) is just to exit the program, since for some reason FALSE lacks this function, and I didn't feel like making lots of nested ifs..

If you want to make this work with the interpreter, in addition to the obvious you need to modify the interpreter to have an exit-function (E or X seem like good names for it..) and not do any type-checking (I reference functions as integers).

These are pretty trivial modifications to make, I tried it and it probably took about one minute..