v0.703: 365 Bytes (292B code, 73B data), thanks to coding optimization proposed by Johan Koelman

ChesSkelet is a micro chess game for ZX Spectrum, maybe the smallest ever. I first thought of ChesSkelet after reading about David Horne's ZX81 1K Chess from 1982 and noticed how amazing it was. After 300 intermediate versions I managed to produce this tiny program for the ZX Spectrum that plays rudimentary chess.

Imagine how small ChesSkelet is: the paragraph above alone needs more memory than ChesSkelet. Do not expect any challenge from it, a 6 year kid could smash it.

You can read more on the story and development in the sections below.

Read before playing:

  • Type your move in coordinate format (i.e. e2e4)
  • Small and Mid versions do not check human moves, so your pieces may just dissappear if the move is not right.
  • Check mate ends the game with message "C - Nonsense in BASIC".
  • If you find any bug (not unlikely) or have any comment, please tweet it @reeagbo.

Site contents

The story. Where this project comes from and similar developments (not available yet).

Chesskelet development. The decisions I made and the solutions adopted.

Assembly code. Latest version code listing and versions history.

Snapshots. ZX Spectrum snapshots in case you want to run it in your emulator.

Thanks to ZXSpin, Notepad++, JSSpeccy and Johan Koelman.

Alex Garcia (Tweeter @reeagbo), Boria Labs 2018-2019.

Code size Supported features
Minimal features and appearance
  • Schematic board
  • White move input
  • Black computer moves (with exceptions: castling, promotion, 2-rank pawn move, en-passant)
  • 1.5 ply search
Minimal features and full graphics
  • All of the above
  • Checkered board
  • Numbered columns and ranks
  • Proper prompt
Full features and appearance
  • All of the above
  • White move check
  • Switch sides
  • Promotion
  • 2-rank pawn move
Unsupported features
  • Under-promotion
  • En-passant
  • Castling
  • Complex rules (stalemate, repetitions draw, 50 moves rule, time control, etc...)
  • Replay