868 lines
44 KiB
Plaintext
868 lines
44 KiB
Plaintext
|
||
SKIP'S COMPUTER MISCELLANEA
|
||
|
||
#28
|
||
|
||
(C) Copyright 1989 by
|
||
C. F. "Skip" Mowery, Jr.
|
||
Colonel, USAF (Ret.)
|
||
406 Van Reed Manor Drive
|
||
Brandon FL 33511
|
||
813-689-4212
|
||
|
||
"Skip's Computer Miscellanea" is copyrighted material and remains the
|
||
property of the author, who reserves all rights to its publication,
|
||
reproduction and distribution, with the following single exception: it
|
||
may be freely copied and distributed electronically via computer for
|
||
personal non-commercial use, provided that the content is not modified,
|
||
that it is not copied to or distributed on any form of print media and
|
||
that it is not copied or distributed by or for any type of business
|
||
endeavor without the prior written permission of the author.
|
||
|
||
**********
|
||
|
||
Your comments about this material, suggestions, and questions about any
|
||
aspect of computing are always welcome. Write to the address above or
|
||
leave a message for Charles Mowery on either of the boards mentioned
|
||
below.
|
||
|
||
"Skip's Computer Miscellanea" now orignates simultaneously on the
|
||
Computer Archives BBS (813-968-6220) and the Professional Data Exchange
|
||
BBS (813-920-0647), both in the Tampa Bay area in Florida. Some of the
|
||
content may have originally appeared in different form on those or
|
||
other boards.
|
||
|
||
**********
|
||
|
||
|
||
4DOS, Version 2.2a
|
||
|
||
One of the Finest, Most Useful Pieces of Shareware Ever Released
|
||
|
||
|
||
You absolutely, positively MUST try 4DOS. If you've put off trying it
|
||
because it's a little complicated to get set up, this article will show
|
||
you exactly what to do -- so, no more excuses: try it!
|
||
|
||
4DOS is a replacement for Command.Com and much more. It has all the
|
||
normal DOS commands, many of which are enhanced, plus it adds many new
|
||
internal commands and gives you a flexibility that you won't believe
|
||
until you try it. And it works on 8088 and 80286 systems equally well.
|
||
|
||
The bottom line of 4DOS is that you can do more with less: it will
|
||
save both memory and disk space, while giving you more computing power
|
||
than you've ever had. Used properly, 4DOS will allow you to get rid of
|
||
a bunch of batch files and utility programs, thereby saving disk space.
|
||
You can also eliminate some of your memory-resident programs and save
|
||
both disk space and memory. And further memory savings are accomp-
|
||
lished by the disk-swapping procedures in 4DOS, and the fact that 4DOS
|
||
actually occupies less memory than IBM/MS-DOS.
|
||
|
||
Here are just some of the files that you will no longer need because
|
||
4DOS has internal commands to replace them (or you can use Aliases to
|
||
replace them) -- and, in most cases, 4DOS will give you more flexibili-
|
||
ty:
|
||
|
||
Move utilities (e.g. Move.Com)
|
||
Command line editing and recall utilities (e.g. CED)
|
||
Utilities that fake keystrokes to programs (e.g. Key-Fake)
|
||
Global command utilities (e.g. Sweep)
|
||
Utilities that perform actions with exceptions (e.g. Delbut)
|
||
Directory utilities (e.g. SDIR, CDIR)
|
||
Utilities to change directories and drives (e.g. CDD)
|
||
Environment expanders and editors
|
||
File management utilities (e.g. Xtree clones)
|
||
Utilities that save and restore current directory (e.g. Pushdir
|
||
and Popdir)
|
||
Batch file enhancers and most regular batch files
|
||
List programs
|
||
Timing programs
|
||
Utilities that add and read file descriptions
|
||
Utilities for condensing several commands into one
|
||
Utilities that combine several batch files into one.
|
||
|
||
And the beauty of it all is that, since all the commands are internal,
|
||
everything runs much faster -- commands are executed immediately.
|
||
|
||
The documentation is excellent and it's easy to find things in it.
|
||
Even though complete on-screen help is available via the F1 key, I
|
||
recommend that you print out the documentation and keep it handy, since
|
||
you will be referring to it until you get used to the system. (This is
|
||
one of the few programs I've used for which the printed documentation
|
||
continues to be useful over a long period.)
|
||
|
||
4DOS is a little complicated to get set up (which is the primary reason
|
||
that I printed out the documentation) -- so, rather than try to explain
|
||
it all (and in effect reproduce the documentation), I'm going to show
|
||
you exactly how to get set up. Since I have an 8088 system and a hard
|
||
disk and don't have EMS memory, my comments, of course, will emphasize
|
||
that type of system, but the setup is basically the same for an 80286
|
||
system. If you have EMS memory, I suggest that you use my setup to try
|
||
4DOS and then go back and read the 4DOS documentation for using EMS
|
||
memory. The only real difference is that, with my system, 4DOS swaps
|
||
itself on and off of the hard disk instead of in and out of EMS memory.
|
||
(By the way, the disk swapping is not noticeable.) 4DOS can also be
|
||
set up to be memory-resident for use with a floppy-based system.
|
||
|
||
Before attempting to load and use 4DOS, do a complete backup of your
|
||
hard disk and have a system disk handy, just in case 4DOS doesn't work
|
||
as well on your system as it does on mine. This is especially impor-
|
||
tant if you decide to try to set up 4DOS on your own, without following
|
||
what I did. It took me quite a bit of experimenting (and a call to the
|
||
authors) before I finally got the system running properly and set up
|
||
the way I wanted it.
|
||
|
||
Installing 4DOS:
|
||
|
||
4DOS can be set up to be memory-resident (for floppy-based systems), or
|
||
it can be called as a transient (I can't imagine why you'd want to do
|
||
so), or it can use disk-swapping to/from EMS memory or a hard disk.
|
||
|
||
There are 4 basic steps to the setup:
|
||
|
||
1. Placement of 4DOS files.
|
||
|
||
2. Modification of the Config.Sys file.
|
||
|
||
3. Modification of the Autoexec.Bat file.
|
||
|
||
4. Creation of Aliases.
|
||
|
||
Step 1:
|
||
|
||
First, of course, you should create a directory named 4DOS and copy all
|
||
the 4DOS files into it, with these exceptions: the files KEYSTACK.SYS,
|
||
4DOS.COM and 4DOS88.EXE should be copied to the root directory of your
|
||
hard disk. (See "Alternatives" below.) If you have a 286 system, put
|
||
4DOS286.EXE in the root directory instead of 4DOS88.EXE.
|
||
|
||
Step 2:
|
||
|
||
The second step is to add 2 lines to your CONFIG.SYS file. Here are
|
||
the lines to add:
|
||
|
||
device=keystack.sys
|
||
shell=c:\4dos.com /s:dc:\4dos /m:2500 /p
|
||
|
||
These lines assume that your hard disk is C: and that KEYSTACK.SYS and
|
||
4DOS.COM are in the root directory. You can refer to the 4DOS documen-
|
||
tation for details about all the possible parameters that can be
|
||
included in the second line. All I'm going to mention are three
|
||
points. First, the "/s:dc:\4dos" part is what sets up disk swapping
|
||
and tells the system to put the disk-swapping file (a hidden file) in
|
||
the 4DOS directory. If you have EMS memory, you can use "/s:e" (in
|
||
place of "/s:dc:\4dos") and disk swapping will be to/from EMS memory.
|
||
|
||
Second, the "/m:2500" part tells the system to set up a Master Environ-
|
||
ment with space for 2500 characters. You can use /e instead of /m,
|
||
which saves a little memory space, but the documentation indicates that
|
||
there are a few applications that will look for a Master Environment
|
||
and lock up if one is not found. To avoid that potential problem and
|
||
not have to remember it later, I used /m and suggest that you do also
|
||
(see the explanation in the 4DOS documentation).
|
||
|
||
The 2500 can be any number, as long as it's large enough to include all
|
||
of your normal environment items as well as all of your Aliases. I
|
||
suggest 2000 to 3000 so that you can add Aliases later without having
|
||
to modify this line in the Config.Sys file. Once 4DOS is set up with
|
||
the Aliases that you want, you can use the 4DOS "MEMORY" command to
|
||
find out how much free environment space you have and then change that
|
||
line in the Config.Sys file to use a smaller or larger number if you
|
||
want to.
|
||
|
||
Third, the "/p" part is required if you want 4DOS to execute your
|
||
AUTOEXEC.BAT file on boot-up.
|
||
|
||
Alternatives:
|
||
|
||
Let me digress here briefly to mention some alternative setups. It
|
||
would be possible, of course, to copy all of the 4DOS files to your
|
||
root directory, but that's inefficient hard disk organization.
|
||
|
||
Another alternative is to put KEYSTACK.SYS in the 4DOS directory
|
||
instead of in the root directory. If you choose to do so, change the
|
||
Config.Sys line "device=keystack.sys" to "device=c:\4dos\keystack.sys".
|
||
|
||
A third alternative is to set up 4DOS with all of the 4DOS files in the
|
||
4DOS directory. That is explained in the documentation, but I don't
|
||
recommend it. If you do it that way, depending on how you configure
|
||
4DOS, you will probably encounter what the 4DOS documentation says is a
|
||
bug in MS-DOS that will cause problems because of a limit on the length
|
||
of the line in your CONFIG.SYS file (the 2nd line shown above). That's
|
||
all I'm going to say about that, except to note that there should be no
|
||
reason why you can't put 4DOS.COM and 4DOS88.EXE in your root directory
|
||
(just as you would with Command.Com) and thereby avoid the potential
|
||
problem. (I lied: I'm going to say one more thing. The documentation
|
||
says the line limit for the line I'm referring to is 34 characters
|
||
"following the name of the shell program", but I had problems when I
|
||
had exactly 34 characters after the program name, including the space
|
||
after the program name, which is why I chose to put 4DOS.COM and
|
||
4DOS88.EXE in my root directory and avoid the problem.)
|
||
|
||
Step 3:
|
||
|
||
The third step is to modify your AUTOEXEC.BAT file by adding the
|
||
following lines.
|
||
|
||
ALIAS /R C:\4DOS\ALIASES.LST
|
||
SET 4DSHELL=/S:DC:\4dos /M:2500
|
||
SETDOS /H4 /V0
|
||
|
||
The first line tells the system to set up the Aliases that you have
|
||
included in the file ALIASES.LST in the 4DOS directory. (See step 4
|
||
below.) This is the fast, easy alternative to having each of the Alias
|
||
definitions listed separately in the AUTOEXEC.BAT file.
|
||
|
||
The second line configures 4DOS as the secondary command processor (the
|
||
one that's called when you "shell to DOS" from some programs), and sets
|
||
it up to be the same as 4DOS when it's the primary command processor.
|
||
If you want to use COMMAND.COM as the secondary command processor, you
|
||
should not use the second line above but rather include the line
|
||
"COMSPEC=C:\COMMAND.COM". This was a preferred procedure in an earlier
|
||
version of 4DOS because, if 4DOS were used as the secondary command
|
||
processor, the entire 4DOS system would be loaded when the secondary
|
||
command processor was called and, hence, wasted memory. But, since the
|
||
latest version has 4DOS use disk-swapping even when it's the secondary
|
||
command processor, I see no point in using COMMAND.COM. If you want
|
||
4DOS to be both the primary and secondary command processor, it is NOT
|
||
necessary to include a "COMSPEC=..." line, since 4DOS sets itself up as
|
||
the secondary command processor automatically. (You can confirm this
|
||
after booting with 4DOS by entering the SET command with no parameter.)
|
||
|
||
The third line is optional but recommended. There are several optional
|
||
parameters that can be used with the SETDOS command (see the documenta-
|
||
tion). In this case, I have used the one that limits the command
|
||
history table to commands of 4 or more characters only, and that sets
|
||
ECHO OFF as the default for all batch files. In other words, if you
|
||
use "SETDOS /V0", you can eliminate the ECHO OFF line from all of your
|
||
batch files and from your Aliases. (In fact, by using appropriate
|
||
Aliases, you can eliminate a lot of the batch files themselves -- see
|
||
below).
|
||
|
||
4DOS has another feature that you might want to take advantage of via a
|
||
line in your AUTOEXEC.BAT file. Here's the line that I use:
|
||
|
||
SET .BAS=C:\BIN\B.EXE
|
||
|
||
That line tells 4DOS that, whenever I enter a file name, if there is a
|
||
file available with the .BAS extension, 4DOS should load Basic first
|
||
and pass the file name to it. (I have renamed Basic to simply B.EXE
|
||
and have placed it in my \BIN directory.) You can do the same thing for
|
||
any combination of file extensions and applications (e.g. .TXT and your
|
||
text editor) -- see the 4DOS documentation.
|
||
|
||
Important Notes for Saving Memory:
|
||
|
||
Add the above lines to the Autoexec.Bat file AFTER any lines that load
|
||
memory-resident programs. Also, if you use the PROMPT or SET commands
|
||
in any lines in your Autoexec.Bat file, place them AFTER any lines that
|
||
load memory-resident programs.
|
||
|
||
If you follow those 2 suggestions, you will save a lot of wasted
|
||
memory. If you have any doubts about that (or any of these sugges-
|
||
tions), try it both ways and you'll see the difference (use the 4DOS
|
||
"MEMORY" command for this purpose).
|
||
|
||
Another way to save some memory under any type of DOS is to put all
|
||
your memory-resident programs in the root directory. Even more memory
|
||
can be saved if you shorten the names of memory-resident programs to be
|
||
4 or less characters (not including the period and extension).
|
||
|
||
Finally, you can save additional memory by removing the COMSPEC and
|
||
PATH entries in your environment by including at the beginning of your
|
||
Autoexec.Bat file the lines "COMSPEC=" and "PATH=" with no parameters,
|
||
and then entering the proper COMSPEC and PATH settings at the end of
|
||
the Autoexec.Bat file.
|
||
|
||
The point here is that, according to what I've read, each memory-
|
||
resident program is loaded into memory together with its path specifi-
|
||
cation and a copy of the environment -- and the environment, especially
|
||
under 4DOS, can be very lengthy. At one point when I was testing
|
||
various formats for my Autoexec.Bat file, I managed to save about 9K of
|
||
memory just by rearranging the order of the lines so that the memory-
|
||
resident programs were called first.
|
||
|
||
As for the length of the memory-resident file names, I don't completely
|
||
understand this (any more than I understand the other hints -- but they
|
||
work), but apparently the file names are saved in 16-byte increments
|
||
and, if the name is 5 bytes long, it uses 16 bytes more memory than it
|
||
would if the name were 4 bytes long.
|
||
|
||
For more information about these memory-saving tips, see the August '89
|
||
issue of "REMark" magazine, the official Zenith/Heath computer users
|
||
magazine.
|
||
|
||
(I should have put these tips into a separate article, right?)
|
||
|
||
Step 4:
|
||
|
||
The fourth and final step is a continuing one: create a list of
|
||
Aliases in a single ASCII file. As you use the system, you'll discover
|
||
many opportunities to make your life easier by adding new Aliases to
|
||
the file. As mentioned in the documentation, you could include all
|
||
your Alias definitions in your Autoexec.Bat file, but that makes it
|
||
more difficult to add and test new Aliases (you'd have to reboot every
|
||
time you wanted to test a new Alias) and it takes longer to load them
|
||
that way.
|
||
|
||
Aliases give you tremendous flexibility and save a lot of disk and
|
||
memory space. You can think of them as in-memory batch files -- and
|
||
that's why you can eliminate most batch files under 4DOS.
|
||
|
||
You create Aliases the same way and for the same reasons that you
|
||
create a batch file, except that all of them can be placed in one file,
|
||
one Alias per line. Use a text editor and be sure to save the file in
|
||
ASCII format, with no formatting codes.
|
||
|
||
The file name for your Aliases can be any name you choose and it can be
|
||
in any directory, as long as you include the full file specification in
|
||
the "ALIAS /R ..." line in your Autoexec.Bat file (see Step 3 above).
|
||
|
||
NOTE: If you've already read the 4DOS documentation's discussion on
|
||
creating Aliases, you'll recall some discussion about using the single
|
||
quote mark (`) to begin and end a list of multiple commands in an
|
||
Alias. Forget everything you read about that. What the documentation
|
||
doesn't mention is that, if you put your Aliases in a file and have the
|
||
system read that file, as described above, you don't need the quote
|
||
marks. (Whew! One less thing to remember -- unless, of course, you
|
||
have to remember not to remember the business about the quote marks.)
|
||
There is one exception, which is described below ("Temporary Aliases").
|
||
|
||
If you know how to create a batch file, you know how to create a file
|
||
of Aliases. However, you should review the 4DOS documentation to see
|
||
all of the new and different batch commands that you can use in Aliases
|
||
(or in batch files). For now, I'm just going to mention four points:
|
||
|
||
1. Each Alias must be on a separate line in the file, the line
|
||
must be limited to 255 characters in length, and the line must
|
||
begin with the name of the Alias and an equals sign (=) with
|
||
no intervening space, i.e. Alias=definition.
|
||
|
||
2. If the Alias definition includes a word (file name, program
|
||
name, etc.) which is the same as the Alias name, the word
|
||
should be preceded by an asterisk (*).
|
||
|
||
3. You can put multiple commands in the Alias definition but you
|
||
must separate each one with the caret symbol (^). You can
|
||
also use multiple commands in the same way from the 4DOS
|
||
command line, not just in Aliases, with the same 255-character
|
||
limit. The ability to use multiple commands at the DOS level,
|
||
combined with the History feature (see below) provides
|
||
tremendous flexibility and ease of use.
|
||
|
||
4. Aliases can't have conditional (IF) commands. Use a regular
|
||
batch file if you need to use conditional commands.
|
||
|
||
Below are some of the Aliases that I have in my ALIASES.LST file. Note
|
||
that they are in alphabetical order. That makes it easier to edit the
|
||
file and also makes finding an Alias definition easier.
|
||
|
||
Once installed, you don't have to remember all of your Alias names.
|
||
You can see a list of the Aliases by entering the word "ALIAS" (which
|
||
makes sense, right?), and all established Aliases will be listed on-
|
||
screen in the same order in which they were entered (the order in which
|
||
they appear in the file).
|
||
|
||
In some of the Aliases listed below, I've had to break the line so that
|
||
you can read it, and I've indented the broken part so you know that
|
||
it's a part of the prior line. All Aliases should occupy only a single
|
||
line in your Aliases file. Also, I've inserted spaces on either side
|
||
of the ^ symbol to help you differentiate between multiple commands.
|
||
It is not necessary to include those spaces in the Alias definition.
|
||
|
||
Sample Aliases:
|
||
|
||
ALIAS=CLS ^ *ALIAS /P
|
||
|
||
The normal command "ALIAS" will list on-screen all established Aliases,
|
||
and the /P switch tells the system to pause when the screen is full.
|
||
So, what I did here was redefine the term "Alias" so that it includes
|
||
the /P switch. Note the use of the asterisk (*). That tells the
|
||
system in this case to treat the command "Alias" in its normal form,
|
||
rather than as an Alias. This is necessary whenever a term in the
|
||
Alias definition is the same as the name of the Alias. Confused? Try
|
||
it.
|
||
|
||
ARC=CLS ^ UNALIAS * ^ *ARC %& ^ *ALIAS /R C:\4DOS\ALIASES.LST
|
||
|
||
In this case, I've redefined the command "Arc". (My copy of PKPAK has
|
||
been renamed to be ARC.) The Alias first clears the screen, then
|
||
deletes all Aliases from the system, then calls the ARChive program
|
||
(using the * to tell the system to treat the name as a program name and
|
||
not as the Alias of the same name) and adds the file spec that was
|
||
typed after the Alias, and finally, after the archiving is complete,
|
||
reestablishes the Aliases from the ALIASES.LST file. Note the use of
|
||
the "%&" symbols, which tell 4DOS to include the remainder of the
|
||
command that was typed. For example, if I enter
|
||
|
||
ARC -a TEST TEST.EXE
|
||
|
||
the "%&" symbol would pick up "-a TEST TEST.EXE" as part of the whole
|
||
command.
|
||
|
||
This Alias highlights one of the very few problems with 4DOS -- or with
|
||
some of the applications that 4DOS has to deal with -- and the solution
|
||
to the problem. If, when trying to use any application under 4DOS, you
|
||
get an error that says, in effect, that there is insufficient memory
|
||
for the environment, or if the system locks up for no apparent reason,
|
||
you have encountered the problem I'm referring to. This error (or the
|
||
lockup) occurs when using PKPAK, PKUNPAK, WHIZ, ZMODEM, and some other
|
||
programs under 4DOS. The solution is simple: call the program via an
|
||
Alias that first deletes the Aliases, then calls the program, and then
|
||
reestablishes the Aliases. As you can see from my example above, the
|
||
Aliases are deleted via the command "UNALIAS *" and are reestablished
|
||
via the command "ALIAS /R" plus the drive, path and file name for your
|
||
Aliases file, which in this case is "C:\4DOS\ALIASES.LST". (The
|
||
problem occurs because the Aliases occupy so much environment space and
|
||
the solution clears that space.) If you encounter the problem with some
|
||
application and don't want to take the time to create an Alias to avoid
|
||
it, just enter "UNALIAS *" and press Return, and then enter the name of
|
||
the application as you would normally to run it. After exiting the
|
||
application, enter "ALIAS /R ...", where ... is the path and name of
|
||
your Aliases file.
|
||
|
||
BACKALL=ECHO Full Backup: Insert disks in drives A and B and ^ PAUSE
|
||
^ CLS ^ MB /GO @C:\MACE\BACKFULL ^ M
|
||
|
||
BACKDAY=ECHO Daily Backup: Insert disks in drives A and B and ^PAUSE
|
||
^ CLS ^ MB /GO @C:\MACE\BACKPART ^ M
|
||
|
||
Those two Aliases exemplify how an Alias can be used as a replacement
|
||
for a batch file, as well as the use of multiple commands in long
|
||
command lines. Each Alias used to be a separate batch file (used for
|
||
backing up files with MACE) with 5 separate lines in each batch file.
|
||
In fact, each batch file used to be 6 lines long because each began
|
||
with the line "ECHO OFF". Thanks to the "SETDOS ..." line in my
|
||
Autoexec.Bat file, as explained above, I no longer have to bother to
|
||
include that line in either batch files or Aliases.
|
||
|
||
As you may know, each short batch file (or any short file) will occupy
|
||
at least 2048 bytes of disk space, even if the file is smaller than
|
||
that. By converting from batch files to Aliases, I save a lot of disk
|
||
space and the commands execute instantaneously (instead of incurring
|
||
the delay required while the system finds and reads the batch file).
|
||
|
||
CW3=CD \WORKING\WORK3 ^ DIR
|
||
|
||
C=CD \
|
||
|
||
These Aliases allow me change to one of my working directories or to
|
||
the root directory with a minimum of typing. I use several similar
|
||
Aliases for moving between the directories that I use most often. Note
|
||
that, in the first example, I included the DIR command, which is
|
||
executed after the change to the new directory.
|
||
|
||
COMPILE=*COMPILE %1 /O; ^ LINK %1 \COMPILER\SMALLERR /E;
|
||
|
||
This is an example of both time and typing savings via the use of an
|
||
Alias. Note that the "%1" symbol has the same significance in an Alias
|
||
that it would in a batch file. Without this Alias and under normal MS-
|
||
DOS procedures, if I wanted to compile the file TEST.BAS, I would have
|
||
to first type "COMPILE TEST /O;" and wait for the compilation to be
|
||
completed. Then I would have to type "LINK TEST \COMPILER\SMALLERR
|
||
/E;" for the linking step. But, with the Alias, all I have to enter is
|
||
"COMPILE TEST" and 4DOS does the rest. When I'm working on a new
|
||
program, and compiling and re-compiling the program under development,
|
||
this Alias saves a lot of time and re-typing of the same commands.
|
||
|
||
CUTBAK=PUSHD ^ CLS ^ CD C:\ ^ GLOBAL DEL *.BAK *.CUT ^ POPD ^ M
|
||
|
||
This is the Alias I use to delete all files with the .BAK or .CUT
|
||
extension anywhere on the hard disk. The 4DOS GLOBAL command applies
|
||
the command that follows it to every directory and subdirectory on the
|
||
disk. (The .CUT refers to files created by SNIPPER, which are named
|
||
SCREEN.CUT.) Note that 4DOS permits the use of multiple file names
|
||
after commands such as DEL and COPY, a feature unavailable in MS-DOS.
|
||
Note also the use of PUSHD and POPD which are explained below.
|
||
|
||
LIST=C:\BIN\LIST.COM
|
||
|
||
4DOS has its own internal List command. This Alias redefines List so
|
||
that it refers to the program List.Com. (I haven't figured out why
|
||
this works, but it does.)
|
||
|
||
SCOPY=SELECT /Oe COPY (*.*)
|
||
|
||
SMOVE=SELECT /Oe MOVE [*.*]
|
||
|
||
These are the Aliases I use when I want to copy or move some but not
|
||
all of the files in the current directory. They make use of the 4DOS
|
||
"SELECT" command, which shows you a list of the files in the current
|
||
directory and lets you tag the ones to which the action command will
|
||
apply. The "/Oe" parameter tells the system to sort the files in Order
|
||
by Extension. The files to be listed are identified in parentheses
|
||
(*.* includes all files in this case) for all commands except the Move
|
||
command which, for reasons that are explained in the documentation,
|
||
requires the use of brackets instead of parentheses. (One of the
|
||
reasons that I set these up as Aliases, instead of just typing the
|
||
SELECT command when I needed it, was so that I wouldn't have to
|
||
remember things like the sort parameter and the use of brackets.) There
|
||
are several other options available with the SELECT command and, of
|
||
course, it can be followed by any action command that can be applied to
|
||
file names. I use a similar Alias for archiving a selection of files
|
||
in a directory.
|
||
|
||
WHEREIS=UNALIAS * ^ CLS ^ ECHO Searching for %1 ^ WHIZ C:%1
|
||
^ *ALIAS /R C:\4DOS\ALIASES.LST
|
||
|
||
WHEREBAK=UNALIAS * ^ CLS ^ ECHO Checking for all files on drive C
|
||
requiring backup (Archive bit ON) ^ SCREEN 3 1 ^ WHIZ C:*.* /ON
|
||
^ *ALIAS /R C:\4DOS\ALIASES.LST
|
||
|
||
WHEREHID=CLS ^ ECHO Searching for all Hidden files ... ^ HUNTATTR /H
|
||
|
||
WHEREARC=CLS ^ ECHO Searching for %1 in ARChives ^ PKFIND %1 /a
|
||
|
||
These 4 Aliases used to be 4 separate batch files, each occupying 2048
|
||
bytes of disk space. (I later combined them into one batch file. See
|
||
the "WHERE.BAT" article below.) Note the use of "UNALIAS *" and "ALIAS
|
||
/R ..." at the beginning and end of the definitions of the first 2
|
||
Aliases. As explained above, that procedure is required because WHIZ
|
||
locks up the system if Aliases are in the environment. Note also that,
|
||
in the first and fourth Aliases, the %1 picks up the file spec from the
|
||
command line. (And the eagle-eyed readers among you will note also
|
||
that I listed these Aliases out of alphabetical order here -- they are
|
||
in order in the Aliases file.)
|
||
|
||
Temporary Aliases:
|
||
|
||
If you want to establish an Alias just for use during the current
|
||
computing session, just enter an Alias name and definition in the same
|
||
way that you would if you were entering it as a line in the Aliases
|
||
file, with one exception: in this case, if you are using multiple
|
||
commands, you must enclose the definition in single quote marks (`).
|
||
|
||
To fully understand how much power and flexibility you are given via
|
||
the use of Aliases, you should read the 4DOS documentation and see the
|
||
variety of commands available to you.
|
||
|
||
ESET, Command Line Editing, HISTORY and PUSHD/POPD:
|
||
|
||
Before closing, let me just mention four other features. The command
|
||
ESET allows you to edit any item in the environment or any Alias. You
|
||
just enter ESET followed by the name of the Alias or environment item.
|
||
The system will then show you the current setting for that item and you
|
||
can use normal command-line editing techniques to edit it. To see
|
||
the items in the environment, enter the SET command by itself.
|
||
|
||
Command-line editing, under ESET or for any normal command line, is
|
||
really easy with 4DOS. You can use the left and right arrow keys to
|
||
move the cursor over the command line without erasing any characters,
|
||
and you can use the insert or overstrike mode (by pressing the Ins
|
||
key), as well as the Back Space and Del keys and a lot more, just as
|
||
you would with a normal text editor. Try it -- it's terrific.
|
||
|
||
4DOS automatically retains in memory a list of the commands that you've
|
||
used, and you can use the up and down arrow keys to see each of them.
|
||
When the one you want to use is on the screen, just press Return to
|
||
execute it. The HISTORY command will show you a complete list of the
|
||
commands currently being retained, and HISTORY /F will erase the list
|
||
from memory.
|
||
|
||
Here's a trick I learned for using HISTORY. If you have a complicated
|
||
command that you will be using regularly, first enter HISTORY /F, and
|
||
then enter the complicated command once. From then on, whenever you
|
||
want to use that command again, just press the down arrow key once and
|
||
that first command will appear (because it's at the top of the list and
|
||
you are currently at the bottom of the list). Simple, huh?
|
||
|
||
4DOS also can remember which directories you've been in and return you
|
||
to one of them. For example, if you are in the root directory, want to
|
||
move temporarily to several other directories and then return to the
|
||
root directory, here's how it works. From the root directory (or
|
||
whichever directory you want to return to later), enter PUSHD. That
|
||
puts the current directory name into a buffer in memory. Then move to
|
||
wherever you want. When you want to return to that saved directory
|
||
name, just enter POPD and -- poof! -- you're there. See the Alias
|
||
CUTBAK above for an example of the use of these commands in an Alias.
|
||
|
||
4DOS is everything that MS-DOS should have been. Ok, it doesn't do
|
||
everything. It doesn't make coffee, but try it anyway. See also the
|
||
discussion of UZK in the next article.
|
||
|
||
**********
|
||
|
||
|
||
UZK.ZIP
|
||
|
||
|
||
This program allows you to zip a program (and its related files) that
|
||
you don't use a lot, in order to save disk space, and then, via 4DOS
|
||
features, unzip and run it by just entering the program name.
|
||
|
||
The author had a good idea but apparently didn't fully understand the
|
||
flexibility of 4DOS, since UZK is a lot more complicated than just
|
||
using an Alias for this purpose. Here's an example of how I do it with
|
||
an Alias and, hence, don't need UZK:
|
||
|
||
STORM=PUSHD ^ CLS ^ CD \MISC\GRAPHICS\STORM ^ UNZIP STORM ^ CLS
|
||
^ DEL STORM.ZIP ^ CLS ^ *STORM ^ CLS ^ ZIP -ex -M STORM
|
||
^ CLS ^ POPD ^ M
|
||
|
||
Storm is a program for tracking hurricanes and uses several data files.
|
||
As you might imagine, I seldom use it. So, I keep it ZIPped in a
|
||
subdirectory by itself. When I want to use it, I just enter "Storm"
|
||
and the Alias above takes care of the rest -- including re-ZIPping the
|
||
files after I exit the program. (I have renamed PKZIP to be ZIP and
|
||
PKUNZIP to be UNZIP.) Note the use of the asterisk (*) to tell the
|
||
system to run the Storm program rather than the Alias by the same name,
|
||
and note that the asterisk isn't needed when "Storm" is used as an
|
||
archive name as part of the UNZIP and ZIP commands. Finally, note the
|
||
use of PUSHD and POPD to return to the directory from which Storm was
|
||
first called.
|
||
|
||
Even if the ZIP file were in a directory with other files, you could
|
||
still do the same thing by including in the Alias definition a command
|
||
to MOVE the file to an empty directory before unzipping it (I have a
|
||
directory, \ZDIR, that's always empty just for that purpose) and a
|
||
later command to MOVE it back to its original directory after zipping
|
||
it again. Here's how that would look:
|
||
|
||
STORM=PUSHD ^ CLS ^ CD \MISC\GRAPHICS\STORM ^ MOVE STORM.ZIP \ZDIR
|
||
^ CD \ZDIR ^ UNZIP STORM ^ CLS ^ DEL STORM.ZIP ^ CLS ^ *STORM
|
||
^ CLS ^ ZIP -ex -M STORM ^ MOVE STORM.ZIP \MISC\GRAPHICS\STORM
|
||
^ CLS ^ POPD ^ M
|
||
|
||
As complicated as that Alias is, it could be longer and still fit
|
||
within the 255-character limit for an Alias, and it could be shorter by
|
||
removing the spaces before and after each ^ symbol and/or removing some
|
||
of the CLS commands.
|
||
|
||
**********
|
||
|
||
|
||
MURF: A THOUGHT-FOR-THE-DAY PROGRAM
|
||
|
||
|
||
MURF is a program in a file called MURF.ZIP and is the best "thought-
|
||
for-the-day" program I've seen. I've been using it for some time now
|
||
and, while some of them are repeated, I continue to see new ones every
|
||
once in a while. They are take-offs on "Murphy's Laws" and include
|
||
such gems as "All things being equal, you lose."
|
||
|
||
The idea is to call it from your Autoexec.Bat file so that you see a
|
||
new saying each time you boot.
|
||
|
||
Even my wife likes them, and she's a tough person to please.
|
||
|
||
**********
|
||
|
||
|
||
SKIPPER'S LAWS
|
||
|
||
|
||
My laws are not as succinct as those in MURF or in "Murphy's Laws", but
|
||
succinctness is not one of my strong points, as regular readers will
|
||
have noted. Here are some of them:
|
||
|
||
The amount of line noise is directly proportional to the size
|
||
of the file being transferred.
|
||
|
||
The only time you should delete a file or throw away a note
|
||
is just before it will be needed. Conversely, files and
|
||
notes that are kept, only because they might be needed some
|
||
day, never are.
|
||
|
||
"Creativity" in programming refers to the fact that, when a
|
||
bug is fixed, at least two more are spontaneously generated.
|
||
|
||
The best way to find a bug is to upload the program to a BBS
|
||
as "the final version." Then, the first time you use the
|
||
program after uploading it, the bug will appear. Unfortu-
|
||
nately, this procedure only works for one bug at a time.
|
||
There is no known way to find all the bugs in a program at
|
||
one time.
|
||
|
||
The only time you really need to remember a person's name is
|
||
when you are absolutely, positively sure you will never have
|
||
contact with that person again.
|
||
|
||
All phone calls must be made twice. The second call is to
|
||
convey the information or ask the question that occurs to you
|
||
immediately after you hang up after the first call. In fact,
|
||
that information or that question is usually the reason you
|
||
called in the first place.
|
||
|
||
Never try to do anything constructive on a computer after
|
||
having had one alcoholic beverage.
|
||
|
||
Most brilliant ideas are conceived moments before falling
|
||
asleep. Corollary: Most brilliant ideas aren't, and those
|
||
that are will not be remembered after waking up.
|
||
|
||
Formula for scheduling when to leave for a meeting: From the
|
||
time of the meeting, subtract the time necessary to get to
|
||
the location, subtract an additional 15 minutes for contin-
|
||
gencies on the way, subtract the time necessary to get ready
|
||
to leave, subtract another 15 minutes for contingencies in
|
||
getting ready, subtract an additional 15 minutes times the
|
||
number of people who are going with you (if they are at your
|
||
location; otherwise, subtract additional travel time for
|
||
picking up each person), and ADD 15 minutes for each person
|
||
who will attend the meeting in addition to yourself and those
|
||
going with you. Even if the addition results in your
|
||
arriving after the scheduled beginning of the meeting, you
|
||
will still be there before anyone else. The short form is
|
||
this: if you plan carefully to arrive at a meeting on time,
|
||
no one else will (plan or arrive on time). The corollary is
|
||
this: if you arrive on time, the meeting will have been
|
||
cancelled or rescheduled; but if you arrive late, everyone
|
||
else will have arrived early.
|
||
|
||
If not watched carefully, printer paper and copier paper will
|
||
disappear. No one takes it and you don't use it -- it just
|
||
disappears.
|
||
|
||
The chances of any given call being a wrong number or an
|
||
anonymous hang-up or a telephone solicitation for free
|
||
cemetary plots are directly proportional to your distance
|
||
from the phone when it rings and are multiplied by a factor
|
||
of 10 if you are doing something difficult to interrupt.
|
||
|
||
If you have only one phone line, it will always be available
|
||
when you don't need it and not when you do. The trick here
|
||
is to tell everyone else in the vicinity that they can use
|
||
the phone because you don't need it -- then you can use it.
|
||
|
||
Things that are "so easy that a child could do it" are
|
||
usually too difficult for the average adult. Similarly,
|
||
things that are "child-proof" usually aren't, but they
|
||
are always adult-proof.
|
||
|
||
**********
|
||
|
||
|
||
WHERE.BAT FILE
|
||
|
||
|
||
Before I started using the Aliases available in 4DOS, I used a batch
|
||
file named WHERE to do my searching for files. By using the shareware
|
||
programs WHIZ, PKFIND and HUNTATTR, I could use the batch file to
|
||
search for either:
|
||
|
||
-- any type of file by name, with or without wildcards,
|
||
-- any file in an ARChive,
|
||
-- any files requiring backup, or
|
||
-- any hidden files.
|
||
|
||
(By the way, WHIZ is the fastest file-search program I've found.)
|
||
|
||
Here's the batch file:
|
||
|
||
CLS
|
||
GOTO %1
|
||
:IS
|
||
ECHO Searching for %2
|
||
WHIZ C:%2
|
||
GOTO END
|
||
:ARC
|
||
ECHO Searching for %2 in ARChives
|
||
PKFIND %2 /a
|
||
GOTO END
|
||
:BAK
|
||
ECHO Checking for all files on drive C requiring backup (Archive bit ON)
|
||
ECHO .
|
||
WHIZ C:*.* /ON
|
||
GOTO END
|
||
:HID
|
||
ECHO Searching for all Hidden files ...
|
||
HUNTATTR /H
|
||
:END
|
||
|
||
To use it, you simply type "WHERE" and a space, followed by either the
|
||
filespec you're searching for, the word "ARC" and a filespec, the word
|
||
"BAK", or the word "HID".
|
||
|
||
See the discussion on 4DOS above to see how to do those things using
|
||
4DOS Aliases.
|
||
|
||
**********
|
||
|
||
|
||
HELPME.ZIP
|
||
|
||
|
||
HELPME.ZIP contains HELPME.COM which has a male voice asking for help
|
||
because he's trapped in the computer. Cute, but it was programmed for
|
||
a system running at 4.77 MHz and can't be understood at 8 MHz.
|
||
|
||
**********
|
||
|
||
|
||
Using Communications Software Without a Modem
|
||
|
||
|
||
Procomm Plus (and probably any other comm program that initializes the
|
||
modem when it begins) won't work on a Zenith SupersPort laptop unless a
|
||
modem is connected to the system.
|
||
|
||
You didn't seriously think that I had found a way to communicate
|
||
without a modem, did you?
|
||
|
||
**********
|
||
|
||
|
||
HOW TO USE ZMODEM BATCH DOWNLOAD/UPLOAD
|
||
|
||
|
||
"Batch" upload or download refers to the ability to include several
|
||
file names in one up/download command. Until recently, I had always
|
||
assumed that it was a complicated procedure and I didn't feel like
|
||
going to the trouble to learn it.
|
||
|
||
I recently learned, almost by accident, how to do it and, while I don't
|
||
know how it works on other boards, on the two boards I access regular-
|
||
ly, it's incredibly simple and I only wish that I had known about it
|
||
before.
|
||
|
||
Try this: once you're logged onto the board, enter "open 1" (without
|
||
the quotes, of course). Then follow the prompts and enter the names of
|
||
the files you want processed, all on the same line or one after the
|
||
other (i.e. by pressing Return after you enter each file name). Zmodem
|
||
and the BBS software take care of the rest and you can sit back and
|
||
watch. Of course, you must have Zmodem on your end also.
|
||
|
||
When you're finished, just enter "QUIT" to get back to the Main Menu
|
||
section of the Board. It's so easy that an adult can do it. (See
|
||
Skipper's Laws above.)
|
||
|
||
**********
|
||
|
||
|
||
The Last Issue?
|
||
|
||
|
||
I've been writing these issues for over a year now and, while I've
|
||
enjoyed producing them, I've become a little discouraged at the lack of
|
||
comments, suggestions or questions from readers. In several articles
|
||
in past issues, I've posed questions to the readers, but the response
|
||
was always nil. I know there are a few of you out there that read each
|
||
issue and a couple of you have mentioned that you enjoy them, but I'm
|
||
finding it increasingly difficult to become enthusiastic about future
|
||
issues without some additional expression of support from the readers.
|
||
|
||
So, I'm going to leave it up to those of you who want to see more of
|
||
these issues to let me know. I'm not looking for praise -- just an
|
||
indication that you want me to continue writing. In fact, I'd welcome
|
||
constructive criticism. I try to cover a variety of topics in a manner
|
||
that will be of interest to novices as well as to more experienced
|
||
users, and I try to inject a little humor now and then. Am I succeed-
|
||
ing? What kind of articles do you prefer? Doesn't anyone have any
|
||
questions about anything related to computing? I'm not an expert by
|
||
any means, but I'd sure enjoy the opportunity to help -- especially to
|
||
help beginning computer users.
|
||
|
||
Last week, I sold a copy of my lottery program to a woman who didn't
|
||
know how to copy it from the floppy disk to her hard disk. There must
|
||
be others out there who need help with even the most basic computer
|
||
operations. If you're embarrassed to admit your ignorance (that's
|
||
ignorance, not stupidity -- although, given my experience with my own
|
||
children, I might even be able to help if you're stupid), send the
|
||
question in a private message on the board, or send me a letter to the
|
||
address in the heading above.
|
||
|
||
This may be the last issue. If you don't want it to be, let me know by
|
||
way of comments, suggestions or questions. Thanks.
|
||
|
||
**********
|
||
|