I'm attempting to get the Bloader to function correctly from a software reset (16F877A). The software reset is apparently functioning correctly, but I'm not getting the handshake with Screamer 1.6 to work.
What registers does Bloader expect to be in a power-up reset state?
I have a timer loop that waits 10 seconds between issuing a reboot command in a monitor and executing the code below. This is to allow time to stop the terminal program and punch the download button on the Screamer, so I can boot new code into a machine without having physical access to that machine's reset button.
The relevant code snippet shows the things I'm doing now...
clrf T1CON ; turn off tmr1
movf RCREG, W ; Trash any received characters
movf RCREG, W
movf RCREG, W
clrf INTCON ; squelch all further interrupts, TMR2 included
bcf STATUS, 7 ; get pointed to bank 0 registers
bcf STATUS, 6
bcf STATUS, 5
GoTo 0h ; reenter bloader
Next, I intend to verify if the Bloader is issuing the 05h signal by using a DSO.
edit - I do not see the ASC <ENQ> character being transmitted, so I'm either a) not entering the Bloader or b) not calling putc correctly. Even though I'm attempting the Bloader branch as an unstructured exit from interrupt service, the circular stack should keep me out of trouble on this. My interrupt service is pointing to bank 0 registers as well.