What problem does it solve? When writing or debugging ZX Spectrum assembly game code, developers corrupt the screen because the playfield is the attribute file itself — erasing an entity overwrites whatever was underneath, and attribute values like $38 and $10 are ambiguous between ball, paddle, and bricks. This Skill provides the memory map, cell-to-address arithmetic, and drawing rules needed to avoid those bugs. ## Core Features & Use Cases - Memory map reference: Documents the full address layout from ROM through the attribute file ($5800-$5AFF), program image, free RAM, and stack, with warnings that symbol addresses shift on every build. - Attribute byte semantics: Explains FLASH/BRIGHT/PAPER/INK bit layout and why attribute values are ambiguous ($38 is both the ball and a colour-7 brick), requiring position-based entity discrimination. - Cell-to-address routines: Compares the three implementations (PosXY, CalcularAtributo, CRtoATTR) including register clobbering contracts like CalcularAtributo destroying BC. - Use Case: While adding a collision routine, you need to read the cell the ball is about to occupy. This Skill tells you to compute the address as $5800 + row x 32 + column, identify entities by position rather than attribute value, and preserve BC across the conversion call. ## Quick Start Explain how to safely draw and erase an entity on the Spectrum attribute playfield without destroying bricks or the border.