PDP-11 Chess VI (Belle) By Ken Thompson (1973) ported

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

User avatar
Jim Ablett
Posts: 2481
Joined: Fri Jul 14, 2006 7:56 am
Location: London, England
Full name: Jim Ablett

Re: PDP-11 Chess VI (Belle) By Ken Thompson (1973) ported

Post by Jim Ablett »

Update:
Move encoding indices were sometimes getting reversed causing illegal moves.
Fixed buffer overrun causing heap corruption.
In console mode, board display not being updated between moves.
Fixed console mode play.
Fixed opening book bugs.
Proton link:
https://drive.proton.me/urls/SYXDFSN22W#s412WevZRDVY

Smash link:
https://fromsmash.com/PDP11Chess664JA

Jim.
User avatar
Tibono
Posts: 175
Joined: Sat Aug 01, 2015 6:16 pm
Location: France
Full name: Eric Bonneau

Re: PDP-11 Chess VI (Belle) By Ken Thompson (1973) ported

Post by Tibono »

Thank you, Jim. Much appreciated. :D
Eric
gepasi
Posts: 2
Joined: Sat Jan 17, 2026 6:03 am
Full name: Pedro Mendes

Re: PDP-11 Chess VI (Belle) By Ken Thompson (1973) ported

Post by gepasi »

Any chance to fix the promotion bug too?
when it promotes a pawn it sends "e2e1" on the xboard protocol instead of "e2e1q" and GUIs catch this as illegal move
Scientist, programmer, and general computer geek.
User avatar
Jim Ablett
Posts: 2481
Joined: Fri Jul 14, 2006 7:56 am
Location: London, England
Full name: Jim Ablett

Re: PDP-11 Chess VI (Belle) By Ken Thompson (1973) ported

Post by Jim Ablett »

gepasi wrote: Sat May 16, 2026 4:17 am Any chance to fix the promotion bug too?
when it promotes a pawn it sends "e2e1" on the xboard protocol instead of "e2e1q" and GUIs catch this as illegal move
Hi Pedro,

Thanks for the bug report. Fixed now.

Code: Select all

/* ------------------------------------------------------------------ */
/* winboard_send_move — NOW HANDLES PROMOTIONS CORRECTLY             */
/* ------------------------------------------------------------------ */
void winboard_send_move(int move) {
    int from = (move >> 8) & 0xFF;
    int to   =  move       & 0xFF;
    int piece = board[from];

    last_engine_move = move;
    engine_has_moved = 1;

    /* Standard move */
    printf("move %c%c%c%c",
           'a' + (from % 8), '1' + (7 - from / 8),
           'a' + (to   % 8), '1' + (7 - to   / 8));

    /* Append promotion letter if it's a pawn promotion */
    if (piece == -1 && to < 8) {           /* White pawn promotes */
        printf("q");
    }
    else if (piece == 1 && to > 55) {      /* Black pawn promotes */
        printf("q");
    }

    printf("\n");
    fflush(stdout);
}

Update:
Proton link:
https://drive.proton.me/urls/SYXDFSN22W#s412WevZRDVY

Smash link:
https://fromsmash.com/PDP6ChessJA

Jim.