Victor R. Volkman received a BS in Computer Science from Michigan Technological University. He has been a frequent contributor to C/C++ Users Journal since 1987. He is currently employed as Senior Analyst at H.C.I.A. of Ann Arbor, Michigan. He can be reached by dial-in at the HAL 9000 BBS (313) 663-4173 or by Usenet mail to sysop@hal9k.com.
For religious followers of Victor Volkman's CUG column, we have a bit of bad news, but a lot more good news to make up for it. First the bad news: this will be the last installment of the CUG New Releases column in its current form. We will continue to provide semi-annual reports of the latest CUG Library acquisitions, but probably not at the same level of detail as some would like to see.
The good news comes in two pieces: first, the CUG Library is still alive and well, and most volumes are still available for the rock-bottom price of $4.00/diskette + shipping and handling. (We have stopped distributing some of the really early volumes mostly CP/M stuff, or worse. No one has howled.) You can also buy volumes 100 - 429 on a CD-ROM for just $49.95, and we will continue to update the CD-ROM with new submissions twice a year.
The CUG Library is still accepting submissions, and still awarding bonuses for those submissions. If you have some code you want to share with fellow programmers, consider submitting it to the CUG Library. Send submissions to: C Users' Group, 1601 W. 23rd St., Ste. 200, Lawrence, KS 66046.
The second piece of good news is that you have not seen the last of Victor Volkman in these pages. Next month he starts a new, bi-monthly column, which will be sort of a hybrid between CUG New Releases and Sydney Weinstein's (also defunct) On the Networks. Victor will be writing about C and C++ source code that's available all over the world, almost for free that is, on Web sites, ftp sites, and CD-ROMs, to name a few. He will also be providing fairly detailed instructions on how to get the code.
So get yourself on the Internet, or at least get yourself a cheap CD-ROM drive, and watch these pages. mb
New Acquisitions
- VesaTest (CUG #435): demonstrates VESA SVGA graphics, SoundBlaster digital audio, and more.
- INCON (CUG #436): input management library for MS-DOS simplifies validation and input from the keyboard.
- C/C+ Exploration Tools for Windows (CUG #437): a popular C source code analysis tool now packaged in an MS-Windows version.
Updates
- C Exploration Tools for DOS (CUG #391): significant enhancements over previously released version 2.20.
- RECIO (CUG #423): enhanced version of Record-based I/O library for stream style record I/O.
CUG #435: VESATEST
Jason Hughes (Abilene, TX) submits his VESA SVGA graphics demonstration that includes many other programming elements essential to writing MS-DOS games. The graphics demonstrations take you through many fast-moving animations that show off the VESA 640x480x256 color display mode. I was particularly impressed with its speed even on my slow 80386DX-20Mhz CPU. Additional graphics routines show off the virtual paging capabilities of SVGAs with more than 1MB RAM onboard. The CUG Library distribution of VesaTest includes full source code in Borland C++ v3.1 along with MS-DOS executables. VesaTest version 2 (as released on 07/20/94) is immediately available as CUG #435.In addition to fast graphics, VesaTest includes integrated routines for full digitized sound support. This allows playback of both MS-Windows .WAV and SoundBlaster .VOC files. The playback routines use double-buffering and DMA/IRQ detection so that configuration is fully automatic.
Also in this package are mouse routines which intercept mouse interrupts with full support for 2-button and 3-button mice. 2-button users can simulate the middle button by pressing left and right buttons simultaneously. This gives the developer more freedom to use mouse buttons. The latest version also allows automatic mouse acceleration for those mouse drivers that don't yet provide it.
VesaTest doesn't include any documentation other than a brief explanatory README file. However, the comments in the code should be enough to give you a basic idea of what's happening. Hughes has released VesaTest as "tagware," which means that if you use it you are asked to put a tag line in your program's title screen. His notes also indicate he would like to receive postcards in lieu of registration fees.
CUG #436: INCON
Richard Zigler (McBain, MI) submits his INput CONtrol (INCON) library for developing sophisticated data input screens in MS-DOS applications. INCON gives you control over the placement and appearance of input fields, and the type and amount of data that each will accept. Input fields may be alphanumeric, uppercase, integer, or floating-point. The INCON library supports Borland Turbo C 2.01 (or later) and will build Compact, Small, Medium, or Large memory model versions. INCON version 3.1 (as released on 10/08/94) is immediately available as CUG #436.You may pass a string to INCON and specify that it be treated as default input, an input template, or both. Templates may be alpha, numeric, or mixed. You may specify that fields scroll, that they be delimited, that user input be hidden, and that input be returned to your program left- or right-justified or centered in a field whose width and "pad" character you select. A number of reserved edit keys give users of your programs extensive input editing capabilities. Several assembly language string-handling routines are available as part of INCON and in a separate object file.
The basic operation of the program is as follows:
1. The calling routine defines a block of parameters, among which is a far pointer to an I/O buffer.
2. At entry, INCON copies any string in the I/O buffer to an internal work buffer and may then display it as default input or use it to construct an input template, or both.
3. User keyboard entries are examined. INCON acts upon its reserved keys immediately. It returns extended-key codes that it finds in a list provided by the calling routine and cancels the input operation. INCON displays and saves in the work buffer all entries that are appropriate to the field type; it discards all others.
4. If the operation succeeds, INCON copies user input to the I/O buffer, overwriting its previous contents. If it fails or is canceled, INCON discards any user input it has so far gathered.
5. INCON returns a code to the calling routine that indicates input status or whether the user has made a special request.
The INCON documentation consists of a 26-page reference and tutorial manual. The manual appears as an ASCII file formatted out to 66 lines/page. The documentation provides in-depth information on all parameters and data structures you need to use. Additionally, a well-documented demonstration program also makes its easy to learn.
Since Zigler has committed INCON to the public domain, there are no fees required for its use. The CUG Library edition includes full source code in C and ASM files. Demonstration MS-DOS executables are also included.
CUG #437: C Exploration Tools for Windows
C/C++ Exploration Tools for Windows, by Jrgen Mller (Kornwestheim, Germany), includes both his C Function Tree Generator (CFT) and the C Structure Tree Generator (CST). CFT and CST analyse the C/C++ source code of applications of any size with multiple files. CFT and CST are useful to explore new, unknown software and to support reuse, maintenance and re-engineering. By preprocessing, scanning, and analysing the program source code, these programs generate the function call hierarchy (CFT) and the data structure/class (CST) relations. Both programs can handle C and C++ code, CFT can additionally analyse assembler code. The C Exploration Tools for Windows executables (released 09/11/94) are immediately available as CUG volume #437.The C Exploration Tools are shareware and require registration with the author if you decide to use them beyond the 30-day evaluation period. The registration price is $46 U.S. or DM 60 for a single copy. Generous site license discounts with prices as low as $15 are appropriate for corporate use or educational institutions. Registered users of the MS-Windows version automatically receive the Win32s version that can be used with Windows NT or Windows 3.1 and Win32s drivers. Source code for the C Exploration Tools is not available.
The C Exploration Tools for Windows version 1.04 is functionally identical to the C Exploration Tools for MS-DOS version 2.30 (see CUG #391 update below). However, the Windows version also allows you to configure the increasingly complex set of options via a GUI and also captures textual output in a scrolling window. Please note that you must register the MS-DOS and Windows versions separately.
Update to CUG #391: C Exploration Tools for DOS
Version 2.30 of C Exploration Tools for MS-DOS features significant enhancements over the previously released version 2.20. Here are just a few of the changes that Mueller reports:
- The language analysis part has been optimised.
- The "disk write error" message reported when using the -L and -time options has been fixed for option -time.
- An error preventing some include files with relative paths with the -I option has been fixed.
- An error with overwrites of command and file list files with option -G has been fixed.
- The toolset now displays a warning if C++ style comments (//) are found and the -C++ or -// options have not been set.
- This version has better CST typedef recognition.
- Option -noundef: This version ignores undefined functions in the output tree chart.
- The version includes preprocessor options for MS Visual C++ 1.5.
Update to CUG #423: RECIO RECORD BASED I/O
William Pierpoint (Camarillo, CA) submits an update to his comprehensive library for stream-style record I/O. The RECIO library contains more than 50 functions and macros enabling file input where each line becomes a data record, and each record is subdivided into fields. Fields may be either character delimited or column delimited. The learning curve is simplified since many functions are based on analogous counterparts in stdio. RECIO is freeware and is protected by the GNU Public License. RECIO version 2.10 (as released 11/02/94) is immediately available from the CUG Library.Here are some highlights of changes since version 2.00, which was the most recently distributed CUG archive:
- Version 2.10 adds support for new time fields. You can input and output times using either the time_t or struct tm types and in various user specified formats. Corresponding new modules are rgett.c, rputt.c, rcgett.c, and rcputt.c.
Time formats are specified using a subset of the specifiers from the ANSI-C strftime function. Supported specifiers are as follows:
%d - day of month (1-31)
%H - hour from 24-hour clock (0-23)
%m - month (1-12)
%M - minute (0-59)
%s - second (0-61)
%y - year without century (00-99)
%Y - year with century (e.g. 1994)
The default time format is "%m/%d/%y". You can override the format on any record stream with a new format using the rsettmfmt function.- Added new warning macro constant R_WTMFMT.R_WTMFMT indicates that the time data was incomplete (i.e. any element of time format not matched against data). This version also adds new macro constants R_WFAULT and R_EFAULT for use by application specific functions.
- Data written to an output stream can now be written without field and text delimiters. Just set the field and text delimiters to the null character.
- Version 2.04 added new string functions scntrimbegs, scntrimends, and scntrims to the rstr.c file. This version also fixed a minor bug in the _rfldstr function in the rget.c file. Last, the author added new functions rnumfld, rgetfldpos, and rsetfldpos to the rget.c file.
- Version 2.03 eliminated error return values for most functions. This promotes a programming style that makes use of the callback error function as the preferred way to handle errors. For lint users, this reduces the number of warnings.
- Version 2.02 made handling of errno more reliable and more portable. Some Borland C conversion functions clear errno first, some do not. Where errno now is checked after a conversion, version 2.02 cleared errno before conversion. This version also reduced code size of numeric field function modules by one-third, by eliminating the macro emulation of function templates. This version reduced the number of header files from nine to one.
- Version 2.01 fixed bugs in rwarn.c. Warnings were not being cleared or reset correctly.