Welcome to the Revived 4DOS! 

4DOS Real screen shot
Rex Conn

Thanks to Rex Conn (on the pho­to) who re­leased build 132 source code, de­vel­op­ment of the King of the DOS/W9x shells can now be con­tin­ued! (Use Take Com­mand for NT.) 4DOS re­mains free and not sup­por­ted by any­one. It is main­tained by me (Лъчезар Георгиев). I read comp.os.msdos.4dos.

Contents

  1. Files for download and intro
  2. Building 4DOS.COM
  3. Building OPTION.EXE
  4. Building 4HELP/4MAKE/HELPCFG
  5. "Dead" or missing link
  6. "Forking"?!
  7. "Porting"?!
  8. Licence
  9. Motivation
  10. Priorities and future
  11. Known problems
  12. Acknowledgements
  13. Good example
  14. About me
  15. Build history
  16. Virtual 4DOS: online demo (1.6 MB)

Famous 4DOS users

Sabri Jiryis

صبري جريس (Sabri Jiryis), writer, lawyer, prominent Palestinian activist, comrade of the late Arafat

Edward Mendelson

Edward Mendelson, Columbia University professor and editor for PC Magazine

1. Files for download and intro

(241 KB) against the original (7.50.1) sources and 4DOSHLP1

(455 KB) against the 7.50 binaries (use RTPatch to apply)

(578 KB): as above but against the 7.92 or newer binaries

(803 KB): executables, help, documentation, installation files

(570 KB): the above archive but as WinUDA SFX instead of ZIP

(59 KB): OPTION sources sent by Rex Conn, with minor changes

No DOS or W9x/ME user must be without 4DOS anymore. Its powerful batch language and 100s of commands, variables and functions make it the only complete scripting solution that fits in 1.44 MB.

(In case you have not heard of it before, 4DOS is a command line interpreter by JP Software, designed to replace the default command interpreter COMMAND.COM in DOS and W9x/ME. But to stop here would be a gross underestimation. 4DOS is so powerful that it would be a joke to compare it to COMMAND.COM. And unlike "BASH" and similar shells, it is completely self-contained and does not require shared libraries and numerous external utilities to do any useful work. Anyway, suffice to say that I know many people who made the transition from COMMAND.COM to 4DOS, but not even one who made the transition from 4DOS back to COMMAND.COM )

System requirements (of course, it works in the latest hardware and DOS/W9x too)

  • Minimum: 8086/88 or later, 0.5 MB of RAM or more, DOS 2.00 or later
  • Recommended: 386 or later, 2 MB of RAM or more, DOS 5.00 or later

Also required:

  • a 8253/8254-compatible timer
  • a MC14818-compatible CMOS RAM & real-time clock (for PC/AT and above)
  • an industry standard BIOS or EFI firmware with built-in legacy BIOS support

If the server keeps truncating your download, sorry but I cannot help you as I have no control over it. Try downloading the SFX, then extract it in Windows (256+ MB of RAM needed). Or download one of the smaller binary patch files (the first is for 4DOS 7.50, the second – for 4DOS 7.92 or newer), unzip it in your 4DOS directory and run PATCH from there to update 4DOS to its latest version. (Pocket Soft kindly provided me a complimentary copy of RTPatch 11.0 as a courtesy to encourage the 4DOS development.) If PATCH complains that some old files do not exist or their contents does not match, give it the -i switch to ignore them so it can patch the rest of your files. Voilá! You must now have the latest 4DOS version, without having used an installer.

