ASMPROC Revision 1.00 Copyright 1993 by Gordon Haff and Bit Masons Consulting. All rights reserved. Freeware program. Command: ASMPROC Purpose: Print out procedure lists from your assembly language sources with the line numbers on which they start and the type of the procedure (e.g. near and far) if given. The procedure names within a file can be sorted in alphabetical order or left in unsorted (line number) order. Optionally, include files can also be processed. Source code using Spontaneous Assembly syntax (i.e. .proc directives) is handled automatically. Output is to stdout so can be redirected using standard DOS redirection to a file or printer. Basically, the purpose is to give you a quick way of generating a listing of all your procedures without creating huge assembler cross-reference listings with a lot more information than you need. Syntax: ASMPROC filenames [/i] [/s] [/?] Prereqs: 100% IBM Compatible PC running DOS 3.0 or higher Archive: ASMPR100.ZIP New Feature Summary: This is an initial release. ÚÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÁÄÄÄ¿ ³ (tm) Äij ³o ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ³ ÚÄÄÄÄÄÁÐÄÄ¿ ³ Association of ³ ³ ³ÄÙ Shareware ÀÄÄij o ³ Professionals ÄÄÄÄÄij º ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ÀÄÄÄÄÐÄÄÄÄÙ MEMBER ASMPROC 1.00 2 DISCLAIMER The author hereby disclaims all warranties relating to these products, whether express or implied, including without limitation any implied warranties of merchantability or fitness for a particular purpose. The author cannot and will not be liable for any special, incidental, consequential, indirect or similar damages due to loss of data or any other reason, even if the author or an authorized agent has been advised of the possibility of such damages. In no event shall the liability for any damages ever exceed the price paid for the license to use the software, regardless of the form and/or extent of the claim. The user of this program bears all risk as to the quality and performance of the software. LICENSE ASMPROC is distributed as free, copyrighted software. What this means is that you can use these programs for as long as you like without cost or obligation. What you cannot do is to sell this software or make a profit off of it (except as described below) without the express written permission of the author. ASMPROC is the sole property of Gordon Haff. This program may be freely copied and transferred to individual parties. It may be posted on Bulletin Board systems (BBS) for electronic access as long as NO FEE is charged for its distribution except for private BBS operations that charge a regular user subscription fee. Computer information services such as Compuserve (CIS), Genie, and Byte Information Exchange (BIX) are authorized to post this product for subscriber access. ASMPROC may be distributed on diskette only by 1) disk distributors/vendors who are associate members of the Association of Shareware Professionals (ASP) or 2) users groups which do not charge more than a nominal fee ($5) to cover the costs of distribution. Any changes to these policies must be made in writing by the author. This software is produced by a member of the Association of Shareware Professionals (ASP). The ASP wants to make sure that the shareware principle works for you. If you are unable to resolve a shareware-related problem with an ASP member by contacting the member directly, ASP may be able to help. The ASP Ombudsman can help you resolve a dispute or problem with an ASP member, but does not provide technical support for members' products. Please write to the ASP Ombudsman at 545 Grover Rd., Muskegon, MI 49442-9427 or send a Compuserve message via easyplex to ASP Ombudsman 70007,3536. ASMPROC 1.00 3 TECHNICAL SUPPORT Since this program is a freebie, unlike the shareware programs for which I request a registration fee, I'm not going to make any guarantees here with respect to bug fixes or other technical support. Having said that, I do like my programs to be as bug-free as possible, so feel free to report any problems which you run across. Contact via: Channel 1 BBS (617) 354-8873 Compuserve User ID# 72561,2637 (See Note 1) InterNet/ARPANET 72561.2637@compuserve.com U.S. Mail 3205 Windsor Ridge Dr. Westboro MA 01581 Telephone (508) 898-3321 (after 6pm Eastern time) The above are roughly in order of preference (i.e. how quickly I'm likely to see your message and be able to respond). I check Channel One almost daily and the other electronic services at least weekly in most cases. In addition, I monitor the Interlink and the PCRelay Shareware relays through Channel One. Note 1: When contacting me via Compuserve, please use the Easyplex mail system since I do not regularly monitor any of the IBM SIG message bases. ASMPROC 1.00 4 1.0 Why ASMPROC? -------------------- I write a *lot* of assembler. My Directory Freedom file management utility (recently mentioned in PC Magazine, by the way (*)) is something over 500K of source code spread across a dozen or so files at this point. Being a reasonably organized programmer, this means many, many procedures all calling each other in various and sundry and not always terribly organized ways. It gets HARD to keep track of all that stuff. Now, I know you're saying "BUT... my assembler has all those fancy listing options and yours must too. Why don't you just use it and stop whining !?" Well, yes. I do have a very nice assembler and lots of other toys too from the good folks in Scotts Valley but it really doesn't do what I want in this area. I've concluded that the real purpose of the listing options in TASM and other compilers is to let you generate a volume of listing ten times the original length of your source code with little work. This listing can then be used to convince your boss that you've REALLY been working and not just testing out Nels Anderson's latest game. In other words (to be serious for just a second), the assembler listings are usually FAR more than I want. In practice, I end up grepping or searching a file with LIST to find what I need. But I've often thought it would be real nice to have a simple listing of the procedures that only took a few seconds to generate and could be printed out without laying to waste huge expanses of forest. So I sat down and churned out ASMPROC (in C++, not assembler :-)). (*) OK, so it was the Letters column but you have to start somewhere. [Brought to you by Shameless Plugs, Inc.] ASMPROC 1.00 5 2.0 How does it Work? ------------------------- The syntax is as follows: ASMPROC filenames [/i] [/s] [/?] Switches may be in any order. A - can be used in place of the / for any UNIX junkies out there. Filenames may include wildcards. At a minimum, you have to enter one filename (including extension). Everything else is optional. /i This instructs ASMPROC to process any include files. So if you have a file called FOO.ASM which has lines such as: INCLUDE FOOBAR.ASM INCLUDE BLECH.ASM FOOBAR.ASM and BLECH.ASM will be processed just as if they were included on the command line. /s By default, ASMPROC displays procedures within a file in line number order. This switch instructs ASMPROC to sort instead in procedure order (i.e. alphabetical). /? (or /h or even just ?) Gives a brief help screen. ASMPROC 1.00 6 As an example, the following command line: ASMPROC /s /i TESTASM.ASM > SAMPLE produced this output (in the file SAMPLE). (DFATTR.ASM was specified as an include file within TESTASM.ASM.) ASMPROC 1.0 by Gordon Haff. Copyright 1/93. type ASMPROC -? for help. testasm.asm: init_mem 36 near post_exec 159 near pre_exec 72 near dfattr.asm: archive 28 near attrib 83 near chmod 7 near getmod 17 near hidden 54 near read_only 41 near system 69 near update_attribute 160 near The numbers are the line numbers at which the procedures started; i.e. the line on which the PROC keyword appeared. All the PROC's in these source code files were specified as NEAR. The FAR and AUTO (used in Spontaneous Assembly) keywords are also recognized for procedure types. That's about all there is to it. ASMPROC 1.00 7 3.0 Special Features and Limitations ------------------------------------------ ASMPROC explicitly deals with the following constructs: o Comment blocks using the COMMENT keyword o Spontaneous Assembly .PROC syntax o TASM Ideal Mode INCLUDE "filename" syntax o Standard ; (semicolon) comments This is the part where I get to document my way out of things I didn't feel like doing. ASMPROC cannot handle the following: o \ (Backslash) as a comment character. (By not handle, I mean that the contents after the backslash would be parsed as code rather than a comment. So a line like the following: mov dx,ax \ just like in proc foobar would cause foobar to be interpreted as a procedure at this line. o If you specify include directories from the assembler command-line, ASMPROC obviously has no way of knowing about these directories and hence it won't be able to find your include files ASMPROC did correctly (as far as I can tell) deal with over 500K of my Directory Freedom assembly sources. It is case-insensitive and also generally insensitive to word ordering in addition to explicitly dealing with the .proc keyword used by Spontaneous Assembly. It hasn't been torture-tested with every sort of boundary condition but, as I say, it worked for me across quite a range of files. If you run across other assembler styles which ASMPROC doesn't seem to handle properly and you send me a sample, I may make the appropriate modificatiobs. No guarantee, though, because I'm not making any money off this and ASMPROC is, essentially, an internal development tool. 4.0 Technical and Acknowledgments. -------------------------------------- ASMPROC 1.00 was developed using Borland C++ 3.1 and Container Class libraries. Some string routines that are part of the Tesseract Development System from Innovative Data Concepts were also used. The hardware environment was a homebrew 386 (named Dejah Thoris) based on an AMI 20MHz full-size motherboard with a Micropolis 662MB ESDI disk and Ultrastore 12(F) ESDI controller. It is a dual monitor system with an Orchid Prodesigner 512KB VGA board and an IBM MDA board. It runs DOS 5.0. ASMPROC 1.00 8 5.0 Other Programs by Gordon Haff and Bit Masons Consulting: ----------------------------------------------------------------- Directory Freedom (DF): Offers users a fast, compact alternative to DOS Shells which provides 1) selective file and directory operations; 2) a scrollable environment for examining files and directories; 3) user-defined keys which can operate upon highlighted files (e.g. by defining an editor). All this in a program which takes less than 35KB since it is written in assembler! Easily customized through an external configuration program. A "look- and-feel" similar to PC Mag's DR, but does much more. Now with SmartViewers and many more exciting new features. Shareware: $25 Registration Latest version: 4.60 (DF460.ZIP) the last word: 'the last word' is a quotations trivia game in which 1 to 4 players compete against each other and their own high scores in identifying the source of quotations and completing partial quotes. Most answers are entered free-form and are matched against a set of acceptable responses with a sophisticated pattern-recognition algorithm. 'the last word' runs in text mode -- including on mono displays -- and offers a high level of user configurability. Shareware: $15 Registration Latest version: 1.00 (LWORD100.ZIP) CONVERT: Unit conversion calculator for Windows 3.0. Comes with a data file containing a large number of common (and not so common) conversions in categories such as length, speed, pressure, volume, and time. The data file is a plain ASCII text file so the user may add or delete units to best fit his individual needs. Free, copyrighted software Latest version: 1.0 (CNVRT100.ZIP) ASMPROC 1.00 9 X-Ray Viewers: The X-Ray Viewers provide a scrollable environment for examining the contents of various types of archive files and allows the user to view those contents by piping them to LIST. In other words, you can read a text file contained within, for example, a .ZIP file without extracting the archive. In combination with the SmartViewer functions in DF, the X-Ray viewers make the examination of .ZIP, .ARJ, .LZH, and .ZOO files almost automatic (just highlight a file and press ). "Freeware" but requires the appropriate archive program and LIST to function. Free, copyrighted software Latest revision: 1.10 (XRAY110.ZIP) Name Date (ND) This program can be set to a user-defined function key and will rename the highlighted file to a new name which is derived from the current date. For example, FILENAME.TXT would be renamed to 891015.TXT if the date were Oct 15, 1989. It appends a letter to the base name (e.g. 891015A.TXT, 891015B.TXT, etc.) if the "dated name" already exists. I find this very useful for handling message-base files from BBS's. Version 2.00 adds a great deal of flexibility with command-line switches. Free, copyrighted software Latest revision: 2.0; Archive name: NAMD200.ZIP (ND200.ZIP on Compuserve) MAKETEST: Command-line utility to create test files. Lets you create any number of test files with user-specified names and sizes. Automatically can add characters to avoid duplicate names. This is an easy way to create something like 100 zero-length files. Handy for users or programmers who want to test a program's capabilities. Free, copyrighted software with QB source Latest version: 1.0 (MKTST100.ZIP) These programs and others (Multi-Edit macros for use with Qmail Deluxe, for example) are available on many fine bulletin boards. The latest releases are always available on Channel One. If you just have to get a copy of one or more of these programs and can't find one, however, I can send them out for a nominal media and postage charge. ASMPROC 1.00 10 6.0 History: --------------- Rev. 1.00 Initial Release