Due to the 1541 Floppy drive taking four seconds to display a page and hit's coming in every second or so, It's not able to send a page before another is requested. The C64 is still up and once the demand lessens web pages will be displayed.
The first real programming I did was writing games and mods for the Color64 BBS I ran when I was about 12. It was actually an interesting and modern design, I now realize...its main loop was in assembly while the apps and forum and other stuff was in BASIC, making it, effectively, a scriptable system (live scriptable, even, since you could change things on the running system). It was also a somewhat multi-user system, in that a sysop could interact with users while they were on the system. The reason it wasn't all written in BASIC was that BASIC wasn't fast enough to serve a 2400 baud connection (I believe disk routines also had some reason for being in assembly, as well), much less the 38,400 modems supported by Swiftlink.
That old C64, and the BBS culture, shaped me and my life profoundly. I should probably send Greg Pfountz (the author of Color64) a nice thank you email, if I can figure out how to reach him.
The source and manual for Color64 were released years ago, and the manual is an interesting read in terms of understanding the architecture and seeing how advanced a system could be on such a tiny machine.
I wrote a full VT/ANSI BBS client for the C64 using 6502 assembler and it was one of the fastest around. I never commercialised it, but it became something of an underground hit in the UK at the time.
The software was noteworthy because it ran in graphics mode with its own set of fonts and also (just about) managed to juggle printing AND still handling the serial comms, which was made super-difficult by the way port interrupts and I/O were handled on the C64.
Compuserve, charging $11 per hour, had "more than 250,000 subscribers".
The Source, charging $8 per hour, was popular for its conferencing system "parti".
Delphi, charging $6 per hour had a loyal but small (less than 10,000 users) following.
BIX, $9 per hour, grew from a magazine.
Notable quote:
> "This is the computer industry as it used to be: people sharing ideas and solutions without the greed and grit with associated with today's corporate driven, litigation-laced, industry" (this was written over 20 years ago).
I'm surprised that there isn't a league table of tiny web servers out there on the Internet. Surely there's a subculture out there who are crazy enough to make a hobby of eking the last little bit of performance out of a Z80, 6800 or 6502? Tightly optimised assembly loops and hand crafted packets competing for the glory of surviving for the longest under a Slashdotting...
It is tough for many hackers to get their hands on the machines you mention there, but I could see something like that taking off with all the Raspberry Pis that are being delivered as we speak.
The Pi is a veritable supercomputer when compared to, say, the Sinclair ZX81 - A handful of kilobytes of RAM max, ~3MHz Z80 chip...
There is a ZX81-based web server public on the web, I won't link it here for obvious reasons. (Search for "Siggis ZX81 web server" if you really wish to see it.)
> It is based on the world's smallest implementation of a TCP/IP stack -- which is implmented on a small 8-pin low-power microcontroller .. using a mere 512 words of program ROM. If IPic can fit in a PIC, it can fit in just about anything.
> The TCP/IP code itself fits in about 256 bytes (12-bit), and the rest is some extra salt-and-pepper and miscellaneous code.
> The chip is a PIC 12C509A, running at 4MHz (Internal RC clock).
> implementing the IPic tiny TCP/IP stack,
> a HTTP 1.0 compliant web-server,
> a simple telnet server (for editing files on the chip),
> an 24LC256 i2c EEPROM
I think someone has done something smaller by now.
--- EDIT
Here are some other tiny devices.
(http://d116.com/ace/) - "the webACE: a Fairchild ACE1101MT8 microcontroller programmed as a Web server and containing two tiny web pages in its on-chip memory. Since the ACE1101MT8 is the smallest available microcontroller, I believe that this really is the World's Smallest Web Server."
(http://www.magic-1.org/) big, but home built CPU. "This web page is being served by a completely home-built computer: Bill Buzbee's Magic-1 HomebrewCPU. Magic-1 doesn't use an off-the-shelf CPU. Instead, its custom CPU is built out of ~200 74 series TTL chips."
(http://kl.net/atari/) no longer serving pages, this was a web server on an Atari 800
Allow me to pimp my own small web server, built in 25k of RAM on top of the .NET Micro Framework. I put it in a robot so that I could control it from Safari on my iPhone. The web server serves a JS-heavy page which sends REST-like commands to the robot via Ajax.
> Dramatic irony is a disparity of awareness between actor and observer: when words and actions possess significance that the listener or audience understands, but the speaker or character does not, for example when a character says to another "I'll see you tomorrow!" when the audience (but not the character) knows that the character will die before morning.
"I set up a web server!" when the audience (but not the character) knows that the web server will die before morning.
If my memory serves me well this worked only with the PAL version of the C64. Because the video chip (VIC) was so tightly coupled with the main processor and RAM, the video refresh rate determined clock speed. The PAL C64 was clocked at 0.98 MHz, the NTSC version was 1.25 MHz, so US C64's were faster per se.
If you had a PAL version you could switch between both frequencies with a switch soldered to some place on the board (or maybe it was the user port), but of course you then lost video output as long as the switch was in the NTSC position.
EDIT: Wikipedia says the NTSC version was only 1.023 MHz, so I remembered that number incorrectly. Maybe you were referring to another trick that would give you a 10%-20% speed increase?
The VIC-II "steals" CPU cycles every 8th scan line in order to load sprite & color data, what C64 folks call "bad lines". It has a BA (Bus Available) pin that's fed into the address decoder PLA. When BA is low, the PLA tells the CPU that memory is only available for writing.
If you disable the VIC-II's output with a poke, it doesn't need any "bad lines" to fetch data. The CPU then gets 25 scan lines' worth of time to crunch data each screen refresh.
It was going strong when I submitted the link, albeit a bit slow, but I would guess the poor server is now taking quite a beating from being on the Hacker News front page.
Shane. cbm8bit.com