The first thing to do is understand what the smallest chess program means. We are not talking about fitting it into something the size of the eye of a needle. We are talking about the smallest amount of actual code required to build a fully-functional chess program that can be played against.
The previous champion was a chess engine that was built almost out of sheer necessity: 1K ZX Chess - a Sinclair ZX81 computer game, which contained 672 bytes of code. They say that necessity is the mother of invention, and this little programming gem fits the bill in the spades.
The Sinclair ZX81 was a pioneering computer that came out in 1981, designed to make it possible to put personal computers in the normal blue-collar homes of the time. To understand the market then, the kings of the heap such as the Apple II retailed for well over US$1000, whereas by contrast the ZX81 cost an incredible £49.95 for the kit, which even today translates to roughly £171 in 2015. This feat wasn't done by using sweat factories in China, but by its brilliant Spartan design, albeit fully functional.
The legendary Sinclair ZX81. Today's Raspberry Pi is a tribute to its minimalism and affordability.
The ZX81 was designed to be small, simple, and above all cheap, using as few components as possible to keep the cost down. Video output was to a television set rather than a dedicated monitor. Programs and data were loaded and saved onto audio tape cassettes. It had only four silicon chips on board and a mere one kilobyte of memory. The machine had no power switch or any moving parts, and used a pressure-sensitive membrane keyboard for manual input. The operating system was Sinclair BASIC.
It was hugely successful, selling more than 1.5 million units, however its limitations required the utmost creativity in software design. You may have noted the one kilobyte of RAM, and thought it was some form of typo. It was not. It literally had one kilobyte, which is one millionth of 1GB.
The original cover of the 1K ZX 81 chess program
The British programmer David Horne managed to create a chess program that fit within those draconian restrictions and in a mere 672 bytes had a working chess program. Understandably, as such restrictions were lifted with the ever-evolving computers, the subsequent focus was more on trying to exploit these newer technologies, and see how far they could go.
This is what a game against 1K ZX81 Chess looked like
Today it is clear that these limits, which at first existed due to floppy disc space, then CDs, then DVDs, no longer exist really. Massive virtual reality quality games that take up dozens of gigabytes of space continue to come out and grow. Coming around to full circle, there is now a movement called 'sizecoding' that challenges programmers to seek to be as efficient as possible in their coding, optimizing not only for speed but sheer code size.
To this day, 34 years later, there are still active forums on the machine and programming it
This is how BootChess eventually came into existence. The French coder Olivier Poudade managed to produce a chess engine in code that can be run on Windows, MacOS and Linux, in just 487 bytes! To grasp how absurdly small that is, just over three imageless Tweets would take up about that much data.
Although some have criticized BootChess for not being able to handle the rule of castling, it must be noted that nor could 1k ZX Chess. On the other hand, 1K ZX chess was also unable to handle pawn promotion into a queen, whereas BootChess can.
This is a screenshot of the BootChess page where the code can be freely studied and copied to try out.
You will note the detailed notes on the right side of the actual code to help understand how it works.
To achieve his goal, Mr Poudade - a member of the Red Sector Inc coding group - had to make the look of his game even more basic than its 1982 predecessor. The board and pieces of BootChess are represented by text alone, with P representing pawns, Q used for the queens and full stops put in the place of empty squares.
The caveats of the claims have been made, and while BootChess is certainly smaller and more functional than its great predecessor, it is nonetheless unable to play according to all the rules, such as en-passant or castling. This is understandable. Mark Lefler, the programmer of Komodo 9, explained, "castling and en-passant take up a lot of code to get right."
So who are the true kings of fully functional minimalism? Only two programs under 2kb today are able to play a game with all the rules, no shortcuts allowed: Tiny Chess and MicroMax.
MicroMax is the strongest of the minatures and will actually give
you a decent game without being a bully. Well worth a try!
MicroMax is programmed by Dutch programmer H.G. Muller, who is also the author of the graphical interface Winboard. MicroMax is exactly 1433 characters long, and can be downloaded at the author's official page. He also provides generous commentary on the challenges and its inner workings. You can also find information at the ChessProgramming Wiki page.
|Books, boards, sets: Chess Niggemann|