For past few weeks I have had plenty of time to think about what I want to do, and what I have always wanted to do, what I like and what I have always dreamed of. Maybe the biggest passion and object of interest(Object? Give me a proper word) has beem these small "systems" like cell phones, handheld "computers", even calculators and old cash registers. ...programming wise, of course.

I don't know what is so interesting in them. I am just interested to do stuff with those small things. Mainly code programs and games for those. At least thats what I think I'd love to do. Maybe it is because of the fact that those "platforms" are very limited. You have to work with one set of functions or write your own. No external 3rd party libraries fooling devs here.

The problem is that I can't get into these "machines". How could I? I'd love to try doing something with these things. I don't really even know what kind of languages do these things use. I bet they use C, or some kind of assebly depending on the CPU architecture. At least not x86 I think. I believe the fetish is the low-level stuff. To use the specific, low-level and slow chip to do something fancy with. I feel like that this Windows + x86 with it's tens of languages, thousands of libraries and projects are driving me nuts. More I do C++/scripting in Windows/Linux environment, more deeply I have the passion towards these smaller things. I just wish I was born when the C64 was alive. Or Vic-20. Thats what I'd have loved, alot. Nowadays there are just some old hobbyists working with them.

This PC + high-level stuff is just so huge mess for me IMO. More and more it becomes higher-level stuff, but I want low-level, with low capabilities, and limited resources and stuff. Always after I write some code, I try to think how to optimize it, how to make it better, and better and better. Most of the time I end up getting frustrated since I don't really know how to make it better, but it feels like it isn't sufficient enough, even the loop runs WAY faster than it is needed. I end up thinking about getting some old 133MHz pentium laptop for coding and linux only. It is limited, it is slow, it does not have much resources... Ideal for me? I think so, but why?

I feel like being an idiot after reading all of this again. If I had a blog I'd put this there, but I don't have. I just wanted to write about it, maybe it can spring up some discussion even. Hope so, but hopes aren't that high this time. :unsure:

Anyone else with this kind of stuff?

Reedbeta
—
2008-02-14T00:11:08Z —
#2

Embedded systems is what they're called.

If you want to get into embedded development, a nice place to start is an old TI-86 calculator or something like that. If you've got one, and the cable to connect it to your computer, you can find programs on the internet to program it in assembly language and download the programs to the calculator. You could even write little games if you want (I never got deeply into it, but I did make a nice sprite blitter - it could move a semi-transparent sprite around on a background).

Another cool thing if you're into electronics and building things is to make a robot or something with a PIC microcontroller, and you can program that. Again there's software that will let you write programs in assembly language and download them to the PIC with a special "programming board" that you plug the IC into and connect to your computer via USB.

There are a few guys on the forum who are professionally involved in embedded development, so I'm sure they can tell you more.

Hertta
—
2008-02-14T00:21:51Z —
#3

Ah yeah. I've heard and read about the TI-86 and alike stuff. Never got to try a such thing really though, but it seems very interesting. I think I need to get one for myself and see how it turns out with it. Are there any real possibilities to start coding with PDA stuff or alike? e.g. are there coding hobbyists for those platforms?

After further brainstorming my mind and thinking about this whole issue, I must say that I can quite much put this all on one sentence: I like/want to work with the hardware, not with the software running on that hardware. Also many smaller and different projects interest me more than one big project. E.g. I'd rather write/design/work on a small game/program for PDA for one month, 12 times a year than to work 3 years on a full game/program for PC/Windows. Also Linux interests me, but not at PC-scale really, at least not for desktop. More like versions/"distros" for these "Embedded systems".

SamuraiCrow
—
2008-02-14T03:58:11Z —
#4

If you want an open-source programmable handheld device, look into the GP2X. It runs SDL as an API under Linux. If it had a lot of software it would be some real competition for the Nintendo DS.

-edit- Having started out on a C64 I can tell you right now that C majorly SUCKS at 1 MHz. In 65xx Assembly you have a very different perspective on programming. Structures go slow but arrays go faster (unless you have more than 256 items). If you have an array of structures on the PC, it will go faster as a structure of arrays on the C64.

Hertta
—
2008-02-14T09:14:00Z —
#5

That GP2X looks interesting indeed. I'd love to test it out. After reading more about it from Wikipedia, thats excactly what I want! Especially this sounds good: "Other libraries under development include Minimal Library SDK, which allows for direct hardware access inside the GP2X Linux environment, and sdk2x a set of libraries and a program which allows you to leave Linux completely for total control of all the hardware with no operating system to interfere." I am definitely trying to get one of those for myself in near future! Thanks alot.

This PC + high-level stuff is just so huge mess for me IMO. More and more it becomes higher-level stuff, but I want low-level, with low capabilities, and limited resources and stuff. Always after I write some code, I try to think how to optimize it, how to make it better, and better and better. Most of the time I end up getting frustrated since I don't really know how to make it better, but it feels like it isn't sufficient enough, even the loop runs WAY faster than it is needed. I end up thinking about getting some old 133MHz pentium laptop for coding and linux only. It is limited, it is slow, it does not have much resources... Ideal for me? I think so, but why?

But that is very inefficient! Alot of computing power wasted for nothing. Though, I usually tend to drwa my graphics with pixels, write my own functions to deal with more advanced stuff. Slow as hell, but can't change it.

Lots of embedded systems have a software renderer. I even believe the iPhone has a software OpenGL ES implementation...

But isn't that because they don't really have sufficient GPU/no proper hardware acceleration?

