Skip to navigation

Elite on the BBC Micro and NES

Flight: hyp, Removed

[Elite-A, Docked]

Name: hyp, Removed [Show more] Type: Subroutine Category: Flight Summary: Start the hyperspace process
Context: See this subroutine in context in the source code References: No direct references to this subroutine in this source file

Called when "H" or CTRL-H is pressed during flight. Checks the following: * We are in space * We are not already in a hyperspace countdown If CTRL is being held down, we jump to Ghy to engage the galactic hyperdrive, otherwise we check that: * The selected system is not the current system * We have enough fuel to make the jump and if all the pre-jump checks are passed, we print the destination on-screen and start the countdown.
Other entry points: TTX111 Used to rejoin this routine from the call to TTX110
\ --- Mod: Code removed for Elite-A: ------------------> \.hyp \ \ LDA QQ22+1 \ Fetch QQ22+1, which contains the number that's shown \ \ on-screen during hyperspace countdown \ \ ORA QQ12 \ If we are docked (QQ12 = &FF) or there is already a \ BNE zZ+1 \ countdown in progress, then return from the subroutine \ \ using a tail call (as zZ+1 contains an RTS), as we \ \ can't hyperspace when docked, or there is already a \ \ countdown in progress \ \ JSR CTRL \ Scan the keyboard to see if CTRL is currently pressed \ \ BMI Ghy \ If it is, then the galactic hyperdrive has been \ \ activated, so jump to Ghy to process it \ \ LDA QQ11 \ If the current view is 0 (i.e. the space view) then \ BEQ TTX110 \ jump to TTX110, which calls TT111 to set the current \ \ system to the nearest system to (QQ9, QQ10), and jumps \ \ back into this routine at TTX111 below \ \ AND #%11000000 \ If neither bit 6 nor 7 of the view type is set - so \ BEQ zZ+1 \ this is neither the Short-range or Long-range Chart - \ \ then return from the subroutine (as zZ+1 contains an \ \ RTS) \ \ JSR hm \ This is a chart view, so call hm to redraw the chart \ \ crosshairs \ \.TTX111 \ \ \ If we get here then the current view is either the \ \ space view or a chart \ \ LDA QQ8 \ If both bytes of the distance to the selected system \ ORA QQ8+1 \ in QQ8 are zero, return from the subroutine (as zZ+1 \ BEQ zZ+1 \ contains an RTS), as the selected system is the \ \ current system \ \ LDA #7 \ Move the text cursor to column 7, row 22 (in the \ STA XC \ middle of the bottom text row) \ LDA #22 \ STA YC \ \ LDA #0 \ Set QQ17 = 0 to switch to ALL CAPS \ STA QQ17 \ \ LDA #189 \ Print recursive token 29 ("HYPERSPACE ") \ JSR TT27 \ \ LDA QQ8+1 \ If the high byte of the distance to the selected \ BNE TT147 \ system in QQ8 is > 0, then it is definitely too far to \ \ jump (as our maximum range is 7.0 light years, or a \ \ value of 70 in QQ8(1 0)), so jump to TT147 to print \ \ "RANGE?" and return from the subroutine using a tail \ \ call \ \ LDA QQ14 \ Fetch our current fuel level from Q114 into A \ \ CMP QQ8 \ If our fuel reserves are less than the distance to the \ BCC TT147 \ selected system, then we don't have enough fuel for \ \ this jump, so jump to TT147 to print "RANGE?" and \ \ return from the subroutine using a tail call \ \ LDA #'-' \ Print a hyphen \ JSR TT27 \ \ JSR cpl \ Call cpl to print the name of the selected system \ \ \ Fall through into wW to start the hyperspace countdown \ --- End of removed code ----------------------------->