If you look around, some parts have a lower current when disabled than others. The one shown here is in the 10uA typ/300uA max but there are others spec'd at 1uA. But as Nigel points out it's definitely something to look at.
Since MrDeb uses Swordfish Basic, it takes a little more "work" to get the initialization sequence since module initializers run before the start of the main program.
Note: in Nigel's example the C library runtime startup code will run before main() is called, so you'd have to do a custom startup module there too if you want it to happen fast.
For SF, here's how to do it:
First, create a file that contains the code you want to run. Call it "startup.bas"
Code:
module startup
// define a default enable pin (can be overridden)
#option STARTUP_ONOFF_PIN = PORTA.0
dim onoff_pin as STARTUP_ONOFF_PIN.STARTUP_ONOFF_PIN@
// set IO pin as output high
high(onoff_pin)
end module
Then, in your main program be sure to include startup.bas before all other include files.
This is important, as the initializers are run in the order they're included...
Code:
device = 18F43K22
clock = 32
// change the IO pin option if needed
#option STARTUP_ONOFF_PIN = PORTA.1
include "startup.bas"
// other includes go here...
If you do that then the IO pin will be set high within the first dozen instructions or so.
Set the config settings to disable the Power On Timer and it should startup within 1ms or so of pressing the button.
I'd keep the Brown Out config setting enabled