home *** CD-ROM | disk | FTP | other *** search
- TDI Modula-2 Du v2.1wb - By Greg Browne - compiled for 250 files CLI or WB.
-
- A combination of my DirUtil (smoothed down in size and cleaned up) with an
- expansion on (the idea of) the Simple Development Program demo provided
- with TDI's Modula-2 system. It allows you to edit, compile and link your
- programs without all the repetitive typing and works as a full DirUtil.
-
- This version IS my last (famous 'last' words - don't make me eat them
- later, Lord). It does all I want it to do, and I want to move on to other
- things. If someone else fancies it up, bravo. Besides, I finally got the
- Workbench startup to work. No EVERYTHING seems to function properly
- either from CLI or WB.
-
- DISCLAIMER: I take no responsibility for damage or lost files if someone
- is foolish enough to use this on valuable files untested. I am NOT a
- professional programmer and am prone to mistakes like anyone else. I use
- it with no problem, but you may do something differently.
-
- NOTICE: This program is placed in the public domain. Give it away for the
- asking, but don't try to sell it or else.?.?.?
-
- ALERTS: Don't worry if the compiler (2.20a) returns "Modula failed
- returncode 526" or some other such nonsense. If you check, it worked.
- The TDI Simple Development Program does the same thing. That's a COMPILER
- QUIRK. Also, if you don't have your .sym/.lnk files in m2: or the current
- directory, it will fail rather than asking for names, since it is
- NONinteractive.
-
- HELP ???
- I use this with 2.20a. I'm sure it will work with 3.00 (if you have enough
- memory). However, it WON'T compile AND RUN RIGHT on 3.00 - I tried it, and
- unless I am missing something about Gadgets, they don't like to be static.
- At least, I can't find a way to get the structure to recognize the
- IOStringInfo since I am not declaring them dynamically with the new TAG
- field. My Modula book says a CASE variant in a record is undefined if the
- tag is undefined, and how else do you define CASE : INTEGER OF ??? ***
- ANYWAY, change a few structures to pointers as called for in 3.00, and it
- compiles fine, but none of the string gadgets work right. Maybe it's in the
- Strings modules.
-
- =======================
-
- PROGRAM SPECIFIC QUIRKS
-
- (*---------*)
- If you have used DirUtils, operating this should be familiar.
- If not, make yourself a junk disk and try it out. It's easy to learn.
- (*---------*)
-
- Everything is "relative verify-Gadget Up". That means press AND RELEASE
- the left mouse button over a gadget (or name) for it to register. You can
- save some grief by moving the pointer off a gadget without releasing the
- button, and then releasing it in some blank area.
-
- Multi-file actions (see detail below) may be interrupted by pressing the
- mouse button on something. It will stop after the current pass is
- complete.
-
- When doing multi-file execution stuff (ARC,DO,EDIT,LINK,MODULA) the program
- is smart enough to just execute them (NOT RUN - to prevent multiple execute
- disk grinding) unless it is the last (or only) file worked on. Then it will
- RUN >NIL: the command to free up the DirUtil for other things.
-
- Directory reads may be interrupted by clicking the slider while in progress.
- If your directory exceeds 100 (currently) files, you will be notified and
- the first 100 will be used.
-
- Free memory := AvailMem(MemReqSet{MemChip}) + AvailMem(MemReqSet{MemFast});
- and is shown in the title bar.
-
- **NEW**
- To accomodate WB startup (where the cli commands still think they are in
- DF0:, I added full path expansion to all filenames used in commands.
-
- I included my startup-sequence (MyStart.seq needs to be renamed). to show
- how I use it. It will work with 2.20a and 512k memory, but not 3.00 with
- only 512k no matter where you put the t: directory.
-
- ===============
-
- OPERATION NOTES
-
- The screen has 5 major divisions.
-
- 1) The 'window' is the file display area. It is where files are shown for
- selected directories. (It is a gadget)
-
- 2) Above the window are device selection gadgets and the "SWAP". These are
- "one-click-select" gadgets (The "SWAP" button is described below)
-
- 3) Right of the window is a slider for scrolling lists of filenames too long
- to show in a (8 name) window. Above and below the slider are one line at
- a time scrollers.
-
- 4) Right of the slider are the 'BUTTONS'. They are click select functions.
- Their uses are described below in more detail.
-
- 5) Below the 'BUTTONS' are string display areas R,S,D, and M. These are
- for typed input and messages to you. Also see the section below on HIDDEN
- Gadgets.
-
- DEVICE GADGETS: -> df0: df1: df2: dh0: dh1: ram: vd0:
-
- Click the left mouse button on any of these to select a device. It will be
- read and the files displayed in the filewindow.
-
- FILEWINDOW GADGET:
-
- Click over an unselected filename (white on black) and it will be selected
- for inclusion in the multiple-file operations described below.
-
- Click on a selected filename (black on white) to unselect it.
-
- Click on a directory name (orange on black) to select it. A prompt will
- appear in the (M) gadget giving you the option of switching into that
- directory with a second click on top of it. (Clicking anywhere else cancels
- this option). Click on a selected directory (after cancelling entry) to
- unselect it. A click to cancel is not acted on except as a cancel.
-
- NOTE: Only one directory at a time may be selected. Any and/or all
- filenames may be selected.
-
- SLIDER GADGET:
-
- The slider scrolls through long lists of filenames. If the slider is filled
- and will not move, then all files/directories are displayed. The + above
- and - below the slider move one file at a time through the display.
-
- STRING I/O GADGETS: -> R S D M (You may type in all EXCEPT 'M')
-
- 'R' is the Run gadget. It holds arguments to pass to a program being run,
- like a command line tail. This gadget may also be used alone.
-
- 'S' is the Source gadget. It holds the name of the current active device
- or directory. Click a device gadget and the name will replace what's here.
- CLICK-AND-ENTER into this gadget, and your entry will be taken as a new
- device or directory to access. If access to the name fails, the program
- returns to the last active directory (or to ram: if that fails).
-
- 'D' is the Destination gadget. It holds the name of the path (or filename
- in some cases) to be used for certain GADGET functions as described below.
-
- 'M' is the Message gadget. It will display messages and other information
- from time to time. CLICK-AND-ENTER IN THIS GADGET and you get a NoNo. It
- is for one-way (to you) communications.
-
- HIDDEN GADGETS:
-
- Unmarked gadgets are under the 'R' 'S' and 'D' beside the two-way gadgets.
- Clicking 'R' or 'D' blanks out the contents of the gadget, BUT clicking 'S'
- FORCES a directory read of the current 'S' contents.
-
- BUTTON GADGETS: (alphabetically - almost)
-
- ARC
- ---
- This is the most complicated gadget to use. It tries to string together
- 'arc' followed by a tail made up of 'Rgadget' + 'Dgadget' + filename.
- If any are empty, they will make spaces (ignored).
-
- to add to (create too) an arc file.
- 'R' => a
- 'D' => Result.arc (the name of the destination file)
- highlighted Joe.exe Bill.doc
-
- This will create Result.arc if new and add Joe.exe and Bill.doc to it
- BUT makes a full load for each highlighted file (sorry).
-
- faster to do this.
- 'R' => a Result.arc Joe.exe Bill.doc (whole tail there)
- 'D' => [empty]
- highlighted => [none]
-
- Fool around with this one. It is powerful, but complicated to explain.
-
- BYTES
- -----
- This will total and display the number of bytes and files for all selected
- files in the window NOT including 512 bytes used per FileInfoBlock.
-
-
- COPY (Multiple files - consecutively)
- ----
- This copies all (any) selected file(s) to the location given in the D
- gadget. THIS MUST NOT BE A FILENAME. The path in D must be to a valid
- device or directory. Since multiple copying may be done, copying to a
- specific filename is not supported.
-
- CPYDEL (Multiple files - consecutively)
- ------
- Same as COPY - except that if copy is successful, it deletes the original
- source file. If interrupted, the DELETE part is still done on the last
- copied file.
-
- DELETE (Multiple files - consecutively)
- ------
- FILE delete function. You'll get a CONFIRM message. Click DELETE again, and
- any (all) files currently highlighted will be deleted. The 'M' gadget will
- show progress, and the deletion may be stopped by clicking the left mouse
- button on any gadget (or in the filewindow).
-
- DELDIR
- ------
- Delete the currently highlighted directory. To work, the directory must be
- selected, entry to it cancelled, and IT MUST BE EMPTY. This command has to
- be confirmed with another click on DELDIR.
-
- DO f-R DO R-f (Multiple files - consecutively)
- ------ ------
- These two try to execute the result of sticking together the R gadget and
- the 'selected' filename(s)*. The order of placement depends on which
- gadget you select. If no files are selected, 'DO R-f' will attempt the R
- gadget content by itself. This uses the DOS call EXECUTE (like typing in a
- command at the > prompt).
-
- * KNOW YE - THIS OPTION *DOES* INCLUDE ANY HIGHLIGHTED DIRECTORY NAME
- IN THE ATTEMPT TO STICK TOGETHER R+f OR f+R (My choice).
-
- EDIT (Multiple files - consecutively)
- ----
- This gadget invokes your editor with the selected filename(s) as command
- tails. If no filenames are selected, the editor will be run with no file.
- It expects an editor named 'dme' somewhere in the normal search path. SEE
- PATCHING.
-
- GETDIR
- ------
- There is NO GETDIR. To get a directory, double click on top of the name.
- (See the filewindow description above.)
-
- HPRINT HTYPE PRINT TYPE
- ------ ----- ----- ----
- Display/print files in ascii or hex. Output device for print is PRT: but
- can be patched (see end of this doc).
-
- INFO
- ----
- This reports free space on S and D, (if valid) and the volume name(s).
-
- LINK (Multiple files - consecutively)
- ----
- This will invoke the linker WITH 'O' OPTION ONLY. It will run consecutively
- on any (all) selected files IN ALPHABETIC ORDER (sorry no choice).
-
- MAKDIR
- ------
- Make a new directory named in the D gadget (if valid and not already
- existing). If a complete dev:path is not given, it will be relative to the
- path in S. If successful, the S directory will be re-read in case of
- change. A check is made to insure you are not trying to create a directory
- with an already existing name (or over a file).
-
- MODULA (Multiple files - consecutively)
- ------
- This will invoke the compiler (NO OPTIONS-3.00 people). It will run
- consecutively on any (all) selected files IN ALPHABETIC ORDER (sorry no
- choice).
-
- MOVE (Multiple files - consecutively)
- ----
- Quick rename. The destination (path only-not name) of all selected file(s)
- should be in D. This attempts consecutive renames (between directories not
- devices). Since the files can only drop out of sight, they are eliminated
- from the filewindow without re-reading S.
-
- PARENT ROOT
- ------ ----
- These commands attempt to 'back-up' to the parent or root directory of the
- current 'S' gadget. If they fail (horrors) they returns to the current
- directory (or ram: as a last resort).
-
- RENAME
- ------
- This attempts to rename the FIRST selected file it finds (should be only
- for this) to the NAME given in the D gadget. Since it may be still in the
- same directory, it will re-read the directory afterwards. Wherever feasable,
- MOVE is faster.
-
- RETAG TAG ALL UNTAG
- ----- ------- -----
- Mass selection (or unselection) of all FILENAMES in a window. Some DU's
- call these ALL and CLEAR. RETAG works after multiple file operations to
- reselect any files which were selected before (if they remain now).
-
- SHOW
- ----
- Picture display. Execs "show" (patchable - see end) with the highlighted
- files as command tails.
-
- S->D
- ----
- This command copies the current Source to the Dest gadget.
-
- SWAP
- ----
- These are for two-way swap of S D content. The new S will be sourced as
- though typed in.
-
- PATCHING
- --------
- Changing the editor name:
- Use NewZap to find the only occurrance of 'dme' (no quotes). Change it
- to a null terminated string of your choice. There is space for up to an
- 10 character name.
-
- Changing PRINT output device:
- Use NewZap to find only occurrance of PRT:. It can be changed to any
- valid file or device which can accept output and fit in 4 characters plus
- the null terminator.
-
- Changing SHOW program name:
- Use NewZap to find only occurrance of 'show' (no quotes) with spaces
- behind it. Change to null terminated string of your choice. The other
- 'SHOW' is the gadget text.
-
- Changing MODULA or LINK:
- The lower case occurrance of these two names is the actual one passed to
- the CLI. HOWEVER link always tags a ' o' (blank + optimize) on the end of
- everything. These can be changed, too (if the 'o' is no problem). The
- UPPER CASE occurrance of these words is the gadget text.
-
- OR - modify and recompile the source!
-
-
-