This code appears in the following versions (click to see it in the source code):
Code variations between these versions are shown below.
Name: RESET Type: Subroutine Category: Start and end Summary: Reset most variables
Reset our ship and various controls, recharge shields and energy, and then fall through into RES2 to reset the stardust and the ship workspace at INWK. In this subroutine, this means zero-filling the following locations: * Pages &9, &A, &B, &C and &D
* BETA, BET1 - Set pitch to 0 * XC, YC - Set text cursor to (0, 0) * QQ22 - Set hyperspace counters to 0 * ECMA - Turn E.C.M. off
This variation is blank in the Cassette, 6502 Second Processor, Master and Electron versions.
* ALP1, ALP2 - Set roll signs to 0
It also sets QQ12 to &FF, to indicate we are docked, recharges the shields and energy banks, and then falls through into RES2.
This variation is blank in the Disc (flight), Disc (docked), 6502 Second Processor and Master versions.
Other entry points: RES4 Reset the shields and energy banks, then fall through into RES2 to reset the stardust and the ship workspace at INWK
.RESET
.SAL3 STA BETA,X \ Zero the X-th byte after BETA DEX \ Decrement the loop counter BPL SAL3 \ Loop back for the next byte to zero
This variation is blank in the Cassette, Disc (flight), Disc (docked), 6502 Second Processor and Electron versions.
STX JSTGY \ X is now negative - i.e. &FF - so this sets JSTGY to \ &FF to set the joystick Y-channel to the default \ direction
LDX #2 \ We're now going to recharge both shields and the \ energy bank, which live in the three bytes at FSH, \ ASH (FSH+1) and ENERGY (FSH+2), so set a loop counter \ in X for 3 bytes .REL5 STA FSH,X \ Set the X-th byte of FSH to &FF to charge up that \ shield/bank DEX \ Decrement the loop counter BPL REL5 \ Loop back to REL5 until we have recharged both shields \ and the energy bank \ Fall through into RES2 to reset the stardust and ship \ workspace at INWK