QFML V1.11 Quick Flat Memory Lite: A flat-real mode memory manager. (C)opyrights 1995 RENDER of ACC TEAM þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ The first version (1.10) of this program was first uploaded to oak.oakland.edu during January of 1995 and was retired inmediatly due to some bugs encountered in the error routines and the A20 enable routine. I have seen a copy of that early version in teeri.oulu.fi and this version (1.11) is meant to replace the earlier. þþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþ After trying many DOS extenders I decided to program this one. All the extenders I have seen have limitations like not running without himem or restricting the 4Gb offsets to one segment register. QFM has these advantatges: - Flat-mode (4Gb linear memory locations) - Real-mode (No speed loss) - Full MsDos compatible - Work with or without himem - Can be used under C (I have used Borlandc 3.1) - Works with segments es,fs,gs and ds. In order to use QFM you must ensure that the processor is not already running under protected mode. This is because QFM does not support DPMI or QEMM so it can stay in real mode. If it stayed under DPMI it would be slower, because protected mode does some extra work which you may not need. If QFM encounters this problem it will print a message and return an error value. Using QFM is simplicity itself: - Start QFM: StartPL() - Open all free mem. after first Mgb: OpenMem() - Get the starting adress of that block: p=GiveSta() - Now you can address from postion 0 to 4Gb just by setting one of the segments registers(gs,ds,es,fs) to 0 and using a 32-bit offset (EDI,ESI,EBX,etc..) - End your code with CloseMem() and LeavePL() For a detailed explanation on functions, please refer to qfml11.h, examples1.cpp and example2.cpp. HOW TO INCLUDE IT: If you are coding C follow these instructions: (Borlandc 3.1) - Make a project including your files and QFML.OBJ. A good starting point would be to make one from example1.prj or example2.prj. Notice that if QFML.OBJ does not include debug information. - Use a program like prj2mak to get the make file and modify the line which states TLINK [options], adding the parameter /3 in the options. - Now you can use MAKE to compile. Notice that you cannot compile within the IDE as the integrated linker will not allow you to link 32-bit code. - You can still use Turbo debbuger to debug your programs. One important point: You MUST compile with models MEDIUM,LARGE or HUGE, because the code of QFML must be in a far segment. QFML was assembled using: TASM /m2 /zn /z /w2 /ml qfml.asm Parameter ml makes case sensitive function names. The best C envirorment would be a programer editor like ME or Qedit and invoke make from there. You should keep in mind that the editor must run in real mode. You cannot execute within the IDE as it runs under protected mode, but you can debug it with TURBODEBBUGER. UNREGISTERED VERSION: The unregistered version allows a maximum of 256 K. and has a delay in the StartPL function which may not appear in some cases. IT CAN BE FREELY DISTRIBUTED TO ANYONE INTERESTED WITH NO CHARGE, BUT IT MUST BE COPIED IN ITS COMPLETE FORM. The registered version gets all memory available, no delay and some options like non-echo. Depending on response or special enquire I may give a Pascal and assembly interface.To register send 1000 Pts. or 5 pounds to: Mickel Bernal Herzog Pascual Orozco 13, Entresuelo A 03006. ALICANTE SPAIN You'll get the complete version and some more examples. For more information e-mail me at: a00458@DTIC.ua.es ( Please include your e-mail at the bottom of message ) RENDER (Guillermo Alejandro Collada Ali) 1995