Skip to main content
GameDev.net gamedev.net
🔒 Locked

looking for the perfect machine

Started by DescentPro Jun 29, 2008 at 11:42 PM 47 replies 6.6k views
Original Post
DescentPro
DescentPro
after months of learning programming, ive decided that today's modern computers arent for me. the inability to interface directly with vista hardware (like drawing directly to the screen), the many layers of abstraction, and the insane amount of uneeded complexities have completely turned me off toward programming and computers in general. therefore, im looknig to buy or build my own computer. what im looking for is somthing reminiscent of the old commodore 64's. it will have a single core processor, of modern calculation rates (at least 2 ghtz), about one gig of ram, capabilities to interface with a hard drive, keyboard, sound output, and VGA output. maybe a mouse as well. the most important part though, will be that it has only the bare minimum in terms of OS. even less than DOS. it must have a build in compilier however, somthing like BASIC. how would i go about getting or making such a computer? i recently bought a HYDRA pwoered by propeller, thinking that would be what i want, but i found its lack of memory and processor power made it impossible to use for what i wanted.
Wyrframe
Wyrframe
I feel your pain, but there's some sad news.

You can get rock-solid, dead-simple systems, so long as you don't mind picking no less than two from the following: embedded; fairly slow in terms of raw processing power; or very domain-focused (ie analog I/O processing).

Those layers of abstraction are actually there to help you; they make higher-level programming possible on platforms where memory timing can be variable; one of thousands of video devices might be connected between you and the monitor; hard drives can use any combination of the dozen most popular filesystem types, never mind the partitioning system and the variety of I/O controllers, and the task of figuring out what permanent storage media are even available; and network controllers might not only communicate with the OS in ten different ways, but you need to walk down through communications protocol stack eight layers deep just to send a simple GET / HTTP/1.0 to google from inside a plain-jane ethernet connection.

If you are really hardcore about what you want to do, then you can start buying individual chips and soldering them together and making your own little wire-strewn monstrosity, before you can even start assembling a compiler that will run on it. Once you go low-level, you stay there until you've made your own high-level, and that takes years of work. If you think modern operating systems and programming environments have unneeded complexities, you have not yet begun to see the big picture.

On the other hand. If you are serious about going as close as possible to bare-bones, but not getting completely overwhelmed... take a look at minix, a minimal linux-like kernel and build system. That is approximately as low-level as you can start without having to write your own compiler, or buy a soldering iron.
RIP GameDev.net: launched 2 unusably-broken forum engines in as many years, and now has ceased operating as a forum at all, happy to remain naught but an advertising platform with an attached social media presense, headed by a staff who by their own admission have no idea what their userbase wants or expects.Here's to the good times; shame they exist in the past.
Captain P
Captain P
Quote:
Original post by DescentPro
but i found its lack of memory and processor power made it impossible to use for what i wanted.

So, what do you want your computer to do? What are your goals? Why are you learning how to program?
Hnefi
Hnefi
Quote:
Original post by DescentProthe inability to interface directly with vista hardware (like drawing directly to the screen)

Why not simply draw to a texture and display that? Besides, there ARE API's that do allow you to perform pixel operations in Vista.

But to fix this issue is simple: just install DOS.
Quote:
the many layers of abstraction, and the insane amount of uneeded complexities

Trust me when I say that those complexities are not unneeded. I have done microprogramming and assembly programming, as well as FPGA programming. It's very simple, and very, very hard to do anything nontrivial.

The more abstractions you remove, the closer to the physical limitations of electromagnetic theory you come. And trust me when I say that it can be a nightmare.
Quote:
have completely turned me off toward programming and computers in general. therefore, im looknig to buy or build my own computer. what im looking for is somthing reminiscent of the old commodore 64's.

Atmel produces embedded processors that can be used for computers similar to the C64 era. Combined with a decent FPGA and an USB controller, you can build quite nifty things - I've built a robot as part of a college course with three such processors. Fun times. Don't expect any high performance, though.
Quote:
it will have a single core processor, of modern calculation rates (at least 2 ghtz), about one gig of ram, capabilities to interface with a hard drive, keyboard, sound output, and VGA output. maybe a mouse as well.

That combination of features is not available without a significant amount of what you call "unneeded complexities". A PC104 board is probably the closest you'll get. It has all the features you describe, but it's still an x86 architecture.
Quote:
the most important part though, will be that it has only the bare minimum in terms of OS. even less than DOS.

That's easy. Just buy a computer - any computer - and format the hard drive.
Quote:
it must have a build in compilier however, somthing like BASIC.

BASIC is a very high level language, significantly higher level than C++, for example. If you want to get away from abstractions and "unneeded complexities", choosing BASIC is going in the opposite direction of where you want to go.