If you know PHP (sorry, I don't), you can offer me a prone to server timeout alternative to the simple "readfile()" function that I use in my "download.php" file to provide the downloaded file to you. (Fortunately, some servers do not suffer from this problem.)

If you are updating 4DOS and have already configured the help colours with HELPCFG, your custom colours will be lost, if you unzip all files to the old 4DOS directory. In this case, extract only the newer files using the PKUNZIP -f(reshen) or -n(ewer) option. See the PKUNZIP user's manual for details on using these options. Alternatively, as recommended by JP Software, unzip the new version in its own directory and copy your customised 4HELP.EXE from the old 4DOS directory. (The installer is not so smart to detect that you have customised your colours and do this for you, so you need to help it a bit.) Another simple solution is to set the "Read-Only" attribute to 4HELP.EXE after you have modified it so it cannot be overwritten easily (ATTRIB +R 4HELP.EXE). Note that if you use the RTPatch method described above, the problem will not arise, as RTPatch will detect that your file has changed and will not update it. (Yet another advantage of this great product!)

Note that PKUNZIP 2.0 or newer is required to extract the 4DOS archive. PKUNZIP 1.1 or older do not support the newer "deflate" compressing method used to create the archive. Alternatively, you can use InfoZIP's UNZIP and many other utilities that support the ZIP file format to extract the files.

If there is not enough free conventional RAM to start 4DOS as a secondary shell from an application programme that occupies too much of it itself, Shell Room can help.

If you need transcendental mathematical functions (which the @EVAL function of 4DOS lacks, unlike TCC/ex-4NT) in your calculations, you can use ACALC (ASCII Calculator) from PC DOS. Type ACALC to get help for its usage. Operators are listed sorted by precedence; those with highest precedence are at the top. A decimal value (d) is a real number up to 19 significant digits (80-bit extended precision floating point number). The range for binary (b), octal (o), and hexadecimal (x) is from –2,147,483,648 to +2,147,483,647 (32-bit signed integer number).

2. Building 4DOS.COM

You need patch(1), MASM 6.11d or 6.15 and VC 1.5x with library sources (for msdos.h).

  1. Apply CODE.DIF against the original source code release by Rex Conn.
  2. Create a DOS sub-directory. 4DOS.COM will be there if built successfully.
  3. Modify MSC7.BTM to set your environment variables PATH, INCLUDE, LIB.
  4. Run MKDOS.BTM. You should see one inevitable A4013 warning. Ignore it.

Before modifying the code, increment both VER_BUILD and INTVER so that the new shell does not inherit the old one, or it will crash soon or later. OPTION must be rebuilt to work with each build.

3. Building OPTION.EXE

You need Watcom C, MASM 5.10 and Mix C/WinDOS Toolchest with source code.

  1. Install the binary and source versions of the Mix C/WinDOS Toochest.
  2. Apply CWIND.DIF against the source code of the library and build it.
  3. Unzip the OPTION sources into a subdirectory of the 4DOS sources.
  4. Edit MAKESET.BTM to set your environment variables WATCOM, TUI.
  5. Type "MAKE OPTION R".

4. Building 4HELP/4MAKE/HELPCFG

You need BP7 (TP7), TPRO5, BP7PATCH, Turbofix, EDITOOLS4.

  1. Install BP7, EDITOOLS4 and TPRO5 and build the latter's units.
  2. Apply the BP7 patch and Turbofix.
  3. Update tpcmd.pas,tpdos.pas,tpedit.pas,tpinline.pas,tpmemchk.pas,tpstring.pas
    and tpcrt.pas and copy tpdefine.inc,tppick.in1 and tpmouse.asm from TPRO5.
  4. Apply 4HELP.DIF and adjust TPC.CFG and BUILD.BTM for your environment.
  5. Run BUILD.BTM.

All links provided above were valid at the time of writing. Their validity in the future cannot be guaranteed by anyone. Please report any "dead" link. You can use TotalValidator (see its button at the bottom of this page) to check the accessibility of all the external links present on this page.

If you use 4DOS and are a famous person, I think that a link to your site is missing here. If you agree, please let me know, and I will add your name, photo and a link to your site. By "famous" I mean prominent, well-known in any field. It will be good for my visitors to know that if 4DOS is used by people like you it really deserves attention. And I thank you very much in advance for yours!

6. "Forking"?!

Please do not create a "fork". Let us unite our efforts and not be like the swan, the pike and the crayfish in the Krylov's fable who dragged the cart to 3 different directions. Let us merge each others' patches. (So far, 4 people have contributed to my builds: Kenneth Davis, Michal Necasek, Jaelani Utomo and Klaus Meinhard, for which I am very grateful to them all! If you can write in C and Assembler and would like to contribute to 4DOS, you are welcome to do so too.)

7. "Porting"?!

Michal Necasek has ported 4DOS to Open Watcom C. His source code patches are merged with mine. The port is preliminary and does not build with "standard" Open Watcom C version 1.8, which does not support jumps from an _asm block to a C label outside it. Even if it builds with a future version, it will still need much testing and stabilisation before it can be used reliably in practise.

"Porting" 4DOS to Linux, *BSD, Mac OS X or another UNIX-like OS, even if it was not expressly disallowed by Rex Conn, would be very hard to do, as 4DOS is inherently a 16-bit DOS programme.

There is a fine point here. If someone manages to convert 4DOS to a 32-bit programme, even for DOS, without porting it to any other operating system, he would thus make such a port significantly easier. Hence, such a conversion is not permitted by the very logic of the disallowance for porting 4DOS, because this disallowance spans not only to the porting itself, but also to any other action that would ease it. Therefore, 4DOS must remain a 16-bit programme!

TCC (ex-4NT) can be ported to other operating systems though. But a full port is already impossible, because too many (mostly new) functions in it are NT-specific. Alas, it seems that the UNIX-like operating systems will have to live with standard GNU shells like BASH while the power of the JP Software products will remain limited only to the [so far] ubiquitous "NT". C'est la vie! On the other hand, with the demise of Microsoft started with "Vista", nobody knows when times will change to the extent that Rex Conn could write and sell a 4NIX or 4MAC...

8. Licence

The 4DOS source code licence starts as a simple, all-permissive licence: "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so."

But it then says: "The Software, or any portion of it, may not be compiled for use on any operating system OTHER than FreeDOS without written permission from Rex Conn", contrary to the above permission "to deal without restriction".

When asked "what about MS-DOS, PC-DOS, DR DOS etcetera?", Rex Conn answered: "I don't have any problems with people using it on those OS's (although I'd be surprised if there was a lot of MS-DOS or PC-DOS action left). That license was written by the FreeDOS people – it was probably worded that way because it's impossible to list every possible variation of the DOS OS's."

Because of these contradictions of the source code licence, the binary archive is distributed under its original 2004 freeware licence, which is much more consistent and clear. If the source code licence can be changed at all (i.e. it is not too late) I regard this freeware licence as the best candidate. After all, it is already used for the 4OS2 source code. But I am not a lawyer.

Another possibility is the so-called dual licensing – an increasingly popular practice where the code is released under a free open source licence, but any proprietary use is regulated by a second licence. In a research I did in the autumn of 2006, I found 81 companies and organisations using this model. Now they are probably more. The best candidate for the open source licence is the GNU GPL because it forbids inclusion of the code in proprietary products. A proprietary licence, if someone requests it, can be settled with JP Software.

Whatever the licence, the rule is simple: if you do not use it commercially and do not port it to a non-DOS operating system, you can do with 4DOS and its source code anything. The GNU GPL would outlaw commercial use, as the software in a commercial product has almost always a closed source code, which it bans. The few examples of the contrary only prove this rule.

If you intend to use 4DOS commercially, please ask JP Software. The company owner is Rex Conn himself who has said in 2001: "I liked the software so much, I bought the company!". I am sure that he will arrange something for you. But, what I am even more sure is that he will be greatly surprised by your request! Having said that, I think that the probability of somebody wanting to use 4DOS commercially is already next to zero. After all, it was because the 4DOS sales dropped near zero that he stopped its development. In general, DOS already has become a "vintage" operating system which only some embedded systems still use.

 From the JP Software forum: 

"Luchezar Georgiev has taken over 4DOS maintenance and development. He's added a number of new features, bug fixes, and compatibility fixes; If you're still using 4DOS I recommend downloading the latest build from his web page at http://www.4dos.hit.bg/.

I've also added a link to his web page on our download page in the 4DOS section."

Rex Conn   
JP Software

9. Motivation

It is a real pleasure to "wade in" this masterpiece of code especially for a C++ and Windows programming ignorant like me. 4DOS has been one of my favourite programmes since ~1990, so it is a big honour for me to revive its development!

But, even the Sun has spots! Through the code, there are bugs, disabled and missing features here and there, crying "Fix me!", "Enable me!", "Add me!". So, here's where I see my role – to fix, enable and add them, respectively.

As TCC (ex-4NT) is already a few years ahead of 4DOS, we can not "catch up". But 4DOS will live at least until TCC (ex-4NT) can be run in DOS – now impossible, but perhaps some day some Win32 emulator for DOS like DOSWIN32, HINTOS, WINDOSX or HX will be able to run it? (But do not hold your breath yet – now these emulators cannot run even CMD.EXE, let alone TCC/ex-4NT).

Still, 4DOS has one great advantage to TCC/ex-4NT – speed. It is much faster, so where processing speed matters, use 4DOS, even if it needs a much older operating system as DOS (so what?!). Last not least, both DOS and 4DOS start up much more quickly than NT and TCC/ex-4NT, respectively. Sometimes this is very important too. Then, use DOS and 4DOS and enjoy!

Note that I do not claim any "copy right" over my patches or the contents of this web site – they are placed in "public domain" for maximal benefit of the DOS community. The future generations who will live in a much more just and highly developed society than we do will surely find very funny the pitiful attempts of our capitalist society to impose the ancient idea of "copy right" dated back to the Gutenberg era over the digital realm. Oh, how they will laugh at us!

If the above is not enough, reckon me using the Libre Commons Res Communes Licence for my patches and site: Ⓛ 2006–2008 Libre Commons Res Communes Licence.

 Libre Commons Res Communes Licence 

The commons is usually defined as that which is shared communally with others. This can, for example, be a resource, such as land or water, which is owned by the members of the community. The commons has traditionally been limited to a local community right and to a physical resource, such as a forest. But it has also been used to refer to the space of intellectual thought, ideas and concepts (e.g., 'ideas commons', as 'innovation commons', an 'intellectual commons', a 'digital commons', an 'e-commons', 'the public domain', 'Intellectual Space' and so on). The Libre Commons Res Communes Licence commits the work that is inscribed with this Res Communes licence to the shared common that all can draw from and reuse.

Licence text:

The Res Communes licence is designed to reject a state-centred legal construct of a commons (or commons without communality) in order to concentrate on creating a common which is shared between us in collective practices (a commons with commonality). The 'Commune' or the 'Commonality' originally meant 'the people of the whole realm' or 'all the King's subjects' as opposed to the King, the Nobles or the 'Commons' in Parliament. We here refer to the commonality to refer to the global multitude, the people of the whole world.

1. This work is outside of all legal jurisdictions and takes its force and action from the constituent radical democratic practices of the global multitude against the logic of the capital.

2. All work that is so inscribed should bear the text 'Ⓛ <year> Libre Commons Res Communes Licence.'

3. As a user of this licence the work is available to be shared and used as a part of a common creative substrate that is shared between us.

(Thanks to David M. Berry and Giles Moss for this undoubtedly most radically free / libre licence!)

But four trolls will laugh at the above, so here is an alternative for them: You Robert Riebisch from Berlin, Andreas Grech from Reutlingen, Steve Adelewitz from New York and a Canadian lacking guts to disclose his name, may download my "bloated" 4DOS work no more often than once a day and only after shouting loud: "共产主义万岁!", or no more often than once a week, if you are unable or unwilling to shout that, or do not understand it.

10. Priorities and future

Bug fixes are always a higher priority for me than adding new features. If you find a bug, please let me know so I can try to find and fix it. I cannot promise that I will manage to catch it alone, so I may need your help in that. Of course, if you can find it yourself, you will save me a lot of time.

As to adding new features, if you convince me that it is really useful, and if you can find a similar feature in TCC (ex-4NT) or in older 4DOS versions, I will consider adding it when I can. Of course, you may also add it yourself – then I will be very grateful to have your patch so I can add it too.

TCC (ex-4NT) options, functions and variables have always a higher priority for adding into 4DOS, provided that the given feature can be implemented in the DOS environment and has sense there. But due to the different operating systems there will always be a need for DOS-specific features, which I add as well. So, unfortunately, full TCC (ex-4NT) compatibility can never be accomplished.

4DOS, 4OS2 and TCC (ex-4NT) are shells with great strengths, but they also have their weak sides and weird points. While I am committed to work on 4DOS, please do not ask me to radically change it to overcome its inherent problems. I have not written 4DOS and cannot change the way it is designed to work. If TCC (ex-4NT) overcomes these issues, I may try too. Until then – sorry!

As there are more and more people who try to use 4DOS under the NT family of operating systems (and most of all, in XP) a warning is due: Please avoid that. 4DOS is simply not designed to work there. Please use TCC (ex-4NT) for that, or "downgrade" to W9x/ME. Indeed, an unsupported shell is best used under an unsupported OS! (Moreover, there is now a free light edition of TCC/ex-4NT called TCC/LE. Use it!) Consequently, I will not consider any suggestions aimed at improving the 4DOS operation under this operating system and if you insist too much, might even be forced to add a code which aborts 4DOS if such an operating system is detected. Of course, this could easily be "cracked", so it could not be a reliable measure against such unregulated use, but at least I will have done everything within my power to prevent it. Please do not force me to do it!

And there is another point here. By using (and especially by encouraging use of) 4DOS where TCC (ex-4NT) should be used, you may be hurting the sales of the latter which is anything but fair to the 4DOS author, Rex Conn, who is the last who deserves that. Please consider this too.

Of course, there is no such problem if you run 4DOS within an 80x86 emulator under DOS or W9x. (Note that this setup is even less supported than the totally unsupported 4DOS!)

Anyway, it is worth noting that I am not planning any revolutionary changes in 4DOS. In fact, due to the severe limitation of 3450 .EXE file relocations (of which only a few per cent still remain unused!), just a few further releases can be made anyway. Hey, 4DOS is already 20 years old – a venerable age for any programme (most last less than 10 years!). New operating systems replaced DOS, which led to such a decrease of interest in 4DOS that not only JP Software can no longer sell it, but even my donors can be counted on the fingers of one hand. The 4DOS user base has shrunk from tens of thousands to probably no more than several hundred.

I cannot even promise that any newer 4DOS versions will be released at all. In fact, given the steady progress in Take Command development and the so few users of 4DOS still left, they are strongly encouraged to upgrade to TCC (ex-4NT). 4DOS is simple and fast, but the rich feature set of the unique TCC (ex-4NT) could never be compared with those of 4DOS, just because most of them are impossible in DOS. And the few that are possible require hard and dedicated work, which cannot be done by a programmer working just for the idea. Besides, I am not qualified enough to implement all of them. Last not least, there are still large parts of the existing source code that I do not understand. So, what will most likely happen in the future is that nothing happens anymore.

But, if you really would like to change this, then why not take over 4DOS maintenance? There are so few DOS developers left that it is very unlikely that someone would still want to take it over, but wonders do happen sometimes. Why not? If you are strong in C and x86 Assembler, why not? Please drop me a note if you would like to do so, so that I can announce this at this site.

Note that the only FreeDOS developer left (Eric Auer) has taken over so many projects that I would not like that he takes over 4DOS too. This would put 4DOS into the backyard, together with projects with too many inherent flaws. Do you think that I deserve to see this nightmare come true (4DOS fallen into his hands) after all I have done for it, not in the last place to prevent exactly this?

11. Known problems
  • Last access date can be set only in W9x, MS-DOS 7.x, PC DOS 7.1 and
    no other DOS variant. Creation date/time can be set only in W9x. This is a
    limitation of the DOS kernels, not 4DOS.
  • In DOSLFN only, a DIR right after a TOUCH in the same directory may not
    show the updated file date/time as the DOSLFN cache has not been refreshed.
    This is a problem of DOSLFN, not 4DOS.
  • Directory names containing backquote characters are not supported.
  • Secondary shell cannot properly install TSR programmes with /C.
  • Many commands (even CD) and some functions do not work in Wendin-DOS.
  • COUNTRY setting fails in DR-DOS and does not work in ROM-DOS and OS/2.
  • SETDOS /W does not work in ROM-DOS.
  • REBOOT /P does not work in OS/2.
  • FOR /I /R ignores the descriptions in subdirectories.
  • LIST does not work properly with files over 2 GB long.
  • LIST search result in hex mode is not highlighted across 16-byte boundary.
  • DIR says "Out of memory" in LFN mode if folder has over ≈1160..5500 files
    (exact number depends on the total size of all long file names).
  • 4DOS crashes just past FNType in ZDOS, of all 16 tested operating systems:
    Embedded DOS-ROM,DR DOS,FreeDOS,MS-DOS,OS/2,PC DOS,PTS-DOS,
    Real/32,ROM-DOS,RxDOS,S/DOS,VirtuOS,W9x,Wendin-DOS,X-DOS,ZDOS.
12. Acknowledgements to:
  • Rex C. Conn – for writing 4DOS (1986-2004) and releasing its sources
  • Tom Rawson – for founding Jamaica Plain Software and writing most .ASM files
  • Ed Lucas – for writing OPTION and other code at JP Software
  • Ross Neilson Wentworth, Scott McGrath and Tom Rawson – for writing 4HELP
  • Hardin Brothers, Tom Rawson and Rex Conn – for writing the documentation
  • Erwin Veermans, Georges Wanderstok, Stephen Foyle, Prof Chris Murphy,
    Kenneth Jensen, Jay Terry, Richard Bonner, Andrew Watkins, 林俊生 (Lam
    Chun Sang), Kenneth Poland for their €€€
  • Sebastian Mozejko – for his mediation on releasing the source code
  • James F. Hall – for publishing the source code released by Rex Conn
  • Kenneth J. Davis – for the first patches allowing successful build
  • Charles E. Dye – for his extended help and list of [now fixed] bugs
  • Jaelani C. Utomo – for his EDISCRN.INC (for HELPCFG) and KSTACK /U
  • Michal Necasek – for porting 4DOS to Open Watcom C
  • Владимир Захарычев (Vladimir Zakharychev) for his CPU/FPU detection library
  • Dennis Saunders – for their Mix C/WinDOS Toolchest (for OPTION)
  • Tony Olivero – for their Pocket Soft RTPatch he provided me with
  • Egon Stephen Fábián – for his help in the newsgroup and with C/WinDOS
  • Klaus Meinhard – for his _4INST clean-up, BTMs, history and old versions
  • Gary Welles, Szymon Wiatr, Jacob Poon and others who reported 4DOS bugs
  • Stephen Foyle, Steven Kamp, Stefano Piccardi and others who thanked me
  • Assoc. Prof. Bob Weems, Peter Norton, Kris Heidenstrom, "sk", Roman Stangl,
    David Lindauer, George Marsaglia, Francois Panneton, Pierre L'Ecuyer, Lattice
    Semiconductor and the PHP group for their algorithms, methods and code.

13. Good example

I wish everyone follow the example of Rex Conn. Release the sources of your unused software! Let others use it, if you do not! Do not be another Plyushkin! Break that code free, if you cannot sell it anymore. Do not bury it in your cabinet! Do not let it rot there without bringing good to anybody!

If you do not listen to the above, be prepared for some unpleasant events. Your so valued old source code will eventually "leak" (examples: MS-DOS 6.00, Windows 2000, AwardBIOS and so on) causing you much more headache than if you had voluntarily released it. So you have nothing to gain, only to lose if you obey your class-consciousness instead of your conscience, Mr. Bourgeois.

  • Schlachte: Free the surce code of the Metaware High C/C++ 2.8 for x86/DOS!
  • Nielsen: Free the source code of Borland C++ 5.2, Turbo Pascal 7, TASM 5.3!
  • Ballmer: Free the source code of Visual C++ 1.52, Windows 98SE!
  • Palmisano: Free the source code of PC DOS 7.1!
  • Sparks: Free the source code of DR-DOS 8.0!
  • Husa: Free the source code of Embedded DOS-ROM 4.3!
  • Karmanos: Free the source code of SoftICE 2.80 for DOS!
  • Thompson: Free the source code of PCT 7, QEMM 9, DV/X 2.1, NU 8!
  • Haddix: Free the source code of PKZIP/PKUNZIP 2.50 for DOS!
  • Fister: Free the source code of OrCAD ESP 386+ 1.21 for DOS!
  • Kaneko: Free the source code of CADStar PCB 7.1.6 for DOS!
  • Martin: Free the source code of P-CAD 8.7 for DOS!
  • Narayen: Free the source code of Acrobat Reader 1.0 for DOS!
  • Hagerman: Free the source code of Ventura Publisher 4.4.1!
  • Oh: Free the source code of DUSE 4.9!

Please at least make a backup copy of the source code residing on diskettes or old hard disks while they are still readable to a CD. If you no longer have the necessary floppy drive, JAZ or ZIP drive, send me your disks and I will do it for you (I do not have a magneto-optical, SyQuest or tape drive).

Don't you know that all software older than 10 years is obsolete by default in view of the blazingly fast and permanent changes in the computer industry?! Then, what is your reason for not freeing your old source code to the people?! Man may not be a slave of another man. Why his creations may remain so, then?! Too many questions to think about. But hurry, time elapses. Software rots!

14. About me

I am a Bulgarian radio- and computer engineer, hardware designer and programmer working as an Assistant Professor in the Computer Science department at the Technical University of Varna, Bulgaria. I am married and have two daughters.

15. Build history since build 132 in reverse order

This history is duplicated in the README.TXT file in the "Binaries" archive
on the left. See the patches for details on these changes. Sources released
by Rex Conn were version 7.50 build 132, so it is the base. After build 150,
version number is determined by the formula VERSION = 6.00 + BUILD / 100.

Build 200 (Version 8.00) — 27 February 2009:
  • Fixed my v7.51 bug: swapping to hard disk would crash
  • SET {the switch character}{any character}={value string} now works
  • REN /N now returns an error if the target filename already exists
  • Added SETERROR command
  • Added ATTRIB /N option
  • Added @ISLOWER and @ISUPPER functions
  • Added _LASTDIR, _VERMAJOR, _VERMINOR and _VERSION variables
  • Updated help file for the above changes and updated "Keywords" page
Build 199 (Version 7.99) — 29 December 2008:
  • No _CPUSPEED crash on early 586 if RDTSC not emulated by EMM386
  • _CPUSPEED now returns a much more consistent value under W9x/ME
  • _CPUSPEED now works even if the CPU has no TSC (i.e. 8086-486), and
  • _CPU and _NDP now return much more detailed info if no brand string
    thanks to the CPU/FPU detection library by Vladimir M. Zakharychev
  • Updated help file for the above changes
Build 198 (Version 7.98) — 19 December 2008:
  • Fixed my v7.92 bug: if the Int 67h vector was 0, _VCPI would crash
  • Mouse functions would no longer crash on old PCs if no mouse driver
  • Added @COM function and _SBDSP internal variable
  • _VIDEO now returns "svga" if a VESA SuperVGA BIOS is present
  • Updated help file for the above changes and updated "Keywords" page
Build 197 (Version 7.97) — 12 December 2008:
  • _DRIVES and _LASTDISK now return correct results in PTS-DOS
  • 4DOS now honours the NO_SEP environment variable
  • Added _VDS internal variable
  • Updated help file for the above changes and updated "Keywords" page
Build 196 (Version 7.96) — 1 December 2008:
  • Added REBOOT /M(onitor off) and /S(uspend) options
  • Added @CODEPAGE function and _POWER variable
  • Updated help file for the above changes and updated "Keywords" page
Build 195 (Version 7.95) — 24 November 2008:
  • Now LIST /X /T"xy zt..." searches for the hex sequence "xy zt..."
  • Added @CLUSTSIZE and @HDDSIZE functions
  • Added _APPEND, _ASSIGN, _DISPLAY, _DRIVER, _EGA, _GRAFTABL,
    _GRAPHICS, _MSCDEX, _PRINT, _SMARTDRV, _TASKMAX and
    _TASKSWITCHER variables
  • Updated help file for the above changes and updated "Keywords" page
  • Slightly edited _4INST.BTM and INTRO.TXT
Build 194 (Version 7.94) — 18 November 2008:
  • Changed box shadow foreground from low intensity white to dark grey
  • Added @DDCSTR function
  • Added _MACHINE, _NETWORK, _NLSFUNC and _SHARE variables
  • Updated help file for the above changes and updated "Keywords" page
Build 193 (Version 7.93) — 7 November 2008:
  • Revised and somewhat shortened the INTRO.TXT file (also by Klaus)
  • _4INST.BTM heavily modified; now searched for in the 4DOS directory
  • Jaelani fixed KSTACK 7.9 conditional load (allocation strategy) bug
  • Fixed all warnings but 1, muted OW source warnings, quietened build
  • Updated BATCOMP to version 7.5 which has /E(ncryption) switch added
  • Added _FONTPAGE internal variable
  • Updated help file for the above changes and updated "Keywords" page
Build 192 (Version 7.92) — 31 October 2008:
  • The installer batch file cleaned up and greatly simplified by Klaus
  • ALIAS, FUNCTION and SET now accept wildcards in display mode
  • Added /U(ninstall) option to KSTACK (plus optimisation) by Jaelani
  • Added @FSTYPE function and _KEYSTACKED and _VCPI variables
  • Updated help file for the above changes, incl. Glossary and Keywords
Build 191 (Version 7.91) — 27 October 2008:
  • Fixed my v7.86 bug: cursor was lost after running LIST in batch file
  • Added COUNTRY command
  • Updated help file for the above change and updated "Keywords" page
Build 190 (Version 7.90) — 20 October 2008:
  • Fixed my v7.89 bug: Shift-TAB didn't act as F8 on auto-completion
  • Fixed my v7.89 bug: LIST search highlighted text past right margin
  • _READY now works under DR-DOS for CD-/DVD-drives
  • HELPCFG can now be built from source thanks to Jaelani's EDISCRN.INC
  • Added IDLE command (DR-DOS-only)
  • Updated help file for the above change and updated "Keywords" page
Build 189 (Version 7.89) — 16 October 2008:
  • Fixed my bug where if no TZ was set, time zone info was garbage
  • TYPE without /L, /P or redirection can now show Mac OS 9 text files
  • LIST hex search result now highlighted across byte 8 & 9 of the row
  • LIST hex search in hex mode highlights no text results & vice-versa
Build 188 (Version 7.88) — 12 October 2008:
  • Added hex input format for SETDOS /C, /E and /P, @CHAR and
    @FILEWRITEB (others accept it too but it's unusual for them)
  • Added =X hex output format with a leading 0x for @EVAL
  • Added TRANSIENT command
  • Updated help file for the above changes and updated "Keywords" page
Build 187 (Version 7.87) — 10 October 2008:
  • Fixed my bug causing DELAY /M and _CPUSPEED sporadic hang-up
  • _WINTICKS now works on 8086-286 too
  • TIMER accuracy now 10 ms on 8086-286 too (but still not under OS/2)
  • TITLEPROMPT now works under OS/2 too
  • Added TITLE command
  • Updated help file for the above changes and updated "Keywords" page
Build 186 (Version 7.86) — 6 October 2008:
  • Hid LIST cursor
  • Added _DST, _MJD, _STZN, _STZO, _TZN, _TZO, _UNIXTIME,
    _UTCDATE, _UTCDATETIME, _UTCHOUR, _UTCISODATE,
    _UTCMINUTE, _UTCSECOND, _UTCTIME
  • Updated help file for the above change and updated "Keywords" page
Build 185 (Version 7.85) — 26 September 2008:
  • All date options, arguments and date input can be ISO ordinal date
  • _WINTITLE now works also under W9x/ME
  • Added _STARTPATH internal variable
  • Updated help file for the above changes and updated "Keywords" page
Build 184 (Version 7.84) — 24 September 2008:
  • Added stack size monitoring to batch debugger window title
  • Added ISO ordinal date format 6 to @AGEDATE, @DATECONV,
    @FILEDATE and @MAKEDATE
  • Added _ISORDATE and _WINTICKS internal variables
  • Added @DIRSTACK and @SIMILAR functions
  • Updated help file for the above changes and corrected DIRS direction
Build 183 (Version 7.83) — 22 September 2008:
  • Avoid diskette swap prompt for _READY if B: is a "phantom floppy"
  • Added @COMPARE, @LCS and @REVERSE functions
  • Updated help file for the above change
Build 182 (Version 7.82) — 19 September 2008:
  • Fixed my v7.81 @DATE bug: wrongly used ISO week year to sum days
  • SETDOS /C, /E and /P now accept ASCII code as numeric argument
  • Added PROMPT $A to show ampersand and $K to show ISO week date
  • Added _HDRIVES internal variable
  • Added @CEILING, @DRIVETYPE and @FLOOR functions
  • Updated help file for the above changes
Build 181 (Version 7.81) — 17 September 2008:
  • Prevented buffer overflow if @INSERT strings too long
  • Made stricter and united all day-of-year/days-since-1980 code
  • DATE/TIME prompt date/time separators made country-specific
  • Added _CDROMS, _DRIVES, _ISOWYEAR and _READY variables and
  • @DATECONV,@HISTORY,@ISOWYEAR,@SUBST,@UNQUOTES fns
  • Updated help file for the above changes
Build 180 (Version 7.80) — 14 September 2008:
  • INKEY /W no longer loads the CPU in W9x/ME and DesqView
  • Added _ININAME and _TICK variables
  • Added @COUNT,@ISALNUM,@ISALPHA,@ISASCII,@ISCNTRL,
    @ISDIGIT,@ISPRINT,@ISPUNCT,@ISSPACE and @ISXDIGIT functions
  • Updated help file for the above changes
Build 179 (Version 7.79) — 11 September 2008:
  • Last LIST search text is now default for new search in same mode
  • Added _BATCHTYPE, _BDEBUGGER, _CMDSPEC and _V86 variables
  • Added @QUOTE and @UNQUOTE functions
  • Updated help file for the above changes
Build 178 (Version 7.78) — 8 September 2008:
  • Fixed my year increment/decrement bug on ISO week date output
  • The keystroke terminating DELAY /B is no longer shown
  • Non-repeated seed value period increased from 1 month to 1 year
  • Added _TSC and _CPUSPEED variables
  • Added TIMER /Q(uiet) option
  • TIMER accuracy improved from 55 to 10 ms but on 8086-286 or OS/2
  • Accuracy of DELAY /M improved from 55 to 1 ms (32 ms under OS/2)
  • Updated and amended help file for DELAY, TIMER, _TSC, _CPUSPEED
Build 177 (Version 7.77) — 31 August 2008:
  • All date options, arguments and date input can now be ISO week date
  • Added ISO week date format 5 to @AGEDATE,@FILEDATE,@MAKEDATE
  • Added _ISOWDATE internal variable
  • Updated help file for the above changes
Build 176 (Version 7.76) — 29 August 2008:
  • Added MOD as an equivalent to the %% operator of @EVAL
  • Added @ISODOWI,@ISOWEEK functions & _ISODOWI,_ISOWEEK vars
  • Updated help file for the above changes
Build 175 (Version 7.75) — 24 August 2008:
  • GOSUB variables containing the switch character are now accepted
  • Prompt is now on the first, not the second row after screen cleared
  • Added SET /E option (set local environment too if /M also specified)
  • Added @AVERAGE function and _SYSREQ variable
  • Updated help file for the above changes
Build 174 (Version 7.74) — 12 August 2008:
  • History log no longer contains the line "AUTOEXEC"
  • Added @FILEREADB function
  • If length = –1, @FILEWRITEB input data is series of ASCII values
  • Updated help file for the above changes
Build 173 (Version 7.73) — 4 August 2008:
  • Correct extended memory size even if > 64M in MEMORY & @EXTENDED
    (NOTE: It's size of all extended memory regardless of XMS managers.)
  • Added @SMBSTR function
  • Updated help file for the above changes
4INST Changes on 23 July 2008
Allowed installation in 4DOS 7.65+ where _DOS is not always "DOS".
4HELP Changes on 16 and 21 July 2008
Maximum number of cross-references per topic set to 512 (was 128).
As BP7 "Intr" self-modifying code fails in JPC, now TP5.5 can build it too.
Build 172 (Version 7.72) — 15 July 2008:
  • SETDOS /W now works under MS-DOS/PC DOS 5.0+ and W9x/ME
  • Replaced the @RANDOM LCG with Xorshift7 (period = 2256–1)
  • Added @LTRIM, @RTRIM and @TRUNCATE functions
  • Updated help file for the above changes
Build 171 (Version 7.71) — 10 July 2008:
  • Fixed a bug in LIST search results highlighting, obvious in hex mode
  • Enabled SETDOS /X[+|-]9 to enable / disable user-defined functions
  • Added _EDITMODE and _EXPANSION variables
  • Updated help file for the above changes
Build 170 (Version 7.70) — 9 July 2008:
  • Fixed a bug in LIST where bottom line repeats on 1-line scroll down
    if a higher line ended at the right margin (DOS text files only)
  • Fixed a LIST header percentage display overflow bug for big files
  • Holding Shift with F or Ctrl-F in LIST now matches search case
  • Added a /N (line numbers) option to LIST
  • Updated help file for the above changes
Build 169 (Version 7.69) — 4 July 2008:
  • Fixed the title of the reverse find (Ctrl-F) window in LIST
  • Added @SHA1 function and _STDIN, _STDOUT and _STDERR variables
  • Updated help file for the above change
Build 168 (Version 7.68) — 1 July 2008:
  • _CPU now set to processor brand string if supported by the CPU
  • REBOOT /P now works in W9x/ME even if PM APM interface engaged
  • Update help file for the above changes, added a W9x/ME warning
Build 167 (Version 7.67) — 29 June 2008:
  • TYPE without /L, /P or redirection now shows UNIX text files right
  • REBOOT now works under OS/2, Windows 9x/ME and QEMM Stealth ROM
  • Added _EXECSTR internal variable
  • Updated help file for the above changes
Build 166 (Version 7.66) — 23 June 2008:
  • Warm REBOOT now honours EMM's Int 19h "hook" or jumps to F000:E05B
  • SHIFT switch character no longer hard-coded to '/'
  • _DOS now available also with 4DOS /C
Build 165 (Version 7.65) — 11 June 2008:
  • The Shell sort of directories replaced with the much faster heapsort
  • Internal variable _DOS now reflects actual running operating system
  • Added _LALT, _LCTRL, _RALT, _RCTRL internal variables
  • Updated help file for the above changes
4HELP Changes on 31 May 2008
In VESA text video-modes with over 80 columns, BP7 no longer resets
the video-mode on start or blanks the screen on exit (invoked by F1).
Build 164 (Version 7.64) — 26 May 2008:
  • If the string has a leading separator, the word or field index is
    negative and its absolute value is equal to the number of words
    (fields), @WORD and @FIELD no longer return the whole string
  • @WORD[S], @FIELD[S] no longer ignore leading space(s) in string
  • TOUCH /R or /T now set file seconds properly without halving them
  • LIST now shows also seconds and 4-digit year in its file info box
  • Added EQC (case-sensitive) comparison operator
  • Updated help file for the above change
Build 163 (Version 7.63) — 3 May 2008:
  • If EditMode is not Init*, cursor shape is now reset on hitting Enter
  • "Warm" REBOOT in DOS now also pulses RESET pin on ATs (still "warm")
  • If InstallPath is not set, OPTION can now invoke 4HELP
Build 162 (Version 7.62) — 25 April 2008:
  • The prompt after a CLS now goes to the first, not the second line
  • As in COMMAND.COM, /K now suppresses the signon messages like /C
    (Note: As IO.SYS 7.x appends "/D /K AUTOEXEC" or "/K NETSTART"
    to the SHELL= line, add a colon after the "K" to "mute" the signon.)
Build 161 (Version 7.61) — 28 January 2008:
  • Correctly show the minor version number of OS/2 Warp 4.x
  • Correctly show X-DOS version and avoid NLS separator corruption in it
  • Recognise Wendin-DOS (rus as 4DOS.EXE; some commands fail there)
Build 160 (Version 7.60) — 28 December 2007:
  • Auto-completion and SELECT now support filenames containing backquotes
  • HEAD/TAIL /V option header now always starts on new line if /C used
  • Return value of @FILEWRITE now equals the number of bytes written
Build 159 (Version 7.59) — 27 October 2007:
  • Wildcard matches include all LFNs containing bracket characters ([])
  • Added @MD5 function for files using the RSA algorithm from RFC 1321
  • Updated help file for the above change
CODE.DIF changes on 3 October 2007:
  • Integrated the changes by Michal Necasek for Open Watcom C
  • Changes allowing 4DOS build will appear in Open Watcom C version 1.8
  • VC 1.5x still builds a 100% identical executable file (same as build 158)
Build 158 (Version 7.58) — 15 September 2007:
  • Direct screen output now works in monochrome video modes too
  • Amended sign-on message with information about 4DOS patches
  • Re-enabled the MOVE /W(ipe) option
Build 157 (Version 7.57) — 27 July 2007:
  • Auto-completion of file names with many dots works in DOSLFN as in W9x
  • Creation / access times can now be TOUCHed in DOSLFN, not only in W9x
  • SELECT /X now works in DOSLFN too, not only in W9x
  • Fixed possible pointer underflow if @WORD and @FIELD count backwards
  • @WORD and @FIELD no longer return whole string if it has leading space
  • Added @FIELDS function
  • Updated help file for the above change
Build 156 (Version 7.56) — 25 June 2007:
  • Show zero creation or access times in DOSLFN the same way as in W9x
  • Added _DATETIME and _MONTHF variables
  • Added @AGEDATE and @MONTHF functions
  • Updated help file for the above changes
Build 155 (Version 7.55) — 14 May 2007:
  • Show proper CD/DVD-ROM disk space in raw DOS; fixes DIR in PCDOS7.1
  • Avoid false detection of MS-DOS 7 (MSDOS7 variable) in case of FreeDOS
  • DIR /2 /X in Windows now looks like in DOS and doesn't reach column 80
  • VER /R now displays also build date
Build 154 (Version 7.54) — 20 April 2007:
  • Added message.* to global header dependency
  • Added high-level @EMS function code (was missing in original sources)
  • Added _alt,_capslock,_ctrl,_lshift,_numlock,_rshift,_scrolllock,_shift
  • Updated help file for the above change
Build 153 (Version 7.53) — 15 February 2007:
  • Recognise LZ-DOS, RXDOS, DOS-ROM and S/DOS
  • The "Marked" message of SELECT no longer shifts even on largest files
  • 8.3 file size over 1 GB no longer misaligns DIR, TREE or SELECT output
  • Updated help for the above (maximal non-wrap description size now 39)
Build 152 (Version 7.52) — 4 February 2007:
  • Correctly process the "invalid disk change" code during critical error
  • Irrelevant error codes in critical error converted to "general failure"
  • Added a /L(ine offset) option to LIST
  • Updated help file for the above change
Build 151 (Version 7.51) — 31 January 2007:
  • For Novell DOS and DR-DOS 7.x-8.0, show the right DOS version
  • For hard errors, show operation and drive; accept only allowed actions
  • DOS error messages amended and edited to clarify and remove duplicates
  • Updated help file for the above change
Build 150 — 25 January 2007:
  • Fixed the "Lock violation on COPY from remote drive without SHARE" bug
  • Worked around a bug (in MSVCRT?!) leaving high byte of _doserrno != 0
  • VER_MINOR = VER_BUILD - 100 from now on (version 7.51 = build 151)
Build 149 — 18 January 2007:
  • Fixed the "DIR [PATH] finds no files in DOS LFN volumes" bug
  • An * instead of *.* default wildcard is now used for DOS LFN volumes
  • FFIND /U (summary only) option can now be evaluated by @EXECSTR
  • FFIND and LIST search can now be interrupted with Ctrl-C
4HELP Changes on 15 January 2007
4HELP now supports mouse wheel (As for 4DOS, a driver that supports
wheel is needed, e.g. Cute Mouse 2.x; the W9x driver does not support
wheel for the DOS mouse API.)
Build 148 — 10 January 2007:
  • LIST, SELECT and command history window now support mouse wheel
    Note: A driver that supports wheel is needed, e.g. Cute Mouse 2.x
  • The right mouse button now exits LIST and SELECT
Build 147 — 8 January 2007:
  • Fixed command line buffer overflow when repeatedly pressing F12
  • Added hexadecimal output option to @EVAL
  • Updated help file for the above change
Build 146 — 7 January 2007:
  • Fixed command line buffer overflow and path search name underflow bug
  • Added new @CWD and @CWDS functions
  • Updated help file for the above change
Build 145 — 6 January 2007:
  • @READY now equals the inverted "no disk in drive" bit for CD-ROMs
  • Added new EJECTMEDIA and CLOSETRAY commands
  • Updated help file for the above change
Build 144 — 30 December 2006:
  • Added a /V(erbose) option to TYPE to show a header for each file
  • Added a /P(ower off) option to REBOOT to shut the system down
  • REBOOT now flushes SMARTDRV cache before reboot or power off
  • Updated help file for the above changes
Build 143 — 29 December 2006:
  • /P page prompts are now overwritten like DR-/PTS-DOS COMMAND.COM
  • Restored DOS version 2.x compatibility of 4DOS.COM, lost in v6
  • 4DOS.COM now aborts on attempt to run it in DOS version 1.x
Build 142 — 26 December 2006:
  • Restored 8086/8088 (PC/XT, Pravetz-16, etc.) compatibility, lost in v6
  • Added compatibility information about CADStar PCB in the help file
  • Added @SERIAL function; help file updated for it too
Build 141 — 24 December 2006:
  • Added GB units to file size ranges, @DISK* and @FILESIZE functions
  • DIR /4 now shows size of files over 1 GB with precision of 0.1 GB
  • Added information about the above features in the help file
Build 140 — 22 December 2006:
  • For Pentium 4 and up, _CPU now returns 786
  • Removed the @READY warning from 4DOS.HLP and added 786 info to it
  • Added build.h dependency for expand, removed shareware dependencies
Build 139 — 21 December 2006:
  • Recognise Datalight ROM-DOS
  • Can now load in upper memory in PTS-DOS
  • @READY now works properly in PTS-DOS
Build 138 — 19 December 2006:
  • @READY now works more reliably with CD-ROM drives
  • Removed unused modules "batcomp" and "parspath" from 4DOS.LNK
  • INTVER = VER_BUILD again, now OPTION.EXE patched on each build
Build 137 — 17 December 2006:
  • Re-enabled _4INST.BTM (self-installer) support
  • Added the installer files from version 6.02 (1999) to the archive
  • 4DOS.HLP replaced by extended and updated version by Charles Dye
Build 136 — 15 December 2006:
  • Process the DR-DOS F5/F8 startup keystrokes too
  • Fixed the "%* affected by the SHIFT command" bug
  • Removed the unused (non-4DOS and shareware) error messages
Build 135 — 13 December 2006:
  • No longer mistake DR-DOS 7.0x for Novell DOS
  • Recognise PC DOS, FreeDOS, PTS-DOS and DR-DOS 7.03
  • Fixed the "DIR /F and DIR /B /S disable colourisation" bug
Build 134 — 9 December 2006:
  • Batch debugger now refuses to load batch files over the 64 KB size limit
  • Fixed the "total @FILESIZE roll-over at 4 GB" bug
  • Fixed the "DESCRIBE loses third-party info" bug
Build 133 — 7 December 2006:
  • Properly show FAT32 drive space in MS/PC/LZ/EDR/PTS/ROM/FreeDOS
  • Properly show free XMS memory in the MEMORY command if > 64 MB
  • Re-enabled the /Y single-stepping option that was disabled in 2003
  • Fixed the "SET /M not upper-casing master environment variables" bug
  • Fixed the "RD not removing hidden and system sub-directories" bug
  • Fixed the C4018 "signed/unsigned mismatch" C compiler warnings
  • Reverted INTVER from 131 to 130 to make OPTION compatible
4DOS History before build 132
For earlier builds and versions and their history, please see the site of
the 4DOS veteran user and contributor Klaus Meinhard. It provides a wealth
of information on 4DOS and a great collection of 4DOS batch files, aliases
and functions. His site is really a must visit for any serious user of any JP
Software's command processor. Eventual future versions of 4DOS may
also be there.
Brief History of Bulgaria
Valid XHTML 1.1 Valid XHTML 1.1 Valid XHTML 1.1Valid CSS?

The visitors of this page come from over 100 countries. Top 7 visitors' cities: 北京市 (Beijing), תֵּל־אָבִיב-יָפוֹ (Tel Aviv), London, 台北市 (Taipei), Denver, Paris, Herndon.