Dec 092017
CM_FILER 5.23 : Powerful, compact file manager with side-by-side display of files or trees and full suite of services in either mode. Also: built-in line editor, app launcher, spooler & file finder.
File CM_FILER.ZIP from The Programmer’s Corner in
Category File Managers
CM_FILER 5.23 : Powerful, compact file manager with side-by-side display of files or trees and full suite of services in either mode. Also: built-in line editor, app launcher, spooler & file finder.
File Name File Size Zip Size Zip Type
CF523.ADD 1047 476 deflated
CM_FILER.BRF 6435 1961 deflated
CM_FILER.COM 16512 5566 deflated
CM_FILER.DOC 175122 49300 deflated
CM_FILER.OVY 77136 44384 deflated
CM_FILER.REG 8871 2908 deflated

Download File CM_FILER.ZIP Here

Contents of the CM_FILER.DOC file

* *
* CM_FILER -- Version 5.22 *
* *


Copyright 1992 Charles F. Martin

President, NoVaSoft - Member ASP

3239 Riverview Dr.
Triangle, VA, USA 22172-1421

Phone (703) 221-1471/1833 CompuServe 72130,1400
Internet [email protected]

____|__ | (R)
--| | |-------------------
| ____|__ | Association of
| | |_| Shareware
|__| o | Professionals
-----| | |---------------------
|___|___| MEMBER

Assembled using Wolfware Assembler WASM Ver 2.22x,
(c) 1985-1991 Eric Tauck, Wolfware

Manual developed using PC-Write Ver 3.04,
(c) 1983-90 Bob Wallace, Quicksoft

* *
* CM_FILER -- Version 5.22 *
* *




Program Logical and Physical Organization. . . Ov-3
Security Features. . .

Monitor Options. . . Ov-4
Precautions and Limitations. . .

Assumption about User's Familiarity with DOS. . . Ov-5

Additional Note for Windows Users. . . Ov-6
Assertion. . .
Special Thanks. . .

TUTORIAL -- Chapter 1: File Handling:

GETTING STARTED, or the "Kernel" and the "Overlay". . . 1-1

Rename CM_FILER to Spare My Fingers. . . 1-2

The Screen. . . 1-3
The Help Area. . .

The Modifier Keys. . . 1-4
Two Panels. . .

Cursor Movement. . . 1-5
Switching Drives or Disks. . .
Subdirectories. . .

Copy Some Files, then Do It with Tags. . . 1-6

Tagging, Backing Up. . . 1-7
Moving Files. . .

Deleting a File. . . 1-8

The Tagging Convention Expounded on. . . 1-9
Renaming a File OR a Directory. . .

Some Additional Tagging Options. . . 1-10

The File Freshener. . . 1-11
Different Ways to Show the Files. . .
The Data Entry Window. . . 1-12

Disk Space Occupied versus Actual File Size. . . 1-13
File Attributes. . .

Changing the Date/Time Stamp of a File. . . 1-14
"Tagging" and Appending. . .
Printing a File. . .

Making Some Notes About Your Files. . . 1-15
Printing a Directory Listing. . .
Comparison Mode. . .

Hide Mode. . . 1-16
Mask Template. . .
Displaying Date and Time. . .
Changing or Adding a Volume Label. . .

Some Safeguards. . . 1-17
Help. . .
Date/Time Display. . .
Quitting CF. . .

TUTORIAL -- Chapter 2: File Viewing and Editing:

Viewing a File. . . 2-1
Record Delimiters. . .
Information Area. . .
Cursor Movement. . .

Find a String. . . 2-2

Leading and Trailing Blanks in the Data Window. . . 2-3
Editing a File. . .
Edit Mode Limitations. . .
Overstrike vs Push Right. . .
Editing a Line. . .

More on Record Delimiters. . . 2-4
Keypad and N. . .
Block Operations. . .or the REAL Power of CF's Editor. . .
Marking a Block, and the Copy Buffer. . .

Delete, Copy, Move. . . 2-5
Restoring from Inadvertent Block Deletion. . .
Sending a Block of Text to the Line Printer. . .
. . .or to a File. . .

Replace and Global replace. . . 2-6
Leaving Edit Mode. . .
Backup File Protection. . .
Creating a New File. . .
Help. . .

CM_FILER -- Table of Contents ii

TUTORIAL -- Chapter 3: The TREE Functions:

The Display. . . 3-1

Copying structures. . . 3-2

The "Copy Into" Function. . . 3-4

Moving structures. . . 3-5
Copying Just the Files. . .
Copying Just the Directory Array. . .
Deleting Structures. . .

Delete Just the Files. . . 3-6
Show the File List. . .

Find a File. . . 3-7

Print a Hard Copy of the Tree. . . 3-8
Precaution Regarding CF_TRASH.CAN. . .
Leaving the Tree Functions. . .
Help. . .

TUTORIAL -- Chapter 4: Executing Child Processes:

Child Process Defined. . . 4-1
Resident Footprint of CF. . .

"Shelling" to DOS. . . 4-2
Executing a Program from the Main Screen. . .
Immediate Execution. . .
Execution with Command Line. . .

Execution with a Single File Name in Command Line. . . 4-3
"Seeding" the Command Line. . .

Changing the Command Line "Seed" Delimiter. . . 4-4
Customizing Your Child Process File Specifications. . .

A Further Execution Option -- Instant ZIPping/UNZIPping. .4-6

ZIP a File. . . 4-7
Now UNZIP a File. . .

Tailoring CF for custom ZIP/UNZIP spec. . . 4-8
Specifying a Password for Access from Screen Saver. . .

REFERENCE -- Description by Operation:

MEMORY MAPS -- Information on Memory Allocation:

CM_FILER -- Table of Contents iii

* *
* CM_FILER -- Version 5.22 *
* *


Topic or Operation Module Command Page
------------------ ------ ------- ----

Appending files:
to target panel Main T, then C 1-14
to source panel Main T, then B 1-14

Application launching: See
Child process execution

ASCII entry with keypad: Edit Keypad 2-4

Attributes, directory:
toggle "hide", at curs Main 2 1-13
toggle "hide", at curs Tree 2 3-2

Attributes, file: 1-13
toggle "read", at curs Main 1, no tags
toggle "read", tagged Main 1, w/ tags
toggle "hide", at curs Main 2, no tags
toggle "hide", tagged Main 2, w/ tags
toggle "sys", at curs Main 3, no tags
toggle "sys", tagged Main 3, w/ tags
toggle "arch", at curs Main 4, no tags
toggle "arch", tagged Main 4, w/ tags
zero all attrs, at curs Main 0, no tags
zero all attrs, tagged Main 0, w/ tags

Back up files in directory: 1-7
file at cursor Main B, no tags
tagged files in direc Main B, w/ tags

Block operations: Edit 2-4

Change directories: 1-6
to directory at cursor Main
to parent directory Main P
show direc in opp panel Main
show parent in opp panel Main P
to root directory Main \
Tree 3-2

Change to new drive or disk: Main N 1-5
Tree N

Topic or Operation Module Command Page
------------------ ------ ------- ----

Child process execution:
Shell to DOS Main S 4-2
quick execute file at Main Q 4-2
cursor, no command
put file at cursor into Main X 4-2
queue for execution
seed command line with Main C 4-3
full path spec to file
at cursor
seed command line with Main T 4-4
name of file at cursor
edit command line and Main X 4-2,4-3
execute file in queue
execute file in queue, Main X 4-4
no edit of command
execute file in queue, Main X 4-3,4-4
first adding name of
file at cursor to
command line
assign executable files Main F10 See Function
to Function Keys Keys

Compare mode, toggle: M/T C 1-15,3-1

Concatenating files:
to target panel Main T, then C 1-13
to source panel Main T, then B 1-14

Copy operations:
file at cursor to target Main C, no tags 1-6
tagged files to target Main C w/ tags 1-6
freshen one directory Main F 1-11
from another
structure, incl files Tree C 3-2,3-4,3-5
structure w/o files Tree C 3-5
text in marked block Edit C 2-5

Create new file: Main F

Cursor movement:
in directory listings Main 1-5
in tree structures Tree 3-2
in editor Edit 2-1

Data entry line: All 1-12

Date/time, change file: Main F 1-14

CM_FILER -- Index Ind-2

Topic or Operation Module Command Page
------------------ ------ ------- ----

Date/time, display system: Main 1-16

CF_TRASH.CAN directory 1-8
Child process 4-1
Compare mode 1-15
Hide mode 1-16
Kernel 1-1
Module Ov-3,1-1
Overlay 1-1
Source panel 1-4
Target panel 1-4

Delete operations:
"soft" vs "hard" 1-8,1-9
resetting D to hard 1-9
file at curs, soft Main D, no tags 1-8
file at curs, hard Main D, no tags 1-9
tagged files, soft Main D, w/ tags 1-8
tagged files, hard Main D, w/ tags 1-9
directory at cursor Main D, dir void only 1-6
structure at curs, soft Tree D 3-6
structure at curs, hard Tree D 3-6
text in marked block Edit Y 2-4
line of text Edit Y 2-4
word of text Edit T 2-4
text to end of line Edit D 2-4

delete (only if empty) Main D 1-5
delete direc structure Tree D or D 3-2
make new Main M 1-5
Tree M 3-2
rename Main R 1-2,1-9
Tree R 3-2
display subdir in srce Main 1-5
display subdir in trgt Main
display parent in srce Main P
display parent in trgt Main P
display root in source Main \
display root in target Main \
display source in trgt Main *

CM_FILER -- Index Ind-3

Topic or Operation Module Command Page
------------------ ------ ------- ----

Display options:
show Hidden files, Main H 1-13,4-5
dirs; toggle Tree H 3-2
Compare mode, toggle Main C 1-11,4-5
Tree C 3-2
define filename Mask Main M 1-16
Find file Tree F 3-7
Show file list Tree S 3-6
file time, size in K Main - 1-13
no file time, full size Main + 1-13

DOS, Shell to: Main S 4-2

Edit file at cursor: Main E 2-3

File Masking: Main M 1-16

File sorting: Main O 1-11

Find file: 3-7
from main module Main T, then F
from tree module Tree F

Find string: Edit F 2-2

Form feed printer: Main F 1-14
Tree F
Edit F

Freshen directory from Main F 1-11
opposite panel:

Function Keys:
assign applications to Main F10 4-4
Function keys
put app at F1-F9 into Main Fn 4-5
queue for execution
execute queued Fn app Main X, 4-4
X, or
execute app to operate Main Fn 4-6
on file at cursor
execute app to operate Main Fn 4-6
on constructed
command line

Global replace string: Edit G 2-6

CM_FILER -- Index Ind-4

Topic or Operation Module Command Page
------------------ ------ ------- ----

Go to file, first letter... Main G, then letter 1-5
to subdirectory, 1st ltr Main G, ltr 1-5

Help, on-line: Main H Ov-2,1-17
Tree H 3-8
Edit H 2-7

Hide mode, toggle: M/T H 1-16,3-1

Kernel, resident, set size: Main K 4-1,4-5

Launching applications: See
Child process execution

dir size (300,600,1200) Main Ov-4
file size in edit mode Edit Ov-5
memory required (182 K) Ov-4
tree entries (500 dirs) Tree Ov-5
dir nesting (8 levels) M/T Ov-5

Make new directory: Main M 1-5
Tree M 3-2

Masking, in direc listing: Main M 1-16

Monitor options: Ov-4

Moving operations:
files within disk Main C 1-7
structures w/in disk Tree C 3-5
block of marked text Edit V 2-5

New drive or disk, change: Main N 1-5
Tree N 3-2

Notes, view and edit: Main O 1-15

NULL character, entering Edit N 2-4

Ordering scheme, select: Main O 1-11

Overcopy switch, toggling: Main O 1-6
Tree O 3-3

Password, entering: Main F10 Ov-3,4-8

CM_FILER -- Index Ind-5

Topic or Operation Module Command Page
------------------ ------ ------- ----

put file in print queue Main L 1-14
look at print queue Main L 1-14
cancel print queue Main L 1-14
print directory listing Main L 1-15
print directory listing Main O, then L 1-15
with notes
print tree structure Tree L 3-8
Print marked text block Edit P 2-5
Output block to file Edit O 2-5

to DOS from main module Main -, or 1-16
to DOS from tree module Tree Q 3-8
to main from tree module Tree or 3-8
to main from file edit Edit 2-6
to main from file view Edit or 2-6

Remove directory: Main D (must be void) 1-6

Rename file or directory at Main R 1-2,1-9
cursor: Tree R 3-2

Replace string: Edit R 2-6

Resident kernel, set size: Main K 4-1,4-5

Screen saver:
normal timeout to Main Ov-3
forcing before timeout Main S Ov-3
freshening directories Main Ov-6
after return, switch

Security features:
cleared I/O buffers Ov-3
password access denial Main Ov-3

Shell to DOS: Main S 4-2

Sorting of files: Main O 1-11

make new Main M 1-5
Tree M 3-2
rename Main R 1-2,1-9
Tree R 3-2

CM_FILER -- Index Ind-6

Topic or Operation Module Command Page
------------------ ------ ------- ----

Tagging operations on files:
toggle Tag at cursor Main T 1-6,1-9
toggle All tags in direc Main A 1-10
clear or set All tags Main A 1-6,1-9
all files same naMe as Main M 1-10
all files same Ext as Main E 1-10
all files as New as Main N 1-10
all files as Old as Main O 1-10
tag in oPposite panel Main P 1-10
"Append" or "Alt" Tag Main T 1-10,1-14

Time/date, change file: Main F 1-14

Time/date, display system: Main 1-16

TSR's, precaution about: Ov-4

UNZIPping with PKZIP utils:
with command line edit Main U 4-7
no command line edit Main U 4-7

View file at cursor: Main 2-1

Volume label, setting: Main V 1-16

ZIPping with PKZIP utils:
with command line edit Main Z 4-7
no command line edit Main Z 4-7
designating files to ZIP Main T 4-7

CM_FILER -- Index Ind-7

* *
* CM_FILER -- Version 5.22 *
* *


There are five files in the CM_FILER Version 5.22 package --

CM_FILER.COM - The "kernel" of the program

CM_FILER.OVY - Its supporting overlay

CM_FILER.DOC - This manual, which is the full documentation

CM_FILER.BRF - A brief summary of features for quick reference

CM_FILER.REG - A file containing the registration form, an
explanation of the Shareware concept, and a
statement of the Association of Shareware
Professionals concerning its ombudsman services
for registered users of Shareware applications.

