A TCP/IP Stack and Web Server In BASIC
A writes "Back in the day, a BASIC interpreter was standard on every home computer system and everyone had to know at least a little BASIC to be able to use their computer. But who would have thought that you could write some serious networking code in BASIC over 20 years later? Just a few days ago, Lee Davison released the BASIC source code for his 6502-based Ethernet web server. The web server runs under his EhBASIC interpreter on the 1 MHz 6502 CPU and is able to blast out web pages at an amazing speed of 20-35 seconds per page!" Sure, it's not really practical, but I give it cool points.
If you want to slashdot it, the IP address is visible in some of the screen shots. It's 169.254.226.132, but I'm not cruel enough to actually turn that into a hyperlink. :-)
ten out of ten for style, but minus several million for good thinking.
//e's lying around. Maybe I'll dig up an ethernet card and see if i can get this to work.
I actually have some Apple
Imagine a beowulf cluster of... Nah...
You cant fight in here, its a war room!
"Pre-slashdotted for your convenience."
with my fax machine. It's not nearly as cool though.
Can the code really be called BASIC? It looks more like tons of in-line assembly code, wrapped in a few ifs and loops.
Isn't he worried about someone else commercialising this?
I've looked at assembly and not understood it, I've looked at C and not understood it, and I think every time I have looked anything in perl I've not understood it. But, now the unthinkable has happened and I've looked at basic and not understood it.
Nyquil = Nectar of the devil
It's the chuncking through those data statements at the end that helps really beats up performance. Defining all those as strings at the beginning will ameliorate that problem.
And here I was thinking this was some sort of obscure Canadian BASIC..
inline-assembler
definable functions
re-entrant procedures
http://www.bbcbasic.com/
Sophie Wilson did a great job and did anyone at school in the UK who was interested in computing the biggest favour of all - she gave us the gift of learning structured programming from day 0
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
When I first read its name, I thought it was Canadian. :)
Shh.
Actually, Parallax was doing this since what... 1992? They got TCP/IP stack for their BasicStamps too. But of course, their stuff runs a bit faster than 1MHz... :)
Until it breaks mozilla while running fine in IE.
Hmm... you're right.
/.'ed before it's address even makes it to /. to begin with. :-)
This "BASIC" Webserver & TCP/IP Stack will go down in the annals of History as being the first ever webserver to become
no problem
/home/www/webserver.rc
/bin/date
/usr/bin/file -m /usr/share/misc/magic.mime $path | /usr/bin/awk ' { print $2 } '
/bin/cat $path | /usr/bin/wc -c | /usr/bin/tr -d ' '
/bin/cat $path
%tcpserver 127.0.0.1 80
--- webserver.rc ---
#!/usr/local/bin/rc
root = '/home/www/document_root'
fn echo_response {
echo 'HTTP/1.1 ' ^$response
}
fn echo_date {
echo -n 'Date: '
}
fn echo_content_type {
echo -n 'Content-Type: '
}
fn echo_content_length {
echo -n 'Content-Length: '
}
fn respond {
echo_response
echo_date
echo 'Server: rc shell'
echo_content_length
echo_content_type
echo 'Connection: close'
echo
}
ifs = '
'
for (request in `{echo -n}) {
url = $request(2)
file = `{echo $url | sed 's/http:\/\/[^\/]*//' | tr -d \012}
path = $root ^$file
echo $path
if (/bin/test -e $path) {
response = '200'
} else {
response = '404'
path = $root ^'/404.html'
}
respond
}
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
Ooh, moderator points! Five more idjits go to Minus One Hell!
Delendae sunt RIAA, MPAA et Windoze
unlike the others I wrote mine from scratch in response to the post
sadly I posted a slightly wrong version
here's the one that works
http://www.proweb.co.uk/~matt/rc/webserver.rc
it's only a toy, of course.
http://server/../../../../../../etc/passwd
will get you the passwd file
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
VB is alive and well, and used for pretty much the same reason as original BASIC - simplicity.
I would agree it still lives, but disagree about your reasons...
VB strips away all the simplicity normally present in BASIC, in that if you know basic, you don't necessarily know VB (very similar to C vs JAVA... They have very similar atomic statements, but the different paradigm makes proficiency in one not map 1-to-1 to the other).
VB excels in making pretty GUIs under Windows. I have yet to find a language that makes creating a spiffy user interface anywhere *near* so easy. People rave about JAVA for GUIs, but I would say that, line-for-line, it takes just as much work as using pure Win32. Tk does fairly well, as long as you like the system default of everything, but if you want more control, it makes you jump through all sorts of unpleasant hoops. But VB... Just no way to beat its level of GUI-oneness.
Unfortunately, it crawls when it comes to execution speed. I remember writing an app for a professor back in college, did nothing but text processing and a few simple stats to compile student evaluation surveys. Running through a list of only 30-50 students took almost two minutes. Incidentally, I prototyped it in C (but he wanted a spiffy GUI, and I hadn't yet mastered raw Win32), and the same thing would finish in well under a second.