_DEBUGGING REAL-TIME SYSTEMS_ by Joseph Newcomer [LISTING ONE] if debug_events evlen=256 public _event_len public _event_ptr public _event_last public _event_events _event_len dw evlen _event_ptr dw 0 _event_last db 0 _event_events db evlen dup(0) endif newevent macro ev local L1 if debug_events inc _event_ptr cmp _event_ptr,evlen jl L1 mov _event_ptr,0 L1: push bx mov bx,_event_ptr mov _event_events[bx],ev mov _event_events[bx+1],0 mov _event_last,ev pop bx endif endm [LISTING TWO] PUBLIC _cdiv _cdiv dw 0 cval dw 0 _clock proc far ; interrupt entry point ... ; interrupt prolog and setup dec cval ; decrement divisor jle ok ; take interrupt jmp cexit ; clock exit ok: mov ax,_cdiv ; set up for next time mov cval,ax ; ... ... ; body of clock interrupt handler cexit: ... ; epilog code rti ; return endp [LISTING THREE] #pragma check_stack(off) char bpts[50]; void bpt(int n) { if(bpts[n]) _asm{ mov ax,n; int 3; } } [LISTING FOUR] void show_bpts() { register char * where = bpts; _asm { mov ax,where; int 3; } }