CM_FILER is not "public domain" software or "freeware". It is offered to
you as Shareware for your evaluation and distribution unaltered to
others, with the understanding that, if you find you are using it after a
30-day trial period, you will pay a registration fee of $30. Please
refer to CM_FILER.REG for registration information and a definition of
Shareware. I am so convinced of CM_FILER's wide usability and appeal
that, once you register your copy, I will send you an instant $10
commission each and every time someone else registers a copy and cites
you as the source of it! You may make as much money by passing CM_FILER
to others as you care to. CM_FILER MUST be passed as an UNALTERED
collection of the above five files, together on one disk, or as a
compressed file, e.g., using the PKZIP (c) utility.

The form in which I prefer to pass CM_FILER, because it requires no
external decompression utilities, is as the self-extracting file
CM_FILER.EXE, which on execution extracts all five files. A perfectly
suitable alternative form, preferable if you have the PKZIP utilities
because it takes up less space, is as the Zip file CM_FILER.ZIP, which on
unZipping yields all five files. Any package that contains all five
files unaltered is acceptable.

CM_FILER provides a quick, simple, "one-touch" operating environment
for your IBM-compatible 80x86-based computer running under DOS Version 2
or later. While its name implies it is a file manager, it is much, MUCH
more. Once you have used CM_FILER for a few sessions, you will not want
to struggle with the DOS COMMAND.COM command processor or your other file
managers ever again! CM_FILER was painstakingly written in Assembly
language over a three-year period, carefully factoring the suggestions of
a dozen of the world's pickiest electrical, mechanical and nuclear
engineers with whom I work. It is compact and lightning fast.

CM_FILER is capable of doing everything your DOS COMMAND.COM
processor or other file manager can do, and more, but with EASE! --
displaying two directories side-by-side; copying one or more files from
one directory to another; backing up files in the same directory;
deleting and renaming files and directories; setting file and directory
attributes; concatenating (stringing together) multiple files; viewing
and editing files; making and removing subdirectories; printing files in
the "background" while you perform other tasks; setting disk volume
labels; printing directory listings; keeping notes; displaying two disk
structures side-by-side as "trees", and performing a full set of
operations on their structures; and executing child processes -- all with
a minimum number of keystrokes and maximum "transparency".

Operations are keyed to single-letter mnemonics, making CM_FILER
intuitive and easy to learn. For example, the letter "C" means "copy",
the letter "D" "delete", and so forth. Almost everything you need to
know about CM_FILER is contained in a two-line prompt at the bottom of

the screen, or can be summoned instantly with a single keystroke
(surprise! "H" for "help"), with no delay for external file reading,
since the help is imbedded in the program code. There are only a few
things for which you will need to refer to this manual once you begin
using CM_FILER.

