home *** CD-ROM | disk | FTP | other *** search
-
-
- April 28, 1987 IBM INTERNAL USE ONLY
-
-
- STROBE: VIEW A MEMORY FIELD AND MONITOR IT FOR CHANGES
-
-
- || January 13, 1989 - when removed, STROBE now releases the memory it
- || has occupied. Also fixed a potential BRS bug at timer routine exit.
-
- | October 24, 1988 - once some technical details not covered in the
- | original AVAIL notice had been covered in STROBE FORUM, the forum
- | became inactive and was sent off to the TOOLS archives. To keep
- | the archived information easily available, I have appended below
- | the forum entries of technical interest. STROBE ASM and COM files
- | have not changed. This AVAIL notice is the only part of the package
- | that has changed. PQ 10/88
-
- STROBE is a resident debugging tool that spots changes to control
- blocks or other memory fields as they occur. STROBE hooks
- hardware interrupt 8 and, each time the timer ticks, updates its
- window display of a user-specified memory field. If the field's
- value differs from its value on the preceding tick, STROBE alerts
- the user by switching the window to a different background color.
-
- To install: STROBE {options}
- options: M use monochrome display
- C use color display
- S synchronize to avoid CGA flicker
- || R remove an active copy of STROBE
-
- I originally wrote STROBE to track down a mysterious change to the
- timer-tick rate while multiple applications were running under
- TopView. The speed of the moving blob on the top line of the
- STROBE window illustrates the timer-tick arrival rate nicely.
- Also, if a copy of STROBE is started in each TopView partition,
- the starts and stops of each timer-tick blob will demonstrate the
- time slice allotted to each partition. I guess this could be made
- to work for other multitasking systems as well.
-
- The idea of monitoring a storage field for value changes and then
- switching the window color came while trying to determine which
- program in my machine was hooking interrupt 21 (the answer: just
- about all of them). For color displays, STROBE starts by
- displaying the monitored field in white characters on a black
- background, then cycles through background colors of red, green
- and magenta as the field changes. For a monochrome display, the
- sequence is normal, reversed, high-intensity and underlined.
-
- As distributed, STROBE monitors changes to the interrupt 21 vector
- as it is hooked by various programs. For a demonstration, start
- STROBE and then fire up TopView, FileCommand, the PC3270 Emulation
- Program, or anything else that hooks interrupt 21.
-
- Writing a front end to define the field to be monitored and the
- size and position of the window would be a major effort, so I am
- providing the source code for modification. Thanks to all the
- tool owners who helped me learn PC Assembler by providing theirs.
-
- * To redefine the window size and position, or the address of
- the memory field you want to monitor, revise the data items on
- page 2 of the assembly listing.
-
- * If the field to be monitored is something other than a 4-byte
- interrupt vector, you'll need to tweak the routines
- Check_Major, Show_Major and Save_Major to allow for it.
-
- * The routines labeled Show_Blob, Show_Count, and Show_Minor can
- be deleted if the information provided by them is of no
- interest.
-
- Remember that STROBE only checks for value changes at each timer
- tick, normally 18.2 times per second. As with the "disco
- lightning" of the same name, you can't be absolutely sure what's
- happening between the flashes. If the memory field you are
- watching is modified but restored to its original value between
- timer ticks, STROBE won't know about it, and neither will you.
-
- I developed and tested STROBE on an 8MHz AT with both monochrome
- and CGA displays. I also ran it briefly on all the other PC and
- PS/2 gear I could get my hands on, without apparent problems.
- STROBE was tested under DOS 3.3 only, but I see no reason why it
- wouldn't run under any DOS version from 2.1 up.
-
- || Once resident, STROBE requires about 1120 bytes of memory. The
- || 'R' option removes the most-recently-loaded copy of STROBE by
- || unhooking it from the timer interrupt chain and freeing its memory.
-
- | <Removed reference to defunct STROBE FORUM>
-
-
-
- Paul Quale - QUALE at BCRVMPC1
-
-
- | ----- STROBE FORUM appended at 15:22:28 on 87/04/30 GMT
- | Subject: Data Displayed
- | I have downloaded the program and I am running it right now.
- | What is being displayed and in what format? Thanks.
- |
- | ----- STROBE FORUM appended at 22:58:49 on 87/04/30 GMT
- | Re: Data Displayed
- |
- | Good question - I should have included that info in the AVAIL, so
- | the demo could be better understood. Here it is, by line number:
- |
- | 1. The blob moving across the screen advances one position each time
- | the timer ticks, normally 18.2 times per second. If it moves faster,
- | your timer has been speeded up by some program. If it doesn't
- | move at all and you're in TopView, the partition that started this
- | copy of STROBE isn't getting any time. If it's not moving and you're
- | *not* in TopView, see (5) below for the bad news.
- |
- | 2. A count (in hex) of timer tick/interrupt-8 entries to STROBE since
- | it was started up. Probably of no interest to anyone but me.
- |
- | 3. The contents, in CS:IP format, of the interrupt 21 vector at location
- | 0000:0084. If this value changes, the color of STROBE's window will
- | change also. The source code must be changed to monitor the field
- | of real interest to you.
- |
- | 4. The same as line 3, only for INT 2Fh instead of for INT 21h. STROBE
- | doesn't do anything special if this value changes. It's
- | included to show, in the source code, how a field of lesser interest
- | can also be displayed.
- |
- | 5. The address, in CS:IP format, of the instruction to which STROBE will
- | return control. Normally this will be the program executing when the
- | timer goes off, and provides a hint at where your machine is spending
- | most of its time. If your machine should ever hang, its final value
- | shows where you've been Recently, but not necessarily where you hung.
- |
- | Probably none of the above are of even the most remote interest to you
- | in debugging the problem you have today. To display your favorite field
- | you'll have to dig into the source. Questions about "how" are welcome,
- | although a close look at the source will show I'm no Assembler expert!
- |
- | Paul Quale - QUALE at BCRVMPC1
- |
- | ----- STROBE FORUM appended at 12:06:17 on 87/05/01 GMT
- | Subject: Data Displayed Answer
- | Thanks for the info. I put in my own values for the int. vectors
- | that I want to monitor. I get multiple Phase Errors on assembly with
- | MASM 1.0. What assembler are you using?
- |
- | ----- STROBE FORUM appended at 15:40:39 on 87/05/04 GMT
- | Subject: Data Displayed Answer
- |
- | I assembled it ok with MASM 2.0.
- |
- | ----- STROBE FORUM appended at 07:53:57 on 87/05/20 GMT
- | Subject: Monitoring other memory locations
- |
- | Patching the memory locations to be monitored on the fly can be very
- | handy for tracking down ill-behaved gremlins and following up clues.
- | It's handy to do this even on the copy resident in memory. Much easier
- | than editing, reassembling, removing and reinstalling, and setting
- | up the whole test environment again.
- |
- | Paul, I'm sending you a copy of the source I have modified, which has
- | the memory addresses to be monitored at a single, patchable location.
- | Thanks for a valuable tool.
- |
- | Kevin McCarty ROLM, Santa Clara
- |
- | ----- STROBE FORUM appended at 21:31:31 on 87/05/26 GMT
- | Re: Upload of STROBE version 1.01 to PCTOOLS
- |
- | I just uploaded version 1.01 of STROBE ASMBIN and STROBE COMBIN,
- | incorporating Kevin McCarty's suggested changes to make the addresses of
- | the memory areas monitored patchable. Thanks, Kevin.
- |
- | Paul Quale
- |
-