old PC emulator

category: general [glöplog]
I had this in my mind and some months ago i started a program like that. Now i'll rewrite it to make it more flexible and run under windows (the old was running under dos).

The name is PConWin and it's homepage is at http://www.pconwin.cjb.net/ so for more info about this project, look here.
added on the 2002-01-22 17:00:40 by BadSector BadSector
Wow! I didn't knew you started doing a PC2PC emulator, hehe :)
You must be crazy,. if I had time I could help you (And I wish to make my first steps on emulator coding oneday..) I hope you will continue with this big project as far as it goes..

I'll catch you through mail perhaps..


added on the 2002-01-22 20:33:28 by Optimus Optimus
hah, finally someone started such a project :D i hope you'll get lots of support for it. i can't help you unfortunately, i can't write a single line of code ;)
added on the 2002-01-22 20:58:29 by robotriot robotriot
i think you're gonna fail
added on the 2002-01-22 22:14:04 by superplek superplek
VERY cool project! I really HOPE that you will succeed with that goal! I badly would like to finally have the sureness to be able to watch all old prods and demos also in the looong future as well!!
Great! Will spread your URL to some places to get you more advanced coders to help hopefully!!! :-)
added on the 2002-01-22 23:46:50 by Weasel Weasel
Way to go superplek!!! That's some really nifty encouragements you're giving. Let's give him a round of applause.
Hey try this: YOUR ALL GOING TO DIE!!!! HAHAHAHA!!!!! (It's true and you ALL know it).
added on the 2002-01-23 04:52:49 by Nezbie Nezbie
Well... anyone can help me, even if (s)he doesn't know a bit of programming by finding technical information about PCs. For the first, i'll try to make a classic PC emulator (8088) and then i'll extend some things. I believe that if i start to make a 486 emulator from the beginning, i'll feel bored soon and i'll drop the project, so i'm starting from the simplest CPU and then i'll go to 80286 and later 80386 and 80486.

Some notes about the emulation: the emulator will "emulate" the CPU and at the first steps the system BIOS (later i'll probably add real hardware emulation, but since the emulator is being developed for demos and not for more advanced things like operating systems there isn't a such need for these now). I'll also emulate the classic mode 13h, the EGA mode and probably the CGA mode for older demos. At the first points i'll not do sound emulation (excepting, probably, the PC Speaker). Later i'll try to make Sound Blaster 16 emulation and GUS emulation.

The emulator will just emulate the CPU, the screen and the BIOS (probably). The other devices (Sound Cards, Mouse, etc), will be DLLs in order to be updated and added or removed easylly. Also a device SDK will be available for those who wants to make the emulator support their own card and/or make better emulation of an existing card.

The source code will -probably- be open, but at this moment i don't know.

The currect development status is: i'm making the 8088 emulation :).

If i need anything, be sure that i'll tell you either from this BBS or from the PConWin site (or both :P).

Thanks for the support :).
added on the 2002-01-23 08:36:38 by BadSector BadSector
when i said he was going to fail, i was pretty darn serious
since the approach is wrong. why EMULATE the cpu? (for a start..)

we've had tons of funny flames going on with this bad sector guy at csipd, about ms-dos ;)
added on the 2002-01-23 10:37:47 by superplek superplek
I'm guessing BadSector is emulating the behaviour of the CPU, not the CPU itself, because emulating the CPU itself is sillier than a fairly large amount of silly string wrapped around the face of a clown.
added on the 2002-01-23 12:19:17 by sagacity sagacity
Yes, i'll emulate the CPU. I know that this sounds a bit silly (i actually think the same thing), but if you have a better suggestion, i'll be glad to hear it and how i'm going to do it (or better, do the emulator by yourself just because seems that i don't know enough things in order to make a PC emulator...).

I'm wondering.... did this project never started because noone wanted to start it or because some guys were acting like this? I suggest something: you like it? help it. You don't like it? Ignore it or wait until a final version is released before you judge it.
added on the 2002-01-23 13:18:21 by BadSector BadSector
I am indifferent. :)

But anyway, I think emulating the CPU itself is not very useful. Why not start emulating an old videocard? An old soundcard?
added on the 2002-01-23 14:30:26 by sagacity sagacity
I'd be happy with GUS Classic drivers for 2K :)
I think it's an excellent idea to have a PC2PC emulator, and kudos' to BadSector for taking the initiative to DO what others have just talked and whined about (or at least START) :o)

added on the 2002-01-23 14:38:27 by hd hd
Wait a minute.... i think that you misunderstood what i said! I don't want to make a kind of a specific hardware emulator that lets some apps who needs it to run (the most famous example that i can think right now is the SIMCGA2 that was letting me to run CGA applications on my Hercules card at my old XT).

I want to make a complete system emulator! An emulator that emulates PCs, like others emulators are emulating Amiga, Atari, CPC, Spectrum, etc...

