This is 386Power (386P) Release 2.00 plus part of the XGE (eXtended Game Engine) 2.00 As i said this package contains A) a DOS-EXTENDER module (386power.asm) B) Lots of protected mode routines designed to work with 386Power but that you can "migrate" to another dos-extender if you want. I have been FORCED to early release 386P 2.00 because i've been called for my military service year before the expected time. In the last three days before my call i worked really hard to complete and check as much things i could. Current status: - The graphics subsystem is complete It has lots of useful routines (sprites, tiled background, basic pixel blitting and bitmap character support) and includes support for loadable device drivers (the XSD drivers) that will let you get the max. from your graphic card. - The menuing module needs just and extra function to support "automatic setup" of "link on the run" sound drivers (this was part of the "new sound system" upgrade), but the module works perfectly. - The dos-extender supports DPMI (read: it can run in a dos-box under Windows or OS/2) and VCPI (read: with ms-dos you need EMM386 installed ) (EMS memory support or at least the VCPI interface) and it has "alpha" XSM and "raw 386" support (sorry, had not enough time to complete the latter two). Anyway it is designed for portability, if you want you can upgrade it or totally replace it with another dos-extender. - The "new" sound system is ... scattered in various files and is absolutely not working, but the pieces of code i included and the documentations about the sound system may give you some good ideas about how to make a sound system on your own (sorry, while devenloping the "new" sound system i ripped off the "old" sound system so, don't ask me about the old one). The sound system will be completed in release 3.00 (out as soon as possible). - Keyboard, joystick and mouse support is present, together with some infos about the "device driven" input device support i plan to add. - Lots of documentation and comments, ranging from technichal stuff to "computer programming ruminations" to mentally insane things (sorry, something got typed at 2:00 AM, when i'm pretty lunatic) Anyway if you don't like the limitations of this dos-extender you can "migrate" ALL the XGE library code to ANOTHER dos-extender in less than two hours. READ PROBLEMS.TXT if you have problems with this code READ ERRATA.TXT to see last minute corrections to these documents ABSOLUTELY READ IT!!!!!!! And just in case you need it .... READ QUICKFIX.TXT to see how you can quickly transport ALL the XGE code to another dos-extender!!!!!! What's this stuff: You will find the source code of a dos-extender module (386power) written in 386 assembly and various assembly source files containing what i call the basic modules of XGE (eh! XGE is shorter than "that bunch of routines i think are useful to build games under protected mode" :) ). You will find nearly a megabyte of optimized assembly code and documentation. Even if you won't use assembly, you can "clip" the critical routines you find interesting and use 'em with high level languages. Some of these "cannonball" routines make a 486 look like a Pentium and make a Pentium run TWICE the speed you usually get from it (because of full scale instruction and data flow optimization). BE WARNED: from release 1.01 to 2.00 LOTS OF THINGS CHANGED!!!! Look in the *.TXT and *.INC files for more info (and if it's not enough, even in the *.asm files there are infos) READ examples.txt to see how to assemble and execute the example programs. Read ALL the .TXT files (ascii text) for more info (n.b. the rm_*.txt files contains "read me" stuff while the other usually contains more specific descriptions). Some text files are A LOT outside the focus of this collection of source files, but i think they are worth reading (just to have a laugh if nothing else) (some of them has been coded at 2:00 A.M. when i'm quite lunatic) If it's not enough, read the *.INC files. If INCs give too few infos, try the *.ASM ones but be warned, they are partially commented in italian. Start with books.txt asmpower.txt 386power.txt, tech.txt, troubles.txt optimize.txt then the rest. What's hot (read: NEW! POWERFUL! :) :) ..and not so much tested (oops!) :( 1) Load-on-the-run DEVICE DRIVERS! Now your 386powered programs can self-configure and support multiple drivers for audio,video and game input hardware. This is no WinG, but makes life easier in extended-dos. What's more, you will be able to add new powerful drivers to existing 386powered (2.00) programs, and if you can't find the drivers and know how to program in 386 assembly you will be able to QUICKLY build yourself an XGE driver for your brand new super-duper card. 2) IRQ REDIRECTOR for the VCPI dos-extender subsystem, now you don't have to worry about VCPI or DPMI. When serving an IRQ, the redirectors will take care of (almost) everything needed to switch into the context of your irq handler. I've tested it heavily on my system, but very little on others (just two 486 systems) 3) New timing functions! Now the system timer can support multiple time granularities with only the irq response time as a limit. The "timed" routines are treated like a list of events. The only thing you have to remember is not to overload too much the system (that is: use the timed routines only to trigger flags or to perform very quick and low level activities). 4) Menuing system (quite primitive, but can grow) This is a very primitive menuing system, just to give you an idea about how to build a menu engine, modify it a little and you will get a "professional" menuing system. 5) Whew! My call for militar service has been delayed a little so i had enough time to start working on a beefed-up multichannel mixer module with lots of useful functions. BUT the call has been delayed VERY little (while i expected a 3..4 months delay) so they called me for mil. service while i was starting typing in the code. ARGH! Anyway i included some of the preliminary stuff to give you an idea of what you will see in 386Power 3.00 (out as soon as possible). 6) CHANGED THE DOS-EXTENDER INTERFACE (but you can translate most of the old code to "new interface" with just a pair of "search & replace" [ change "int 33h" to "call _ExecINT" and "int 32h" to "call _ExecReal" ]. Improved IRQ support, added VIRTUAL DMA support (but had not enough time to test it very much, oops!). Added new useful functions and beefed up dos-extender capabilities (see tech.txt). Why all this? Portability is the key! Now the new interface eases "device driver" linking. I also want to make things that by just adding a new "dos-extender module" can migrate to a totally new op-sys or PROCESSOR!!! The next "system support" dos-extender subsystem i plan to add is a "LINUX KERNEL" (as soon as possible) so you will be able to run your programs without ms-dos (booting a stripped down linux kernel) or from within linux (on systems with linux installed) (read: In a future release you may see... _386Man = 5 --> "Linux lite" _386Man = 6 --> full Linux installation ) 7) CPU DETECTION! Now you can take advantage of all the processor capabilities (but still no direct FPU detection)(for now) 386Power can recognize everything from a 386 to a Pentium (and takes care of "detection incompatibilities" caused by the "new" Intel 486 with CPUID support)... ... and it can already recognize a P6 processor! :) (because if there is CPUID support it can see if the CPU is "more than a Pentium") What's free: This stuff is freeware (usage it's free if you follow what's said in COPYING and LICENSE.TXT ). The dos-extender is based on the PMODE dos-extender by Tran but is NOT a "patched" pmode, it's a different thing using between the other things modified algorithms taken from it. Some portions looks the same but act in really different ways, so if you coded for the pmode don't expect things to be similar or you could miss some very important points. Without Tran i couldn't produce 386P. I found lots of info about VCPI and DPMI, but mostly "function call lists". Only pmode gave me a clear example about how to start up a protected mode program initializing all the critical things. See the future: (386Power roadmap) 386P 3.00 WILL INCLUDE .... - The "complete" and fully operational XSD sound system you can see some fragments into release 2.00 - High-speed machine code self-compilers YOU can quickly configure to fit our needs. - Improved graphic interface building blocks. - (hopefully) LINUX "game extender" (you will be able to run on "raw" hardware, even without messy-dos). - Win95 support (if i get my hands on a devenlopement kit). N.B. Into XGE you will find TRLE sprite (Transparency Run Lenght Encoded sprite) routines. If you use them, always store the bitmaps as "pictures" (planar bitmaps) or PCX images (compressed if you want to save space) and compile them to sprite at runtime. The reason for this is that i may change the TRLE format in the near future. Lorenzo Micheletto. P.S. Maybe, lost in the docs you will find references to a thing called 'autolinker'. I decided DO NOT include autolink-like capabilities because as it was planned it introduced unwanted "cracking" capabilities to anything running 386P. Maybe after militar service i will work on a "safe" autolink but for now don't count on it, just use the loadable drivers.