The Contiki Desktop OS for C64, NES, 8-bit Atari, 403
Adam Dunkels writes "This is for those of you who think that a text-based operating system that fits compressed on a 1.44Mb floppy counts as 'tiny': the brand new Contiki operating system and desktop environment for the Commodore 64, with ports to a bunch of other platforms such as the 8-bit Nintendo Entertainment System, the VIC-20, 8-bit Ataris, Atari Jaguar, the Tandy CoCo, and the Apple ][ under development. The Contiki system includes
the following: a multi-tasking kernel, a windowing
system and themeable GUI toolkit, a screen saver, a TCP/IP
stack, a personal
web server, and a web
browser. The Contiki web browser, which is likely to be the world's smallest browser given its extremely small memory footprint, is the world's first true web browser for an 8-bit system and probably makes the 21 years old Commodore 64 the oldest system ever to run a real web browser! All of the above programs are contained in a single, fully self-contained, 42 kilobytes large binary. The entire Contiki system with all programs running simultaneously is comfortable in 64 kilobytes of memory. The name 'Contiki' is derived from Thor
Heyerdahl's famous Kon-Tiki
raft which was able to sail across the Pacific Ocean despite being built using prehistoric techniques, something previously thought impossible. There are also screenshots
and a FAQ
avaliable."
This fucking 0wns. Period. (Score:1, Insightful)
And don't bring up The Wave or any of the other SCPU-only tools - this is straight 1MHz 6510
Nowhere, just yet (Score:3, Insightful)
According to the ports page [dunkels.com]:
If you know much about electrical engineering, the nesdev community could use your expertise in creating network hardware for the NES. Even a high-speed serial port would be a good thing.
Re:this begs the question.... (Score:1, Insightful)
Bigger is not necessarily better. (Score:5, Insightful)
It was 1 disk big (1.44 floppy).
Now I look at Freelancer. A big CD full of great graphics. Yet at the same time I see it as not nearly as complex and thought out as Elite 2.
This is an interesting attempt not to make bigger programs, but tighter ones. Making the most of what you have. It feels like there is so much available on computers these days, that programs aren't concerned with getting the most out of it, just using as much of the bells and whistles as they can. Imagine using the same mentality on a modern computer!
Cool, but.. (Score:3, Insightful)
Seriously, why..? The C64 was a cool piece of machinery in its day but honestly... Who other than sentimental geeks would WANT to browse the web on a C64? Or run anything else than Iridium or Krakout or any of the other cool games..?
I'm not putting the C64 down. I've owned one myself and I've been pretty impressed by some of the things that have been done on it (including Contiki). But I can't help thinking that such talent that it takes to do this could be put to better use.
Maybe it's just me. Come to think of it it probably is..
Re:Thats something! (Score:3, Insightful)
BTW--links [mff.cuni.cz] has a smaller footprint than lynx and supports graphics under SVGAlib or X.
Re:C64 is the oldest? What? (Score:5, Insightful)
OOPS! RTFA!
Drat, It looks like the Atari version is "under development". C64 still wins (temporarily)!
Re:Cool, but.. (Score:5, Insightful)
Programming on old 8-bit systems is very different from programming for windows/unix. You must know the hardware better and do optimisations you would not even think about on a modern computer.
Some people find that challanging and fun. Not everything needs to be useful.
Re:Cool, but.. (Score:3, Insightful)
Fun programming exercise?
Interesting engineering challenge?
A way to show off mad skillz?
A way to develop those skills?
To make statement regarding bloat in modern systems?
It's art?
Because it's there?
... or maybe you'd care to define "better use"?
You're right though, I wouldn't want to run a web browser on there to do anything 'real', but this is the sort of thing that'll get me to haul the old SX64 out of the closet once more (yes, I am one of those "sentimental geeks"). Not because it's some kind of newfound productivity. And not because I neeed another webserver.
Simply because it's fun.
An amazing project. (Score:5, Insightful)
What else is interesting about this is that it goes to show how foolish and blind nearly the entire computer industry is when it comes to technology advances. People can't upgrade to a 10GHz processor fast enough, when all they need to do is check their email. Companies are constantly wasting servers and replacing them with newer models. This is not necessary. Today's software is written so poorly that super high-end hardware is needed to make up for lazy/poor programmers. Look at what these ancient systems can do. That "old" PIII or PII or K6 sitting on your desk is a power house. What's the problem? The software you're running on it is likely to be wasting 75% of the CPU cycles it eats.
It's a shame there aren't more developers or at least software architects out there with this guy's talent. We'd all be saving a hell of a lot of money I think. Then again, hardware prices would increase in proportion to its long-term value. Then again, there's a lot of savings in many ways (largely environmental -- less junk being dumped into the wild at the beginning and end of a computer's life cycle). Of course, I wonder if most of the blame goes to businesses just trying to get software out the door as soon as possible without stopping to think about good design (in all senses).
Truly artistic (Score:2, Insightful)
Jaw drops... (Score:5, Insightful)
Kernel, GUI, screen saver, TCP/IP stack, web server, telnet client and web browser in 42 KB? Wow... I suppose the TCP/IP stack is based on his uIP code that's around 5 KB large, using 500 bytes of RAM. =) And I like how the GUI is skinnable. =)
Another cool part is of course that I've studied at the same university as him. hehe.. He was rather well-known there as a "decent" programmer. =) You know, those that writes a complex algorithm, compiles it once, and it works.
credit due (Score:2, Insightful)
Wow! (Score:3, Insightful)
In this day of ever increasing memory and hardware demands for new software, it's nice to see that there are people out there still trying to do new stuff on old hardware.
Old computers never die - They just get TCP/IP stacks written for them!
Re:Bigger is not necessarily better. (Score:3, Insightful)
It's not like it's 8088 asm!
When I was a kid I was punching 6502 machine code on my Apple II for fun - the only annoying part was calculating the branches. Even modified DOS a bit - more storage space, faster seek times, different sector headers (not the usual D5AA96 D5AAAD ), some reset protection and so on.
Not all assembly languages are that difficult or ugly.
The beauty of older video games (Score:3, Insightful)
These days, with games being created by tens or hundreds of people, what you get is the median quality of everyone's artistry, and it's a lot harder to produce a unique or artful product.
How beautiful to go back and play Crystal Castles coin-op, or Adventure on the Atari 2600, and really hear one person's unique voice.
Re:An amazing project. (Score:3, Insightful)
Uh, no, I'd say Opera is a much better demonstration of that fact... Mozilla and IE are how big?!!!
It's not secret that modern programmers waste huge ammounts of performance. Just look at KDE. However, that doesn't mean you have to use what is commonly being churned out.
I am an OpenBSD user myself, the OS performs amazingly, and is very very small. I could fit the OS and all the programs I use in 512MB... (OpenBSD, OpenBox WM, GIMP, MPlayer, Web Browser). The only place things get hairy is with the web browser. Opera is nice, but I despise it's horrible UI, and no fast browsers have even the basice features I need, so I typically use Mozilla or Konqueror, which would be a bit slow on a 100MHz PC. If the Dillo developers just add a few more features, and improve stability, we'd have a good web browser too. Then again, Konq-embedded works fairly well if you are willing to give up on those minor features, like printing, multiple windows, folders to organize bookmarks, etc.
Since the OS, and the programs I use are very quick, I would be happy with a 100MHz machine with a 512MB hard drive. With soft updates, I could do just fine with an old 4500RPM hard drive a well.
--
Now, ignorng the unfortunate browser situation (since it will likely improve), there is just one problem... Multimedia. No matter how great you are at programming, you can only get so much performance out of a 100MHz CPU. Playback has some reasonably modest requirements (I can play downscaled, downsampled DivX video on my 106MHz handheld), but encoding is the big problem. Even if every program you use is incredibly fast, you still need to get a fast damn processor to encode multimedia at reasonable speeds, and large storage to save it.
So, although everything else would be fine on a 100MHz system, I still have to have a 750MHz Athlon (which oddly enough runs mencoder as fast as my 1.2GHz P3 Celeron in my notebook) to encode video. For other people, video games are their poison, and since they need such a fast system to run their games, they don't care that Windows XP is eating up such a huge ammount of their CPU, RAM, and HDD.
My point is just that so many people just don't care about the requirements, that it is more cost effective to make an ineffecient program. Unfortunately, many people who don't play games, or encode multimedia, want to use these ineffecient programs, and so they have no choice but to jump on the upgrade bandwagon as well. At least, that's the current state of affairs.
you'll need broadband to live with it... (Score:3, Insightful)
so, to scroll a page, it has to reload the page and rerender it.
being on 56k is bad enough. i like to forget what 300 baud was like. *shudder*
Re:DRAT! (Score:2, Insightful)
C64 is NOT oldest system ever to run a web browser (Score:4, Insightful)
Re:An amazing project. (Score:2, Insightful)
I understand the cars, alarm clocks, and buildings. But exactly how buggy would a chair have to be to kill someone??
More on topic, I think that many people are taught the "just get it done" thing even in college. Granted, the teachers might not actually teach that way on purpose, but most comp scis I know have at least once pulled an allnighter to finish a program the night before it is due. In that circumstance, it is not always so much "Does it work?" as "Does it appear to work?" A TA or professor might have a cheap little script to test the main functionality of the program, but it usually doesn't test limits and bounderies very much. With so many of us leaving college with this mentality (and not just us programmers, either) It's easy to see why such a problem is so prevalent. Of course, as with everything, there are always a handful who never partied in college (even us geeks party!) and actually leave with all the information they were given to become really good coders. And while the rest of us may include quite a few good coders, too, the fact is that the slacker mentality will probably still be present in the workplace, because we are "taught" that it works.
--paul
Been there done that! (Score:2, Insightful)
Was a true multitasking with preentive { 60 time a second ticks } not the "put a loop in your task that can cause major problems". Basically a Unix style except it was lacking in the memory manager catagory. It basicaly had none.
Re:Written in C? (Score:2, Insightful)
First of all, your assertion that C is unsuited for 8-bit devices is simply wrong. C compilers are widely used in the embedded development world with extremely limited machines, and such compilers work very well indeed.
As to what constitutes a 'C' complier, you're splitting hairs. If you like, then I'll concede the point that, yes indeed, a fully standards-compliant C compiler is indeed unsuitable for most 8-bit development.
Using your reasoning,though, K&R C isn't really C either, since it isn't ANSI standard. A compiler that takes code which is recognizably C is C. Period. Not ANSI C or even standards compliant, granted, but C nonetheless. You know C? You know the hardware? Then you can use these compilers immediately.
Having used both straight assembler and these same compilers pretty extensively on 8-bit platforms (68HC11, PIC and AVR in my case)I can assure you that they are entirely well-suited for their little respective corners of the embedded universe. Do they produce the highly portable code you might expect of a standards-compliant compiler? Of course not. But then neither would any other language suitable for use with these platforms -- and in any case, portability is the least of your concerns working on a microcontroller with 1024 bytes or less of program memory.
Re:Ataris and such... (Score:3, Insightful)
Get the point?
Never debase people for trying to build a better mouse trap.