Streaming RealAudio From a Commodore 64
An anonymous reader submits: "This just came in on comp.sys.cbm and
I think it will be of general interest here at Slashdot as well. Two
Commodore hackers, Adam Dunkels and Peter Eliasson, have built an
Ethernet card for their C64 and have connected one to the
Internet. But they aren't 'just' running a TCP/IP stack and a web server on it - they are also
running a RealAudio server which streams audio from the C64's cassette
player and apparently, it sounds awful! They have the full source code
avaliable and pictures of the
C64 server."
Currently active TCP connections
A note for youngsters... The C64 is not a fancy new 64 bit machine, it is an 8 bit machine (vintage 1982) with 64Kbyte memory.
Finally I have something I can do with all the cassettes I collected through the 80s, and judging by the colors of the wires and circuit board, somewhere I can use all my day-glo clothes!
and you might hear the crackle of a flaming C64...
Some people see things as they are and say why. I see things that never were and say why not.
Then again, some people say "why not," get drunk, and and hook a piece of crap up to the internet.
$50 bucks to the first person that builds a C64 emulator out of legos that streams video of a coffeepot and runs BSD.
----------
I am an expert in electricity. My father held the chair of applied electricity at the state prision.
This is definately going to be the first time a Commodore 64 has been /.ed, and will probably set the record for how long it takes to get /.ed.
Of course, rebooting a C64 is pretty fast.
I'm out of my mind right now, but feel free to leave a message.....
Hopefully it doesnt run on same c64's also..
yush
I've got most of his personal webpage backed up, which has info on the project, so if you have somewhere to put it, reply with a place to upload.
What?
Well, I managed to mirror the front page before the machine went down (hopefully others can mirror my copy before my machine goes down!) http://inconnu.isu.edu/~ink/c64
The wheel is turning, but the hamster is dead.
Here's a pic i took of it when there were still 0 comments, and it wasn't /.'ed yet.
Yeah, i know the gray sucks, but i had to do this quick.
I bet that ethernet card probably has more CPU power then the rest of the machine.
autopr0n is like, down and stuff.
Currently active TCP connections
Local Remote State Retransmissions Timer Flags
6510 68.53.74.100:3127 SYN-RCVD 0 3 *
6510 195.197.177.165:46743 SYN-RCVD 4 8 *
6510 62.23.145.66:28401 ESTABLISHED 0 3 *
6510 144.134.31.152:1599 SYN-RCVD 1 3 *
6510 68.53.3.20:2035 ESTABLISHED 7 38 *
6510 67.82.198.141:63434 ESTABLISHED 6 24 *
6510 68.0.176.210:3466 LAST-ACK 6 35 *
6510 193.10.66.107:4831 FIN-WAIT-1 0 2 *
6510 132.170.42.189:3313 SYN-RCVD 7 1 *
Maybe it's just that time of night...
C'mon now, Real Audio(TM) always sounds awful. This isn't news!
ôó
I think they got confused... They just plugged their headphones into the cassette tape drive, and thought they were hearing RealAudio!
'commie' = commodore, not communist.
idiot moderator that moderated the above as a 'troll' should be hanged from his toes.
"Rune Kristian Viken" - http://www.nwo.no - arca
I don't even believe a Beuowolf cluster of these could survive serving streaming media to
I knew I should have saved my C128. Dangnabit
You'll kill the server. Aperantly they have some special optimization on port 80 to keep it from being overloaded, but not on port 6510.
autopr0n is like, down and stuff.
Holy shit! This thing is still standing! I was able to get through with just two tries (the first time I just got the frameset). According to the docs they had put in quite a few optimizations to their TCP/IP stack to allow for a lot of connections (they said they encoded the state data in TCP sequence field, allowing them to have unlimited connections, or something like that)
:P
The thing is, they haven't got the optimization on port 6510, so if you try to go to the 'tcp status page' you'll overload it.
Building a C64 web server is impressive. Building one that can stand up to the Slashdot effect is, well, wow
autopr0n is like, down and stuff.
>what next, the C64 will be a Quake server?
Hey now! Don't give them any ideas....
If Mr. Edison had thought smarter he wouldn't sweat as much. --Nikola Tesla
On the whole, lots of peripherals and expansion cards back then had ridiculous amounts of processing power. For example, the floppy drive usually used on the C64, the 1541, had a 6502 processor (a slightly older version of the 6510 used in the C64 itself). C64 facts from here. The floppy drive was connected to the machine with an insanely slow serial port, so it had to work more or less autonomously.
The silliest example of over-powerful peripherals has to be the General Sound card for the ZX Spectrum. The General Sound contains a 12 MHz Z80 and 128 K RAM, upgradable to 512. The Spectrum contains 48 or 128 K RAM (256 or 512 on some clones) and has a 3.5 MHz Z80 (7 MHz or more in some clones). In other words, the sound card (which is fully programmable) is more than 3 times as powerful as the machine it's connected to. General Sound info here.
For today, ponder the latest 3D graphics accelerator.
Are there open source real audio servers?
We've seen C64 servers before. I want to see VIC-20.
**** CBM BASIC V2 ****
3583 BYTES FREE
READY.
LOAD
PRESS PLAY ON TAPE
OK
SEARCHING
-
- - You can't take something off the Internet! That's like trying to take pee out of a swimming pool.
Where did they get the codecs?
Until they get slapped with a lawsuit from Real due to using their streaming format without permission? .. Sigh!
Meanwhile, the rest of us have been running C64 emulators on our already Internet-connected Pentiums...
This has a very high hack value, but I really don't think that a practical application is going to be networked C64 games over the Internet. If you're going to write a networked game, you're not going to write it for the C64, I mean come on! Even if you were, an emulator would be a much cheaper and easier solution than actual hardware.
main(c,r){for(r=32;r;) printf(++c>31?c=!r--,"\n":c<r?" ":~c&r?" `":" #");}
As one of the guys who made this, I must say that I am amazed to see how well our C64 server is handling the Slashdot-effect. With a little more than 50 comments, I still can load parts of the first page.
The web server that runs on port 80-84 actually implements a simple form of overload protection and during testing, we managed to serve 8000 pages over a period of 30 minutes. That makes 4 pages per second! Note that it is only the first page that is overload protected, so the other pages will still load very slow (if they will have a chance to load at all!).
The real-time streaming audio server is running on the same machine as the web server so nobody will probably have a chance to hear the audio stream.
Furthermore, the headline is wrong - we are not streaming RealAudio. We are streaming audio using the open RTSP/RTP formats that RealPlayer and other players can handle. The RealAudio file format is secret so we would probably have been sued if we had been streaming that.
Finally, here is Google's cache of our newsgroup announcement.
Maybe Jon Katz's friend, Junis can now send us live streaming audio from Afghanistan using his Commodore! That is, if he can spare the bandwidth and disk space that he uses to download all those DivX ;-) movies.
... some people have far too much free time on their hands.
Hey cut it out with that Slashdot-ing, poor Junis is trying to look at some movies.
I don`t believe this web server is really running on a C64. Its been over an hour and the server is still survivoring the slashdot effect. I think this is a prank.
Well it's slashdotted to fsck just now (about 9am BST) but I'll look later. All the source code is there and it looks "right". A simple TCP/IP stack is really quite easy to write - it's the RTP/RTSP stuff that's seriously impressive.
Well, mainly because Realaudio is actually wide open? Perhaps because if you read the article and the source code it explains it all?
To get Realaudio with your own stuff you just send it little packets of wave data over RTSP.
They didn't they implemented a version of the standard RTSP/RTP protocal. This is an open standard similar to TCP/IP standard. It just happens to be the standard that Real Player uses for its protocal.
http://www.xemu.org/mirrors/adam/
It's not how well the dog speaks, but the fact that the dog can speak at all...
Just because you can mod me down, doesn't mean you're right. Shoes for industry!
And, quite possibly the coolest thing I've seen all year.
Well what the fuck did you do? Sat on your ass and read /.? Yeah, that's much more impressive.
sic transit gloria mundi
See DJB's web page about them. The scheme was designed to ward off SYN-flood DoS attacks, which is pretty much what a /.ing amounts to.
#define X(x,y) x##y
Peter Cordes ; e-mail: X(peter@cordes ,
It's interesting and all, but 99.99999999999999999% of us will never see the site, and the only thing that's going to happen is that the poor little C64 is going to explode.
So, what you're saying is that 6 of us see the site before it goes down, the Slashdot readership at any given moment is 6x10^19, or sixty quintillion - ten billion times the population of the earth.
Now THAT is one hell of a slashdot effect.
"Beware he who would deny you access to information, for in his heart he deems himself your master."
load "linux",8,1
Is it just me or does that little C64 perform better than a NT server running IIS?
I'm sure it will stay up for longer as well...
Let's count the security holes...
This is really funny!
Then again: The OS on my mobile phone is more reliable than NT.
Oh, ok, we are talking about the C64 right? Wow, it's smaller than a NT server! Oops, here I go again.
"I used to have that really cool,funny sig
And why not? It's possible. In fact, it's not even painful.
And didn't Kevin Poulsen hAx0r the Arpanet with a VIC-20 back in 1984? (I doubt that needed more than a terminal program, though =)
Every time I hear about something like this, I can't help thinking that these people are wasting their ingenuity on something completly worthless.
If they brought that ingenuity to doing something worthwhile, who knows what they could do...
"Information wants to be paid"
Thay've been doing this in Afghanistan for years...
"Your superior intellect is no match for our puny weapons!"
[...]sounds like crap.
:)
Well, it's sampled at 2000Hz, what would you expect? Coolness aside, it's similar to whistling 1200 baud: next-to-impossible to use and absolutely useless.
But again, I admit I regret getting rid of my c64 ten years ago: it would've been such a cool thing these days (with JUNIS and all these other guys bringing it back to mainstream etc.
-- No sig today
Couldn't they just chuck the audio-cassette and insert one with some cool new c64 gamez?
---
"The chances of a demonic possession spreading are remote -- relax."
Ah, memories. Back when C64's were actually modern, I attached a hardware UART to the bus and used it to drive a ham radio packet modem (at a whopping 1200 baud). I wrote enough of the IP layer in hand coded 6502 assembly language to get ping and basic routing working. Then I pinged our BSD 4.3 Tahoe machine at the university five miles away. This was in the mid-80s or so. Unfortunately, I never had time to continue up the TCP/IP stack. Glad to see these guys pushing the limits of that little box.
Devon
No, really.
Actually, assuming it's real, it's holding up pretty well so far. The C64 was one heck of a versatile machine. A friend of mine used to use them as a controller for his house back in the '80s - he wired up an expansion bus for them, wrote his own OS, and had it interfaced to a ham radio for control functions (delivered via DTMF).
Now that I think back on it, he probably single-handedly kept the C64 hardware market alive a few extra years. Because every three months or so, all the stresses would blow out the C64 power supply, and it was generally easier for him to just buy another one than it would have been to fix it.
-- Josh Turiel
"2. Do not eat iPod Shuffle."
It has now been four and a half hours since this appeared on the front page, and our C64 server is still up and running.
/index.html page and only 1% have been for the RealPlayer description file /c64.ram.
I was just able to reach the access statistics page. There has been a total of 32000 accesses (of which 8000 came before the Slashdot attack). 25% of the accesses have been for the
24000 hits in 4.5 hours, thats nearly 1.5 hits per second.
This reminded me of something I used to do when I owned a C64 myself.
There used to be a program that could take an audio recording and digitize it using the cassette reader. (It was called the Digitizer?)
And the sound really was really awful.
I believe the program simply read the audio track as if it were data, and saved the data. Then on playback it just pumped the audio frequencies through the sound unit.
The cassette player was only intended to be sensitive within certain high frequencies (If you've ever played a C64 data tape in a tape recorder, you know what I'm talking about), which is why actual audio didn't read very well.
But it's a really brilliant idea for sampling sound.
And wait ten seconds for a karma whore to post a link to it?
:)
Hell, I would, if I wasn't at 50
"If you create user accounts, by default, they will have an account type of Administrator with no password." KB Q293834
This one is running a httpd on a C64, but is slip connected to a Linux box for its connectivity rather than having its own ethernet. http://c64.cc65.org/
the no
The dunkels.com web site is now unaccessible, giving 403 Forbidden errors...why?
"I'll just chip in a bit for RedHat: I actually have that installed on my university machine." - Linus, '95
I would have loved to see what Netcraft would report, unfortunately it can't find the server.
I wonder if they overclocked it. Don't laugh, I'm completely serious. We use to do that to C64's back then. All you had to do was throw a slightly faster chystal in there and the system ran faster (although we would actually mount the old and new crystals on a toggle switch since fast-mode would break some things).
_______
2B1ASK1
No. It's a C-64 v2. Later C-64s came in a C-128-like case, with a modified chipset. They used the 85xx series of CMOS chips, like the C-128. Most important difference was in the voltages used to drive them. I believe the 6581 SID used a +12 volt line to drive its oscillators, whereas the 8581 used +5 volt.
I may be wrong, but I do remember that the 85xx series could not be used in 65xx slots. That was a bastard when my 8581 died in my C-128, as that part was produced in such slight quantities that I could only get a 6581 as a replacement, which was no use. I not only lost sound, but I lost my random number generator as well (the RND function was seeded from the white noise oscillator in some programs).
Mart"I know I will be modded down for this": where's the option '-1, Asking for it'?
> Commodore was actually the first to mass-market
> a system based on that type of head & disk format
Bzzt! Wrong. As far as I know, IBM was, but not Commodore. While its true both systems used 5.25" double-density disks, IBM PC disks are MFM encoded; Commdore's disks are GCR encoded from the 4040 (late 70s) until the release of the 1571 (late 80s). The 1571 added an MFM encoding mode and double-sided capability in order to be compatible with CP/M disks for the CP/M mode of the C128. That was the first drive able to read PC floppies, although extra hacking was required.
The 4040 (cum 1530, 1540, 1541) disk format that we're all familiar with held 170K -- actually, 169984 bytes of data after formatting, arranged in 664 blocks of 256 bytes.
Do daemons dream of electric sleep()?
You'd have to jumper the default memory mapping by hand, and not use any programs which make use of bank-switching code. (Whoops, there goes everything interesting).
The only concern I'd have is the VIC chip in that scenario; it might not be able to get at screen ram with the memory layout hard-coded.
Hmm, now where is my C64 PRG with the schematics at the back...
Do daemons dream of electric sleep()?
Check out this other C64 web server, running on the same server setup, just no streaming audio: http://c64.cc65.org/
Orange
The 1520 datasette isn't "intended to be sensitive within certain high frequencies" -- it's basically an on-off device. Is there sound? On. Is there no sound? Off.
:-)
The reason it sounded like high-frequency shrieking is because that's how your ears perceived the rapid transition from sound-to-no-sound.
Okay, so it sounds like we're talking about the same thing, but the subtle difference explains a lot.
The digitizer program you're talking about was published in Compute's Gazette, I believe. Basically, it sampled the data from the tape player as the tape moved over the head. If there was sound, it jotted down a one; if there was no sound, it jotted down a zero. So, we've got a _one_bit_sample_rate_ -- nothing to do with frequency ranges at all!
The faster you can sample (and the CPU limits that quite effectively!), the better resolution you can get, but it is still one-bit sound, so it'll still sound like crap.
The playback program used a bug in the 6561 SID chip to replay one bit sounds quickly. Transitioning the volume from min to max or back was a fast operation (STA, XOR, STA -- 8 cycles, maybe?) and produced a side-effect "click". Not all C=64s had this side effect though, so some people couldn't play the music! Hahahaha. You poor bastards with the C64cs!
Do daemons dream of electric sleep()?
No no no!
During the 80s, the console on the tardis quite obviously contained a BBC Micro...
"Information wants to be paid"
These guys should cut a deal with Unisys to host www.wehavethewayout.com.
This page accidentally left blank
Well if you want to cook a C64, there is a BASIC command that may do it:
WARNING: Use of this is at your own risk! May destroy hardware! Not recommended for any machine you'd like to keep! I WILL NOT BE HELD LIABLE FOR ANY DAMAGE WHATSOEVER
POKE 53270, PEEK(53270) OR 32
I did it and I could feel heat coming up from the keyboard and a smell like thermal paste overheating or something.
I turned it off very quickly and it did survive.
It was responsive and with a normal display right until I cut the power.
Some C64 docs say bit 5 of register 53270 is the reset bit for the VIC controller.
Some just say, ominously:
"ALWAYS SET THIS BIT TO 0!"
Why a reset bit would cause an overheat is beyond me. Anyone have a clue? I'd really like to know what is so bad about setting that bit. I was hoping it would just be a reset bit.
Just because it CAN be done, doesn't mean it should!
Try again, it's Ogg Vorbis.
GTRacer
- Goodbye Karma Kap!
Defending IP by destroying access to it? That makes sense, RIAA/MPAA. Go to the corner until you can play nice!
2003 Kissed a girl for the first time, computer now sits in dusty corner.
Yep, OGG is much better anyway. Their advanced codecs are closed, and that serves me right for posting before I've finished my first gallon of coffee.
This is a cool project. /. should add a new category called, "Because You Can." You see, there are a lot of wicked projects that we cover here, but they're not so much funny as, "This is totally sweet." (e.g. linux on ____, webserver on _____, and now of course, real-audio streaming on _____).
Invariably when we cover these, you get a few responses like this: "Why would you ever want to do this... blah blah."
Invariably, the response is: "Because you can."
The next step, of course, after creating such a category, is to make sure it's mirrored well before it's posted. (*wistful look*)
Now, I haven't checked whether this story is a hoax or not, but if it is, then it should be in the "Funny" category. Otherwise, consider this post as a call for a new category called, "Because you can!"
11 hours after the Slashdot appearence, the C64 is still running. It is a bit slow because of the large amount of traffic, but it is still possible to reach it. In fact - the C64 seems to handle the load better than my web hosting provider for dunkels.com who apparently had to start denying access because of the overload.
/index.html page.
About half an hour ago, I managed to get the access statistics. It shows a total of 63000 accesses, which is twice as much as 5 hours earlier. 18000 accesses (28%) was for the
I tried the posted link but all I got back was "Press Play on Tape"
Computer histories are always fun. :)
/w enhanced color BASIC
'86 TRS-80 COCO2
'89 C64
'93 8088 with Herc mono screen, 640k expansion card
'94 added 80286 board and chip to the aforementioned system.
'95 80386DX 25 with a bad floppy controller.
'95 80386SX 16 with the 387 copro chip
'96 80486SLC 40 which was too unstable to use
'97 Pentium 90, 16 MBs of RAM, Avance Logic video
'98 K5 PR90
'99 Pentium 166, S3 ViRGE GX 3d decellerator
'00 K6-2 400(@60mhz*6x=360), 32 MB of RAM, S3 Savage4 GT PCI
'02 Duron 900, 128MB DDR RAM, Nvidia Geforce 2 MX. PCChips Motherboard. 60 gigs of HD.
Damn kids these days, starting on their P133s, they don't know what a computer is capable of!
It's been a long time.
I notice the status pages are found on port 6510. Nice touch.
Bibo Ergo Sum.
The inifinity machine - I guess its pretty rare these days, but I got mine at the local fred meyers. I think in Europe it was called the "Game Killer". Basically the cartridge when inserted and you switched a C64 (or C128) on it would display this crack intro sort of thing - hit the space bar you'd bop back to the basic screen. When you loaded a game it would work just like normal, but when you hit the little red button on the side the screen would go blank for a second and you could no longer be hit by the bad guys.
Basically all it did was disable the sprite collision register - which you can do with an action replay cartridge - or the "final cartridge" (not to be confused with the final ethernet). You can also do the same thing with most every single emulator.
Lets see - it actually helped me finish several "unbeatable" games like commando, green beret, ghost and goblins, iridium, and a whole bunch more actually - lets face it there were some games out there that were really hard.
You should check out Planet Potion [pouet.net] from Mekka Symposium 02 [demo.org], Germany. This is the winner 64kb intro for Amiga which has an advanced 3d engine, speech synthesis (vocoder style) and lots of other effects perfectly blended together and synched with the music (the music is awesome considering it's 100% generated with code). All in less than 64kb of course.
Erk. The divx pretty much blew my head away. Even keeping in mind that it needs some pretty non-average Amiga to run, it was definitely more than impressive. Although not as heavy-impacting as the C64 case, I recommend seeing that for any Amiga old-timer. ;)
Everyone who makes generalizations should be shot.