Also, you seem to have some misconceptions of what constitutes "bare minimum" software. The OS is actually bare minimum if you plan to run more than one process. If you don't have an operating system, you won't have a compiler.
Quote:
how would i go about getting or making such a computer? i recently bought a HYDRA pwoered by propeller, thinking that would be what i want, but i found its lack of memory and processor power made it impossible to use for what i wanted.

What, exactly, is it that you want to do?
-------------Please rate this post if it was useful.
Antheus
Antheus
Use Linux?

Quote:
and the insane amount of uneeded complexities have completely turned me off toward programming and computers in general


Oh, yes, the good ol' DOS. Where just setting up a pointer was an adventure in land of segment and offset, where anything above 64k big required overlays, where vendor specific addresses were reserved, where poking interrupts manually was required for every different piece of hardware...

... you've made me nostalgic...

But just that - good thing those days have passed, where even allocating a 1 meg array was a week-long project.

Quote:
will be that it has only the bare minimum in terms of OS. even less than DOS


In that case, just use Linux boot-loader. BTW - how will you compile the applications for that platform? Do you plan on writing your own kernel, compiler and the rest of "complexity"?

Quote:
what im looking for is somthing reminiscent of the old commodore 64's


This may be surprising, but C64/Spectrum had more services at OS level than any of today's OSes - it was much closer to today's VMs. This is why EPROMs appeared, that allowed one to bypass all that bloated nonsense.
DescentPro
DescentPro
after reading some of the replies im kind of getting an idea of how difficult this would be. building the hardware part i could manage, but creating a custom OS and high level compilier would be far too time consuming and difficult. on my xp i used to use QBASIC 4.5, a nice self contained compilier that could create .exe files. my vista, however, wont run it. how difficult would it be to create a virtual machine to run ontop of vista? something that only follows basic file manipulation commands like 'delete', 'run', 'move archive', 'file info'? im not very knowledgable about this. i know it would be another layer of abstraction, but it would make programming a great deal easier for me as it would remove dependancies. perhaps i should have elaborated on what bothers me about vista. i have spend over a thousand dollars on compilier equipment for c++, and due to dependancies, what i view as ridiculous complications, and a whole host of other problems, i have been unable to use it to my satisfaction. im basically just looking for a way to write a program that will be independant of any part of vista, and still be able to graph to the screen. from what i know, this is impossible in c++.
Antheus
Antheus
Quote:
how difficult would it be to create a virtual machine to run ontop of vista? something that only follows basic file manipulation commands like 'delete', 'run', 'move archive', 'file info'?


Like command line?

Start/Run/cmd.exe

delete: 'delete /?'
run: 'path/name-of-application.exe'
move archive: 'move /?'
file info: 'dir /?'

Or did you mean something else.

Quote:
im basically just looking for a way to write a program that will be independant of any part of vista, and still be able to graph to the screen. from what i know, this is impossible in c++.


No, just way too cumbersome.

Aside from the fact that C++ compilers are free, there's tools that are much better suited for graphs.

Excel (or OpenOffice) equivalent offers scripting capabilities, as well as ability to produce graphs.

Under Linux, there's the good old gnuplot.

And then there's Python, and many more - all free.


Main question: What are you trying to do?
Ahnfelt
Ahnfelt
You can run Dosbox if you would like to use qb in something like it's natural habitat.

I get the feeling from your posts that that problem is that you're using C++, rather than a modern language like Java or C# (or VB.NET since you know basic).

NetBeans is free, Eclipse is free. (Java)
Visual Studio Express is free. (C#/VB.NET)

Using your own or a rare hardware and OS platform will render all your work useless. Why would you want that?
TheGilb
TheGilb
Hi :-) Fun little project for you, and probably more or less exactly what you want: http://www.xgamestation.com/. Now you can *make* your computer, and program it in basic or C, whichever you prefer, and the whole project is under $100. This project even comes with a PCB, a running video of how to construct the project from start to finish, and if you buy an SX-Key then programmer the microcontroller isn't too tough either. Btw, take my advice and be certain to have a little portable NTSC compatible TV to work with - generating a PAL signal is a fair bit more difficult :-(

Once you've exhausted yourself with that, and found the limitations of your kit all but too much to bear, I suggest you learn something like Allegro which is a project that has been running since as long as I can remember. It will essentially let you work in the exact way you described, with simple function calls to perform simple tasks.

If you really want to go back to the DOS days of doing stuff, there is a DOS emulator called DosBox which should work on any windows os.

Then, if you're still thirsty, you could get yourself a GP2X, which is extremely simple to program for (and Allegro should still work on it..), and then you can share the fun with your friends! :-)

