Tiny Chess 86

From Chessprogramming wiki
Jump to: navigation, search

Home * Engines * Tiny Chess 86

Intel SDK-86 [1]

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
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
                  121            ;ROUTINE TO GENERATE ALL LEGAL MOVES FOR PIECES
                  122            ;MOVING ALONG A LINE:BISHOP,ROOK AND QUEEN
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


External Links

lineup: Frank Zappa, Adrian Belew, Tommy Mars, Peter Wolf, Patrick O'Hearn, Terry Bozzio, Ed Mann


  1. Image of Intel SDK-86 from Wikipedia
  2. Kathe Spracklen (1979). Second Annual European Microcomputer Chess Championship - Results and Authors. ICCA Newsletter, Vol. 2, No. 2
  3. Prehistorie van het Nederlandse Computerschaak (Dutch)
  4. Editor (1980). A Chess Program & Random Openings. Personal Computing, Vol. 4, No. 12, pp. 75
  5. Eerste Nederlands Kampioenschappen Computerschaken (Dutch)
  6. Jan Kuipers (1981). Tiny Chess 86 - Een schaakprogramma voor de 8088/8086. Databus 06-81, pdf hosted by Hein Veldhuis
  7. Editor (1980). A Chess Program & Random Openings. Personal Computing, Vol. 4, No. 12, pp. 75

Up one level