Alice Campbell [acampbell at SCSENGINEERS.COM] says:
This one traps WDT, MCLR, Cold boot, warm boot, deliberate timeouts, sleep, and other things.Reqires a flag register called mflag here. This router dumps all mystery states to the wmbt routine which initializes everything and puts selected registers on the rs232 output line for analysis.
;; org 0 nop ; goto top ; org 0x004 top call init CLRF PORTA CLRF PORTC clrf PORTB ; clrf mflag ;for debugging purposes especially simulator ;parse the big guys btfsc status,TO ;status,4 GOTO TO1 ;to=1 wmbt or startup GOTO TO0 ;to=0 wdt in sleep or wdt TO0 btfss status,PD ;this actually is used goto wmbt ;to=0 pd=0 reset+clrwdt goto wozat ;to=0 pd=1 wdt TO1 btfss status,PD ;hello? hello? goto main ;to=1 pd=1 powerup goto wmbt ;to=1 pd=0 sleeeeeeeep ;parse out the flags next ;sort of a state machine i guess wotrst btfsc mflag,0 ;mclr+sleeping? not done, dump goto wmbt;zzz ;decrement lsb of sleep or continue t_6 btfsc mflag,6 ;err goes to dump goto wmbt ;dont clear this in wmbt t_7 btfsc mflag,7 ;decrement sleep loop goto woof t_0 btfsc mflag,0 ;main sleep goto zzzz t_2 btfsc mflag,2 ; during readout goto mopup ;restore old address and goto readlp t_1 btfsc mflag,1 ;flag for end of write loop goto disp t_4 btfsc mflag,4 ;setup area goto loopw t_5 btfsc mflag,5 goto loopw dunno goto wmbt ;dont know why were here ;))))))))main starts((((((((
See:
See also: