New stuff in v2.05 *Final* - operator delete has been added Now the \test\testcpp.cpp program fully compiles using: BCPP2EXE.BAT or WCPP2EXE.BAT or MCPP2EXE.BAT It was not easy. Check out the \SRC\QLIB directory and look at ?CCPP.CPP files. Each compiler has it's own C++ calling convention, so the new() and delete() operators are compiled with each compiler. - packit.exe was corrupted and recompiled - fixed problems in lzw.h and stdlib.h - fixed bug in str2numx(), recompiled QSETUP to fix problem (v1.01a) - NASM v0.94 has been supported: NASM2EXE.BAT and NASM2OBJ.BAT have been added. Note: NASM does not support the files within the \INC directory so your own your own. I'll try and come up with something. (TASM does not really support those INC files either, I'll have to try and accomidate them all). See : \test\nasmtest.asm - WASM has also been supported: Use WASM2EXE.BAT and WASM2OBJ.BAT (it also does not support those INCs) New stuff in v2.04 *Final* - supports Watcom C++ v11.0 - it seems that the (-7) option I was using is no longer supported but (-fpi87) does the same trick and is supported by both 10.6 and 11.0 New stuff in v2.04 Beta #2 - Now supports Visual C++ Compilers (32bit) CL.EXE new BAT files are: MC2OBJ.BAT & MCPP2OBJ.BAT - compile to OBJ file MC2EXE.BAT & MCPP2EXE.BAT - compile to EXE file - outp... fixed (now returns value you gave) - fixed scanf() and gets() to use new key codes (use to use old made-up key codes) - the exec...() bugs have been finaly removed, I've found that Borland does it the same way I do so it never really was a bug... New stuff in v2.04 Beta #1 - now supports WDOSX dos extender - Major Bug fix : filelength() and tell() were using the old 21/42h funcs when QLIB was using DOS32 dos extender. Now fixed to use CX:DX as PMODE/W does not extend that func. This was how DOS/4GW does it too. - QLINK executes the SET file differently now. See compile.txt. - All ...2EXE.BAT files will accept OBJs and LIBs to be linked in final EXE (ie: bc2exe prog qgrafix.lib) - FIX: random() was not preserving regs - NEW: void *t_savestate() = saves current video mode (text mode only) - will use malloc() void t_restorestate(void *) = restores video mode - does not free memory (just use free() if you no longer need it) New stuff in v2.03 *Final* - added : delay(), sleep(), sound(), nosound() New stuff in v2.03 Beta #5 - iASM has been removed from the BAT files cause it causes too many problems (see iasm.txt to find out why) - grafix fixes : g_put0() - grafix additions : g_setfntcolor() Sets color to draw mono-coloured fonts. Mono-coloured fonts are new but all they are is just the flags bit in the fnt header set to "1". If coloured fonts are loaded then g_setfntcolor() will fail. - g_fntcolor() has been removed. (it was used to physically change a loaded font to another color instead) - the grafix routines have been slightly optimized. - stdin,stdout,stderr,etc. were placed back in stdio.h since I removed them when I was trying to add Stream IO. Note they are still just handles NOT streams! (fprintf() uses handles not streams) - fix : font.c was not creating 32bit fonts properly - new : font.c can now create mono-color fonts (option /m) New stuff in v2.03 Beta #4 - fixed a major bug in iASM (v1.01 released) - fixed a major bug in grafix LIBs that was introduced in last Beta release - fixed a major bug in QSETUP (v1.01 released) - fixed a minor bug where if main() had parameters then Watcom added an 'extern argc' (without the underscore) for no reason. - fixed a minor bug in QLINK.BAT where it would not run .SET files if DOS/4GW was used instead of PMODE/W - time() has been renamed to _time() due to naming conflicts - fixed clock() and _time(), were not preserving all regs - fixed a bug in realloc() - moved directoies around a little - The MAKE Bat files in \test have been replaced with actual MAK files - QMAKE was created to help a little (actually does not really do anything special but what the hay) New stuff in v2.03 Beta #3 - fixed more typos in Header files - fixed a MAJOR bug in lseek() It seems that DOS32 extends DOS func 42h but PMODE/W and DOS/4gw don't and since QLIB was orginially desiged for DOS32 it was expecting it to be extended. The result was that seeks beyond 64k would wrap around. New stuff in v2.03 Beta #2 - fixed major bug in int86...() funcs - fixed typos in Header files New stuff in v2.03 Beta #1 - Windoze 95 title/close awareness functions added see \TEST\Win95.c - now CPP compatible ! (but QLIB still does not support streams) - wherex() and wherey() added - time() and clock() added with time.h (time.inc) New stuff in v2.02 - getch() now supports multi-language kbds, so now getch() returns ASCII keys in compliance with ANSI C. My special keys are no longer returned but the key_tables are still there and maintained by the IRQ handler. - ungetch() was added - another total grafix update (major improvement!!) The Grafix Funcs have become more easier to use. I've made it more consistant when setting up video modes. The 3 funcs are: g_getmode(x,y,bpp) - checks if mode is avail. Supports VGA,VESA 1.2 & 2.0 and modeX. g_setmode(void) - sets last mode that was checked with g_getmode() t_setmode(x,y) - sets text mode to (x,y) Please read VIDEO.TXT within the TXT dir. Note : The grafix LIBs are now a seperate LIB from QLIB. It's called QGRAFIX.LIB and you should use QLINK to link it in with your projects. See M-GRAFIX.BAT within \TEST for a good example. - the DMA alloc funcs have been changed slightly - spawn...() was fixed. Preivously new enviroments were not setup correctly New stuff in v2.01 - updated PACK file sub-system greatly - no funcs were reserving regs (bug) - pack_open_hdr() added which is the same as pack_open() but the new one requires a header already loaded in memory and a ptr that pts to it (see pack.txt) The header comes from a new option with PACKIT - lseek has more error trapping - pack_init() now takes 2 parameters (see pack.txt) - pack_uninit() added : frees buffer and such (disables the whole thing) closes all files - pack_close() added : closes packed files - added random funcs - rand(),srand(),random(),randomize() - gets(), puts() added (never really needed them before) - fixed a bug in callp (v1.05) - added BIN2ASM, a utility to convert files into ASM files so you can insert them into your EXE file easily - clrscr() was clearing too much video RAM and erasing b800h for 16k. a mirracle it was never detected until today when for some reason my programs where no longer working New stuff in v2.00 *FINAL* - nothin' same as Beta #8 New stuff in v2.00 Beta #8 - scanf() fixed heavily - Watcom Math LIBs fixed (again) New stuff in v2.00 Beta #7 - added support for %e (...scanf() supports it too) - change OS detection slightly (new variables, see os.txt) - and other bug fixes - spawn...() bugs have been traced down to a PMODE/W bug, so QLIB was working the whole time. (use DOS/4GW until this is resolved) - atof() bug fix and supports exp numbers (ie: 4.43e4) - ctype.h now includes all those is... macros (stolen from BCv5.0) Sorry, not avail in ctype.inc (come on, ASM doesn't need it) New stuff in v2.00 Beta #6 - fixed Math LIBs greatly - also fixed WC2EXE and WPP2EXE to use Watcom Math LIBs by default which for some reason was not setup (that's what you get for block copying) - fixed width specs for %f - NOTE : the new stdio funcs presented in Beta #5 DO NOT use streams, they just use file IO handles. New stuff in v2.00 Beta #5 - alloc_phys() now returns NULL on error (as does malloc,calloc and getenv) - free_phys() fixed - added many math funcs (exp, log, log2 ,log10, pow, sqrt) - added some stdio funcs (fprintf, vfprintf) These func do not use streams but the stdin,stdout DOS handles! - added perror(), sys_errlist, sys_nerr (under 2k) - ftoa() now support +/-NAN and +/-INF !!! New stuff in v2.00 Beta #4 - pasm now handles single quotes inside the double quotes for you Before you had to double them up so that inside _str_.tmp they would work. Anyways...it's fixed - fixed realloc() (not even tested before) - callp macro now can push REAL10 Note : I will release this as "v2.00 FINAL" as soon as ALL known bugs are squashed. (like the damn spawn...() bug) New stuff in v2.00 Beta #3ab - make.bat in \lib\src was updated to support newer Add-ons to appear soon - gui was taken out because a newer version will be introduced soon with a visual editor (this will be an Add-on) - play was taken out because it will be replaced with AVI support some day - Add-ons will be GUI,M32(updated and with an editor),SC(sound card services supporting SB,GUS) All this will hopefully happen over the next year. - 'play' and the old 'gui' will be available as Add-ons but will be outdated someday a] fixed alloc.h (realloc() was wrong) b] recompiled all EXEs making them smaller because GUI and PLAY were removed New stuff in v2.00 Beta #2 - QSETUP was added to control memory alloc during startup - fixes a bug that prevented spawn...() and system() from working under Windoze (or any DPMI server) - HEAP_MIN and HEAP_MAX may be zero now, making the EXE require no XMS. - QLITE bat file made (to make compressing easier) - bug fixed : vsprintf() was not preserving regs New stuff in v2.00 Beta #1 - Now requires PMODE/W - dropped the debugger - major changes to the video drivers (see video.txt in \txt for explaination - functions have been added/renamed!) VESA 2.0 is no longer required to use the mouse and stuff (VESA 1.2 is) modeX grafix added - removed setvect,getvect cause I don't know how they should work in PMODE just use setint,getint,setrmint,getrmint - support for Borland C complier (bcc32.exe) added (required to make seperate math LIB) - created new header files which are now more C compatible (see examples) - all Video function now are prefixed with 'g_' to unclutter things and a few where totally renamed v_copy = g_copy gset = g_setbuf - added support for BCv5.0 - final switch back to C convention where the underscore is appended to all globals/externs (placed a #pragma aux default "_*"; in QLIB.H when using the Watcom compiler to allow this) - renamed some num2str... procs (see next line) - added many, many functions getche(), num2strb(str,binary), num2strx(str,hex), num2stro(str,octal) ALL "C" string functions (ie: strccpy, strcspn, stricmp, etc.) New stuff in v1.20.00 - getch() now also returns: 90h = Pause key (non-repeater) 91h = Print screen - keyboard services have been greatly improved - key LOCKS are handled by BIOS now - certain keys can be blocked from going to RMODE to prevent CTRL+BRK and CTRL+ALT+DEL: key_block(x) where x-> 1=yes 0=no - LOCK keys can be blocked from going to RMODE: key_block_locks(x) dito - key_lights(x) to change the kbd lights (also updates BIOS flags) - setvect/getvect added in C programming (in case you don't wanna use the setint/getint that I created (they simple just call them - kinda) New stuff in v1.10.00 - Naming the project QLIB (Quick Libraries)!! - key_init() is now called during startup and is no longer public - ALL FUNCTIONS NOW RETURN -1 ON ERRORs (including malloc,getenv...) I hate trying to guess what each one uses. Placed 'ERROR equ -1' in qlib.inc and qlib.h - changed start32.inc to qlib.inc (and the .h version too) - changed start32.obj to c0.obj - changed scanf() to sprintf() (that is what it was really doing) duh!!! I don't know why I called it that before. Oh well, it's fixed now - added so many new funtions str2num() and hex/binary versions : str2num_h str2num_b sscanf() just like in C - oh so many more bug Fixes - memcpy was not copying backwards properly when src I'm using it for my MOD editor, making somethin like FT2 - The Video.asm has gone under slight changes for speed. -v_copy has 2 versions now (1 for 256 color mode and another for all others - but you don't have to worry which to use, just use v_copy and it will do what is correct) (it was for speed!) -gloadfnt() now allocs RAM for you and returns ptr in eax -gfntcolor() NEW! Used to change the color of fonts (for single color fonts only in 256 color modes only) - Something I needed -fixed many bugs - Default stack size is now 8Kb (in c0.asm) ...it was 64K - Check out GUITEST.EXE in 'test' and PLASMA.EXE - created new BAT files for C compiling C2EXE.BAT - for use with the Watcom C compiler (it sets many options with in the BAT file neccessary to use Watcom) BC2EXE.BAT - for use with Borland C V4.x compiler (BCC32.EXE) - generate underbar to all globals is now disabled! This is because watcom can't add them but BCC32 and MASM has the choice so I decided not to add them anymore. In BCC32 and option -u is used and in MASM I use SYSCALL which is just like C except no underbar adding (according to dox it is not like C but the dox are messed up) - and much much more but I can't remember it all now New stuff in V1.00.03 - more bug fixes - never released? can't remember why... New stuff in V1.00.02 just bug fixes: - getenv was returning -1 on error but should have been NULL - text.asm which is included in programs had an END directive New stuff in V1.00.00 Alpha #1: MAJOR CHANGES!!! - Changed video drivers from DLLs to a single OBJ file. Now supports VBE 2.0 with linear addressing. (both required to use VESA modes) And stardard VGA mode. All have mouse support and loading/printing fonts. - Added many more ANSI C funtions: file io: chdir,mkdir,rmdir,getcwd,getdcwd,unlink,setdisk,getdisk,rename misc: memcpy(overlayable),memset,memcmp string: str2num - Finished Flic player: bmp2flk : utility to convert multiple BMP files into a flic (FLK) playflk : view flics of 320x200x24bit only flk? : is a flic format I created, somewhat like FLI and FLC except it support bpp>8 (uses same compression DELTA & RLE) - And more bug fixes - Dropped DLL support for loading DLLs that can access variables in the main program. (needed a lot of ugly lookup tables) It was too ugly and not needed anymore. (it was for the video DLLs and those are now a single beautiful OBJ file) New stuff in Preáeta V0.04: - PACK.asm now maintains the files current pos and monitors reads. If a read goes beyond the file it is shorted and no more reading is allowed. Very cool... - data.000 prev did not have str2 packed into it so tpack failed in V0.03 - New functions have been completed: EOF() FILELENGTH() TELL() ;all just like in C ;all work on normal files and packed files. New stuff in Preáeta V0.03: - added a size variable in pack files for great support on lseeking and other stuff - scanf's & printf's format string now contains 2 new things (+ and 0) and support 's' for strings %[0][+][S|H|B]type type = b:byte w:word d:dword s:string c:char 0=print all leading zeros in # (eg: byte:000 word:00000 dword:000000000) +=use + when printing signed #'s S=signed H=hex B=binary - fixed more bugs V0.02 - V0.01 = pretty boring (actuall I never loged those) ...