HP OpenVMS Systemsask the wizard |
The Question is: Hi, I am modifying the sample driver for the DRV11W (DMA Interface). I am having a problem where the ISR does not seem to be called if the ATTN line is pulsed within a few microseconds of a DMA transfer completion. I an trying to display a msg on the screen every time the ISR is called to help me debug the problem, but I am unable to do this. Do you have any suggestions? I have tried with the EXE$SENDEVMSG, but I believe that the IPL the ISR is running at is too high for this to work. The Answer is :
The OpenVMS Wizard would normally use a ring buffer accessable (and
accessable at high-IPL and at near-full execution speed) via the UCB.
This buffer would be used to track device activity and any other
debugging-relevent information, and could be dumped out as required.
Alternatively, the following undocumented and unsupported OpenVMS VAX
feature may be of interest:
;++
; IOC$CONBRDCST
; This routine will allow emergency messages to be put on the console
; terminal. Some time later the broadcast will complete, and
; at that time all the necessary post-processing will be done.
; Input:
; R1 = Message length
; R2 = Message address
; Implicit input:
; IPL$_ASTDEL <= CURRENT_IPL
; A dedicated TWP block must immediately preced the message.
; The low bit of the first byte of the TWP is assumed to remain clear
; while it is in use.
; Output:
; None. The contents of R1 .. R5 are preserved across the call.
; Routine value:
; SS$_NORMAL - The broadcast completed successfully.
;--
Here is an example call:
$TTYDEF ;TWP-related symbols
...
.ALIGN QUAD ; TWP must be quadword-aligned
.ENABLE LOCAL_BLOCK
TWP:
.LONG -1 ; Preallocated TWP
.BLKB TTY$K_WB_LENGTH-4
10$: .ASCII <13><10>/%FacNam-Severity-MsgId, Message Text/<13><10>
NEXT_STUFF:
...
MOVAB W^TWP+TTY$K_WB_LENGTH,R2 ; MESSAGE ADDRESS
MOVZWL W^NEXT_STUFF+2,R1 ; MESSAGE LENGTH
JSB G^IOC$CONBRDCST ; OUTPUT THE MESSAGE
80$: MNEGL #1,R0 ; INDICATE FAILURE
BRB 60$
|