CM_FILER employs the BIOS and DOS disk service routines which are
embedded in ROM or loaded into RAM when your computer boots, and the DOS
file operation safeguards and error flags are employed, such as denying
access to remove non-void subdirectories. I have added a few of my own,
such as protection of files against being overwritten by zero-length
files of the same name (resulting from an occasional DOS read-write

CM_FILER performs most operations immediately, and does not ask
for confirmation as other file managers do, unless file destruction is
involved. You must confirm with a separate keystroke, for example,
that you really DO want to delete files, or that you really DO want to
overwrite a more recent version of a file during a copy operation.
Otherwise CM_FILER takes for granted that you are doing exactly what you
had in mind, on the basis that a mistake can be recovered from with just
a few more keystrokes. The "mass" operations, like copying large numbers
of tagged files, all have an bailout.

CM_FILER -- Overview Ov-2


Program Logical and Physical organization. . .

The CM_FILER program code is organized "logically" (in the
programmer's sense) into three sections, or "modules". These will be
referred to variously as the "main module" or "main screen"; the "editor
module" or "editor"; and the "tree module" or "tree functions". The
distinction betwenn modules is that each performs some major function or
group of functions fundamentally different from the rest. On the other
hand, the program is broken PHYSICALLY into two main pieces, in this case
two files, namely, the file "CM_FILER.COM", sometimes referred to herein
as the "kernel"; and the file "CM_FILER.OVY", or the "overlay". The
kernel contains the most vital part of the main module, the "starter",
and the overlay, which the kernel loads contiguous to itself in memory,
contains the rest of the main module, plus all of the editor and tree
modules. A memory map is included for those interested.


Security Features. . .

CM_FILER incorporates security features which support its
use on systems containing sensitive information:

o You may specify a password, and change it at any time during a
session, which must be given back to reenter CM_FILER once it has gone
to screen-saver mode (about 1-1/2 minutes after last keystroke from
main screen display). This password is the bottom-most field in the
data entry screen presented by the key combination F10 --discussed
in further detail in Chapter 4.

o You may force CM_FILER into screen-saver mode with the key
combination S. This is so that, if you want to secure access to
your computer immediately, you don't have to wait the 1-1/2 minutes for
the screen-saver to automatically be invoked.

o CM_FILER attempts to locate and overwrite all the DOS
input/output buffers with the continuous string "CFCFCFCF..." before
starting any file writing operations. This way, the file being
written cannot contain any stray data at the end of its last sector
that was hanging around in the buffers from a previous read operation.
A word of caution, however: I have seen and factored in the two
different conventions I have observed in DOS Versions 2 and 3 for coaxing
DOS to divulge where its buffers are. The buffers are better hidden in
DOS Version 4; under this version and most certainly 5 as well, CM_FILER
will simply report that it used UNCLEARED buffers during each copy
operation. Otherwise, it will report that it used cleared buffers.

CM_FILER -- Overview Ov-3

An even more secure version 5.22x is available on request which
simply ignores any command that would result in file writing if the DOS
buffer structure cannot be located for clearing.


Monitor Options. . .

CM_FILER should work with all reasonably current IBM-compatible
CGA/EGA/VGA and monochrome monitors, though I have heard of some problems
with machines under very early BIOS (Basic Input/Output System) versions.
If you have an LCD monitor other than Tandy, you may invoke the special
color set using the letter "L" in the command line. For Tandy LCD's use
"T". (Tandy for some unfathomable reason inverts the function of the
high-intensity bit in the color attribute.) If you have a "monochrome"
monitor being driven by a color card, CM_FILER senses the color card's
presence and defaults to the "color" vice "monochrome" color set. You
may find the color attributes indistinct in this case. Try running
CM_FILER with the letter "M" in the command line. This instates the
special monochrome attribute set. The letter "C" in the command line
forces the default color set.


Precautions and Limitations. . .

There are a few precautions and limitations the user should be
aware of:

o Terminate-and-Stay-Resident programs should NOT be run as child
processes of CM_FILER. At best you will end up with horribly
fragmented memory when you exit CM_FILER, and at worst you will

o CM_FILER requires a minimum of 186KB of free memory to run. This
permits generous memory allocations for the directory listings,
a print spooler buffer, and a large copy buffer. During
execution of child processes, however, the resident portion of
CM_FILER can be made to occupy as little as 16KB, using the
"Small" footprint option of the "Kernel" command (letter "K"
pressed from the main screen -- discussed more in Chapters 1
and 4).

o Maximum directory size recognized by the main module varies from
300 to 1200 entries, depending on free memory available. If
the directory size limit is reached, an informational note is
given. The rest of the directory is inaccessible, as though it
were hidden. This is a benign, non-damaging limitation.

CM_FILER -- Overview Ov-4

o The algorithms used by the editor module place certain
limitations on it in "edit" mode which do not apply in "view"
mode. If you attempt to edit a file which exceeds these
limitations, the editor reverts to view mode automatically:

o Files too large to fit in available memory in one
shot, or files with more than 16,380 records.
o Files with any record longer than 8190 characters.

o The tree module limits the number of entries in a directory tree
structure to 500 total subdirectories.

o The main and tree modules both limit the depth of directory
nesting to eight levels (eg, "C:\1\2\3\4\5\6\7\8" is an example
of the most deeply nested path allowed), and the length of path
specifications to 63 characters.

o A limitation of DOS itself which users frequently run into and
are puzzled by, because of the cryptic error message DOS
returns, is the maximum number of entries permitted in the root
directory. This number is 112 for 5.25" disks formatted at
360KB and 3.5" @ 720KB; and 224 for 5.25" @ 1.2MB and 3.5" @
1.44MB. The error message returned is "Access denied creating
file". Be aware that the volume label and each subdirectory is
an "entry", as well as each file.

o Finally, CM_FILER does not yet support mouse or 43/50 line
EGA/VGA display capability. I have concentrated on packing the
MOST COMPLETE set of useful operational features into the
smallest, most intuitively organized package I could, and have
not yet had the time (and do not yet have the hardware
capability myself) to write and debug these additional user
interface features. With respect to the mouse, my feeling is
that ease of use has less to do with the HARDWARE interface
between the user and the computer than the LOGICAL interface,
and I have concentrated on writing the best logical interface
possible. (In other words, a cumbersomely constructed program
remains cumbersome, EVEN when you add a mouse!)

If there is overwhelming response to CM_FILER requesting
addition of mouse capability and/or 43/50 line display, I will
add it. Otherwise I will stick with the basics.


Assumption about User's Familiarity with DOS. . .

It is assumed that the user knows at least a smattering about DOS
system operation, and has at least a beginner's understanding of the

CM_FILER -- Overview Ov-5

use of the DOS COMMAND.COM processor, or other file management
programs. I assume terms like "file", "subdirectory" and "path" need
not be defined. If these are alien notions, however, there are any
number of books on DOS written to different levels of proficiency
which may be consulted as a resource.


Additional Note for Windows Users. . .

Though not designed as a Windows application, CM_FILER appears to be
operating satisfactorily in the Windows environmemt. One nuisance
feature will probably need to be corrected if you are running it under
Windows, however. The default assumption on return from screen saver
mode is that the disk directories have not been altered while CM_FILER
has been idling. Under Windows, this is not necessarily a valid
assumption, since another foreground application may have operated on the
directories CM_FILER was selected to when it went into the background.
Therefore for Windows users there is a switch which may be set telling
CM_FILER to refresh the directory listings on return from the screen
saver. After you have read Chapter 2 on file editing, select
CM_FILER.COM for editing. On about the fourth line down you will see a
line "REFRESH AFTER SCREEN SAVE=N". Be sure you are in Overstrike mode,
and just change the "N" to "Y".


Assertion. . .

I believe CM_FILER Version 5.22 is the most powerful and transparent
file manager code you will ever find anywhere for its price and size. It
is being offered as a Shareware utility in the hope that you will find it
useful, and further that you will remit the required registration fee of
$30 for the convenience it offers. Please remember that the Shareware
industry depends on the integrity, encouragement and financial support of
its user public.


Special Thanks. . .

. . .to Nick Capik and Tom Vavoso who found most of the subtle bugs
by pushing CM_FILER past my expectations, and challenged me to include
features that turned out to be useful to us all; and to Eric Tauck, who
provided an excellent and inexpensive Assembly language programming
environment, then tailored it to my needs, and gave me some inside dope
on several undocumented DOS features. His Wolfware Assembler WASM can be
had by sending $10 to Eric Tauck, 1304 Deerpass Road, Marengo, IL 60152.

CM_FILER -- Overview Ov-6

* *
* CM_FILER -- Version 5.22 *
* *

TUTORIAL -- Chapter 1: File Handling:

GETTING STARTED , or the "Kernel" and the "Overlay":

As mentioned in the OVERVIEW above, I refer to the 17 KB
CM_FILER.COM file as the "kernel", the vital part of the main module, and
the 74 KB CM_FILER.OVY file as the "overlay", which contains the rest of
the main module and the editor and tree modules. Physically breaking the
program into two files served two purposes -- it got around an arcane 64
KB limit on .COM files imposed by DOS Version 2, and it let me give you
two options for how much of the program to leave resident in memory when
running child processes (more in Chapter 4).

For now, copy CM_FILER.COM and CM_FILER.OVY into the root directory
of your hard disk or a working floppy using your good ol' DOS COMMAND.COM
processor, and save a write-protected copy for your library. With the DOS
system prompt showing the drive these two files are now on, run the
kernel CM_FILER.COM by entering "cm_filer". The DOS command processor
will load and execute CM_FILER.COM, which in turn will find and load the
overlay CM_FILER.OVY. The whole 91 KB (17+74) is now residing in
memory, ready to respond to commands.

Before anything else, press "K" (for "resident Kernel" option). You
will see two choices, "L" for "large footprint" and "S" for "small
footprint", and under the cursor a capital "L" or "S" ("L" if you are
running a virgin copy of CM_FILER) showing the current selection. "L"
signals CM_FILER to leave the whole 91 KB (CM_FILER.COM + CM_FILER.OVY)
resident in RAM when it executes other programs ("child processes"), "S"
signals CM_FILER to turn back over to the DOS system the 74 KB occupied
by the overlay for use by the child process. For now, select "L", since
a 91 KB resident footprint is not a great sacrifice. If the original
setting (the letter under the cursor) had been "S", we need to embed in
the CM_FILER.COM file the new setting. Press F10 (the screen will
change completely -- this is the user-defined "child process"
specification page discussed in more detail in Chapter 4 -- don't worry
about it for now!), and then . You should see the disk that
CM_FILER.COM is on being accessed. The new "Kernel size" option is now
embedded right in that file.

(As an aside, this little exercise points out a fairly unusual
feature of CM_FILER, namely that the information about user-selected
options is embedded right into the program code file itself, not carried
in some external configuration file. No extra files, all self-contained,
no hassle.)


Rename CM_FILER to Spare My Fingers. . .

Now, feel free to rename CM_FILER.COM to "CF.COM" for short, and the
overlay CM_FILER.OVY to "CF.OVY". (It is important to keep these two
files named THE SAME, by the way.) In fact I will refer to them simply
as "CF" from here on, since that results in fewer keystrokes for me! Put
the cursor on the line reading "CM_FILER COM" and press "R" (for
"rename"). A window will open up at the bottom that says:


with the cursor blinking on the first "C" in the data entry field denoted
by the "> <" pair. (CM_FILER is assuming that you want to rename just
the CM_FILER.COM file, since this is the most frequent use of the rename
facility, and further is offering you the same name as the "default" or
starting entry in the new name field, since often when you rename a file,
you may be only changing a few characters.)

In this case we want to rename all the files that start with
"CM_FILER"; that is, we would really like to use the DOS "wild card"
convention "*" and have the upper line read "CM_FILER.*". To do this,
press either the up arrow or to move the data entry window up to
the "Rename. . ." line, and press to move over to the "C" in "COM".
Type "*" and press or down arrow. Now the window reads:

Rename CM_FILER.*
to >CM_FILER.* <

Simply type "CF.*" and press . The files are now renamed.

This quick exercise sounded complicated when you read it, but won't
be when you try it. And it illustrates a few "nice touches" I have tried
to build in to minimize your keystrokes.

From here on the explanations are not so detailed. I recommend you
fiddle with scratch disks initially, until you are familiar with all of
CF's capabilities. If you are running DOS Version 2, put CF, both the
.COM and .OVY files, on one of the paths defined in a DOS "path" command,
so that it can "find" itself after running child processes. This is not
necessary under DOS Version 3 and later.

CM_FILER -- Chapter 1 1-2


The Screen. . .

You should by now have noted an economy of screen usage. The left
panel shows the contents of the root directory on the default drive.
Line 1 of this active panel shows the disk volume name if any, and a
prompt area for four display enhancement features: the key combination
"O" (denoted by ^O to save space) allows selection of one of seven
file ordering schemes; ^H toggles the "hide" mode switch; ^C toggles the
"compare" mode switch; and ^M allows specifying a file "mask". Line 2
shows the path to the current directory, whose first 20 entries are
displayed in lines 3-22. Line 23 gives vital information about the disk,
such as room left, and lines 24-25 contain an abbreviated help screen.

The thick versus thin sections of the vertical line to the left of
the file list denote the relative position and size of the current screen
display within the full directory listing.

If you do not press a key within about 1- minutes, the screen
goes into screen-saver mode. Just press any key to return to the main
display. You may force the screen-saver mode with "S".


The Help Area. . .

The two-line help area at the bottom of the screen contains a set of
abbreviated cues to assist with the recollection of the mnemonic single-
key commands. With no "modifier" keys pressed [i.e., the keys ,
, all up], the help area shows the operations
available with the unmodified keys, with the mnemonic code highlighted.
These are typically the most frequently used operations; the letter C for
"Copy file(s), E for "Edit file", D for "Delete file or directory", T for
"Tag file", the number 1 for "toggle the file Read-only attribute", and
so forth.

Additional commands are available which use similar mnemonic
devices, but with the keyboard modified by , or . Press
one of the keys, and notice the change in the bottom lines. These
are the commands enabled by the letters shown in highlight, modified by
the key you are holding down (and shown in shorthand notation at the
upper left of the two-line help). Press and in turn. All
these operations, both "unmodified" and "modified", will be explained as
we go along. Just be aware that the visual cues for the modifier keys are
there when you want them.

CM_FILER -- Chapter 1 1-3


The "Modifier Keys". . .

Incidentally, there is some rationale for which of the ,
or keys was used as the modifier for a particular "modified"
operation, and there are some devices which may help you remember the
modified keys as well as the more straightforward mnemonic devices of the
unmodified keys:

o The modifier "" is most often used for operations involving
transfers of control or data to or from the other panel. For example,
"", when the cursor is on a subdirectory entry, means display
this subdirectory in the other panel and jump across to it. Other
commands which follow this convention, and which you will encounter in
more detail, are " Lf/Rt Arr", "P" and "F".

o The modifier "" is most often used to "toggle" the state of
a "switch" or "tags" -- that is, to invert something. For example,
"H" toggles the state of the "hide switch" , i.e., if Y ("yes" or
"on") it goes to N ("no" or "off"), if N it goes to Y. Other examples
include "O", "M", "C", "A", and "L".

o The modifier "" is most often used just to indicate an
operation associated with a mnemonic alphabet key, but which key was
already tied up in its "unmodified" form as a mnemonic for a more
frequent operation. For example, "C" means "Copy", and is one of the
most frequent operations; "C" means "add file spec to Command line",
and is used far less frequently. (In the editor, -modified keys are
used a LOT, since the unmodified keys are used for typing text!)


Two Panels. . .

Each of two "panels" corresponds to a "path" to files, in the DOS
vernacular. Open the right panel with the right arrow, and you will be
prompted at the bottom of the screen to specifiy a drive letter.
(Lines 24-25 become the "dialog" area for information to you about
what CF is doing, or what it is waiting for you to do.) Just press
the letter corresponding to a valid drive -- don't press , just a
letter key. The root directory of that drive will be shown in the
right panel in the same format as the left panel. The bright yellow
color of the path specification on line 2 and the blinking cursor now
identify the right panel as the "source" path. The left panel has
become the "target" or "destination" path for copy and append

Whenever CF is in "compare" mode and the cursor is on the name of a
file in the source panel that also happens to exist anywhere in the
target path, the target panel display is adjusted so that the file

CM_FILER -- Chapter 1 1-4

appears in the panel, and its date/time signature is put in high-
intensity to catch your eye and show you the duplication. If the date,
time and size of the two files are not the same, the date/time signature
of the NEWER file will blink. You can toggle compare mode off and on
with the key combination "C" (the mnemonic is "compare").


Cursor Movement. . .

Shift back and forth with the left and right arrow keys. You are in
effect switching source and target paths. Use the up/down arrows,
, and keys to move the cursor within a panel.
moves the cursor to the top of the panel if it was not already
there, and then moves up 19 lines in the directory. is similar
for the opposite direction. goes to the first line of the
directory, to the last.

The command "G" (for "Go to...") moves the cursor in the directory
to the first file whose first character has an ASCII value equal to or
greater than a character you specify. This is most useful for moving
quickly to a general area of a large alphabetically-ordered directory,
based on knowledge of at least the first letter of the filename you are
looking for. "G" is the equivalent "Go to" for subdirectories.

In "compare mode", whenever there is a duplicate file name
highlighted in the opposite panel, you may jump directly across to it
with the move , vice the unmodified arrows.


Switching Drives or Disks. . .

CF cannot tell when you have changed disks in the drive whose
contents are shown on one of the screen panels. You have to tell it by
putting the cursor in that panel and pressing "N" (for New disk), and
then the letter designator for that drive at the ensuing prompt.
Likewise, if you want to switch drives, say from A to B for the right-
hand panel, put the cursor to the right, press "N" and "B".

To close the right-hand panel, press "N" and "".


Subdirectories. . .

Make a new subdirectory in the source path by pressing "M" (for the
DOS command Mkdir) and entering a name. Find it in the display in
alphabetical order, move the cursor to it and press . Note the new
path on line 2 of the screen display, and only the "" entry in
the file listing. Go back to the parent directory by pressing with

CM_FILER -- Chapter 1 1-5

the cursor on the "" entry, or "P" with the cursor anywhere in
the panel. You can navigate down and back up through the directory
levels in a path this way, one level at a time. If you are several
levels deep, there is another quicker way back to the root directory than
by hitting "P" repeatedly, and that is the backslash key "\". It works
like the DOS command "cd \".

To put a subdirectory from the current source panel into the target
panel, put the cursor on it and press "". The subdirectory is
listed in the opposite panel, and the cursor shifts over to it. In
similar fashion, "P" puts the source panel's parent directory into
the opposite panel, and "\" puts the source's root into the opposite
panel. Finally, "*" puts the source directory itself into the
target. This is handy for quickly setting up the same panels side-by-
side for ZIPping/unZIPping, discussed in Chapter 4.

Remove a subdirectory by placing the cursor on it and pressing "D"
(for "Delete", which I use interchangeably for file deletion and
subdirectory removal). Note that the subdirectory has to be empty first
-- a DOS safeguard.


Copy Some Files, then Do It with Tags. . .

Put the cursor on a file name and press the letter "C". This copies
the file from the source to the target path. "Tag" several files with
the letter "T". Now press "C" to copy this group from source to target.
Clear all the tags with "A" (tag/untag All). Press "A" again, and see
that all the files are now tagged. Untag an individual file with "T".
("T" actually toggles the state of an internal tag bit assigned to each
file and used for temporary marking purposes only. "A" clears all the
tags if any were set, or sets all the tags if all were clear. No
information is changed on the disk itself. (These are "volatile" tags,
maintained only until the directory is re-read for some reason, such as a
file deletion or a copy operation into the directory.)

CF looks first at the space available on the target path before
it starts to copy. If it doesn't see enough room free, it doesn't
start the operation, and alerts you to the problem. This prevents
write errors, messed up file allocation tables and incomplete files
that can result when space runs out during a copy operation.

CF has several special features in the copy operation:

o If an identical file exists in the target path -- same
name, extension, date, time AND size -- CF does not copy the source to
the target, as this would be wasted motion, on the assumption that the
files are identical. This feature may be toggled with the command
O. (The mnemonic can be seen at the bottom of the screen when you
press , and is "Overcopy=N" for no overcopying of identical files,

CM_FILER -- Chapter 1 1-6

or "...=Y" for yes, do overcopy identical files. You might, for example,
want to set the switch to Y to rewrite files on a disk where the
directory table is intact but you suspect corruption of data sectors.)

o If a file by the same name but newer date/time is found
on the target, CF will ask you specifically to verify that you really
do want the newer file overwritten.

o If the source file has length 0 bytes, or if the source and
target files have the same date/time but the source is smaller, CF will
ask for overwrite confirmation. This provides some protection against
overwriting a good file with one which has become corrupted by a previous
copy error.

o If a file by the same name but with the read-only
attribute set is found on the target, CF will ask you to verify that you
want it overwritten. (Likewise if the target file is hidden and the hide
switch is on.)


Tagging, Backing Up. . .

With a couple of files tagged, look at the line just below the
last line of the directory listing. You will see the space in use in the
current directory ("KB Used"), the amount of disk space occupied by any
tagged files ("Tagd") and the space still free ("Free"). Also, in the
line below will appear after each tagging operation the current number of
files tagged. Disk space is expressed in kilobytes, in integer multiples
of the disk media cluster size, so what you see is the amount of space
ACTUALLY tied up on the disk. (If your disk is a 5.25" DSDD floppy its
clusters are probably one KB each. Every file takes up at least one
cluster, so a 1-byte file takes up a one KB of disk space, the same as a
1024-byte file.)

Assuming the amount of space represented by tagged files is less
than or equal to space available, press "B" to back up all the tagged
files. CF's convention for assigning backup file names in this
operation is to make the first letter of the extension an underscore
character ("_"), and then add the first two characters of the original
file extension.


Moving Files. . .

With the panels selected to different subdirectories on the same
disk, one or more files may be "moved" from one subdirectory to the
other. This operation does not read and write the file data clusters,
but only changes the subdirectory table entries, so large files may be
moved around quickly. Tag files if desired, as with "Copy", and press

CM_FILER -- Chapter 1 1-7

the move command "C" (instead of C -- think of moving as just
another kind of "copying", but you are "shifting" files instead). If
the conditions are not satisfied for moving (i.e., directories on same
disk), CF will default to copy mode.


Deleting a File. . .

With the cursor on a file and no files tagged, pressing "D" results
in deleting the file under the cursor, after your confirmation. If one
or more files are tagged, they will be deleted after confirmation, not
the file under the cursor. "Tags", discussed below, are treated the
same as normal tags as far as the delete operation is concerned.

On your hard disks, CF actually performs what I will call a "soft"
delete for this operation. The files are not deleted using the DOS
delete function, but rather are redated to the current date and time, and
moved into a directory created by CF, called "CF_TRASH.CAN". If you
delete files from your hard disk by mistake, they are RELIABLY
recoverable just by switching to the CF_TRASH.CAN directory and moving
them back to the directories they came from using C.

If you delete a second file by the same name as a file already
collected in the CF_TRASH.CAN directory by a previous soft delete
operation, CF tries to rename this second file by replacing the last
character in the file name with a "1". If this name is already in use,
it tries to rename with a "2" instead, then a "3", and so on, through
"9". Thus, you are assured under all reasonable circumstances of not
losing any deleted files, even duplicates. The only problem is that you
may have trouble telling which duplicate is the original, as CF redates
each of them during the "soft" delete.

Each time you select a new drive in the main module, CF looks to see
if it is a hard drive (A and B are always taken to be floppies), creates
the directory CF_TRASH.CAN if it is not already present, and then looks
in CF_TRASH.CAN for the presence of files with any date earlier than the
current date. If it finds any, it will ask you if you want to purge them
-- that is, perform the "hard" DOS file delete on yesterday's trash. .
You have the options "yes", "no", or " to view" to see what is in
the thash can. You probably want to keep the CF_TRASH.CAN as uncluttered
as possible, just to avoid tying up disk space needlessly. If you prefer
to "empty the trash" less often than daily, be prepared to be pestered
with the same question each time you select that disk! (The "D" command
performs a "hard" delete in the CF_TRASH.CAN directory -- this is the one

CM_FILER -- Chapter 1 1-8

This "soft" delete facility is NOT intended as a means of backing up
files, but rather is built in SOLELY for the purpose of RELIABLE recovery
from inadvertent file deletion.

An additional delete option is available -- "D", or "hard"
delete. This operation performs the DOS delete always, regardless of the
type disk selected. Use it when you KNOW you will not want to recover
the deleted files.

And if you are REALLY sure of yourself, you can turn "D" from soft
delete to hard delete. There is a switch available only by editing the
CF.COM file. On the fifth line from the top of the screen on the first
video page, you will see "D IS HARD DELETE=N". With overstrike edit
mode, change the N to Y.


The Tagging Convention Expounded on. . .

For all the above commands (copy, delete, move, back up), the
operation is performed on ALL THE TAGGED FILES in the source panel, if
ANY are tagged, and only on the file at the cursor if NONE are tagged.
Some file managers offer different commands for "copy tagged" and "copy
file at cursor", and so forth. I have always found this unnecessarily
complicated. For the FEW occasions in which you have a bunch of files
tagged to do one of these operations (say you want to copy them), and you
discover just before you start that you really wanted to do some other
operation on just one of them first (say you realize one of them is out-
of-date and you want to delete it), you will have to either untag them
all with "A", do the operation on the one file, then retag and do the
original operation; OR just postpone the one-file operation. For the
example, it is easier just to toggle the tag on the one out-of-date file
off with "T", copy the other bunch, clear the tags, and delete the one.
It becomes just a matter of a little thought about the order in which you
do things.

The "view" operation (discussed in Chapter 2) does NOT clear
existing tags. So, suppose you are cleaning up a disk, tagging files
that you recognize by name as no longer needed in preparation for a
single, massive delete, and you come to one you aren't sure about. Put
the cursor on it, press (the "view" command), browse through it and
decide if it's a keeper, and from view mode. Note the previously
placed tags are still there, and the cursor is on the mystery file
waiting for you to decide whether or not to tag it! (Another nice

CM_FILER -- Chapter 1 1-9


Renaming a File OR a Directory. . .

Since we'e already done this, I'll just briefly say that it works
for directories, too. A word about the wild card character "*". In the
earlier exercise, we used it in the first window to declare that we
wanted to rename all the files with "CM_FILER" as the name, and any
extension, to "CF" with the same extension. You may use the "*" in the
name field of the first window instead of the extension, but not in both.
Used in the name field, it means "change this extension, wherever it
appears, to this other extension". This option is less useful.

If used in the first data window, the "*" MUST also be used in the
second window in the same position. CF always senses the use of "*" in
the first window, and seeds the second window with this character in the
right position.

The "*" may be used in the second window, even if not in the first,
as a shorthand for "keep the same name (extension)". For example, if you
wanted to rename just "CM_FILER.DOC" to CF.DOC", put the cursor on
"CM_FILER DOC" in the source panel, press "R", type "CF.*" in the lower
window, and . Saves some keystrokes. This is a wild card
convention taken from DOS. (Sorry to you DOS heavies -- for simplicity I
chose not to complicate things by including "?" in the wild card library
for this facility!)


Some Additional Tagging Options. . .

In addition to "T" (which toggles the state of an individual file's
"normal" Tag) and "A" (which clears or sets All tags), there are some
more tagging operations. "T" applies an "append tag", discussed
later. "M" tags all the files in the panel with the same naMe as
the file under the cursor, "E" same Extension. "N" tags all
files in the panel of the same date or Newer as the file at the cursor,
"O" same date or Older. "P" tags in the oPposite panel all the
files with the same names as files tagged in the source panel. (This is
good for updating to a floppy only the files which were already on it.)
And finally, "A" toggles the state of All tags in the panel.

If, for example, you wanted to copy all .COM files, put the cursor
on any .COM file, press "E", and "C". Or suppose that, at the end
of the day, you wanted to copy/update all the files written or revised
today. Just put the cursor on any file with today's date and press
"N" and "C". Then suppose you wanted to delete all the earlier
files. Press "A" and "D", and confirm the deletion as requested,
after a final check of the screen.

Or suppose you have a large subdirectory on your C drive hard disk

CM_FILER -- Chapter 1 1-10

containing more files than fit on a single floppy. The first time you
make up a multiple-floppy backup set, you will want to organize the files
into the backup disks in some way that makes sense to you, perhaps with
files of a type together, and with some free space on each disk for file
growth. Each subsequent time that you update this backup set, follow this
simple procedure: 1) set up one panel as the path to the directory on
the C drive whose files you are backing up; 2) put the first backup disk
in drive A or B and select it as the source panel; 3) tag all the files
on this backup disk; 4) press "P" to tag in the C drive directory
all the files that appear on the backup floppy; 5) arrow across to the C
drive directory as the source, and press "C" to update all the tagged
files to the floppy. Repeat with the other floppies.


