home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
assemblr
/
library
/
sampler0
/
strobe.ava
< prev
next >
Wrap
Text File
|
1989-01-13
|
9KB
|
176 lines
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
|