Mattias_Gustavsson
—
2008-02-14T18:50:54Z —
#10

I'm also fascinated by working with limited systems. A couple of months ago, I made a text-adventure in which I tried to emulate some of the limitations of a Commodore 64: same font, same palette, same resolution Was good fun to do (can be downloaded from my website).

At the moment I'm making a ascii-rpg, using the same font and colors as good old DOS

But I want to explore more stuff like this, because it is fun (I started programming on the Vic20 and went through the C64 and the Atari ST before PC, but I don't want to just go back to working with those old systems again, but rather try out some new ones).

So what I'll be looking at now, is try my hand at building my own little embedded system, maybe by starting out using something like the ALIX ( http://www.pcengines.ch/alix1c.htm), which is pretty much a full 433Mhz PC less than 7"x7" in size. It would be fun to build some sort of portable device around that, and write my own simple OS for it But after that maybe look at building something more on my own, though I'll imagine it takes a bit of learning

The propeller chip seems quite interesting, and would be nice to try to build my own device using that as well.

I don't know much about this sort of stuff though, but sure will be fun to learn

Hertta
—
2008-02-14T20:15:21Z —
#11

Omg. That Hydra looks also very neat! I have thought about getting some VIA system, small, compact and low-power for Linux + programming, just like I have thought about the OLD laptop. Too bad they both are x86 and usually run on quite high-level OS. Hardware access would be nice. Sure it is complicated and takes alot of time to learn, but that is the fun part of it, I believe.

But isn't that because they don't really have sufficient GPU/no proper hardware acceleration?

That's just a design decision. It has a 700 MHz CPU with vector instructions instead. Note that Quake runs quite smoothly on a 100 MHz Pentium without vector instructions. So if you really have a passion for embedded systems I'd definitely consider playing with something like an iPod Touch. :happy:

Hertta
—
2008-02-14T23:49:50Z —
#13

But Quake was one of the main games which made GPU's to become as popular as they are now. Well, one of those games which had some real benefit for usnig GPU instead of software rendering via CPU.

That GP2X seems very interesting platform for me. Hopefully I can get one of them in near future, before the summer at least. Just can't wait. Though, it has few drawbacks but well, there is no perfect product afterall.

Another thing is this "homebrew" games or such. People making their own GB/GBC/GBA games etc. That seems interesting aswell, but not so much, GP2X has my attention.

SamuraiCrow
—
2008-02-14T23:53:38Z —
#14

Another fun trick of emulation is that you can run software from some limited systems like a classic Commodore Amiga 500 (which DOES have graphics acceleration despite its age) with the emulator package called Amiga Forever. In addition to the WinUAE emulator for Windows, it includes a bootable Knoppix Linux live CD set to boot directly to the EUAE emulator which is also available for MacOSX. It also includes legally licensed Amiga Kickstart ROM images and operating systems from 1.x to 3.x .

Have fun running Amos Professional to bang away on the hardware with a high-level BASIC or use C to access the OS functions in a more friendly manner. 68000 Assembly language is easier to learn than Pentium Assembly language too!

The A500 is being redesigned to run from a small form-factor motherboard with a field-programmable gate array to embed the Amiga ECS chipset into is called MiniMig (scroll down past the Sam 440ep stuff to see the MiniMig stuff).

-edit- I forgot to mention that there is an Amiga emulator that runs on the GP2X also. It's called UAE4ALL.

karligula
—
2008-02-15T20:57:15Z —
#15

You mentioned cell phones, I don't know if you already know this but you can download the NetBeans IDE with the Sun Wireless Toolkit and write games for mobile phones using J2ME. That's Java 2 Mobile Edition, so it's all Java based and object oriented and easy to use. It's all free, and J2ME is a neat little platform, it runs on just about every phone you can get nowadays. You can code on the PC using an emulator for the most part, and when you want to test it on a real phone you can easily send the code to your phone using bluetooth. It doesn't have lots of methods and you can't do any real fancy graphics on it. But I've been tinkering with it for a while now and I really enjoy using it to make simple little games.

12ant34
—
2008-02-21T18:37:01Z —
#16

If you own a PSP and wish to make homebrews and stuff for it, you will first need to downgrade the firmware for it. After you have done this, creating simple programs and games for it will be a doddle.

Hertta
—
2008-02-21T22:41:13Z —
#17

I wish I had one.

I mentioned about the 166MHz laptop etc. Well, I changed my Athlon 64 X2 3600+ + 512MB of RAM to a Dell OptiPlex GX1 something. Now this machine has 350MHz CPU and 256 megs of RAM. Will do upgrading, run Linux and have fun. More about the project in http://www.projectnoid.blogspot.com

I will focus on hardware/linux/case silencing mostly, but there will be posts about C++/Python/Linux IDEs aswell after I get the system to a bit more decent shape. Sure I will write about GP2X etc. after I receive one in few months.

soren_renner
—
2008-02-27T20:19:02Z —
#18

You should look at Oberon. Native Oberon is very elegant and small. I used to use it, but now I use an OS called Bluebottle which is also written in Oberon.

Bluebottle runs fairly well as an embedded OS in a window inside Linux.

Hertta : Maybe you would give a try into TomTom GPS devices hacking Since those devices are Linux based, there are lot of interesting technical stuff to do. They are powerful enough to display 3d scene at fairly interactive rate (but do not forget it is embedded !) and you can also play with the gps signal which is pretty fun actually.

EDIT : I forgot to give the TomTom GPL link, and the OpenTom one, I hope you have a Bluetooth dongle