The File "Freshener". . .

In the example above, the "P" operator was used to tag the
duplicate files in the opposite panel to facilitate "freshening" the
files in backup floppies from the primary directory. The sequence
described, however, has two minor drawbacks:

o First, it takes a lot of keystrokes from when you stick a backup
floppy into drive A, say, to when you have a freshened backup disk.
Namely, you would have to insert the floppy in A drive and press:
"N" and "A" to announce the presence of the disk change in drive A and
display the backup floppy's root directory; "A" to tag all the files in
the backup floppy; "P" to tag all matching files in the primary
directory in the opposite panel (the primary directory); "Lf Arr" or "Rt
Arr" to get across to the opposite panel; "C" to copy all its tagged
files to the backup, and then possibly "n" one or more times to protect a
file on the backup floppy which happens to be newer; and finally "Rt Arr"
or "LF Arr" to get back to the A drive to repeat the process for the
second backup floppy.

o Second, the "P" operator is indescriminant with regard to
date and time -- it tags any file in the opposite panel with the same
name as any tagged file in the source panel, regardless of whether it is
newer or older. But in the file freshening example, we really only want
to overwrite older files on the backup floppy with newer versions of
files from the primary directory, and not newer with older.

For these reasons I added a file freshener command, "F". In
the above example, with the target panel set up with the primary
directory whose files you are backing up, put the backup floppy in drive
A, press "N" and "A" to bring up its root directory in the source panel,
and then just press "F". CF tags all the files in the source if
none were already tagged, or leaves existing tags as-is if some were
tagged: then tags all the files in the opposite panel with the same name
as tagged files in the source but which are NEWER; then copies those to
the source; and finally updates the source panel display, leaving the

CM_FILER -- Chapter 1 1-11

target panel (primary directory) display tagged to show you what was
copied. Just three key strokes!


Different Ways to Show the Files. . .

Press the combination O (the letter "O"). You will see a
screen which gives seven choices for file ordering, with the cursor
blinking on the current selection. Press a number key "1" through
"7". The files will now be reordered in the new scheme. The options for
ordering by date/time are particularly useful in the visual sense when
backing up just the files revised today, as in the example above.


The Data Entry Window. . .

The data entry window you encountered in the renaming exercise
responds to most of the usual line-editing key presses:

o toggles the mode between Overstrike and Push Right.

o and / go right or left to the
space following the next blank or punctuation mark.

o go to beginning or end of data field.
goes to the beginning of the field.

o , and perform the usual functions.

o goes to the blank after the last non-blank character.

o Keypad permits entry of any ASCII code as a decimal number.
Hold down the -key while you type in a number from 1 to
255 on the numeric keypad. When you lift the -key, the
IBM symbol for that ASSCII code will appear in the window, and
the cursor will advance a space.

o D deletes to the end of the line.

o aborts the operation.

o is equivalent to . In some cases,
moves up a line. (The rename facility in the main module and the
"replace string" facility in the editor use this convention.)

For entering file names and subdirectories, all letter keys are
registered as upper case, regardless of or key
positions, just for the sake of uniformity and ease of alphabetizing.
For command lines, which may be case-sensitive, both cases are enabled.

CM_FILER -- Chapter 1 1-12

When a default entry is offered, it will be deleted if the first keypress
is an alphanumeric character. The one exception to this rule is the file
rename window following a use of "*" in the extension of the old name.


Disk Space Occupied versus Actual File Size. . .

Now take a look at the file listing. You see the name of the
file, date, time and size in KB. As with the disk space information
just below the file list display, size is in integer multiples of
clusters occupied. If you want to see exactly how big a file is, in
bytes, press "+" to expand the size field. (I had to give away the
file time to do this and still keep the two panels readable.) Shift
back to the "contracted" kilobyte form of file size with "-".


File Attributes. . .

Also in the file list, to the far right in each panel, you will
probably see A's. This means that the DOS "Archive" attribute bit is
set in the file attribute byte. DOS sets this bit everytime it
operates on a file. CF lets you operate on this bit and the other
bits in the DOS file attribute byte -- "Read-only", "Hidden", and
"System". Before doing this exercise, look at the top line of the
display. If you see "cHide=N", that means that files with the DOS
"Hidden" attribute set will be displayed anyway -- i. e., the CF "Hide
switch" is off. Chances are you will see "Y" instead of "N", meaning
that the Hide switch is on -- the default setting. In this setting,
files will disappear from view as you set the DOS hidden attribute, so we
need to toggle the hide switch to "N". Press "H" to toggle the hide
switch off.

Either tag one or more files, or position the cursor on the file
whose attribute(s) you want to set, and press "1" to toggle the state of
the Read Only attribute, "2" to toggle the Hidden attribute, "3" to
toggle the "System" file attribute, "4" to toggle the Archive attribute,
or "0" (zero) to clear all attributes. You may also toggle the hide
attribute (with "2") of a subdirectory, but this must be done one
subdirectory at a time. Note that "hiding" a file makes it invisible to
CF only when the hide switch is set on, as shown in the top line. Toggle
this hide mode off and on with the combination "H" (discussed
further below). Decide for yourself which mode you prefer. Some people
like to hide the "overhead" files and directories on their disks, and
leave the hide switch on as the default setting to "clean up" the

CM_FILER -- Chapter 1 1-13


Changing the Date/Time Stamp of a File. . .

You may change the date and/or time of a file by putting the cursor
on it and pressing "F". A data window opens for you to first enter
the new date, using the current date in the file's date/time stamp as the
default, and then the time.


"Tagging" and Appending. . .

Suppose you have two files that you want to stick together as
one, heel-to-toe. Tag them with "append" tags with the key
combination "T" in the order in which you want them to be
concatenated, and press "C". CF will create a file in the target path
with the same name as the first "Tagged" file in the source path,
but with extension ".APF" (for "APpended File"). Then it appends into
this target file each of the "Tagged" source files in order. You
may concatenate up to 35 files at a time this way. The order in which
the file was "Tagged" is shown in the character that appears to the
left of the file name as it is tagged (1-9, then a-z). If you had
pressed "B" instead of "C" after affixing the "Tags", the
concatenated file would have been assigned the "backup" form of the
append extension, namely "._AP", and been written into the source path
instead of the target.


Printing a File. . .

You can print a file to the parallel printer just by putting the
cursor on the file and pressing "L" (for Line print). The file will
be put into a special print "queue" for printing to line printer 1 on the
parallel port as a background process while you are doing other things,
like editing another file, updating disks, etc. Up to five files may
be put in the print queue, which may be viewed with "L".