When i saw the other BBS from Zafos saying that there is a need of an old-computer emulator (i don't remember if zafos said that or somebody else), that was what i thought. If this isn't what they were meaning, then i made a mistake.

But i think that emulating the system from the CPU, is better (even if requires more processing power... but anyway how much more? Now we have computing beasts and with good coding methods the "lose" will not be very big), even if now it seems silly, because at the future with the next version of Windows or the next hardware, those old programs will probably not run. But with a complete emulation, in a windows program, there will not be a such problem (i think).

Well... this is what i think. Tell me if i'm wrong.
added on the 2002-01-23 14:48:30 by BadSector BadSector
Let me rephrase:

What is the point of emulating a CPU?
added on the 2002-01-23 15:15:47 by sagacity sagacity
I agree that it's best to emulate the CPU. There's more than one reason for this. One, you have complete control over a fully emulated environment. Behaviour should be reproducible, and this will help track down problems and eventually maximize compatibility, given that you keep putting in the time. Another reason is that it's a solution that will work in the long term. We don't know how things will change in the future, so it's best to keep this emulator as portable as possible. Also, in the long term (this emulator *will* take a lot of time to develop), efficiency won't be an issue since this emulator is meant to run *old* demos.. and processors are getting faster and faster. If you look at portable emulator source now, you'll see horribly unoptimized crap, and from looking at those, it seems that even a very badly done emulator should be able to run most of the demos you'd like to run, with a 2GHz chip. My initial target would be an emulated P133 or P166 at full speed. That was enough for a good experience, back in the day :)
added on the 2002-01-23 15:52:34 by bigcheese bigcheese
Some of my reasoning is just personal preference. To me, trying to have the demos run natively, while slowing it down, and catching certain instructions for emulating hardware.. would be an unmanageable nightmare, and I'd expect to have a lot of bugs/issues.
added on the 2002-01-23 15:56:56 by bigcheese bigcheese
also, I lied. I think speed would still be an issue :) BUT, at least you can dump the frames/audio and encode to high-quality video. This would rock, no? ;)
added on the 2002-01-23 15:59:30 by bigcheese bigcheese
sagacity: i'm emulating the PC, not the CPU, but i have from somewhere to start and i think -from my previous emulation experience (which is 2 emulators actually for two old 8bit machines)- that the best start is the CPU.

bigcheese: i totaly agree with you about the portability thing. I'm afraid that if i don't make 100% emulation, some next versions of software/hardware will not let my emulator to run as it was running in current software/hardware.

Btw, what is the problem with the speed that you said here?:
"also, I lied. I think speed would still be an issue :)"

added on the 2002-01-23 16:21:24 by BadSector BadSector
During my post, I was basing my speed predictions on emulators I've run before.
After my post, I worried a bit about the performance you'd get when a demo is drawing to a large 24 or 32bpp framebuffer... or perhaps how performance would be for a high-resolution demo running in a paletted mode, with effects relying on copperbar-like palette effects. This could get slow if it's not kept in mind during design. I'm not sure how slow this would be, but it was enough to worry me, and to make me think that the most demanding dos demos might not be able to run as fast as you'd like for a while.
However, if the emulator is not able to run at full speed, my opinion is that this doesn't matter - as long as the emulator has an option to dump the video/audio to disk (with enough information for proper synch). Since demos are non-interactive, this is a viable solution.. and in many ways, this is a superior solution, given that playing your favourite demos from disk in a video player is less of a hassle than having to run through an emulator - possibly even having to deal with the config.sys and autoexec.bat settings on the emulated system. Many people would prefer to download a good capture of the demo, and never have to learn how to use the emulator :)
added on the 2002-01-23 19:02:36 by bigcheese bigcheese
I should add that the objectives of this emulator should be decided soon. If it's to be a tool for salvaging old demos by making perfect dumps of them to video formats, then it'll be all about accuracy - and ease of use won't be very important, since few people will need to use it. If you want to watch the demos in realtime, then there'll obviously be more focus on optimization, and ease of use (since everyone will want to watch their demos using this).
added on the 2002-01-23 19:10:24 by bigcheese bigcheese
(sorry for writing so much) .. but I'd like the realtime solution too.. since there are of course old games I'd like to be able to run :) (and I'm certainly not the only one)
added on the 2002-01-23 19:12:17 by bigcheese bigcheese
Way to go, BadSector!

I think if there's one thing the scene needs, it's this. Sure, most people can go cobble together an old computer from parts for $50 or less, but that's such a pain.

An emulator, especially if it had hard disk access (virtual partitions? see more at the end...), would remove a lot of the tedium.

I also support your decision to emulate the BIOS, CPU, and video hardware, as that is basically all you need to make a functional PC. Most emulators of any real worth *do* directly emulated the BIOS, CPU, and video hardware, as well as anything else that is directly needed to get the computer to run. I have a Mac emulator that does just this, and it is surprisingly fast and usable (approximately 1/4 of the PC's speed), though it does have a few bugs, probably in the processor code.

Keep at it, if you think you can do it, then you probably can.

(Hard drive idea: Emulation of hard drives is almost always a tricky subject, because the OS accesses the HD directly, and so in most cases, HD's are emulated by using HUGE files, which are then mounted like normal disks. If possible, though (not sure if it is, I don't do much programming, especially not low-level stuff), it would be REALLY great if you could assign a directory to be the root ( C:>\ ), so you could just drag and drop files into it, including the OS (like DOS, or whatever), and then run the emu, and everything would work... You could do the same thing for all drive letters, so A:>\ would access the A drive, or you could assign it to a folder, and boot from a folder... Just a thought, I guess... So not every piece of hardware would be strictly emulated - the disk access would have to be fudged, but I guess that's okay.)
laserbeams: the feature you described, making a directory on the hd for the emulator to access and boot from works with winuae, the amiga emulator. so it should be even less difficult to do for a pc emulator running on a pc :)
added on the 2002-01-23 22:10:19 by robotriot robotriot
You guys might want to check out Bochs - seems to be pretty much what you're talking about...
I 'spose Bochs could have potential.. after all, it can run Win2k, and that's no small feat. I guess it'd take a relatively small amount of work to get a reasonable user interface up and running for it. If that's not done, I'll avoid it like the plague :) (I get major headaches trying to configure linux-born opensource projects, no matter how noble the efforts may be)
added on the 2002-01-24 06:58:32 by bigcheese bigcheese