Good luck, and have fun!
DescentPro
DescentPro
i meant graPHICS, sorry. im trying to make a 3d video game.
Hnefi
Hnefi
Quote:
Original post by DescentPro
how difficult would it be to create a virtual machine to run ontop of vista? something that only follows basic file manipulation commands like 'delete', 'run', 'move archive', 'file info'?

Building your own virtual machine software can be extremely easy or extremely hard, depending on exactly what you want to do. Of course, doing so requires that you implement whatever functionality it is you want your virtual environment to have in the parent OS - that is, Vista.

A much better solution is to simply grab a copy of VMWare, DosBox or something similar. There is no need to reinvent the wheel. Of course, installing a virtual machine just to be able to program on old operating systems without having a very specific reason for doing so is odd, to say the least.
Quote:
im not very knowledgable about this. i know it would be another layer of abstraction, but it would make programming a great deal easier for me as it would remove dependancies.

Dependencies? You'll never get away from those. They are as much part of programming as cameras are for making film. The days when you could do everything yourself are far, far gone.
Quote:
perhaps i should have elaborated on what bothers me about vista. i have spend over a thousand dollars on compilier equipment for c++,

Why? There are excellent C++ compilers out there that are completely free. On Windows, Visual Studio 2008 Express is the best one.
Quote:
and due to dependancies, what i view as ridiculous complications, and a whole host of other problems, i have been unable to use it to my satisfaction.

Sounds like you simply spent a lot of money on something without even knowing what it was. If you took the time to actually learn how to use the tools you've bought, you might not be so frustrated. What exactly are your complications? And what is the trouble you are having with dependencies?
Quote:
im basically just looking for a way to write a program that will be independant of any part of vista, and still be able to graph to the screen. from what i know, this is impossible in c++.

No, it's very possible. It's even pretty easy (despite what some people would have you believe), IF you know the language and the options available to you. You simply use a library such as SDL, SFML, Allegro, wxWidgets or even GTK to wrap the parts of your program that interface with the platform in platform-independent code. Graphics (which I assume is what you meant by "graphing to the screen") can be done in software in any of those libraries, or hardware accelerated by OpenGL and still remain platform independent.

Of course, trying to use any of those libraries without first knowing C++ is not a good idea. Those particular libraries may or may not also be suitable for what you are trying to do. If you simply told us what it is you are trying to accomplish, we might be able to help you.
-------------Please rate this post if it was useful.
Hnefi
Hnefi
Quote:
Original post by DescentPro
i meant graPHICS, sorry. im trying to make a 3d video game.

I see. Then we know what your goal is.

You can, of course, use C++ to make a 3d game. C++ is not the easiest language, but if you know it well it is very powerful. Judging from your posts, however, you don't have a very good grasp of any language, so perhaps something without such a steep learning curve would be appropriate.

Most people recommend Python or C#. Both have excellent tools available for free, lots of resources and big communities. You can program 3d graphics in either one, and the learning curve is lower than that of C++. You pay for the ease of use with execution speed, but for 99% of the cases it's more than worth it.
-------------Please rate this post if it was useful.
mikeman
mikeman
Personally, I don't really understand what you want to do and honestly, I think you don't either. Anyway, if all you want to make is a 3D game then pick a language and an API(OpenGL or D3D), or even an engine like Ogre or Irrlicht. If you want to draw pixels, there are libraries that allow you to do that(draw pixels on a buffer on memory, and then copy it on screen). In any way, you can't possibly 'interface directly with hardware' in a modern OS(not just vista), unless you write drivers for that hardware, which means you know how the specific hardware works(there are different drivers for example, for different graphic cards, each provided by their vendors). However, the (much needed) abstractions and the 'complexities' are not 'insane', hundreds of new programmers do it every day. If you ask me, wanting to program the hardware yourself in order to create a 3D game or any other non-trivial project is what it's insane. Maybe you see it all as too much because you have no focus on what you want to do, and your research wanders here and there with no real goal(spent thousands of dollars on compilers? are you serious?). Try to start small, that will give you some perspective, because right now you're a bit confused on how all this works.
DescentPro
DescentPro
yes i did spend over a thousand dollars on a compilier (in hindsight, a significant mistake), and im not sure EXACTLY what i want to do, other than to get away from dependancies.

it may seem backwards or silly, but i work best when i code every aspect of my program, from top down. i have no real interest in becomming a developer, i just want to finnish this project as it has been bugging me for years. it has been suggested that i use assembly, but i want to avoid such low level languages. what i really want is some way to program in a high level language free of any kind of dependancies, that will create an .exe file that can run on any 32 bit computer. i have dosbox, but as users of it are certainly aware, it slows down very much and is unsuitable for a modern 3d environment.
mikeman
mikeman
Quote:

