Q&D Tools for DOS "Freeware" final distribution (2010 updated 2000 package) Copyright (C) by PhG "Command line for ever !" "-- Why do we have to hide from the Code Police, Daddy ? -- Because we use TopSpeed Modula-2, son. They use Micro$oft C." Although Q&D Tools programs were created in good (?) old DOS days, most of them are still useful in those (censored) Win9X days (this was written before the WinXP/Vista Coming Age of Darkness). Well, *I* still use them, although their main code has been almost frozen for years now (except for a few functions added and glitches fixed). Maybe you'll find a few of them of some interest, too, if you still happen to run any flavor of DOS or command line console. Documentation is minimal but this should not be a problem for command line users. And the package is freeware, after all. Besides, for most of the programs, Modula-2 and PowerBASIC source code is provided, even though this courtesy is neither useful nor educational (please note freeware status and sources providing do NOT mean "public domain" nor "GPLed" code : I value my time and (limited) skills as highly as anyone, and I don't think "collective authorship" is a good thing anyway). Yes, I know, "me too", as every programmer, I've seen better code, but I've also seen (much) worse code, whatever its origin (even from commercial software editors). So what ? Should you read the source files and should you not like what you'll see, just remember that once a program is compiled and works as intended, its source code quality (or lack of) does not really matter ; its source language does not either, even if it's not assembly language. Design matters first, implementation comes second. Incidentally, nobody should remain an "assembly rules everywhere" young snob for too long a time ! In my good old Apple ][ days, I was one of them. Now, thanks to the "no comment" school I was an advocate of, I no longer fully understand my own brilliant (at the time) 6502 source codes from that far time, whether it's my word processor, my graphics editors, my graphics libraries, my operating system (yep, I wrote one) and my Apple compatible ROM (no small feat in my not so humble opinion ). Moreover, the Q&D Tools were never intended as academic "tours de force" : they were mainly written to solve (minor) real-world problems, as Yet Another Complete Waste of Time illustrations, or even merely for the fun of playing the (almost) ultimate game of (il)logic called "programming". Famous moralist S‚bastien-Roch Nicolas was right when he wrote : "On court les risques du d‚go–t en voyant comment l'administration, la justice et la cuisine se pr‚parent.". This applies to source code too. ;-) At least, you may use the .MOD files as an inspiration : in this industry, we all like to reinvent the wheel, because it will be *our* own hand-crafted wheel... -- which sometimes accounts for its (lack of) roundness. Provided it's useful, after all... Note next paragraph has been left for text history, although most of its warnings and statements are no longer applicable to current state of the programs, now LFN support has been added to the most important tools : however, none of the Q&D Tools will correctly process any file whose size is 2 Gb or beyond. 2.147.483.647 bytes should be enough for everybody, anyway. ;-) Please keep in mind many Q&D Tools programs "suffer" from historical implementation limits (because of hardware, DOS, libraries and compiler used) : 2 Gb maximum individual file size, 8+3 filenames, limited maximum number of files or directories, hard disk size, etc. These limits should not be too cumbersome anyway, as they were not with the PC mainly used to develop these programs : a 486 DX 33 with 8 Mb RAM and 250 Mb hard disk, later replaced with a Pentium II 233 with 64 Mb RAM and 2 Gb hard disk. Note any fast PC is likely to force some weird (harmless) effects with sounds generated by TopSpeed libraries and with graphics (which may be too fast). As a last minute bonus (and a way to gafiate -- Science-Fiction fans will understand), a few useless programs for Windows 3.1 ("classic" Vindoze, a.k.a. Win92) have been included : they will run with the games-oriented operating system often refered to as "Vindoze 98". 2000 note : at a few users' request, most utilities have been revised to include minimal support for Win9X LFNs : this support may not be rock-solid (it makes a few assumptions about character sets and other minor things), but it's effective enough to enable me and others to use my Q&D Tools from Win98SE DOS sessions for system maintenance. 2006 note : while code was supposed to be almost frozen in 2000, a new computer bought in 2005 (a Pentium 4 running at 2.6 GHz with 512 Mb RAM and 80 Gb hard disk) required a full rewrite for those really useful programs : VITAL, DTHS and CS, which were not adapted to huge hard disks handling. Moreover, a few friends and acquaintances did require a few updates for their Win9X and WinXP boxes. Therefore, a few utilities have been checked (read : better bugfixed), enhanced and/or rewritten. Besides, Q&D AstroTools freeware package has been included in QDTOOLS archive. Although its purpose may seem frivolous (or even nonsensical to many), it should do as a good demonstration of the excellence of Modula-2 for writing a non-trivial real-world problem solver. 2007 note : programming (read : adding unnecessary features) is really a never ending story... and therefore a few bugs/features were fixed/added, last for the FreeDOS project. But this time, this archive is really final. Well... it should be. "Promesse de Gascon", as one says in France ? 2008 note : "Never say 'never' again..." :-( Yet another occasion for a few enhancements, new features and minor fixes. Even better : I finally took the time to write UCLONE, thus adding the very last step to my backup paranoia. 2009 note : "Game Over" ? 2010 note : Yes, "Game Over" for real, this time. A definite farewell to computing and to computers. The QDTOOLS.ZIP freeware archive will no longer be updated. (* SPECIAL THANKS *) First, Mr Schlegel is to be thanked for hosting this collection of (f)utilities on his excellent Modula-2 site ("http://freepages.modula2.org"). When I faked youth, I would only swear by 6502 assembler (ah, the AIM 65 and Apple ][+ days...) and Forth, to the point of being almost fanatic. I now have a debt to Niklaus Wirth for Modula-2 and Oberon languages, whose design and crystal-clear syntax are among the most elegant I've seen. I'm still wondering how the very same great man could also be responsible for the earlier (ugly) Pascal syntax quirks... :-) The Q&D Tools would lack a few features without Fabrice Bellard (for his freeware LZEXE DOS packer, used to pack all DOS executables) and Matt Pritchard (for his public domain Mode X library). Jim Hall and the FreeDOS project are to be thanked, too, for their work keeping good old DOS alive and well, up to modern hardware, even though they seem to think C and ASM are 42 (er... the Ultimate Answer to Every Question). Though I'm "semper fidelis" (and please, please, do NOT shorten this already concise Latin formula to the ugly and silly "semper fi" !) to Novell DOS 7, I would probably use FreeDOS if I were to install a new PC (read : on newer hardware). "Woz and Wirth for ever !" anyway ! (* REQUIRED CONFIGURATION *) CHKEM utility (run from command line in directory where archives and CHKEM.LOG are to be found) may be used to detect any tampering (deliberate or accidental) of archives : INSTALL.BAT will always run this program as a safety measure. The full Q&D Tools archive require at least this configuration : - about 20 Mb of hard disk space (including sub-archives and source code : executables alone take of course much, much less space) ; - an Intel 80486DX or better CPU ; - 640 Kb RAM ; - a VGA card ; - a DOS 3.3 or "better" (whether by Micro$oft, I.B.M., Digital Research, Novell, Caldera or whoever else). Please note that some basic knowledge of DOS command line is really required. Should paranoia strike, .BAS source code recompilation requires PowerBASIC 3.1 compiler, while .MOD source code recompilation requires TopSpeed Modula-2 v3.1 DOS compiler with ALL fixes applied to system libraries, with PathStr type being defined as ARRAY[0..128] OF CHAR in FIO.DEF. By the way, even though I did not use too much assembler nor DOS API calls, I strongly doubt XDS Modula-2 compiler will recompile these programs, even with the TopSpeed Compatibility Kit gag : this is left as a (useless) exercice to the reader -- it would be better to fully rewrite the programs from their help screens ! There's some fun comparing the sizes of many of these humble DOS programs to the sizes of similar programs (when they exist) running with other operating systems... and that means : excluding interface code and data, of course. (* INSTALLATION *) QDTOOLS.ZIP archive contains specific ZIP sub-archives whose name tells their application domain. Each EXE executable file has a matching .DOC file created with /? option : this should do for help. A few utilities have companion files, either data (.INI, .DAT, .PCX, .GLO, .TXT, .TX, .DM, .WAV, .BIN) or examples (.BAT -- which may require editing by user before run). For ease of use, you'll probably want to unpack sub-archives in their specific directory before you move your favorite utilities to a directory located in your PATH environment variable. INSTALL.BAT batch file, mainly generated by DIRBAT utility then edited by hand, will perform this operation automatically in current directory, provided DOS PKUNZIP is available and in PATH. Note you may edit INSTALL.BAT in order to change _xarc_ environment variable value if you want to use another ZIP unpacker such as ZIP.EXE by Info-Zip group. Note INSTALL.BAT will unpack *everything*, which account for the 20 Mb required : in fact, the utilities alone take *much* less room. ;-) Just in case it would be useful, QDTOOLS. contains MD5|SHA digests for all files in QDTOOLS.ZIP archive. Paranoids should note one underestimated point : yes, MD5 collisions (and possibly SHA-1) can be forged (on small trivial examples, as far as I know). Anyway, forging data able to fool several checksum or digest methods would require god-like abilities. That's why it's wise to validate data with several algorithms (CRC32 and MD5, MD5 and SHA-1, etc.). Common sense... A note about syntax in help screens : almost always, # means a number either decimal or hexadecimal (with "$" prefix), while $ means a string. In case of a doubt, just check source code ! Again, a last note about an important implementation limit : any file whose size is 2 Gb or more will NOT be correctly processed. (* ARCHIVE CONTENTS *) Note directories ending with "_S" contain programs source code, while M2LIB_S contains Modula-2 libraries, and PBLIB_S PowerBASIC libraries. FUN directory contains a few icons and PIF files for Windows 3.1 -- yes, I *do* still run it even in 2010 ! ;-) For each EXE or SCR executable found in WIN31 directory, there is a matching archive containing its full source code in WIN31_S directory. These programs were written in Visual Basic 3.0 (yerk!) : I don't know (and I don't want to know) if later revisions of Visual Basic are able to recompile provided source code. For Win92 programs, no installation program was thought necessary : freely available runtime files VBRUN300.DLL, PICCLIP.VBX and THREED.VBX should be copied in \WINDOWS\SYSTEM directory, while *.SCR screensavers should be copied in \WINDOWS or in \WINDOWS\SYSTEM. Data files should be copied in their executable directory (in case of doubt, check source code : it is as readable as VB 3.0 allowed it... which says a lot). Programs version scheme is fairly classic with its v#.#? form, where # is a digit and ? a letter. First digit indicates a major rewrite, second digit indicates a substantial change in design (such as the addition of many features), while letter indicates a minor change (such as the addition of a small feature, or a minor quirk/bug fix). A companion text file in French and English may be included, kept here for (personal) historical reasons. ::: DIR ; directory utilities c .exe ; enhanced CD command able to look for partial matches dcomp .exe ; compare filenames in source and target directories fu .exe ; show file usage hdfree .exe ; show disk space isempty .exe ; check if directory is empty makepath.exe ; create multi-part directory popdir .exe ; go back to previously saved directory pushdir .exe ; save current directory total .exe ; show file usage common .bat ; list filenames common to source and target directories uniques .bat ; list filenames unique in source and target directories already .bat ; list filenames from source not existing in target look .bat ; filefind on filenames using C utility usage .bat free .bat ; show free space used .bat ; show used space size .bat ; show file usage ::: FILE ; file utilities byteproc.exe ; apply operation to file cs .exe ; check CRC32 / MD5 / SHA [/ Adler 32 / Fletcher 16] cs .ini delb .exe ; delete files except specified files dd .exe ; xdir/xdel/deltree : 3 in 1 ! dd .ini dirbat .exe ; create batch file to process specified files dirweird.exe ; list "weird" filenames fcomp .exe ; file compare newname .exe ; enhanced rename (prefix, suffix, renumber) pcopy .exe ; copy/move/xcopy + copy preserving path pcopy .ini pending .exe ; list DR-DOS and Novell DOS pending delete files procdups.exe ; list identical (CRC32 or MD5) files with .exe ; process command on specified files delbut .bat ; self-explanatory dirbut .bat ; self-explanatory dironly .bat ; self-explanatory prefix .bat ; self-explanatory suffix .bat ; self-explanatory delchars.bat ; clean filenames ff .bat ; filefind on filenames using DD utility ::: FUN ; fun (un)utilities and old 2D demos aclock .exe ; animated clock curves .exe ; splines daymonth.exe ; on this day (-e option required) daym_ego.dat ; private data file for daymonth.exe dclock .exe ; yet another clock, of the polar kind explode .exe ; explosion simulator fire .exe ; particles fire firebees.exe ; fire bees fortune .exe ; self-explanatory fortune .txt taglines.txt fountain.exe ; interactive fountain gematria.exe ; warning : utter nonsense ! gematria.dat iago .exe ; pretty bad othello lavalamp.exe ; Lava Lamp projector matrix .exe ; over-rated Z-movie but cool text-based effect oclock .exe ; analog clock pfire .exe ; plasma fire plasma .exe ; self-explanatory pulsar .exe ; pretty ugly display qdlife .exe ; yet another Life program qdlife .dat quiz .exe ; world's smallest political quiz implementation quiz .dat quiz .pcx quizfr .dat ; an older French version of quiz.dat quizfr .pcx quizyn .exe ; Yes/No quiz implementation quizyn .dat shuttle .exe ; primitive 3D animation stars .exe ; self-explanatory storm .exe ; very basic storm display storm0 .wav storm1 .wav textgen .exe ; rather nice random text generator textgen .tx user .tx thought .tx subbrag .tx startrek.tx spout .tx slogan .tx psychic .tx noise .tx manifest.tx logotron.tx logotro2.tx headline.tx haiku .tx fog .tx crackpot.tx belief .tx babble .tx tvoff .exe ; old TV shutdown tvstatic.exe ; ugly TV static display vclock .exe ; yet another moving digits clock warp .exe ; ugly starfield wobbler .exe ; fast processor really required xclock .exe ; moving digits clock yiking .exe ; wisdom of the Far East... and/or utter nonsense yiking .dat zigzag .exe ; lines and splines lifedemo.bat ; QDLIFE demo tagline .bat vv .bat ; vclock display nunc .bat ; Solar System astro(il)logical display today .bat ; DayMonth display ::: HACK ; 's utilities dllfind .exe ; list Win16 and Win32 DLLs used by an executable dllfind .ini dths .exe ; read/write hard disk sectors peek .exe ; find text strings in files paspeek .exe ; extract Pascal strings at specified addresses picfind .exe ; view files as graphics sigfind .exe ; search files for data uclone .exe ; poor man's IDE hard disk cloning utility vital .exe ; save/compare/restore vital hard disk data xd .exe ; rather nice hexadecimal dump xosldump.exe ; dump XOSL multiboot data xtract .exe ; extract data from files ::: MISC ; various utilities baseconv.exe ; yet another decimal/hexadecimal/binary LONGCARD converter cal .exe ; a classic calendar cdcmd .exe ; open/close CDROM tray chkio .exe ; i/o ports diagnostic tool : use with CAUTION ! chkiomap.exe ; chkio useless companion chkports.exe ; i/o ports diagnostic tool : use with CAUTION ! chrono .exe ; self-explanatory dt .exe ; show date and time dtchk .exe ; safety system clock boot checker dtsync .exe ; copy source stamp to target(s) elapsed .exe ; compute elapsed number of days/hours/minutes ev .exe ; show environment variables joystick.exe ; test joystick hilite .exe ; color highlighting for PowerBASIC 3.1 editor (EMS required) hilite .def ; keywords hilitem2.exe ; color highlighting for TopSpeed M2 v3.1 editor (EMS required) hilitem2.def ; keywords l1 .exe ; enable/disable Pentium II cache (at least on my PC) makedef .exe ; .MOD to .DEF (TopSpeed Modula-2 specific) md5demo .exe ; self-explanatory morse .exe ; self-explanatory morse .dat mpause .exe ; enhanced mouse-enabled pause playwav .exe ; back to the good old SoundBlaster 1.0 days ! poweroff.exe ; turn PC off (at least on my PC) reserve .exe ; create file with user-specified size restamp .exe ; change time stamp rndgen .exe ; return a 0..255 random number shademo .exe ; self-explanatory sound .exe ; self-explanatory stamp .exe ; save/restore current date/time xchoice .exe ; slightly enhanced CHOICE command xemem .exe ; show XMS and/or EMS status cdabout .bat ; infos about available CDROM units cdeject .bat ; self-explanatory cdclose .bat ; self-explanatory mm .bat ; TopSpeed editor/compiler caller batch now .bat ; self-explanatory ::: TEXT ; ASCII text processing utilities ccount .exe ; count characters columns .exe ; process columns concat .exe ; concatenate binary or text files crlf .exe ; process CR, LF, CRLF duplines.exe ; process duplicates from a SORTED text file filter .exe ; process text files htm2asc .exe ; HTML to text (Wayne Software's HTMSTRIP is much better) htm2asc .ini keepuniq.exe ; (slowly) filter out lines common to two files lcount .exe ; count lines mac2pc .exe ; macintoy ASCII to PC ASCII (XLAT is better) newline .exe ; process text lines oldnew .exe ; process identifiers/words/sequences pc2mac .exe ; PC ASCII to macintrash ASCII (XLAT is better) trim .exe ; trim lines txtfmt .exe ; reformat text files xlat .exe ; convert characters from one set to another xlat .glo wcount .exe ; count words ::: VIDEO ; screen text-mode utilities chargen .exe ; set video mode chkcols .exe ; check video columns chkcr .exe ; check video columns and rows chkrows .exe ; check video rows ddc .exe ; display DDC monitor parameters fonttool.exe ; q&d text font editor using text definition newfont .exe ; change text font setvmode.exe ; set video VESA mode 25 .bat ; self-explanatory 50 .bat ; self-explanatory 132 .bat ; self-explanatory a2 .fon a2 .dat ::: WIN31 ; Windows 3.1 programs vbrun300.dll ; runtime (\windows\system) picclip .vbx ; runtime (\windows\system) threed .vbx ; runtime (\windows\system) curves .scr ; screensaver darkness.scr ; real screensaver counter .scr ; nice screensaver... better than John Walker's one in C ! ;-) eternity.bmp bam .wav bambam .wav bees .exe ; swarm of bees savernow.exe ; immediately run default screensaver end .exe ; don't smile end .bmp end1 .wav end2 .wav pusher .exe ; time-waster game sscmdr .exe ; small ScreenSaver CoMmanDeR 2000 .exe ; a contribution to Y2K madness (remember it ?) 2000 .bmp 2000a .bmp 2000a .wav 2000b .wav ::: ASTRO solarsys.exe ; solar system bodies coordinates (please check README, LISEZMOI and DEMO*.BAT for more infos about Q&D AstroTools found in QDASTRO.ZIP subarchive) (* LICENSE *) The whole QDTOOLS.ZIP archive content (Q&D Tools programs and their source code, documentations and texts) are freeware, but they are definitely NOT public domain (only program data files, sometimes heavily adapted from data found on the Internet, are to be considered public domain). Therefore, there are some restrictions about their (unlikely) distribution. In a nutshell : no one is allowed to include the Q&D Tools in a shareware or freeware compilation, whether commercial or not, whatever the medium, unless there exists a prior written negotiated consent by, and agreement with, the author to do so. Only two distribution methods are allowed : the copy of the original archive on any suitable medium (floppy disks, CDR, etc.) by individuals, or the download from an authorized Internet site. In all cases, no amount of money (beyond a very reasonable fee to cover media price -- such as floppy disks or CDR -- and possibly the price of a coffee or of a soda) will be charged for the Q&D Tools, and all the original files must be kept together, without any alteration. I really do not like all those commercial shareware/freeware resellers who are the only ones to make money from programs whose authors, almost always, don't get any cent for their work (a fact which is almost always not entirely undeserved ). I also don't like those Web-sites who dare and require a registration before user can download freewares or drivers. And I really don't like so-called "improved" source code either : source code is provided here just in case the user would need to fix a bug and/or enhance a feature, or just be sure the program does not contain anything malicious. Use provided source code as a base for your own programs if you want, but do NOT release altered versions, and do not misrepresent it as "yours" either ! (That's why the author has removed the Who When What history headers.) As said supra, I value my time and (limited) skills as highly as anyone : "freeware" does not mean (entirely) worthless. Simtel, Garbo and FreeDOS sites, and they alone, because of their real work, are authorized (if they want to) to include the Q&D Tools on the CDs they sell or distribute, whatever the (absence of) price. As a convenience for users, any authorized Internet site may offer for download either the individual sub-archives found in QDTOOLS.ZIP, or zipped individual Q&D Tools components (i.e. an executable, its documentation, its data files and its source code if applicable), provided it is clearly stated the archive comes from Q&D Tools and provided the original QDTOOLS.ZIP package is available from the same source too. Here are two examples : TEXT.ZIP archive may be offered alone for download if its original source archive (QDTOOLS.ZIP) is clearly mentionned as available for download too. A newly created TEXTGEN.ZIP archive containing TEXTGEN.EXE, TEXTGEN.DOC and *.TX data files may be offered for download if its original source archive (QDTOOLS.ZIP) is clearly mentionned as available for download too. If source code is included, all relevant modules and libraries (QD_*.*, MODEX.OBJ if applicable, etc.) must be included so that recompilation is feasible. Any repackaged archive including source code must include compiled executable and data files if applicable (this is the proof the programs do work !). All repackaged archives must contain this README.TXT file. For obvious reasons, QDTOOLS.ZIP archive MUST remain intact, with all files recensed in QDTOOLS.LOG : it must pass CHKEM test without any problem. If you feel this policy is too restrictive, this just means you've never seen your work (ab)used by unscrupulous individuals... (that means : programs, sources and even papers). Using these binaries and sources is very unlikely nowadays (and the computing world does not really needs them), but it should be done the Right Way. Freeware means free (costless) distribution, free (costless) use, but nothing more : it's not "public domain" nor "GPLed" code. Although their author has created and has been using various Q&D Tools implementations for years now (back from 1980, in many languages such as 6502 assembler, Applesoft BASIC, Forth, Turbo Pascal, C (yuck !), PowerBasic and TopSpeed Modula-2, for many operating systems, especially DOS and even Windows 92 DOS box), these programs come without any warranty, except this one and only statement : Q&D Tools components will take some space on your hard disk, and, when run, they will use some of your CPU computing power. In other words, the author does as everyone does today : he accepts no responsability at all. ;-) The author will not be available for praises/flames/comments/reports : he no longer has an Internet account, considering the current signal/noise ratio... And he doesn't believe in job-finding through the Internet. ;-) Use these tools and source code if you find them useful, do not use them if you don't find them useful. Period. "Command line for ever !" "Tout finit bien, puisque tout finit." "Game Over" (* END OF README FILE *)