Skip to navigation

Elite on the BBC Micro

Version analysis of U%

This code appears in the following versions (click to see it in the source code):

Code variations between these versions are shown below.

Name: U% Type: Subroutine Category: Keyboard Summary: Clear the key logger
Returns: A A is set to 0

Code variation 1 of 3A variation in the comments only

Tap on a version to expand it, and tap it again to show to all variations.

Cassette, Flight, 6502SP, Electron

Master

Y Y is set to 0
X X is set to 0
.U% LDA #0 \ Set A to 0, as this means "key not pressed" in the \ key logger at KL

Code variation 2 of 3Related to an enhanced feature

Compared to the cassette version, the enhanced versions have an extra key in the key logger, for "P" (which turns off the docking computer).

Tap on a version to expand it, and tap it again to show to all variations.

Cassette, Electron

Flight, 6502SP

Master

LDY #15 \ We want to clear the 15 key logger locations from \ KY1 to KY19, so set a counter in Y
LDY #16 \ We want to clear the 16 key logger locations from \ KY1 to KY20, so set a counter in Y
LDX #17 \ We want to clear the 17 key logger locations from \ KL to KY20, so set a counter in Y
.DKL3

Code variation 3 of 3Specific to an individual platform

Tap on a version to expand it, and tap it again to show to all variations.

Cassette, Flight, 6502SP, Electron

Master

STA KL,Y \ Store 0 in the Y-th byte of the key logger DEY \ Decrement the counter
STA JSTY,X \ Store 0 in the Y-th byte of the key logger DEX \ Decrement the counter
 BNE DKL3               \ And loop back for the next key, until we have just
                        \ KL+1. We don't want to clear the first key logger
                        \ location at KL, as the keyboard table at KYTB starts
                        \ with offset 1, not 0, so KL is not technically part of
                        \ the key logger (it's actually used for logging keys
                        \ that don't appear in the keyboard table, and which
                        \ therefore don't use the key logger)

 RTS                    \ Return from the subroutine

RSS Feed