Victor R. Volkman received a BS in computer science from Michigan Technological University in 1986. Mr. Volkman is the new Products Editor for The C Users Journal. He is currently employed as software engineer at Cimage Corporation.
MKMK Utility
MKMK (Loch Ness, Inc.) is a utility designed to automate the maintenance of your make files. It can create make files based on exact specifications or simply the contents of a directory. It can also update previously created make files as source code is added or deleted from the system. MKMK is designed to work solely with .c and .asm files. It scans the .c files for #include directives and builds those into dependency lists. MKMK performs a similar service on .include files as used in .asm programs. Additionally, it has special support for the quirks involved in developing MS Windows programs.It is not clear whether MKMK is shareware or not. The only documentation is on diskette and it contains ordering information. In any case, MKMK can be bought from the author for $25.00. This is a small product, only 20 pages of documentation are on the diskette. No printed documentation was provided.
MKMK correctly created a make file for one of my existing projects correctly on the first try. Developers with very large projects would probably find some idosyncracies in their projects which MKMK would be hard pressed to serve. I think its best use is in creating the initial make file for a new project you may have started or an old project you may have inherited.
On the other hand, products such as Polytron's make now include utilities similar to MKMK in their basic system. Additionally, the new integrated environments such as provided by MSC 6.0 and Borland Turbo C also have built-in facilities for this sort of thing.
MKMK Utility v2.0, Loch Ness, Inc., 3700 Colfax Ave. S., Minneapolis, MN 55409. (612) 822-8942; (800) 323-8623.
DIVVY Multitasking Library
The DIVVY library v1.0 from Drumlin is a small but very capable multi-threaded system for DOS. Unlike DESQview, DIVVY is a non-preemptive multitasker. This means that a task remains running until it eventually makes a call to the DIVVY scheduler. The scheduler then restarts the task with next highest priority which is ready to enter the run state. It is up to the application programmer to make sure that no single task monopolizes the CPU.For intertask communication, the DIVVY system supports flags and queues. The "flag" construction is used mostly for managing critical sections, areas of code in which common global variables may be accessed. Typically, one process sets the flag and another process suspends itself until the flag is clear. If the designers had allowed for "counted" flags, then a regular semaphore could have been implemented. The queues are simply pipes through which messages can be sent between tasks. Although queues cannot be named, processes can be addressed by a user-defined name (e.g. spooler). The queues pass pointers to message buffers rather than copies of the message buffers. Both flags and queues can be dynamically allocated and destroyed as desired.
The library itself is quite small (less than 20K) and should add very little overhead to an application program. Both Turbo C v2.0 and MSC v5.0-5.1 support are included in the same package. The library comes only in Small and Large memory models.
The DIVVY manual is a 100-page spiral-bound technical reference. The "Multitasking Concepts" tutorial section is a scant five pages. The remainder of the manual is solid function descriptions. The clarity of the writing together with the simplicity of the design makes up for the lack of an extensive tutorial.
The only thing missing from the DIVVY system is a way for separate DOS programs to interact. All of the threads must be contained within the same executable task. This is really multitasking within a program as opposed to multitasking between programs, as done in DESQview, Omniview, etc.
The DIVVY library appears to be a viable product for non-preemptive multitasking.
DIVVY v1.0 Multi-tasking Library, Drumlin, 1011 Grand Central Ave., Glendale, CA 91201. (919) 244-4600.
Blaise Turbo C Tools V2.0
This is a significant update to the Blaise Turbo C Tools package. Turbo C Tools lists at $149. It is an all-in-one library providing applications with capabilities for window management, menus, help screens, sophisticated data entry, interrupt service routines, hot-key and timer function activation, easy TSR installation, and flexible string handling. Turbo C Tools is provided with source which can be compiled to any memory model desired.The screen functions are all variations on the familiar INT 10H BIOS calls. The window functions support advanced capabilities, such as writing to invisible windows, virtual windows large than the screen, proper handling of overlapping windows.
The menu functions allow horizontal, vertical, two-dimensional (desktop), and Lotus-style menus. Advanced menu features include ghosting, keyboard shortcuts, and three styles of mouse interaction.
The field editing functions enable you to easily add a complete scrollable word processing window to your application. Field editing keys can be assigned to various operations such as delete a word, undo, and move cursor.
The help system includes a special macro-language for describing help screens. The help macro files are compiled into a binary file and indexed for rapid retrieval. Window attributes for each help screen can be individually specified.
The keyboard, mouse, printer, memory, and file handling functions are unsophisticated for the most part. A special keyboard function allows you to re-vector the keyboard interrupt handler.
The Turbo C Tools package provides functions to help you write TSRs. These functions allow you to install TSRs, detect if a TSR has already been installed, uninstall resident TSRs, and set the PSP. The "intervention code" is a highly useful technique for managing the re-entrancy of BIOS and DOS calls for user-written ISRs and TSRs. The intervention code manager also indirectly invokes hot-key and timer activated functions.
The Turbo C Tools package is shipped with six diskettes and a comprehensive 600-page paperback bound manual. The first 150 pages are devoted to tutorial explanation of each of the function groups. The remaining 350 pages is solely devoted to function descriptions. The writing is clear and easy to understand.
The market for Turbo C Tools package is limited only because of its single-vendor support (Borland). Although creating TSRs might the primary use of Turbo C Tools for some developers, it supports text user interface aids (i.e. windows, help screens, edit fields, etc.) useful to a broad range of developers. An added appetizer is that the source code is included with the package.
Blaise Turbo C Tools v2.0, Blaise Computing Inc., 2560 Ninth St. Suite 316, Berkeley, CA 94710. (415) 540-5441.
Menuet
Menuet (Ithaca Street Software) is a graphical user interface construction set for DOS applications. Menuet is shipped with versions for the Turbo C, MSC, and Zortech C/C++ compilers. The list price for Menuet is $350. Menuet runs on top of MetaWINDOW by Metagraphics Software Corp. MetaWINDOW is another graphics library which provides over 200 functions. This list price for metaWINDOW is $250. This means that any device supported by MetaWINDOW is automatically supported by Menuet. The Menuet package adds another 300 functions to the total picture. The combination of MetaWINDOW and Menuet will add 200K to your application.The Menuet reference manual is a 500-page spiral bound book. The first 100 pages is a GUI tutorial along with several sample programs. The tutorial takes the user on a tour of all the parts of the Menuet GUI. Each of the sample programs highlight a different aspect of the GUI such as icon panels or pull-down submenus. Roughly half of the tutorial is devoted to the sample programs and their explanation. The remaining 400 pages of the book is solely devoted to function descriptions.
Menuet also includes a program called the Interface Design Tool. This program is an interactive dialog box creation tool that generates the C code neccessary to activate it.
Some of the GUI elements supported by Menuet are movable/resizable windows, pull-down and bar menus, dialog boxes, data entry forms, scrollable lists, check boxes and radio buttons, icons and icon bars, and button panels.
In addition to GUI functions, there is support for loading and saving graphics images in native file formats of GEM, MS Windows, PC Paintbrush PCX, and First Publisher. Also, screen saving and restoring transparently uses EMS, conventional memory, and disk as needed. Interrupt-driven mouse and keyboard functions are also provided.
The Menuet system takes an object-oriented approach. All the elements of the GUI (menus, check boxes, etc.) are described by a common generic structure. The additional data required to describe the unique characteristics of an element are handled through a tag pointer to element-specific structure.
The Menuet mouse handling does not make good use of the mouse buttons. No distinction is made between left and right buttons. Additionally, the manual recommends completely ignoring the center button on three-button mice.
Font support is also noticably lacking: there is only one font provided for each screen resolution available. Additionaly, presentation-quality aspects such a scalable stroke-fonts and proportional spacing are also not provided.
Since Menuet requires metaWINDOW as a prerequisite, the market will be limited to those already interested in metaWINDOW. The combined cost of both metaWINDOW and Menuet is almost $600, which will eliminate another segment of the market.
Between MS Windows, HP's New Wave, and DRI's GEM environment, there seems to be little need for another "metoo" GUI for DOS. Menuet does not add anything new to the functionality offered by existing GUIs. Furthermore, Menuet does not provide intertask communication and can also only run one application at a time.
Menuet v1.0, Ithaca Street Software, Inc., 1145 Ithaca Dr., Boulder, CO 80303. (303) 494-8865.
PC-Tags
PC-Tags (Moderne Software) is shareware. I was shipped both registered and unregistered copies of version 1.01. The unregistered version is freely distributable and would make a nice addition to the CUG library disks. The DOS registered version costs $34.95, the combined DOS and OS/2 registered version costs $69.95. PC-Tags indexes the functions and structures in your source code so you don't have to remember the file in which each of these is defined.PC-Tags Supports retrieval from many languages including C, Pascal, BASIC, dBASE, Modula-2, and Assembly. PC-Tags knows something of the structure of all of these languages, but does have limitations. PC-Tags supports both explicit and implicit tags. Implicit tags are function and structure definitions that are recognized according to the language type (C, Pascal, etc.). Explicit tags are indexing information manually added by the user. The most common purpose of explicit tags is to tag global variables, which are normally excluded from the implicit tagging. One problem with using explicit tags is that PC-Tags must be run twice in succession in order to pick them up. PC-Tags is not fully cognizant of all C preprocessor constructs, most notably #ifdef, #include, and #define.
The other half of PC-Tags is the Retro code retrieval system. Retro can operate in three modes: invoked from the command-line, invoked as a macro from your editor, or invoked as a resident program. The TSR mode is suitable for editors without macro programming languages (e.g. Wordstar). When loaded as a TSR or an editor macro, Retro can operate on the function name pointed to by your text cursor. A single keypress then brings up the corresponding source file with the function right where it is defined. You can also manually enter the name of the function or structure definition you wish to retrieve.
The manual is 72 pages, staple-bound and paperback-sized. The manual covers installation, managing tag index files, specific hints and limitations of each language environment, and how PC-Tags works with each text editor supported. A small reference section describes the exact file format of the tag files.
If you install PC-Tags you will quickly become hooked on it. I was able to perform my first Retro retrieve literally within minutes of installing it. This product will pay for itself in the time savings alone.
PC-Tags v1.01 Source Code Retrival System, Moderne Software, P.O. Box 3638, Santa Clara, CA 95055-3638. (408) 244-5530.