At times the printer may halt momentarily during
disk operations. CF gives preference to disk operations over
printing, to avoid any conflict in time-critical operations. Also, if
you shell to DOS while a file is printing from CF, printing will be
suspended for as long as you stay in the COMMAND.COM processor, for a
similar reason as above. You may terminate printing with "L". This
actually clears the entire print queue. To force a form feed at the end
of the file you have just queued, press "F" before you queue the
next file. CF sets an internal flag to check that the last character sent
to the printer from that file is a form feed. If it is not, then it sends
one. ("F" is active when no file is printing, also, as a way of
form-feeding the printer from the keyboard.

CM_FILER -- Chapter 1 1-14


Making Some Notes About Your Files. . .

If you are like me, you sometimes forget what a program with a
strange name does, or what a particular data file is. CF lets you
write notes to yourself about any file. Press the letter "O", and a
nOtepad opens up in the opposite panel. You can type a little narrative
for each file in the directory. The editing keys work much the same as
in the line editor, except that you are limited to 39 characters for each
entry. Each time you call up the notepad, it appears as it did the last
time you edited it. You may just browse with the up/down arrows,
, /, edit or add, etc. Leave the notepad with
or . If you use and did any editing, you will be asked
if you want to save that edit of the notes.

The notepad is contained in a hidden file call "NARATIVE.CF", and
notes follow the file when it is copied or moved to another path or
renamed. If you delete a file, its notes will be lost the next time you
call up the notepad.


Printing a Directory Listing. . .

Press "L" to send a directory listing to the line printer. If
you do this from the nOtes field, you also get a listing of the notes,
and the file size entries is either the abbreviated or full value, de-
pending on the display mode set in the directory table (toggled with +-).


Comparison Mode. . .

At the top of the screen you see a message "^Comp=Y". The "Y" means
"yes", the compare "switch" is enabled, so that any file in the target
panel whose name is the same as the file in the source panel will be
shown and its date-time stamp highlighted for easy identification. If
the files have different date-time, the newer version will be blinking.
You may toggle this switch with the key combination "C".

In comparison mode there is a useful feature which enables you to
get quickly to a file with the same name in the opposite panel. In
arrowing back and forth between panels in comparison mode, with some
files by the same name in each panel, you probably noticed that the
target panel shifted as necessary to bring the duplicate name into view,
but as soon as you shifted over to the target panel, it "remebered" and
adjusted the display back to where the top line and cursor had been left,
and you lost the duplicate file from view. But suppose you had seen a
more recent file in the target panel, as evidenced by the blinking
highlight, and you REALLY wanted immediately to arrow over to it and copy

CM_FILER -- Chapter 1 1-15

it into the source. The combination does this. It
resets the target panel display parameters so the cursor goes right to
the matched file name.


Hide Mode. . .

Also at the top is the message "^Hide=Y". This means that hide mode
is enabled -- the screen display will not show any "hidden" files --
those with the hidden attribute set. This is handy for cleaning up your
displays -- just hide the overhead! You may toggle the state of this
switch with the key combination "H". The current state of these two
switches is set as the default any time you do a "F10" edit,
discussed in the chapter on child processes.


Mask Template. . .

Also at the top is the message "^Mask=????????.???". This is a mask
that lets you sift out all but files with a certain characteristic. For
example, if you want to see only the .EXE files, press "M", ,
type "EXE", and . and position the cursor on the
extension and name fields, respectively. The space character is also
accepted, and has the effect of fixing the length of the mask.


Displaying Date and Time. . .

The display of system date and time may be toggled on or off with
the spacebar. The display appears in the middle of the two-line prompt
area at the bottom of the screen. The current state of this switch is
stored, along with the hide and compare mode switches, by "F10-


Changing or Adding a Volume Label. . .

Press "V" and a data window opens at the bottom for you to enter a
new volume name for your disk. The existing volume label is offered as a
default for editing ease.

CM_FILER -- Chapter 1 1-16


Some Safeguards. . .

As noted above, you can't remove a directory unless it is void of
files. This is a built-in DOS safeguard that CF passes along to you,
since it uses the DOS file handling services. In addition, CF asks you
to verify any requested delete operation; any requested copy operation
that would overwrite a file of the same name but newer date/time in the
target path, a read-only file, or a hidden file with the hide switch on.

In addition, if you attempt to copy or move any files out of the
CF_TRASH.CAN directory, you will be asked to confirm that you REALLY want
to do that. This precaution is taken because, when files are put in the
"trash can" by a delete operation, their date/time stamp is changed to be
the date and time they were DELETED. Therefore it is probable that files
in the trash can will appear to be NEWER than identically named files in
other parts of the disk. For this reason, files should only be moved or
copied out of CF_TRASH.CAN with GREAT CAUTION, lest they overwrite files
that are actually more up-to-date.


Help. . .

In addition to the two-line mini-help area at the bottom of the
screen, a three-page summary may be summoned on-line at any time in the
main module of CF by pressing "H". and page through the
help, and exits back to the main screen.


Date/Time Display. . .

A date/time display can be toggled on and off with the spacebar. It
appears in the middle of the two-line prompt area at the bottom of the
screen, and its state is stored as the default by F10-.


Quitting CF. . .

There are two commands for exiting CF; "-" and "Q".
The - combination reestablishes the default drive and its
current directory as it found them. The Q combination leaves the
default drive and its current directory as it appears in the source
panel. In either case, if you were printing a file, you will be asked if
you really want to quit, since the print spooler does not stay resident
and quitting will terminate file printing. You may answer "N".

CM_FILER -- Chapter 1 1-17

* *
* CM_FILER -- Version 5.22 *
* *

TUTORIAL -- Chapter 2: File Viewing and Editing:

CF has a built-in line editor, which simplifies file viewing and
editing -- even .COM and .EXE files. Since it is part of the package,
there is no loading delay. It is ready when you are.


Viewing a File. . .

Want to see what's in a file? Put the cursor over a file -- any
file will do; ASCII text, PC-Write, .COM, .EXE -- and press . CF
loads the selected file in memory for viewing.


Record Delimiters. . .

The default display mode for "record delimiters" [carriage return
(CR), line feed (LF), and the combinations CR+LF and LF+CR] is to show
their color values, which are cued in the legend at the bottom (blue=CR,
green=LF, cyan=CR+LF, magenta=LF+CR). In addition , the end of the file
is denoted with a red End-of-File (EOF) mark. Sometimes it is very useful
to know exactly what delimiter combination your word processors use, so
you can duplicate it when you edit with CF. You can toggle the colored
delimiter symbols off with "-" and back on with "+". (This is
also covered in a three-page help screen you can get by pressing H.)


Information Area. . .

The name of the file being viewed is shown in the lower left prompt
area. The lower right prompt area shows the ASCII value of the character
at the cursor (decimal and hex), the position of that character in the
file (starting with 1), the file record the cursor is in, and the
position of the cursor within the record (called "Column", which for a
long record is not necessarily the same as the screen column).


Cursor Movement. . .

The arrow keys move the cursor one line up or down and one

character left or right. move left or right
one word at a time, and move to the beginning
or end of the line, as in PCWrite.

For lines longer than 80 characters, only the first 80 are shown
on the screen. To see more of the line, put the cursor on the line,
and move right with or . When the cursor
reaches the end of the screen, the line shifts 20 spaces left, and
keeps doing so until you get to the end of the line -- ie, to the next
record delimiter. For non-ASCII-text files, like graphics files, there
can be a LOT of stuff between bytes of data that happen to have a value
of 10 or 13 (ASCII codes for LF and CR).

moves the display up or down 20 records, and leaves the
cursor on the same video line. moves the display by
200 records (10 video pages) for fast paging through a file. moves
to the bottom of the current page; moves to the top. B moves
to the Beginning of the file contents in memory; E moves to the End.

For very LONG files, exceeding available memory, the editor loads
only as much as fits. When you get to the end of that section (i.e., the
current "file contents in memory" referred to above), the next operation
that asks for another page or line causes the editor to load in the next
section, remembering the file position of the start of the previous
section so it can backtrack if you want. (It actually loads the next
section with some overlap to the previous section, so that a little bit
of backtracking does not result in reloading the whole previous section.)
This "heel-and-toe" sequential loading is limited to 50 sections.


Find a String. . .

Want to look for a particular word or string of characters? The
key combination F (for "Find") opens up a data window at the
bottom for you to enter a short string. After you press , CF
will find the first appearance of the string from the current cusor
position, and put the cursor on it. X (for "neXt") finds the
next appearance, and can be used repeatedly until the string no longer
appears, which is signalled at the bottom of the screen. The search
process starts at the cursor location and goes, if necessary, to the end
of the current file contents in memory.

If the file is long and is being viewed by the editor module in
sections as discussed above, only the CURRENT section is available to the
Find operator. Also, the search is case-sensitive. For example, the
search string "mark" will not find the text string "Mark". The work-
around for this is to use as the search string all but the first letter
of a word that might be capitalized.

CM_FILER -- Chapter 2 2-2


Leading and Trailing Blanks in the Data Window. . .

The data entry routine truncates leading and trailing blanks, but
blanks may be included as leading or trailing characters by enclosing the
string at either or both ends with double quotes ("). Suppose, for
example, you wanted to find all of the appearances in a file of the word
"mark", but not "remark". Press F and, in the data entry window
enter: >" mark <. This works for the replace string as


Editing a File. . .

Exit view mode with either or . (Note that any tags in
the source panel are still there.) Now you are ready to edit! Position
the cursor over a file that you have an extra copy of somewhere, and
press "E" (for Edit, obviously!). CF again loads the selected file, but
this time with an internal "switch" set which tells the editor module to
support editing.


Edit Mode Limitations. . .

CF permits edit mode only if the file fits all at once into available
memory, has fewer than 16,380 records, and has no record longer than 8190
bytes. CF will revert to view mode if these conditions are not all
satisfied. If you have a lot of memory tied up in resident programs or
RAM disk/cache, then you may not be able to edit extremely large files.
Chances are, however, that this will never be a practical limitation.


Overstrike vs Push Right. . .

Look at the lower right. If you see "Edit Mode = Overstrike", or
"Edit Mode=Push Right", then CF is in edit mode. Toggle between "Push
Right" and "Overstrike" with the key. Typing action is just
like any word processor. In overstrike mode, the key does not
pull the text left. This is to avoid unintentionally shortening the file
when editing length-sensitive files, such as .COM and .EXE files.


Editing a Line. . .

You operate on a line at a time, and the "normal" editing keys
work -- i.e. , , , , the unmodified and

CM_FILER -- Chapter 2 2-3

modified arrow keys discussed above, and any ASCII-code keys. To
create a new line, just to the beginning or end of the
current line, depending on whether you want the new line above or
below the current one, and hit . This inserts the default
delimiter combination, CR+LF, into the text to set up a new line void
of text, but ready for you to start typing. The combination
gives you a menu screen from which you may select a
different record delimiter. Join two lines by deleting the record
delimiter at the end of the first line to be joined. Delete a line
with Y. Delete from the cursor to the end of the line with
D. Delete a word and its associated whitespace with T.


More on Record Delimiters. . .

On CGA/EGA/VGA monitors, the record delimiter appears as a single
colored "blank" character at the end of the line, whether it is actually
two characters (eg., CR+LF) or one (eg., LF). It may be deleted to join
two lines, but not over-struck -- it always pushes right, even when
you are in overstrike mode. The red "End-of-File" (EOF) marker is not
actually part of your file, but rather is only a visual aid for you to
see where the text ends. When the cursor is on the EOF marker, the
"byte number" in the legend corresponds to the number of the next
character, if you were to type one. The EOF marker also always pushes
right, and cannot be deleted. The height of the cursor shows the
status of the "Caps Lock" switch.


Keypad and N. . .

Any ASCII code from 1 through 255 can be entered from the numeric
keypad using the key modifier. A special combination is provided
for ASCII zero ("NULL"), since "0" is not recognized by any keyboard
drivers I have seen. It is "N" (for "Null").


Block Operations. . .or the REAL Power of CF's Editor. . .

All the block operations -- there are six -- are keyed to key
combinations, and they are all intuitive (sort of). They are:
{ Mark, Y(delete), moVe, Copy, Print and Output }.


Marking a Block, and the Copy Buffer. . .

You may also manipulate blocks of records. First mark a block by
putting the cursor on the first (or last) record of the block you want

CM_FILER -- Chapter 2 2-4

to do something with, press M (for "Mark"), move down (or up) with
arrows, , etc., and mark the last (or first) record of the block,
again with M. The marked text is written into a copy buffer for
later use. If you made a mistake, a third press of M clears the
marks, but leaves the copy buffer intact. The contents of this copy
You may exit the editor back to the main module, and edit another file,
and because the editor copy buffer is a dedicated chunk of RAM in the
main and editor modules, the buffer is still intact. Just copy it into
the next file with C.

When you are marking a block, note that the information box at the
bottom left of the screen expands to show you the attributes of the
marked block -- the number of the first and last records marked, and the
number of bytes in the painted area. There is an arbitrary 32 KB limit
on the copy buffer.


Delete, Copy, Move. . .

Delete the block with Y ("Y" being the nearly universal key
meaning "delete"). Or put the cursor in an unpainted area of the
file, and copy the block into that area, just ahead of the line where
you put the cursor, by pressing C (for "Copy"). Or move it with
V (for "moVe"). As noted above, the block previously "marked" into
the copy buffer is available for multiple use. Just put the cursor where
you want the block to be copied and hit C again.


Restoring from Inadvertent Block Deletion. . .

If you just deleted a block in error, put the cursor where you want
to restore it, and press C to copy the buffer back into the file.


Sending a Block of Text to the Line Printer. . .

Print the copy buffer to line printer 1 (the parallel port) with
P (for "Print"). After printing, if you want a form feed, press
F (for "Form feed" -- note the use of vice as the
modifier key, since F was already used for "Find").

. . .or to a File. . .

Finally, output the copy buffer to a file in the same path as the
file being edited by pressing O (letter "O" for "Output"). A
window opens at the bottom for typing the name of the file for CF to
create (if it doesn't already exist) or append to if it does. (The file

CM_FILER -- Chapter 2 2-5

will be created or opened in the current directory on the default drive.
Therefore the characters ":" and "\" will not be recognized.)


Replace and Global replace. . .

In addition to the F "find" feature, there is an R
"replace" and an G "global replace" feature. Just press R or
G and enter the find and replace strings when prompted. (If you see
a mistake in the find string while you are typing the replace string,
just arrow back up a line and reedit it.) For R, CF will find the
first match and ask you to confirm the replacement. It continues finding
and requesting confirmation until you press Q (for "quit replacing").
X reactivates either the find or replace routine, whichever was used
last. G replaces all appearances of the find string with no
confirmation. It may be terminated with any key press. When global
replace was thus terminated, X reactivates the confirmatory replace,
not the global replace.


Leaving Edit Mode. . .

After editing is complete, press . The next prompt you get
asks whether you want to save this edit (y/n), or go back to the editor
(). (If you had hit the key by mistake, hit it again to
return to where you were.) In some cases you botched the file up so bad
you don't want to save it, but most of the time you do. Press "Y". The
next prompt wants to know if you want to save the original, pre-edit
version of the file as "*.BKP" (an arbitrary extension designator I
picked to show the file as a "BacKuP" from edit mode, different from the
form of the backup extension assigned by the backup command "B" from the
main module.) If you say no, the edited version will simply overwrite
the original. If you say yes, then the previous backup file with the
same name and extension ".BKP", if there is one, will be deleted, the
"current" original file will be renamed with the ".BKP" extension, and
the now-edited version will be saved under the original name. If CF runs
out of file space, it will ask you to put a NEW disk into drive A to save
the edited version.


Backup File Protection. . .

A small point of backup file protection. If, in the process of
saving the original version of the edited file, CF encounters a file
with the same name and the ".BKP" extension, it will simply overwrite
it, UNLESS it is assigned the read-only attribute and the original to
be renamed and saved is not. In this case CF will give you the option
of saving the read-only file.

CM_FILER -- Chapter 2 2-6


Creating a New File with the Editor. . .

A new file may be created from the main module by pressing the
letter "F" (for "new File") and entering a name for the new file in the
data entry line. The new file will appear in the directory from which
the "F" command was issued.


Help. . .

A one-page help screen may be summoned on-line at any time in the
editor with the command "H", and exited with any keystroke.

CM_FILER -- Chapter 2 2-7

* *
* CM_FILER -- Version 5.22 *
* *

TUTORIAL -- Chapter 3: The TREE Functions:

CF lets you you view and operate on the subdirectory structure of
your disk in the format of a "tree", so-called because that is what it
looks like, with each subdirectory being a "limb" for the finer "branches"
in its substructure. This feature is invoked with the command Tree.
The command conventions in the tree module are the same as you have
encountered in the main screen, except on a much smaller scale.

The path(s) on entry are preserved from the main screen, and the
selected subdirectory structure in the source panel is highlighted as a
block. This block may be deleted (with GREAT CAUTION -- a fast machine
can wipe out a lot of files in a big hurry, and because of this I have
added a second confirmation of any delete operation that involves file
destruction). Or the source block may be copied or moved.


The Display. . .

If you entered the tree feature with both panels open, you see that
the source/target panel relationship is preserved, and the paths displayed
at the top and indicated by the cursor highlights in the tree structure
itself are as existed from the main screen. The structure under the
cursor in the source panel, namely the selected directory and all its
files and subdirectories and their files, is shown as a block with red
background in color mode, while the current directory selected in the
target path is shown by its name highlighted with a black background.

If you entered the tree module with the right-hand panel closed,
you may open it the same way as you would from the main screen -- right
arrow, then press a drive letter at the prompt.

Line 1 at the top of the screen gives the status of two display
enhancement switches. The "hide" and "compare" switches are passed from
the main module, and have the same function. When the hide switch is on
(^Hide=Y), subdirectories with the hidden attribute set are masked (i.e.,
not displayed). When the compare switch is on (^Comp=Y), any match in
the target panel to the currently selected path in the source panel will
be highlighted in high-intensity yellow, similar to the highlighting of
file matches in the main screen. The hide and compare switches may be
toggled using H and C (shown as ^H and ^C); their states are
transmitted back to the main module on return.

The "find" string also appears on the top line when the find file
command is given (the letter "F"). More on that later.

Information about the selected structures is contained in lines 23
and 24 at the bottom of the screen. In each panel, there are two pairs
of numbers, one pair for the amount of DISK SPACE used by the files in
the structure, a second pair for the NUMBER of files in the structure.
The first number in each pair desribes the files in the IMMEDIATE
directory that the cursor is on (think of this as the "root" of the
structure), and the second number in each pair describes the grand total
charactertics of the file ensemble in the ENTIRE structure.

The structure in the source panel is highlighted differently
because this is the structure you will be operating on.

Cursor movement is much the same in the tree display as in the main
screen. Left/right arrows switch panels, up/down arrows move one line
up and down the tree, move to the top/bottom of the panel and
then 20 lines, / move to the very top or bottom of the tree,
and P (for "Parent") moves the cursor up to the directory's parent. Two
additional cursor moves are Up/Down Arrow, which moves the cursor up
or down one directory in the same level; and Left/Right Arrow, which
moves the cursor directly across to the match if you are in compare mode
and have a path in the target matching the path of the currently selected
structure in the source (same feature as in main module).

Changing disks or drives ("N"), renaming subdirectories ("R"),
setting the hide attribute for a subdirectory ("2"), and toggling the
hide switch ("Hide) all work the same as from the main screen of CF,
except that no wild cards are permitted in the rename function.


Copying structures. . .

If you, as I, never thought or visualized much about the structure
of the data on your hard disk, and never thought in terms of moving
around big blocks, the conventions about to be described will take a
little getting used to. However, you will come to find these operations
a great convenience.

Select in the TARGET panel a path under which you want to replicate
a substructure from the source panel. Pick a small structure in the
source panel for starters. Now picture the source block highlighted in
red (if you're in color -- in reverse video if monochrome) appearing
UNDER the subdirectory in the black background in the target panel.
Press "C". The structure selected in the source panel is reproduced,
subdirectory-by-subdirectory, file-by-file, under the target path. (One
prohibition -- CF does not permit copying a structure onto itself. That
is, if you have the same drive selected in both panels, a structure in

CM_FILER -- Chapter 3 3-2

the source and its HOST (the subdirectory it originates from) in the
target, the command "C" will be ignored.)

This copy operation is good for backing up major structures hard
disk-to-hard disk or hard disk-to-floppy. Once a backup structure exists
on another medium, you may KEEP it up to date the same way. Just
remember to put the cursor in the target panel to the HOST directory
of the structure you are backing up. Updating is possible because the
file copying and protection convention used in the tree module is the
same as that employed in the main program of CF. Namely:

o Files encountered in the target path with the same date/time
stamp are presumed identical, and not rewritten, unless the "file
overcopy" switch is on. As in the main module, it is toggled by the
command "O", and its current state is displayed on the bottom line
of the screen whenever you press the key (either "Overcopy=N" or
"...=Y".) As with the "hide" and "compare" switches, the current state
of the "overcopy" switch is passed between the main and tree modules.

o Files of the same name encountered in the target that are newer
than the source, or that are read-only and the source is not, require
confirmation to be overwritten.

o Files of zero length in the source path are not allowed to
overwrite files in the target, newer OR older, without confirmation.

Copying in progress may be terminated using . Any errors
during file copying automatically cause immediate termination of the tree
copy operation, with a caution note to check over the files in the new
structure. Check the file whose copying was in process first.

The copy function tries to anticipate the disk space required in the
target for the structure being copied, and will proceed without delay if
it finds there is enough free space on the target disk to assure the
completeness of the copy. It does not attempt to check the target path
for possible file duplications with the source block and take for credit
as "available space" the space occupied by files which will be
overwritten. If it senses not enough space to CLEANLY copy the whole
structure, it will alert you to the possibility of an incomplete copy,
and ask for confirmation to proceed anyway. Then, as the copy operation
proceeds, it checks disk free space before EACH file is copied. If there
is insufficient space for THAT file, it tells you so, and asks whether
you want to try the next file. The answer "n" terminates the operation.

When backing up structures on your hard disk using the tree
structure copy function, if the backup floppy is at all tightly packed,
you will get this advisory message. If you know there is a lot of file
duplication between the source structure and the backup floppy, you may
proceed with the copy operation with confidence that all the files will
be properly updated.

CM_FILER -- Chapter 3 3-3

A final word on the copy function, and the move function discussed
below. The original cursor position in the TARGET panel, which specified
the target path for the operation, is reset after the copy or move
operation to show the TOP LINE of the new structure just created or
moved, so that you can see that the copy or move actually took place and
check using the information at the bottom of the screen that all the
files were reproduced or moved. However, on the next keystroke, the
target cursor is reset again to its ORIGINAL position.


The "Copy Into" Function. . .

As seen above, the copy function replicates, as a structure UNDER
the target directory, the source block. The structure has the same
"name" in both cases, meaning that the top line of the block in the
source panel is the same as the top line of the replicated structure in
the target panel. Another way to view this is that the subdirectory
which serves as the "root" of both structures has the same name.

While this seems a convenient way to copy structures between two
large mass storage devices, as it forces a uniform convention on the
naming and construction of the structures themselves, it may not always
be the most convenient way to backup structures from a large mass storage
device to a smaller one. This sounds very cryptic, so let me try an
example. Suppose one of the major structures in your hard disk is a
directory under the root, containing all your files pertaining to your
word processor. Let's call this directory WORDS. In it are all the
program support files (the editor, the printer, the configuration files,
etc.), and two subdirectories, NOTES and LETTERS. If you were to copy
the structure with WORDS as its "root" to a virgin floppy, the screen
would end up looking like this:

C:\ A:\
|---WORDS ) . . . . ( |---LETTERS
| |---LETTERS ). . . ( +---NOTES
| +---NOTES )

But suppose you plan to dedicate this floppy exclusively to the
backing up of the files in the WORDS structure, and so you really wanted
to put the word processor program and its support files INTO the root
directory of the disk in A:, and have the LETTERS and NOTES be
directories of the ROOT, not of a directory WORD. That is, you want not
to create the unnecessary layer of a directory called WORDS, but you want
the A: disk tree to look like this:


CM_FILER -- Chapter 3 3-4

This is where the command "Copy Into" does the job. Just press the
letter "I" instead of "C", and the contents of the structure in the
source panel block are copied INTO the target directory, instead of being
replicated as a new, complete substructure.


Moving structures. . .

In much the same way, structures may be moved within the same disk
with the commands "C" (which replicates the structure entirely,
similar to Copy) and "I" (which moves the structure INTO the target,
like Copy Into). The condition for moving is that the same disk is
selected in both panels, and the target path is not currently the host of
the structure selected in the source panel. Since these operations use
the DOS rename service, no copying of any file data itself is performed,
just modifications to the directory tables, and so this is a QUICK way of
doing major reoganizations of your hard disk.

"Move" (C) and "move into" (I) default to straight "copy"
and "copy into" if different disks are selected in the source and target
panels. Moving may be terminated with .


Copying Just the Files. . .

The command "J" (for Just files) works somewhat like the Into
command, but copies just the files in the source subdirectory into the
target path, and not the subdirectories and their files and
subdirectories, etc.


Copying Just the Directory Array. . .

The command "C" is similar to "C", but copies just the skeleton
of the structure, the directory array and no files, under the target
path. "I", similar to "I", copies just the directory structure INTO
the target path.


Deleting Structures. . .

This is the scariest of all the tree functions, because a couple of
false keys and a fast hard disk and you're destroying files REAL fast.
For this reason, I have added a second confirmation step which warns you
how many files are about to be destroyed before it starts, and, for hard
disks, have used the same "soft" delete convention for the operator "D"
as discussed in Chapter 1 on the delete function in the main module. (If

CM_FILER -- Chapter 3 3-5

the structure selected consists entirely of empty subdirectories, CF
doesn't bother asking for the second confirmation, since directories are
a whole lot easier to re-create than files.) Thus, when file destruction
is involved, three keystrokes are required to delete a structure -- "D",
"Y", and "Y" -- and, for a hard disk, the files deleted will reappear in
the CF_TRASH.CAN directory. As in the main module, the alternative
"hard" delete function is "D".

terminates tree deletion in progress. CF deletes ALL the
files in each subdirectory shown in the tree structure -- hidden and
read-only, as well as normal.

The move and delete operations use a routine to remove the (assumed
empty) tree structure in the cursor block in the source panel after all
the files have been moved or deleted. If there is a hidden subdirectory
in this structure, and the hide switch is set to "Yes", however, it will
not be seen by the file moving or file deleting routines, as well as the
directory removal routine, and a strange-looking error message will be
returned, namely "Access denied" during directory removal. This is
classic DOSese, at least most of the time, for "there is something still
in there." Toggle the hide switch with H and reexamine the remnants
of the structure you tried to delete.


Delete Just the Files. . .

The companion delete operation to the "copy Just files" command is
"D" -- delete just the files in the source subdirectory. This is a
"hard" delete.


Show the File List. . .

The command "S", for "Show files", is the way to get a look at the
file names in a subdirectory without leaving the tree environment. This
command opens a window in the target panel showing the first 16 files in
the directory at the cursor in the source panel. You may continue to
scroll up are down through the source panel as before, but now the file
window changes as you do to show the contents of the current directory.
You may do any other operations that involve only the source window, such
as toggle the hide mode, make a new directory, delete a portion of the
tree, even get a new drive. Two-panel operations such as copy and move
are blocked in this mode by the presence of the "Show files" window.

To see more than the first 16 files, arrow across with the left or
right arrow to the file window and scroll up and down using the up/down
arrows, /, and . Move back to the tree with the
right or left arrow key. Or, to perform an operation on a file in the
"Show files" list, press with the cursor on that file. CF

CM_FILER -- Chapter 3 3-6

immediately returns to the main module, to the directory selected, and
places the cursor on the file selected from the tree "Show files" list,
ready for you to edit, view, execute, copy, etc. Leave the "Show files"
mode with or "S" from either panel.


Find a File. . .

One of the most powerful functions in the tree arsenal is the file
finder. There are lots of file-finding utilities around, but most of
them tell you where a file is by giving you its path which you have to
type into a DOS "change directory" command. Cumbersome.

CM_FILER offers a file finder which gives you an instant visual cue
to the directory(ies) containing the file you are looking for. Simply
press "F" (for "Find file"). A data window opens at the bottom for you
to enter the name of the file to search on. It supports the "?" and "*"
wildcards, where "?" means "any character in this position of the file
name or extension", and "*" means "any string of characters in the
remainder of the file name or extension". (For example "CM_*.*" would
find any file whose name begins with the characters "CM_", with any
extension. "*.COM" would find all your .COM files, and so forth.)

Enter the search name and, assuming there is at least one file that
fits that specification, note that several things have happened:

o At least one directory name in the tree is blinking;

o The cursor has automatically repositioned to the topmost blinking
directory; and

o The file list window has opened in the target path, and all the
file matches are listed in alphabetical order at the top of the
window, and are blinking.

If you have a long tree structure with subdirectories out of view
off the bottom of the panel, you may not see all of the blinking
subdirectories containing file matches. The cursor movement in the "Find
files" mode that lets you quickly position up or down to the next
directory containing a file match is . Use Arrow> to see all the directories with a match.

As in "Show files" mode, you may arrow across to the file window and
browse through the file name listing. Return to the tree source panel
with the other arrow, or return to the main module to the file selected
in the "Find files" window using . Quit "Find files" mode with
or "F" from either panel.

CM_FILER -- Chapter 3 3-7


Print a Hard Copy of the Tree. . .

The command "L" (same syntax as in the main module) prints a
copy of the tree structure to the printer.


Precaution Regarding CF_TRASH.CAN. . .

The directory CF_TRASH.CAN is not permitted as the source for a copy
or move operation. Since this directory contains files whose date/time
stamps were reset to the current date and time when they were "soft
deleted", they will generally APPEAR to be newer than more current files
of the same name elsewhere on the disk. Thus indiscrimant copying or
moving of them may overwrite later files. Files in this directory may
ONLY be moved/copied from the main module, and only after confirmation.


Help. . .

A one-page help summary may be summoned on-line at any time within
the tree module with the command "H", just as in the main module.


Leaving the Tree Functions. . .

There are three ways to leave the tree display. goes back to
the main program display, with the path(s) for the left (and right, if
open) panel(s) as selected on the respective trees. goes back to
the main program with the path(s) set as they were on entry. And
finally, Q has the same convention as in the main program -- quit CF
altogether, with default drive and current directory as selected in the
tree source panel.

CM_FILER -- Chapter 3 3-8

* *
* CM_FILER -- Version 5.22 *
* *

TUTORIAL -- Chapter 4: Executing Child Processes:

So far, you have seen the features that make CF useful for file and
directory management -- neatness of file display, flexibility in
manipulating directories and files, transparency of operation, and even
the ability to edit files without leaving the environment of CF. What
really makes CF useful as an OPERATING environment, though, is its
ability to execute "child processes" with an economy of keystrokes.

Running programs in the DOS environment is one of the more
cumbersome and confusing aspects of this operating system, and therefore,
by its nature, this chapter is not terribly straightforward. I will make
it as simple as I know how.


Child Process Defined. . .

A "child process" is nothing more than another program, loaded and
executed by the DOS operating system under the command of the "parent"
program, which stays resident and waits for the "child" program to
finish. When you ran CF from the DOS system prompt, it was as a "child"
of the DOS COMMAND.COM command processor. Some word processors permit you
to "shell" to DOS, leaving the word processor program code resident in
memory. What the word processor program is actually doing is running the
DOS COMMAND.COM command processor as a child. From this DOS "shell", you
could run yet another program as a child. The more layers of child
processes you have at any time, the more RAM you eat up for the currently
running program with the resident code of generations of parents waiting
to take back over.


Resident Footprint of CF. . .

If you use your computer for more than just one task, therefore,
you may find CF useful as an "inner shell" of your operating environment.
You may let all 86 KB stay resident (the CF.COM kernel plus the CF.OVY
overlay) while the child is running, or if you are memory-limited you may
force CF to give back to DOS for allocation to the child all but 16 KB
for the CF.COM kernel. This option is exercised by pressing "K" (for
"Kernel"), and then pressing either "L" or "S" at the prompt (for "Large"
or "Small"). "Large" is the default in a virgin copy of CF.COM. The

default setting embedded in the CF.COM file on disk gets updated to the
current value anytime you update the user-defined F1-F9 applications
table with the command F10 - .

There is a tradeoff here. The large kernel option ties up more RAM
that could be used by the child if it is a humongous program, but the
return to the CF environment after it finishes is instantaneous. The
small kernel option is good for freeing the maximum amount of RAM for the
child, but there is a delay in returning to CF while the resident kernel
reloads the overlay. You be the judge. The best thing is that you can
decide before each child, if you want, at the cost of only two

"Shelling" to DOS. . .

You may "shell" to DOS -- that is, execute the DOS command
processor -- any time you want from the main screen just by pressing
"S". A prompt will tell you to return to CF when you are done by
entering the DOS "exit" command. This is the most elemental child
process provided for in CF.


Executing a Program from the Main Screen. . .

You can run any "executable" (.COM, .EXE or .BAT) file from CF,
as a child process, anytime you want, from the main screen. There are
several ways to do it:


Immediate Execution. . .

This is the quickest way. Just position the cursor on an executable
file entry on the screen and press "Q" (for "Quick execute"). This is
ideal if the child process is located in the same directory as any files
it might look for, and it does not need a command line to tell it what
files to operate on or what optional switches to set.


Execution with Command Line. . .

However, many programs expect data in the "command line", such as
the name of a file to operate on, and CF has provided several ways of
constructing these command lines. The simplest is this: First, position
the cursor on the file you want to execute as a child process, and press
"X" (for "eXecute"). A prompt message will tell you this file is
"queued", its path and name put into a special buffer in RAM, lined up
and waiting for the word from you to commence execution as soon as you

CM_FILER -- Chapter 4 4-2

select in the source panel the drive and directory the child process will
want as its default path to the files it will operate on. Select the
default path you want in the source panel, and then press "X". A
data entry window opens at the bottom, in which you may enter a command
line for the child's use. Enter the command line data your application
expects, and hit to run.


Execution with a Single File Name in Command Line. . .

The simplest case of the command line is that of a file name. One
of the optional ways of running the PC-Write ED.EXE file, for example, is
to specify in the command line the name of the file you want to edit. CF
offers a shorthand way of running a program with a one-file-name argument
as the command line. Put the cursor on the name of the program file you
want to run and press "X" as above. The program is queued up. Now put
the cursor on the file you want the program to operate on, and press
"X". It's off and running, editing (or whatever other operation
it's doing on) that file. Two keystrokes.

It is a good idea to have the program file and its supporting files
in the same directory as the "operand" files when you use this method of
execution, unless the program is "smart" enough to locate its supporting
files in another directory.


"Seeding" the Command Line. . .

In many cases, the above quick way to specify a one-file-name
command line is not enough. You may find a need to "seed" the command
line with several file names (of the form
which presumes the default drive/current path), or several complete file
"specifications" (the FULL "description" of the file's location and name,
of the form
where D stands for the drive letter, which gives explicit directions on
how to get to the file and presumes nothing about its location.)

In CF, there are shorthand ways of "seeding" the command line window
with file specifications and names. These may be used either before or
after queuing the child program file with X.

o To seed the command line with the FULL specification (path PLUS
name) of a file on which you want the child process to operate, put the
cursor on the file entry and press "C" (the "C" in this case is a
mnemonic for "build Command line"). The information window at the bottom
will show you the command line in its current state. This procedure may
be repeated to build a command line as long as there is room in the

CM_FILER -- Chapter 4 4-3

command line buffer. The command line is limited to 125 characters.

o Just before pressing X to show the command line window for
final editing before executing the queued up child process, you may
"Tag" one of more files in the directory you have set up as the
child's default path. These file names, WITHOUT paths specifications,
will then all appear in the command line in the order they were
Tagged following any file specs seeded with C.

Now press X to open the data window with the seeded command
line. Once you have edited the command line the way you want it, hit
, and the child program is off and running. After the child process
finishes and returns control to CF, its file specification stays in the
"queue" buffer until you queue another executable file by pressing X, so
you may perform multiple operations of the same child process just by
seeding the command line again as above, and pressing X again. As a
further time-saving feature, you may recall the last command line by
pressing the up arrow or while in the command line entry field.

Once you get used to the above conventions, you will find that in
many situations you don't need to edit the seeded command line, and the
key sequence X- seems cumbersome. For those cases I have
included the option "X". Use it after you have seeded the command
line using C and/or T, and avoid the extra stroke.

There is an even shorter-hand way of specifying a single file name
in the command line from the current directory and beginning the
execution of the child in the execute queue. Just put the cursor on the
file name entry in the source panel that the child process is going to
act on, and press "X". For example, if you use PC-Write, just put
the cursor on the ED.EXE file, press "X", put the cursor on the file you
want to edit, and press "X".


Changing the Command Line "Seed" Delimiter. . .

You probably noticed that there was always a space between multiple
entries in the seeded command lines created using the C and T
operators by the procedures above. But what if your application looks for
commas as the field delimiters for data in the command line, instead of
blanks? Just press "" from the main screen to pick from three
choices for default command line field delimiters -- space, comma, and


Customizing Your Child Process File Specifications. . .

Got a few pet applications that you run more than most? Save the
aggravation of hunting them down and pressing "Q" or one of the "X"

CM_FILER -- Chapter 4 4-4

key sequences each time you run them. You can call them with just a
touch of one of the function keys F1 through F9! To set this up, press
F10. You will see a data entry screen that lets you specify up to
nine executable file names in the entries "F1 = ", "F2 = ", etc., and an
optional default command line offering for each, labelled "F1 Comm Line =
", etc. Further down the page, you will see places for similar entries
for ZIP and UNZIP, and a bottom entry labelled "Password = ". (You may
use this last entry to specify a password which must be entered to get
back to the main screen from the screen-saver mode -- a handy way of
blocking undesired access to your files.)

In the "F1 = " data window, just type in the filename, including
extension, of an executable file you use frequently, and any frequently
used command line that you would like to show up as a default offering
when you queue the file for execution. You do NOT need to include the
path in the file specification if the file is on one of the paths listed
in the DOS path environment (via a previous "path" command from the DOS
system level) -- CF will hunt it down and update its internal record of
where that file is, so it doesn't have to hunt the next time you call it.
However, if you DO include a path specification, be sure it is complete
(e.g., "C:\LETTERS\ED.EXE").

Repeat the process for "F2 = ", etc. Once you have made all the
entries you wish, press "" to leave the F-key data entry
screen. ("" will abort the edit.) The kernel CF.COM will then find
and update itself, embedding in its own file all this customized F-key
information. (A caveat for DOS v2 users -- CF.COM will find itself
PROVIDED it is on a path in the DOS path environment, and you have kept

IMPORTANT NOTE: While it is updating the F1 through F9 selections,
CF.COM also records the current state of the hide, compare and overcopy
switch settings, the current ordering scheme, the current command line
delimiter character, and the current kernel size selection (L or S). To
update the embedded values of these parameters at any time, just press
F10 and .

There are three ways to now use these F-key options: (This seems
awfully confusing, but stay with me -- these features are what will
really make CF useful to you!)

o Press the F-key corresponding to an application you specified with
the F10 operation. (This may be done from either the main screen OR
the F-key listing screen shown by pressing just F10.) You will get the
message at the bottom that that executable file is queued up for
execution, just as though you had hunted it down and pressed "X". Seed
the command line and set up the path desired in the source panel as
before, and press X to get the command line entry window, also as
before. This time, though, if you had specified a default command line
offering for this F-key, it would appear in the command line window, IN

CM_FILER -- Chapter 4 4-5

FRONT OF the seeded entries, if any. Edit the command line if desired,
and press to start execution.

o OR, if you know the command line will be the way you want it, and
you are bugged by the extra keystroke to accept the seeded command
line, seed the command line with C if you want, set up the source
panel to the directory you want, Tag any files from this directory
you want to appear in the command line, and hit F-key. The
application will run immediately with the seeded command line, with the
default F-key command line offering between the "C" seeds and the
"T" seeds.

o OR, if you are just operating on one file, put the cursor on the
name of that file and press a F-key for instant one-key execution.
In this case, the F-key default command line offering will appear in the
command line preceeding the name of the file the cursor was on. (This is
the feature I use most. I probably should have described it first!)

(There is, in fact, a rule as to where the F-key default command
line offering gets placed during the construction of the command line. It
is inserted at the point that the F-key itself (or F-key modified by
or ) is pressed. The file names Tagged in the current
directory always appear last. In an exotic case, for example, you could:
(1) C a file spec, (2) press , (3) T a file name, and
press X to execute with no edit of the command line. The program
assigned by you to the key would run, with a command line consisting
of the file spec C'd in (1), the F1 default command line offering,
and the file name T'd in (3), all separated by the command line
delimiter character last selected from the main screen with .

The business above may seem cumbersome, but if you spend a lot of
time typing the same old things in at the DOS command processor
prompt, you will find it is worth the investment of time to figure out
and use.


A Further Execution Option -- Instant ZIPping/UNZIPping. . .

Phil Katz' PKZIP.EXE and PKUNZIP.EXE (c) have become the standard
file compression and decompression programs in the ShareWare market,
so much so that I wrote a special explicit feature to employ them with
just a few keystrokes. The commands which invoke these programs from
the main menu are "Z" and "U", respectively. CF can find these
programs as long as you have not renamed them from PKZIP.EXE and
PKUNZIP.EXE, and they are on one of the paths that you specified in a
DOS path environment. If for some reason you want to rename them or
put them on a path not listed in the DOS path environment, you may
specify them explicitly via the F10 data screen.

CM_FILER -- Chapter 4 4-6


ZIP a File. . .

1. Decide where you want the compressed file to go, and select
that path in one of the panels. If you are updating an existing .ZIP
file, Tag it while you are there.

2. Now switch to the other panel, and select the path to the
files you want to compress. Tag them in the order in which you
want PKZIP to compress them.

3. Now then press "Z". CF will show you a command line at the
bottom of the screen, in the PKZIP syntax (options first, then .ZIP
file first, then list of files to be ZIPped.) Since the files to be
ZIPped are in the current source path as set up by CF when you
Tagged them, no explicit path is included for them. You may edit
the command line. (Remember, you can toggle between Push Right and
Overstrike.) Once you are satisfied with the command line, press

[In step 2 above, if you do not Tag any files for compression
in the source path, CF assumes you want to ZIP them all, and places "*.*"
in the file list argument of the PKZIP command line.]

[In step 1 above, if you do not Tag a target .ZIP file, CF
assigns a default .ZIP file name for PKZIP to create, which is either:

(1) the first Tagged file in the source path from step 2, or

(2) if no source files are Tagged in step 2, the name of
the file the cursor is on. (PKZIP attaches the default .ZIP

[In step 3 above, if you know you don't have to edit the command
line, you can bypass the extra keystroke to enter the command line
by pressing "Z" instead of "Z".]


Now UNZIP a File. . .

1. Set up one panel with the target path for the UNZIPped files.

2. Switch to the other panel, select the path with the .ZIP file
to be UNZIPped, and put the cursor on it.

3. Press "U", edit the command line if necessary, and press .
As with ZIPping above, if you know you don't have to edit the command
line, press "U" instead.

CM_FILER -- Chapter 4 4-7

The PKZIP/UNZIP utilities are available from most bulletin
boards, or may be had for a $47 registration fee from PKWARE, Inc.,
9025 N. Deerwood Drive, Brown Deer, WI 53223 (BBS 414-354-8670).


Tailoring CF for custom ZIP/UNZIP spec. . .

If for some reason you want to specify an explicit path to
PKZIP/PKUNZIP, you may include an explicit file specification using
the F10 feature. Just follow the procedure and
precautions under "Customizing Your Executable File Specifications"
above, and operate on the " ZIP = " and "UNZIP = " fields.

If you are familiar with Phil Katz' option switch syntax and find
yourself using one or more switches most of the time, you may enter
standard options in the indicated fields (" ZIP Options =" , "UNZIP
Options = ") while you are at it.

Once you are comfortable using the ZIP/UNZIP feature of CF, and
you find you are not having to edit the ZIP/UNZIP command line most
times, you may start getting bugged about having to always hit
when you see the command line displayed. There is an alternative!
Just like with the tailored F-keys, hit "Z/U" for instant


Specifying a Password for Access from Screen Saver. . .

At the very bottom of the "F10" screen you see a data line for
password. You may enter any combination of alphanumeric characters up to
six letters. This password must be given to restore access to CF from
screen saver mode. The password routine is case insensitive.

CM_FILER -- Chapter 4 4-8

* *
* CM_FILER -- Version 5.22 *
* *

REFERENCE -- Description by Operation:


"N" -- New disk -- Select a new disk drive for the source panel, the
one with the cursor. Must be used to announce disk media
changes. In right-hand panel, after N closes the panel.

"" -- Display subdirectory in source panel -- With the cursor on a
subdirectory or the "" line, changes to that subdirectory
or parent in the source panel.

"" -- Display subdirectory in target panel -- Displays the
subdirectory under the cursor in the target panel, and changes to

"P" -- Display Parent directory in source panel -- Quick way of
returning to the parent directory with the cursor positioned
anywhere in the listing of a subdirectory. The same thing can be
done with two strokes -- (to get to top line of the
subdirectory listing, which is always ""), then .

"P" -- Display source directory's Parent directory in target
panel -- Quick way of showing the parent of the current directory
in the target panel and switching to it.

"\" -- Display root directory in source panel.

"\" -- Display root directory in target panel.

"*" -- Display source directory in target panel.

"M" -- Make subdirectory (Mkdir) -- With the cursor anywhere in the
listing, pressing "M" opens a data window at the bottom of the
screen for entering the name of a new subdirectory you want to make.
CF checks the entry for validity; if invalid, the window simply
clears and waits for another entry. A valid entry appears in the
proper alphabetic position on the screen.

"D" -- Delete -- With the cursor on a subdirectory and no files tagged,
removes that subdirectory if it is empty ("void"). IF THE CURSOR

"L" -- Line print directory listing -- Prints a listing of the
current directory if cursor in directory panel, and includes notes
if cursor in notes panel (activated by letter "O").

"T" -- Transfers control to the TREE module. Displays the disk(s)
selected in the panels in their directory tree structures, and puts
the cursor(s) on the structure(s) pointed to by the current path(s).


"G", followed by a letter -- Move cursor to ("Go to...") file with that
first letter.

"G", then letter -- Go to directory with that first letter.

" -- Jump across to identical file name in opposite panel
when highlighted in comparison mode.

"T" -- Tag file -- Applies or clears a "normal" tag to the file under the
cursor (i.e., "toggles" the state of the tag). Window at bottom of
screen shows number of files tagged.

"T" -- Alternate-Tag file -- Applies or clears an "alternate"
(sometimes referred to as "append" because of its principal
function) tag to a file. "Alternate" tags are numbered (1-9,a-z) to
show the order of application, for the order-critical operation of
file concatenation, discussed below, and are white on red.

"A" -- Tag All files -- Applies or clears normal tags to all files.

"A" -- Toggle the state of All normal tags.

"M/E" -- Tag all files with same naMe/Extension as file at cursor;
does not reset tags already present.

"N" -- Tag all files with same date or Newer.

"O" -- Tag all files with same date or Older.

"P" -- Tag same files in oPposite panel as tagged in source.

(NOTE ON TAGS: Tags are aids for quickly performing multiple
file operations, but are "volatile", and generally go away with
any operation that changes or updates a panel. Tags are NOT
applied in any way to the magnetic media.)

"C" -- Copy -- Copies tagged files from source to target, or the one
file at the cursor if none tagged. Does not bother overwrite
identical files, asks for verification before overwriting newer
files or read-only or hidden files, and protects against some
cases of overwriting good files with files created in error.

With files "Tagged", creates "concatenated" file in target
with same name as first "Tagged" file, but extension ".APF".
If insufficient room on target path, does not perform operation,
and signals the user.

CM_FILER -- Operation Reference OpRef-2

"C" -- move -- Moves files from one subdirectory to another on the
same disk. If conditions are not satisfied for moving (i.e., same
disk, different directories), shifts back to copy mode.

"B" -- Back up -- Copies tagged files (or file at cursor if none
tagged) from source to source, assigning to each new file the
extension "._" (underscore character) plus the first two letters
of the original file's extension. This results in backup files
with unique names unless two files differ only in the third
letter of the extension (eg, ".BAK" and ".BAS" would both back-up
to "._BA"). With files "Tagged", creates file in source
with the "backup" form of the "append" extension (ie, "._AP), and
concatenates. If insufficient room on source path, does not
perform operation, and signals user.

"D" -- Delete -- Deletes all tagged files on source path. If no files are
tagged, deletes only the file under the cursor. Treats normal tags
and "Tags" the same. Requests confirmation before file
destruction. On hard disks, this operation is a "soft" delete, in
which files are redated to current date/time and moved to directory
\CF_TRASH.CAN (created by CF). Thus good files inadvertently
deleted are readily recoverable. On floppy drives, this operation
is a "hard" delete, using the DOS delete file function.
"Undeleting" is not available in the CF environment, but other
utilities contain "undelete" facilities, but these are not always

"D" -- "hard" Delete -- Uses DOS delete function regardless of disk

"F" -- Freshen files -- "Freshens" the files in the source panel
from the target. Useful in updating backup disks. If no files
tagged in source, tags all in source, then tags in target all NEWER
versions of same-named tagged source files and copies them to
source. If files were tagged in source, only these files are looked
for in target, vice all source.

"R" -- Rename file or directory -- Prints name of file at cursor, and
opens window below it for new name, offering the current name as the
"seed". Type/edit new name and press . Or first arrow up and
edit the current name field, for example to use the "*" wildcard.
One use of "*" is permitted (either the name or extension). If used
in the current name field, it must be followed in the new name
field. Names are checked for legality before renaming is attempted.

"" -- Display file -- With the cursor on a file, views that file.

"F" -- make new File -- With the cursor anywhere in the listing,
pressing "F" opens a data window at the bottom of the screen for
entering the name of a new file to be created. Entry is checked
for validity. If valid, control is transferred to the line
editor for file creation and editing.

"0, 1, 2, 3, 4" -- Toggle File Attribute -- Pressing "0" clears all
attributes for any files tagged, or for the file under the cursor

CM_FILER -- Operation Reference OpRef-3

if none are tagged. "1" toggles the read-only attribute, "2" the
hidden attribute, "3" the system attribute, and "4" the archive
attribute. (Only the number keys at the top of the keyboard are
active for setting file attributes. The numbers on the keypad are
mapped to their corresponding cursor movement functions, even when
the NUM LOCK is set.

"L" -- Line print -- Put the file under the cursor into the queue for
printing as a background process while in CF or any child of CF.
(Printing is suspended during any DOS functions, such as disk
read/write, and while in the DOS COMMAND.COM processor during shell-
out.) Up to five files may be thus queued. "L" displays the
print queue. "L" clears the print queue. "F" while files
are printing from the print queue sets an internal flag which causes
a form feed to the printer at the end of the file most recently
added to the print queue if the file itself does not have a form
feed as its last character. (At times when the printer is not in
use by CF, F sends a form feed immediately.)

"V" -- Volume label -- Permits entry of a new volume label for the disk

"O" -- Toggle "file overcopy" switch. With switch off (=N), files
already extant in target with same date/time and size as in source
are not overwritten. With switch on (=Y), they are.

"F" -- Change file date/time stamp.



"" -- View a file -- When the cursor is placed over a file,
"" lets you view the file on the screen. In this mode, the
lower right screen display gives information about the byte the
cursor is on. H displays help screen "+ and -" turn
on and off the color-enhanced display of record delimiters (CR,
LF, CR+LF, LF+CR). Only the first 80 characters of a record are
shown. You can use " right arrow" to get to the end of the
record (if your keyboard has a separate arrow-key cluster) to see
how long it is, and then backtrack toward the beginning of the
record. "" or "" exits View mode.

"E" -- Edit a file -- When the cursor is placed on a file as above,
"E" lets you edit the file. Cursor positioning is the same.
Additional control keys are , /;
(toggles mode between Push Right and Overstrike);
(inserts the record delimiter previously selected with
; default is CR+LF). Y deletes line; D deletes
to end of line. H provides a one-page help screen.
Block operations are performed with {M (mark), Y (delete), V
(move), C (copy), O (output to file), and P (print)}. F form-
feeds the printer. Enter any ASCII code through "-numeric-
keypad" combination, except NULL, which is entered by N.

"" exits Edit mode, and CF asks you if you want to save the

CM_FILER -- Operation Reference OpRef-4

edit. In most cases you will probably answer yes. Then it asks if
you want to reuse the original, prior-to-edit file's date/time stamp
on the revised file, and if you want to rename the original file as
*.BKP. (When you do, CF deletes any previously saved file with the
name *.BKP, even if it had a read-only attribute.) If it encounters
problems with disk size or errors, it will give you further
instructions. For example, if after saving the original file as
*.BKP, it finds insufficient room on the source path to write the
edited version of the file, it will instruct you to put a new disk
in drive A, just so it can capture the edit for you.


Cursor Movement -- Up/Down Arrow moves one screen line at a time.
moves to top or bottom of screen, then moves screen 19
lines, or to very top/bottom of tree. / moves to very
top/bottom of tree. Up/Down Arrow moves up/down one
directory at same level (to next subdirectory up or down in parent
directory), or, in "file-find" mode, to next directory with a match
to the find string. "P" moves up to parent. Left/Right Arrow
changes panels, making the other panel the "source".
Left/Right Arrow moves across to the path match in comapre

"N" -- New disk -- Allows changing drives or disks, as in main module.

"D" -- Delete structure -- deletes the entire structure highlighted in
the cursor block in the source panel. This is a "soft" delete on
hard disks, in which the deleted files are redated and collected in

" D" -- "hard" Delete structure. Uses the DOS file delete function
regardless of disk type.

"D" -- Delete just the file in the source directory. This is a
"hard" delete.

"C" -- Copy structure under target path -- Replicates the structure in
the source panel's cursor block UNDER the directory selected in the
target panel.

"C" -- Move structure under target path -- If both panels selected
to the same disk, moves the structure in the source panel's cursor
block UNDER the directory selected in the target panel. If
different disks selected, defaults to Copy.

"C" -- Copy just the directory array under target directory, no
files copied.

"I" -- Copy structure Into target path -- Similar to copy, but does not
replicate the highest level subdirectory in the source block, but
rather puts its files directly INTO (vice UNDER) the target
subdirectory, and replicates its substructure into the target path.

CM_FILER -- Operation Reference OpRef-5

"I" -- Move structure Into target path -- If both panels selected to
same disk, moves the source structure INTO (vice UNDER) the target
subdirectory, as with "I".

"J" -- Copy Just the files in source directory to target directory.

"J" -- Move Just the files from the source subdirectory to target.

"S" -- Show files in opposite panel. Arrow across to file list if
desired, then up/down with normal cursor moves. In file list,
"" returns to main module, to directory and file selected.
Arrow back to tree. "" or "S" cancels "Show files".

"F" -- Find file(s). Specify file search string. Positions to first
match; directories with matches and matching files blink.
"" seeks next directory up or down with match.
Arrow across to file list as in "Show files", move up or down, arrow
back to tree, or "" to file in main module for file operation.
"" or "F" to cancel "Find files" mode.

"2" -- Toggle directory's hide attribute.

"O" -- Toggle "file overcopy" switch. With switch off (=N), files
already extant in target with same date/time and size as in source
are not overwritten. With switch on (=Y), they are.

"H" -- Toggle the hide switch and redisplays trees. With switch on
(=Y), directories with hidden attribute are not displayed. With
switch off (=N), hidden directories are displayed, and are denoted
with a blinking "*H"

"C" -- Toggle the compare switch. With switch on (=Y), target disk
is searched for any path that matches that currently selected in
source, and, if one is found, adjusts screen if needed so it is
visible, and highlights it in high-intensity yellow.

"M" -- Makes directory.

"L" -- Prints (via Line printer) a hard copy of the tree shown on
the source panel side of the screen.

"" -- From tree structure, returns to main module with currently
selected path(s), and cursor positioned to top of listing. From
file list in "Show files" or "Find files" mode, returns to main
modules with currently selected paths, but cursor positions to file

"" -- Returns to main module with path(s) as set on entry.

"Q" -- Quits CF altogether; default path as selected in source.

CM_FILER -- Operation Reference OpRef-6



"S" -- Shell to DOS -- Set up a DOS shell and do any DOS operations.
Exit DOS with the "exit" command when finished. CF then looks
for and tries to reestablish the current directories as they
appeared in the panels at shell execution.

"Q" -- Quick execute -- Immediately executes file under cursor, if
extension is .COM, .EXE or .BAT. Paths are as selected, ie,
default drive/current subdirectory is same as the executable file
is in, and the current subdirectory for any other drive is as
last set by you through a CF panel display.

"X" -- prepare to eXecute with command line -- "Queues" file under cursor
for execution. File remains in queue awaiting execution, initiated
by one of the followup key combinations X, X or X
after paths are set and command line seeded as desired. Command
line is deleted after file completes execution.

"X" -- edit command line and initiate eXecution -- Opens a window
for editing the queued child process's command line containing any
"seeds" placed by C and/or T, for editing. Execution
starts by pressing . The previously used command line may be
summoned by pressing the up arrow or PgUp.

"X" -- initiate eXecution, no editing of command line. Same as
X, except file executes command line as-seeded, with no
editing. Tagged files in active panel are added to command

"X" -- initiate eXecution, no editing of command line, and ONLY the
file name under cursor is added as last entry in seeded command
line. Tagged files in active panel are ignored.

"C" -- seed Command line with file specification. Adds the full
specification, including path, of the file under the cursor to the
command line buffer, and shows status of command line being built.
Command line may be added to using this feature before or after
executable file is queued up with X.

"T" -- Tag the file names in order for addition to the command line.
Tagged files are added to the seeded command line as the final
step after X or X is pressed.

" -- select delimiter for use by the "seeding" operations
C and T between entries of command line. Choices are
blank, comma, semicolon.

"F10 -- specify a user-defined executable file specification and
optional default command line offering for up to 9 applications,
assigned to F1-F9. Also specify ZIP/UNZIP command line default
switches, and an access password. to record selections
in current copy of CF.COM/CM_FILER.COM/CMFILER.COM (names are

CM_FILER -- Operation Reference OpRef-7

searched in that order, on current directory first, then on each
path in the DOS environment). Or to cancel edit.
also records as default values for the next execution of CF.COM the
current states of the Hide and Compare switches, and the current
settings for file ordering mode, resident kernel size option,
command line delimiter.

"F10" -- Display current entries F1-F9, ZIP/UNZIP options, password.
The commands "F1-F9", "F1-F9", and "F1-F9" may all
be issued from this display.

"F1-F9" -- queue a user-defined executable file spec -- Effect is same
as locating the file with the cursor and hitting X. F-key default
command line offering is added to command line, which may already
have seeded entries.

"F1-F9" -- queue user-defined executable, add its default command
line offering to the command line being built, add any Tagged
files in current directory (active panel), and execute immediately.

"F1-F9" -- queue user-defined executable, add its default command
line to the command line being built, add ONLY the file name under
the cursor, and execute immediately. Tagged files in active
panel are NOT added to the command line before execution.

"Z" -- PKZIP (c) compression -- Be sure PKZIP.EXE is on one of the
paths in your DOS path command, or specify the complete path spec
to it using "F10."

To ZIP, select on one panel a target path for the compressed .ZIP
file, and optionally Tag an existing .ZIP file. Then switch to
the other panel and select a source path, optionally Tag files
to compress in order of desired appearance on command line, press
"Z", edit command line if necessary, and press . To avoid this
extra keystroke, hit "Z" instead.

"U" -- PKUNZIP (c) extraction -- As above, be sure PKUNZIP.EXE is on
a path set in your DOS path command, or specify the complete path
spec to PKUNZIP.EXE with "F10."

To UNZIP, select on one panel a target path for the extracted
files, switch panels, select the directory with the .ZIP file to
be extracted, place the cursor on it, and press "U". Edit
command line, if necessary, and press . Alternatively, for
instant UNZIPping, use "U".


"+" and "-" -- Shift the file size display to expanded and contracted
mode. Expanded mode shows explicit size, but uses the file time
field. Contracted mode is in KB or MB.

"H" -- Help -- Shows a three-page help screen with abbreviated
explanation of the most-used operations.

CM_FILER -- Operation Reference OpRef-8

"O" -- nOtes -- Displays the directory notepad in the opposite panel
for viewing/entering/editing narrative comments about files. All
the editing and cursor control key combinations work. Notes
follow the files around when copied. CF sifts out any entries
from the NARATIVE.CF file that do match files then existent in
the directory each time the notes are called up, and updates the
file on exit .

"O" -- select file Ordering mode -- Permits selection of one of
seven modes of file ordering. Cursor shows current selection.

"H" -- toggle Hide switch -- Changes the state of the hide-
enable switch, shown at the top of the screen. With the switch on
("Y" for Yes), CF does not display files whose hide attribute is
set. With the switch off ("N" for No), all files are shown.

"C" -- toggle Compare switch -- Changes the state of the
compare-enable switch. In compare mode ("Y"), any file in the
target path whose name is the same as the file in the source path
under the cursor will be shown and highlighted.

"M" -- Mask -- Allows editing the Mask template, whose initial
value is all ?'s ("wild card" characters). moves cursor to
the extension field, to the name field. Press
to enter the template modification and redisplay the panels.

"" -- Toggles date/time display on main screen.


"Q" or "-" -- Quit CF -- Terminate to DOS. -
reestablishes the default drive/directory CF encountered on
execution; Q leaves as currently set in source panel.

Password Protection -- Bottom entry in "F10" screen is a password
entry window. If a password is entered, it must be given to return
to main screen from the screen-saver mode.

"S" -- Forces main screen into screen-saver mode immediately, rather
than waiting 1-1/2 minutes. Good for instantly invoking password

"F" -- Form feeds the line printer when the printer is not in use.

CM_FILER -- Operation Reference OpRef-9

* *
* CM_FILER -- Version 5.22 *
* *


1. CM_FILER running:

|--- 17 KB Kernel
|--- 74 KB Overlay
|--- 16,32, or 64 KB for directory lists
|--- 32 KB reserved for editor copy buffer
|--- All remaining allocatable RAM (48 KB min) -- File copy buffer

2. Editor module of CM_FILER running:

|--- 17 KB Kernel
|--- 74 KB Overlay
|--- 16,32, or 64 KB for directory lists
|--- 32 KB for editor copy buffer
|--- All remaining allocatable RAM (48 KB min) -- Line pointers,
| file area and line buffer

3. Child Process running under CM_FILER:

|--- 17 KB Kernel
[ --- ]
[ |--- 74 KB Overlay (Left intact if "Large" kernel option in force ]
[ --- ]
|--- All remaining allocatable RAM -- For Child's use

 December 9, 2017  Add comments

Leave a Reply