Skip to navigation

Elite on the BBC Micro

Version analysis of ZES2

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

Code variations between these versions are shown below.

Name: ZES2 Type: Subroutine Category: Utility routines Summary: Zero-fill a specific page

Code variation 1 of 5A variation in the comments only

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

Cassette, Docked, 6502SP, Master

Flight

Electron

Zero-fill from address (X SC) + Y to (X SC) + &FF.
Zero-fill from address (X SC) to (X SC) + Y.
Zero-fill from address SC(1 0) + Y to SC(1 0) + &FF.
Arguments:

Code variation 2 of 5A variation in the comments only

This variation is blank in the Disc (flight) and Electron versions.

Cassette, Docked, 6502SP, Master

X The high byte (i.e. the page) of the starting point of the zero-fill
Y The offset from (X SC) where we start zeroing, counting

Code variation 3 of 5A variation in the comments only

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

Cassette, Docked, 6502SP, Master, Electron

Flight

up to to &FF
down to 0
SC The low byte (i.e. the offset into the page) of the starting point of the zero-fill Returns: Z flag Z flag is set
.ZES2

Code variation 4 of 5Other (e.g. bug fix, optimisation)

The disc version's flight code has a different ZES2 routine - it still zero-fills a part of a page, but it fills the opposite part of the page to the other versions.

See below for more variations related to this code.

This variation is blank in the Disc (flight) version.

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

Cassette, Docked, 6502SP, Master

Electron

LDA #0 \ Load A with the byte we want to fill the memory block \ with - i.e. zero STX SC+1 \ We want to zero-fill page X, so store this in the \ high byte of SC, so the 16-bit address in SC and \ SC+1 is now pointing to the SC-th byte of page X
LDA #0 \ Load A with the byte we want to fill the memory block \ with - i.e. zero
.ZEL1

 STA (SC),Y             \ Zero the Y-th byte of the block pointed to by SC,
                        \ so that's effectively the Y-th byte before SC

Code variation 5 of 5Other (e.g. bug fix, optimisation)

See variation 4 above for details.

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

Cassette, Docked, 6502SP, Master, Electron

Flight

INY \ Increment the loop counter
DEY \ Decrement the loop counter
 BNE ZEL1               \ Loop back to zero the next byte

 RTS                    \ Return from the subroutine

RSS Feed