Path: news.uh.edu!barrett From: jamie@unx.sas.com (James Cooper) Newsgroups: comp.sys.amiga.reviews Subject: REVIEW: WinkBug Followup-To: comp.sys.amiga.programmer Date: 2 Jul 1994 02:18:50 GMT Organization: The Amiga Online Review Column - ed. Daniel Barrett Lines: 304 Sender: amiga-reviews@math.uh.edu (comp.sys.amiga.reviews moderator) Distribution: world Message-ID: <2v2iqa$elj@masala.cc.uh.edu> Reply-To: jamie@unx.sas.com (James Cooper) NNTP-Posting-Host: karazm.math.uh.edu Keywords: hardware, programming, debugging, commercial Originator: barrett@karazm.math.uh.edu PRODUCT NAME WinkBug BRIEF DESCRIPTION A hardware debugging aid. It has a 2-line by 16-character LCD display for use in showing debugging information. It is built into a 3-position switchbox, so no lost ports! AUTHOR/COMPANY INFORMATION Name: The Puzzle Factory, Inc. Address: P.O. Box 986 Veneta, OR 97487 USA Telephone: Orders: (800) 828-9952 Tech Support: (503) 935-3709 E-mail: InterNet: jlavin@efn.org BIX: jblavin LIST PRICE $54.00 (US) + $5.00 Shipping in the U.S. and Canada. European customers should call for shipping prices. SPECIAL HARDWARE AND SOFTWARE REQUIREMENTS HARDWARE It will not work properly with an Amiga 1000. SOFTWARE None. COPY PROTECTION None. MACHINE USED FOR TESTING Amiga 3000/25, 4 MB Fast RAM, 2 MB Chip RAM. 1 internal 880K floppy. 1 internal HD floppy. Quantum PD210S hard drive. Commodore 1960 Monitor. AmigaDOS 2+ WShell 2.0 replacing the Amiga shell. - also - Amiga 4000/40, 18 MB Fast RAM, 2 MB Chip RAM 1 internal HD floppy. 120 MB IDE hard drive (whatever came with the machine). Commodore 1960 Monitor. AmigaDOS 3+ WShell 2.0 replacing the Amiga shell. INSTALLATION Installation is quite easy. Here are the installation instructions from the "ReadMe" file on the WinkBug diskette: 1. Remove power from your Amiga. 2. Plug one end of the supplied 25-conductor male/male DB25 cable into the parallel port of your Amiga computer. 3. Plug the other end of the cable into the DB25 connector labeled "input/output" on the rear panel of WinkBug. 4. Apply power to the Amiga. 5. Copy "wink.library" from the distribution disk to your LIBS: directory. 6. Turn the knob on the front panel of WinkBug so that it points to the parallel port you wish to use. Turn the knob to point to the word "WinkBug" when you want to use the display. REVIEW One of the first things you might think about WinkBug is the classic "I could have done that." or "I wonder why no one else has done this before?" It is a nicely packaged unit, consisting of a standard 3-position switchbox with a small LCD display embedded in the front panel. The front panel is Black, with Metallic colors for the lettering and the Puzzle Factory logo. Quite aesthetic. The 3 switch positions are marked "A", "B", and "WinkBug". On the back of the unit, one of the DB-25 connectors has been removed (since that's the slot used by the WinkBug circuitry), leaving you 3 places to plug things in - one to your computer, and 2 others for external devices (printer, digitizer, etc.). It's great that WinkBug is in a switchbox, saving you the trouble of finding one yourself. The early Beta version was just a single cable to a box with the LCD display, and it was annoying to turn off the power, swap cables so I could print, turn off power, swap cables to use WinkBug, etc., etc., ad nauseum. Now, for what it does. Basically, its an alternative output device. Sure, it won't take the place of an external terminal, since with that you also have keyboard input, but how many have the extra space (or want to waste it :) for that extra terminal? And how many have the extra terminal in the first place? Also, you don't waste resources, such as paper. And, WinkBug will retain the display as long as you don't turn the power off, so no worries about the output to a window not being seen, or the printer buffer getting dumped before its printed because the printer got a RESET signal when your machine went down. What good is it? Well, that's the hard part to define. It is one of those tools that can sit and collect dust for a long time, but when you need it, it is *indispensable* for finding and fixing a problem! One of the classic problems on the Amiga is debugging a low-level routine, such as a device driver, handler, or interrupt. Some of the current debuggers can now handle the first 2 to varying degrees, but there's still nothing that can correctly handle a time-critical piece of code such as an interrupt. Well, with the low-overhead of the WinkBug code, you could actually print debug info to the WinkBug device, without messing up critical timing for all but the most extreme cases! Finally... about the only thing that would be better would be an actual hardware debugger (state analyzers, anyone?). Since it is reasonably transparent to the system, you can also use it for all sorts of other things, as well, as the example code on the WinkBug disk gives the barest sample. Speaking of that code, let's take a look at what's supplied. Alphabetical order is a reasonable approach here, so... ENFORCER Just in case... Enforcer V37.60 is included on the disk. This is *such* a useful tool (Thank You, Mike Sinz (and Bryce Nesbitt before him)!) that it can't hurt to have a few extra copies around. :-) EWINK This is a nifty little piece of code that will intercept Enforcer hits (now why did *that* come up again? :-)) and display some of the most useful info on the WinkBug display. It doesn't block the normal output, so you still get the full report, but... suppose you had the Enforcer output going to a window, and you had a nasty program locking out user input, so you couldn't switch back to *look* at that Enforcer output before the machine crashed. The main info you might need will be sitting right there in the WinkBug display when your machine comes back up! EXAMPLES There are 2 subdirectories here, oddly enough named "Assembly" and "C". They show examples of accessing wink.library in your code. MULTIWINK This is a nifty little program written by Jim Drew & Joe Fenton of Utilities Unlimited. It hooks into Exec's task-switching code to display the PC and task structure addresses for the current running task in the system. Neat to watch your system at work. Useful, as well, as you can now tell the last task that was active when you get one of those "hard" crashes. WINKHANDLER This is a little piece of code you can link into your program that will catch GURU's and dump pertinent info to WinkBug, and Exit your program in a moderately stable state. I wouldn't do much after this point, but it will allow you to shut down any other applications, etc. before a reboot. The code was written by myself, with some help from Jeff Lavin (of The Puzzle Factory). All of the above come with complete source code, almost all in assembly language, using the Macro68 assembler (also sold by The Puzzle Factory). The one exception is, of course, the "C" example in the Examples/C subdirectory. It also comes with the necessary .h, .i, and .fd files to make use of WinkBug from C, Assembly, or anything else that can use a .fd file to find a library. Overall, a complete package, and a very useful debugging tool! There is one restriction, though, and that is that only *one* task (in the entire machine) can call the 'AllocWink()' setup routine in the wink.library. Any number of tasks can *use* the library after it has been set up, but only one can call the setup, and it must be the same task that frees it up when it exits. This could lead to conflicts (such as: what if the task that called AllocWink exits before some other task that is using the library?). However, this is only version 1 of the software, so there could be improvements in this area. In general, it hasn't been enough of a nuisance to want to avoid using WinkBug, but it is something to be aware of. DOCUMENTATION The docs consist of the "ReadMe" and "wink.doc" files in the root of the disk, and a few other ".doc" files scattered through various subdirectories. These files are reasonably well written, obviously by several different authors, so there are varying styles of grammar, etc. None of it should be hard to understand, except perhaps by the most novice of readers. However, you do need some knowledge of programming on the Amiga before this device would even be useful, so I don't see a problem. LIKES It's neat! First, the last data displayed stays even if the Amiga is reset, so if you have Enforcer hit info there, it isn't lost. Also, just watching the task-switch code in action can be fun, since you will see that the machine is, indeed, constantly doing *something* in the background.... :-) It is one of those devices that you don't necessarily see a need for, until you use it for a bit, then you wonder how you ever got along without it! Kind of like multitasking.... DISLIKES AND SUGGESTIONS The only dislike I have is the restriction that only one program can call the AllocWink() routine. I usually have several programs in a state of flux, and it would be nice to leave the debugging code in, just in case. With the current setup, I either have to recompile my code *without* WinkBug support (or, at least, without the AllocWink() call), or make sure no more than one is running at a time. This also means I can't run any of the supplied utilities (such as EWink), and also have an AllocWink() call in my program. COMPARISON TO OTHER SIMILAR PRODUCTS I don't know of any other products quite like this one. It is small, easy to use, and could even come in handy for remote debugging... and it is cheap enough that if someone was having a problem you couldn't track down, you could send them a WinkBug and a version of your program with WinkBug support in it, and tell 'em how to find the info you need. The cheap part comes in when the Post Office loses the package during shipment... :-) BUGS I didn't find any. VENDOR SUPPORT I have talked to Jeff Lavin many times in the past. He is a reasonable person and has always been helpful when I've had a problem. The only association I have with The Puzzle Factory is as a long-time customer, and a Beta tester for some of their products (and, I wrote the GURU-catcher code and docs on the WinkBug disk... :-)). WARRANTY 90 days on materials and workmanship. CONCLUSIONS This is a great little toy. I'd have to rate it 4.5 out of 5 stars. Remove the one restriction (its only an annoyance, but it gets in the way), and I'd take it up to 5 out of 5. COPYRIGHT NOTICE From the "ReadMe" file on the WinkBug diskette: "WinkBug and Wink Display are trademarks of The Puzzle Factory, Inc. Amiga is a registered trademark of Commodore-Amiga, Inc. "The design of the Wink Display, the WinkBug documentation, the wink.library and all software supplied with WinkBug, except as otherwise noted, are copyrighted by The Puzzle Factory, Inc." This review is hereby declared Public Domain. Who else would want to claim it, anyway? --- Daniel Barrett, Moderator, comp.sys.amiga.reviews Send reviews to: amiga-reviews-submissions@math.uh.edu Request information: amiga-reviews-requests@math.uh.edu Moderator mail: amiga-reviews@math.uh.edu Anonymous ftp site: math.uh.edu, in /pub/Amiga/comp.sys.amiga.reviews