Reset screens are generated when the reset button is pressed (or on power-up) because the SAM ASIC sets most of its internal registers to zero. When the VMPR is set to zero, it can be seen that what should be displayed is a Mode 1 screen, found in page zero of the memory map.
As the CLUT is not altered by reset, the picture will assume whatever palette was set up before the reset occured. The screen remains displayed because the memory refresh and video circuitry in the ASIC are allowed to run constantly when the RESET line goes low.
With careful planning, spectacular and colourful effects can be produced -- the Reset screen has even been used to display a winking SAM robot!
To install a RESET screen (sample code):
ORG HIGH ;this code is assumed to be paged in high set.reset: LD A,32 ;page 0, with RAM in section A OUT (LMPR),A LD HL,reset.screen LD DE,&0000 LD BC,6912 LDIR
And that is really all there is to it. Note: Reset screens overwrite the BASIC system area, and so are not feasible for use with BASIC programs. If reset screens are needed for menu programs, it is usually a good idea to copy the 6912 bytes which will be overwritten to a storage space for safe-keeping, and then to replace it when a return to BASIC has to be made.