i have dosbox, but as users of it are certainly aware, it slows down very much and is unsuitable for a modern 3d environment.


'Modern 3D environment' means you need 3D hardware acceleration. Which means:

1)You make your own graphics hardware
2)You somehow obtain tech information from NVidia and ATI about their cards and make your own drivers.
3)You use an API like D3D and OpenGL like everyone else.

That's it. There's nothing else to it. Either accept it, or move on to another hobby. Sorry...
Telastyn
Telastyn
Quote:
Original post by DescentPro
and im not sure EXACTLY what i want to do, other than to get away from dependancies.


That is a means, not a goal.

Quote:

it may seem backwards or silly, but i work best when i code every aspect of my program, from top down.


You work best when you get stuff done. Rewriting every wheel you come across is directly contrary to that. But it's not uncommon for programmers to want to 'know how everything works' or think they work better when they can edit the details of any part of the code. It is however, very unhealthy to their development. You're not going to write a better linked list. You're not going to write faster rendering code. You're not a beautiful or unique snowflake...

Quote:

it has been suggested that i use assembly, but i want to avoid such low level languages.


Why? Why would you conceivably want the benefit of classes or virtual functions if all you're going to do with them is flip pixels? The contradiction in logic here is... indescribable.

Quote:

what i really want is some way to program in a high level language free of any kind of dependancies, that will create an .exe file that can run on any 32 bit computer.


Good luck with that.

Quote:

i have dosbox, but as users of it are certainly aware, it slows down very much and is unsuitable for a modern 3d environment.


Pixel by pixel drawing is unsuitable for a modern 3d environment (or a 1996 3d environment for that matter). Even getting something that might pass as a competent tech demo 3d environment made by 1 good programmer is exceptionally hard with all of the best tools and shortcuts available. And that becomes exponentially more difficult with impediments.

fpsgamer
fpsgamer
Quote:
Original post by mikeman
Quote:

i have dosbox, but as users of it are certainly aware, it slows down very much and is unsuitable for a modern 3d environment.


'Modern 3D environment' means you need 3D hardware acceleration. Which means:

1)You make your own graphics hardware
2)You somehow obtain tech information from NVidia and ATI about their cards and make your own drivers.
3)You use an API like D3D and OpenGL like everyone else.

That's it. There's nothing else to it. Either accept it, or move on to another hobby. Sorry...


Its actually much worse than that.

If you did hypothetically have full access to your video card you'd have to both manipulate the card's firmware and kernel mode driver.

Programming errors result in the GPU getting hung and tonnes kernel panics. Either way you have to restart the computer and try your best to continue where you left off, which is hard if that last kernel panic corrupted your filesystem.

These are the kinds of things that low level programmers deal with all the time, why on earth do you want to work at that level when you have other choices?
I Am Legend
I Am Legend
You want to make a tiny OS with a compiler:

http://wiki.osdev.org/Resources

There's a lot of good stuff on that site, check the forums as well as those resources. Very smart people. In those tutorials I remember seeing one that described making almost exactly what you want

The tutorial was the Broken Thorn one:). They're very good
Let he who will move the world first move himself--Socrates
DescentPro
DescentPro
Quote:
Original post by mikeman
Quote:

i have dosbox, but as users of it are certainly aware, it slows down very much and is unsuitable for a modern 3d environment.


'Modern 3D environment' means you need 3D hardware acceleration. Which means:

1)You make your own graphics hardware
2)You somehow obtain tech information from NVidia and ATI about their cards and make your own drivers.
3)You use an API like D3D and OpenGL like everyone else.

That's it. There's nothing else to it. Either accept it, or move on to another hobby. Sorry...


no, i understand its practically impossible to build an api from scratch, so i have no desire to use graphics acceleration. i may remind you that unreal tournament 2001 is completely playable on a labtop without 3d acceleration. but using dosbox, 3d isnt really possible
mikeman
mikeman
Quote:

i may remind you that unreal tournament 2001 is completely playable on a labtop without 3d acceleration.


Once again, you don't seem to know exactly what you want. You said 'modern 3D environment'. UT 2001 is 7 years ago. Not exactly modern. So, if that's the kind of quality you want, then you can write your own software renderer, by writing pixels on a memory buffer and blitting that buffer on the screen. To do the last part(blitting) you need access to hardware, so you do need to use some API or library, but the interaction is so minimal I imagine not even you would care so much. It will be insanely hard to do it right and efficient, you will have to learn a lot of micro-optimizations and other kind of techniques that are deemed outdated today, it will take you years of hard work at the end of which you will unavoidably be an experienced developer want it or not, and it will still be much slower and with lower visual quality than any other kid's program made in 5 days with OpenGL/D3D, but it can be done.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.