Tiny Chess 86
Home * Engines * Tiny Chess 86
Tiny Chess 86 (TC86),
a chess program by Jan Kuipers written in 8086 assembly. Tiny Chess 86 played the Second PCW Microcomputer Chess Championship 1979 in London [2], where it ran on an Intel SDK-86 [3] with the program in a 4 KB EPROM only taking 1 KB of RAM, and became tied third. A slightly modified version was used by Murray Lane to play the Microcomputer-Chess Tournament 1980 in San Jose, California, which was the most powerful unit there, but finished last also due to the weak evaluation only based on material - causing weak random opening play [4]. At the first DOCCC 1981 it ran on an Elektuur processor board with an 8088 CPU [5]. A special version of TC86 dubbed "Intellect" was published in Elektuur March 81.
Move Generation
TC86 applies alpha-beta and performs move generation using a 0x88 board representation, as shown in the listing, published in a June 1981 Databus article [6]:
104 ;ROUTINE TO GENERATE ALL LEGAL MOVES 105 ;FOR KNIGHT OR KING 106 062F 8BFB 107 GETDES: MOV DI,BX ;DST=ORG 0631 2EBA14 108 MOV DL,CS:[SI] ;GET DIRECTION 0634 03FA 109 ADD DI,DX ;CALC. SQ. MOVING TO 0636 F7C78800 110 TEST DI,88H ;OFF BOARD? 063A 750C 111 JNZ G4 ;YES 063C 81E77706 112 AND DI,677H ;NO, CLEAN UP DI 0640 803D00 113 CMP BYTE PTR [DI],COL ;WHAT IS ON THAT 0643 7F03 114 JNLE G4 ;OCCUPIED BY MYSELF 0645 E89700 115 CALL MOVPOS ;EMPTY OR OPPONENT 0648 46 116 G4: INC SI ;NEXT DIRECTION 0649 2EF60499 117 TEST BYTE PTR CS:[SI],99H ; END OF TABLE? 064D 75E0 118 JNZ GETDES ;NOT YET 064F EBAE 119 JMP M3 ;YES, STOP IT 120 121 ;ROUTINE TO GENERATE ALL LEGAL MOVES FOR PIECES 122 ;MOVING ALONG A LINE:BISHOP,ROOK AND QUEEN 123 0651 8BFB 124 PATH: MOV DI,BX ;DST=SRC 0653 2E8A14 125 MOV DL,CS:[SI] ;GET DIRECTION 0656 03FA 126 S2: ADD DI,DX ;NEXT SQ. IN THAT DIRECTION 0658 F7C78800 127 TEST DI,88H ;OFF BOARD? 065C 7511 128 JNZ S3 ;YES 065E 81E77706 129 AND DI,677H ;NO, CLEAN UP DI 0662 803D00 130 CMP BYTE PTR [DI],COL ;WHAT IS THERE? 0665 7F03 131 JG S4 ;OCCUPIED BY MYSELF 0667 E89700 132 CALL MOVPOS ;EMPTY OR OPPONENT 066A 803D00 133 S4: CMP BYTE PTR [DI],0 ;IF IT WAS EMPTY, 066D 74E7 134 JNZ S2 ;CONTINUE THAT DIRECTION 066F 46 135 S3: INC SI ;GET NEXT DIRECTION 0670 2EF60499 136 TEST BYTE PTR CS:[SI],99H ;ALL DIRECTIONS DONE? 0674 75DB 137 JNZ PATH ;NO, CONTINUE 0676 EB87 138 S1: JMP M3 ;YES, STOP IT
Selected Games
MCC 1980, round 1, Lane's Tiny Chess 86 vs. Boris 2.5 [7]
[Event "Microcomputer Chess Championship 1980"] [Site " San Jose, CA"] [Date "1980.09.05"] [Round "1"] [White "Lane's Tiny Chess 86"] [Black "Boris 2.5"] [Result "0-1"] 1.a3 Nc6 2.h4 Nf6 3.g3 d5 4.Bh3 Bg4 5.Nf3 Bxh3 6.Rxh3 e5 7.b3 e4 8.Nh2 Qd7 9.g4 Nxg4 10.Nxg4 Qxg4 11.Rh1 Qg2 12.Rf1 Qh3 13.Nc3 O-O-O 14.d3 Qxh4 15.dxe4 d4 16.Nb5 a6 17.Nxd4 Rxd4 18.Bd2 Bd6 19.Rg1 Bf4 20.e3 Bxe3 21.Qg4+ Qxg4 22.Rxg4 Bxd2+ 23.Ke2 Bc3 24.Ra2 f5 25.Rxg7 Rxe4+ 26.Kf3 Bxg7 27.a4 Nb4 28.Ra3 Bb2 29.c3 Bxa3 30.cxb4 Rxb4 31.a5 Rxb3+ 32.Kf4 Rb5 33.f3 Bc1+ 34.Kg3 Rxa5 35.Kh4 Bf4 36.Kh3 Ra2 0-1
Publications
- Editor (1980). A Chess Program & Random Openings. Personal Computing, Vol. 4, No. 12, pp. 75 » Murray Lane
- Jan Kuipers (1981). Tiny Chess 86 - Een schaakprogramma voor de 8088/8086. Databus 06-81, pdf hosted by Hein Veldhuis
External Links
- World's smallest Handmade Chess Set ever, November 18, 2006
- Tiny chess set built between heartbeats, May 01, 2008
- Fidelity Tiny Chess (1991) by Eric van Riet Paap, from The Spacious Mind
- Frank Zappa - City of Tiny Lites, 1979, YouTube Video
- lineup: Frank Zappa, Adrian Belew, Tommy Mars, Peter Wolf, Patrick O'Hearn, Terry Bozzio, Ed Mann
References
- ↑ Image of Intel SDK-86 from Wikipedia
- ↑ Kathe Spracklen (1979). Second Annual European Microcomputer Chess Championship - Results and Authors. ICCA Newsletter, Vol. 2, No. 2
- ↑ Prehistorie van het Nederlandse Computerschaak (Dutch)
- ↑ Editor (1980). A Chess Program & Random Openings. Personal Computing, Vol. 4, No. 12, pp. 75
- ↑ Eerste Nederlands Kampioenschappen Computerschaken (Dutch)
- ↑ Jan Kuipers (1981). Tiny Chess 86 - Een schaakprogramma voor de 8088/8086. Databus 06-81, pdf hosted by Hein Veldhuis
- ↑ Editor (1980). A Chess Program & Random Openings. Personal Computing, Vol. 4, No. 12, pp. 75