DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ r

⟦e615485c9⟧

    Length: 6778 (0x1a7a)
    Names: »record.c«

Derivation

└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
    └─ ⟦this⟧ »EUUGD11/gnu-31mar87/chess/Xchess/record.c« 

Hex Dump

0x0000…0020 2f 2a 20 54 68 69 73 20 66 69 6c 65 20 63 6f 6e 74 61 69 6e 73 20 63 6f 64 65 20 66 6f 72 20 58   ┆/* This file contains code for X┆
0x0020…0040 2d 43 48 45 53 53 2e 0a 20 20 20 43 6f 70 79 72 69 67 68 74 20 28 43 29 20 31 39 38 36 20 46 72   ┆-CHESS.    Copyright (C) 1986 Fr┆
0x0040…0060 65 65 20 53 6f 66 74 77 61 72 65 20 46 6f 75 6e 64 61 74 69 6f 6e 2c 20 49 6e 63 2e 0a 0a 54 68   ┆ee Software Foundation, Inc.  Th┆
0x0060…0080 69 73 20 66 69 6c 65 20 69 73 20 70 61 72 74 20 6f 66 20 58 2d 43 48 45 53 53 2e 0a 0a 58 2d 43   ┆is file is part of X-CHESS.  X-C┆
0x0080…00a0 48 45 53 53 20 69 73 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20 74 68 65 20 68 6f 70 65 20   ┆HESS is distributed in the hope ┆
0x00a0…00c0 74 68 61 74 20 69 74 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c 0a 62 75 74 20 57 49 54 48   ┆that it will be useful, but WITH┆
0x00c0…00e0 4f 55 54 20 41 4e 59 20 57 41 52 52 41 4e 54 59 2e 20 20 4e 6f 20 61 75 74 68 6f 72 20 6f 72 20   ┆OUT ANY WARRANTY.  No author or ┆
0x00e0…0100 64 69 73 74 72 69 62 75 74 6f 72 0a 61 63 63 65 70 74 73 20 72 65 73 70 6f 6e 73 69 62 69 6c 69   ┆distributor accepts responsibili┆
0x0100…0120 74 79 20 74 6f 20 61 6e 79 6f 6e 65 20 66 6f 72 20 74 68 65 20 63 6f 6e 73 65 71 75 65 6e 63 65   ┆ty to anyone for the consequence┆
0x0120…0140 73 20 6f 66 20 75 73 69 6e 67 20 69 74 0a 6f 72 20 66 6f 72 20 77 68 65 74 68 65 72 20 69 74 20   ┆s of using it or for whether it ┆
0x0140…0160 73 65 72 76 65 73 20 61 6e 79 20 70 61 72 74 69 63 75 6c 61 72 20 70 75 72 70 6f 73 65 20 6f 72   ┆serves any particular purpose or┆
0x0160…0180 20 77 6f 72 6b 73 20 61 74 20 61 6c 6c 2c 0a 75 6e 6c 65 73 73 20 68 65 20 73 61 79 73 20 73 6f   ┆ works at all, unless he says so┆
0x0180…01a0 20 69 6e 20 77 72 69 74 69 6e 67 2e 20 20 52 65 66 65 72 20 74 6f 20 74 68 65 20 58 2d 43 48 45   ┆ in writing.  Refer to the X-CHE┆
0x01a0…01c0 53 53 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 0a 4c 69 63 65 6e 73 65 20 66 6f 72 20 66 75   ┆SS General Public License for fu┆
0x01c0…01e0 6c 6c 20 64 65 74 61 69 6c 73 2e 0a 0a 45 76 65 72 79 6f 6e 65 20 69 73 20 67 72 61 6e 74 65 64   ┆ll details.  Everyone is granted┆
0x01e0…0200 20 70 65 72 6d 69 73 73 69 6f 6e 20 74 6f 20 63 6f 70 79 2c 20 6d 6f 64 69 66 79 20 61 6e 64 20   ┆ permission to copy, modify and ┆
0x0200…0220 72 65 64 69 73 74 72 69 62 75 74 65 0a 58 2d 43 48 45 53 53 2c 20 62 75 74 20 6f 6e 6c 79 20 75   ┆redistribute X-CHESS, but only u┆
0x0220…0240 6e 64 65 72 20 74 68 65 20 63 6f 6e 64 69 74 69 6f 6e 73 20 64 65 73 63 72 69 62 65 64 20 69 6e   ┆nder the conditions described in┆
0x0240…0260 20 74 68 65 0a 58 2d 43 48 45 53 53 20 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c 69 63 65   ┆ the X-CHESS General Public Lice┆
0x0260…0280 6e 73 65 2e 20 20 20 41 20 63 6f 70 79 20 6f 66 20 74 68 69 73 20 6c 69 63 65 6e 73 65 20 69 73   ┆nse.   A copy of this license is┆
0x0280…02a0 0a 73 75 70 70 6f 73 65 64 20 74 6f 20 68 61 76 65 20 62 65 65 6e 20 67 69 76 65 6e 20 74 6f 20   ┆ supposed to have been given to ┆
0x02a0…02c0 79 6f 75 20 61 6c 6f 6e 67 20 77 69 74 68 20 58 2d 43 48 45 53 53 20 73 6f 20 79 6f 75 0a 63 61   ┆you along with X-CHESS so you ca┆
0x02c0…02e0 6e 20 6b 6e 6f 77 20 79 6f 75 72 20 72 69 67 68 74 73 20 61 6e 64 20 72 65 73 70 6f 6e 73 69 62   ┆n know your rights and responsib┆
0x02e0…0300 69 6c 69 74 69 65 73 2e 20 20 49 74 20 73 68 6f 75 6c 64 20 62 65 20 69 6e 20 61 0a 66 69 6c 65   ┆ilities.  It should be in a file┆
0x0300…0320 20 6e 61 6d 65 64 20 43 4f 50 59 49 4e 47 2e 20 20 41 6d 6f 6e 67 20 6f 74 68 65 72 20 74 68 69   ┆ named COPYING.  Among other thi┆
0x0320…0340 6e 67 73 2c 20 74 68 65 20 63 6f 70 79 72 69 67 68 74 20 6e 6f 74 69 63 65 0a 61 6e 64 20 74 68   ┆ngs, the copyright notice and th┆
0x0340…0360 69 73 20 6e 6f 74 69 63 65 20 6d 75 73 74 20 62 65 20 70 72 65 73 65 72 76 65 64 20 6f 6e 20 61   ┆is notice must be preserved on a┆
0x0360…0380 6c 6c 20 63 6f 70 69 65 73 2e 20 20 2a 2f 0a 0a 0a 2f 2a 20 52 43 53 20 49 6e 66 6f 3a 20 24 52   ┆ll copies.  */   /* RCS Info: $R┆
0x0380…03a0 65 76 69 73 69 6f 6e 3a 20 31 2e 34 20 24 20 6f 6e 20 24 44 61 74 65 3a 20 38 36 2f 31 31 2f 32   ┆evision: 1.4 $ on $Date: 86/11/2┆
0x03a0…03c0 33 20 31 37 3a 31 38 3a 32 30 20 24 0a 20 2a 20 20 20 20 20 20 20 20 20 20 20 24 53 6f 75 72 63   ┆3 17:18:20 $  *           $Sourc┆
0x03c0…03e0 65 3a 20 2f 75 73 65 72 73 2f 66 61 75 73 74 75 73 2f 78 63 68 65 73 73 2f 52 43 53 2f 72 65 63   ┆e: /users/faustus/xchess/RCS/rec┆
0x03e0…0400 6f 72 64 2e 63 2c 76 20 24 0a 20 2a 20 43 6f 70 79 72 69 67 68 74 20 28 63 29 20 31 39 38 36 20   ┆ord.c,v $  * Copyright (c) 1986 ┆
0x0400…0420 57 61 79 6e 65 20 41 2e 20 43 68 72 69 73 74 6f 70 68 65 72 2c 20 55 2e 20 43 2e 20 42 65 72 6b   ┆Wayne A. Christopher, U. C. Berk┆
0x0420…0440 65 6c 65 79 20 43 41 44 20 47 72 6f 75 70 0a 20 2a 09 50 65 72 6d 69 73 73 69 6f 6e 20 69 73 20   ┆eley CAD Group  * Permission is ┆
0x0440…0460 67 72 61 6e 74 65 64 20 74 6f 20 64 6f 20 61 6e 79 74 68 69 6e 67 20 77 69 74 68 20 74 68 69 73   ┆granted to do anything with this┆
0x0460…0480 20 63 6f 64 65 20 65 78 63 65 70 74 20 73 65 6c 6c 20 69 74 0a 20 2a 09 6f 72 20 72 65 6d 6f 76   ┆ code except sell it  * or remov┆
0x0480…04a0 65 20 74 68 69 73 20 6d 65 73 73 61 67 65 2e 0a 20 2a 0a 20 2a 20 44 65 61 6c 20 77 69 74 68 20   ┆e this message.  *  * Deal with ┆
0x04a0…04c0 72 65 63 6f 72 64 69 6e 67 20 6d 6f 76 65 73 2e 0a 20 2a 2f 0a 0a 23 69 6e 63 6c 75 64 65 20 22   ┆recording moves.  */  #include "┆
0x04c0…04e0 78 63 68 65 73 73 2e 68 22 0a 0a 23 64 65 66 69 6e 65 20 73 6d 61 72 74 61 73 73 0a 0a 62 6f 6f   ┆xchess.h"  #define smartass  boo┆
0x04e0…0500 6c 20 72 65 63 6f 72 64 5f 65 6e 67 6c 69 73 68 20 3d 20 74 72 75 65 3b 0a 63 68 61 72 20 2a 72   ┆l record_english = true; char *r┆
0x0500…0520 65 63 6f 72 64 5f 66 69 6c 65 20 3d 20 44 45 46 5f 52 45 43 4f 52 44 5f 46 49 4c 45 3b 0a 69 6e   ┆ecord_file = DEF_RECORD_FILE; in┆
0x0520…0540 74 20 6d 6f 76 65 6e 75 6d 20 3d 20 30 3b 0a 62 6f 6f 6c 20 73 61 76 65 66 6c 61 67 20 3d 20 74   ┆t movenum = 0; bool saveflag = t┆
0x0540…0560 72 75 65 3b 20 2f 2a 20 55 6e 74 69 6c 20 69 74 27 73 20 64 65 62 75 67 67 65 64 20 2e 2e 2e 20   ┆rue; /* Until it's debugged ... ┆
0x0560…0580 66 61 6c 73 65 3b 2a 2f 0a 0a 73 74 61 74 69 63 20 63 68 61 72 20 2a 63 6f 6c 6e 61 6d 65 73 5b   ┆false;*/  static char *colnames[┆
0x0580…05a0 5d 20 3d 20 7b 20 22 71 72 22 2c 20 22 71 6e 22 2c 20 22 71 62 22 2c 20 22 71 22 2c 20 22 6b 22   ┆] = { "qr", "qn", "qb", "q", "k"┆
0x05a0…05c0 2c 20 22 6b 62 22 2c 20 22 6b 6e 22 2c 20 22 6b 72 22 20 7d 20 3b 0a 73 74 61 74 69 63 20 63 68   ┆, "kb", "kn", "kr" } ; static ch┆
0x05c0…05e0 61 72 20 2a 70 63 6e 61 6d 65 73 5b 5d 20 3d 20 7b 20 22 50 22 2c 20 22 52 22 2c 20 22 4e 22 2c   ┆ar *pcnames[] = { "P", "R", "N",┆
0x05e0…0600 20 22 42 22 2c 20 22 51 22 2c 20 22 4b 22 20 7d 20 3b 0a 0a 73 74 61 74 69 63 20 63 68 61 72 20   ┆ "B", "Q", "K" } ;  static char ┆
0x0600…0620 2a 6d 6f 76 65 73 74 72 69 6e 67 28 29 3b 0a 73 74 61 74 69 63 20 63 68 61 72 20 2a 74 73 74 72   ┆*movestring(); static char *tstr┆
0x0620…0640 69 6e 67 28 29 3b 0a 73 74 61 74 69 63 20 46 49 4c 45 20 2a 62 61 63 6b 75 70 3b 0a 0a 23 64 65   ┆ing(); static FILE *backup;  #de┆
0x0640…0660 66 69 6e 65 20 52 45 43 4f 52 44 5f 48 45 41 44 45 52 09 22 06 31 20 20 20 20 58 43 68 65 73 73   ┆fine RECORD_HEADER " 1    XChess┆
0x0660…0680 20 47 61 6d 65 20 52 65 63 6f 72 64 06 30 5c 6e 5c 6e 22 0a 0a 76 6f 69 64 0a 72 65 63 6f 72 64   ┆ Game Record 0\n\n"  void record┆
0x0680…06a0 5f 69 6e 69 74 28 77 69 6e 29 0a 09 77 69 6e 64 61 74 61 20 2a 77 69 6e 3b 0a 7b 0a 09 69 6e 74   ┆_init(win)  windata *win; {  int┆
0x06a0…06c0 20 69 3b 0a 0a 09 69 20 3d 20 58 53 74 72 69 6e 67 57 69 64 74 68 28 52 45 43 4f 52 44 5f 48 45   ┆ i;   i = XStringWidth(RECORD_HE┆
0x06c0…06e0 41 44 45 52 2c 20 77 69 6e 2d 3e 6d 65 64 69 75 6d 2c 20 30 2c 20 30 29 3b 0a 09 69 20 3d 20 28   ┆ADER, win->medium, 0, 0);  i = (┆
0x06e0…0700 34 30 20 2a 20 77 69 6e 2d 3e 73 6d 61 6c 6c 2d 3e 77 69 64 74 68 20 2d 20 69 20 2a 20 77 69 6e   ┆40 * win->small->width - i * win┆
0x0700…0720 2d 3e 6d 65 64 69 75 6d 2d 3e 77 69 64 74 68 29 20 2f 0a 09 09 09 77 69 6e 2d 3e 6d 65 64 69 75   ┆->medium->width) /    win->mediu┆
0x0720…0740 6d 2d 3e 77 69 64 74 68 20 2f 20 32 3b 0a 09 54 78 74 47 72 61 62 28 77 69 6e 2d 3e 72 65 63 77   ┆m->width / 2;  TxtGrab(win->recw┆
0x0740…0760 69 6e 2c 20 22 78 63 68 65 73 73 22 2c 20 77 69 6e 2d 3e 73 6d 61 6c 6c 2c 20 77 69 6e 2d 3e 74   ┆in, "xchess", win->small, win->t┆
0x0760…0780 65 78 74 62 61 63 6b 2e 70 69 78 65 6c 2c 0a 09 09 09 77 69 6e 2d 3e 74 65 78 74 63 6f 6c 6f 72   ┆extback.pixel,    win->textcolor┆
0x0780…07a0 2e 70 69 78 65 6c 2c 20 77 69 6e 2d 3e 63 75 72 73 6f 72 63 6f 6c 6f 72 2e 70 69 78 65 6c 29 3b   ┆.pixel, win->cursorcolor.pixel);┆
0x07a0…07c0 0a 09 54 78 74 41 64 64 46 6f 6e 74 28 77 69 6e 2d 3e 72 65 63 77 69 6e 2c 20 31 2c 20 77 69 6e   ┆  TxtAddFont(win->recwin, 1, win┆
0x07c0…07e0 2d 3e 6d 65 64 69 75 6d 2c 20 77 69 6e 2d 3e 74 65 78 74 63 6f 6c 6f 72 2e 70 69 78 65 6c 29 3b   ┆->medium, win->textcolor.pixel);┆
0x07e0…0800 0a 09 66 6f 72 20 28 3b 20 69 20 3e 20 30 3b 20 69 2b 2b 29 0a 09 09 54 78 74 57 72 69 74 65 53   ┆  for (; i > 0; i++)   TxtWriteS┆
0x0800…0820 74 72 28 77 69 6e 2d 3e 72 65 63 77 69 6e 2c 20 22 20 22 29 3b 0a 09 54 78 74 57 72 69 74 65 53   ┆tr(win->recwin, " ");  TxtWriteS┆
0x0820…0840 74 72 28 77 69 6e 2d 3e 72 65 63 77 69 6e 2c 20 52 45 43 4f 52 44 5f 48 45 41 44 45 52 29 3b 0a   ┆tr(win->recwin, RECORD_HEADER); ┆
0x0840…0860 09 0a 09 69 66 20 28 73 61 76 65 66 6c 61 67 29 20 7b 0a 09 09 69 66 20 28 21 28 62 61 63 6b 75   ┆   if (saveflag) {   if (!(backu┆
0x0860…0880 70 20 3d 20 66 6f 70 65 6e 28 72 65 63 6f 72 64 5f 66 69 6c 65 2c 20 22 77 22 29 29 29 20 7b 0a   ┆p = fopen(record_file, "w"))) { ┆
0x0880…08a0 09 09 09 70 65 72 72 6f 72 28 72 65 63 6f 72 64 5f 66 69 6c 65 29 3b 0a 09 09 09 73 61 76 65 66   ┆   perror(record_file);    savef┆
0x08a0…08c0 6c 61 67 20 3d 20 66 61 6c 73 65 3b 0a 09 09 7d 20 65 6c 73 65 20 7b 0a 09 09 09 66 70 72 69 6e   ┆lag = false;   } else {    fprin┆
0x08c0…08e0 74 66 28 62 61 63 6b 75 70 2c 20 22 58 20 43 68 65 73 73 20 2d 2d 20 25 73 5c 6e 22 2c 20 64 61   ┆tf(backup, "X Chess -- %s\n", da┆
0x08e0…0900 74 65 73 74 72 69 6e 67 28 29 29 3b 0a 09 09 09 69 66 20 28 64 69 73 70 6e 61 6d 65 32 29 0a 09   ┆testring());    if (dispname2)  ┆
0x0900…0920 09 09 09 66 70 72 69 6e 74 66 28 62 61 63 6b 75 70 2c 20 22 5c 74 57 68 69 74 65 20 6f 6e 20 25   ┆   fprintf(backup, "\tWhite on %┆
0x0920…0940 73 2c 20 62 6c 61 63 6b 20 6f 6e 20 25 73 5c 6e 22 2c 20 0a 09 09 09 09 09 09 64 69 73 70 6e 61   ┆s, black on %s\n",        dispna┆
0x0940…0960 6d 65 31 2c 20 64 69 73 70 6e 61 6d 65 32 29 3b 0a 09 09 09 65 6c 73 65 0a 09 09 09 09 66 70 72   ┆me1, dispname2);    else     fpr┆
0x0960…0980 69 6e 74 66 28 62 61 63 6b 75 70 2c 20 22 5c 74 47 61 6d 65 20 70 6c 61 79 65 64 20 6f 6e 20 25   ┆intf(backup, "\tGame played on %┆
0x0980…09a0 73 5c 6e 22 2c 0a 09 09 09 09 09 09 64 69 73 70 6e 61 6d 65 31 29 3b 0a 09 09 09 66 70 72 69 6e   ┆s\n",       dispname1);    fprin┆
0x09a0…09c0 74 66 28 62 61 63 6b 75 70 2c 20 22 5c 74 25 73 5c 6e 22 2c 20 72 65 63 6f 72 64 5f 65 6e 67 6c   ┆tf(backup, "\t%s\n", record_engl┆
0x09c0…09e0 69 73 68 20 3f 20 22 65 6e 67 6c 69 73 68 22 20 3a 0a 09 09 09 09 09 22 61 6c 67 65 62 72 61 69   ┆ish ? "english" :      "algebrai┆
0x09e0…0a00 63 22 29 3b 0a 09 09 09 66 66 6c 75 73 68 28 62 61 63 6b 75 70 29 3b 0a 09 09 7d 0a 09 7d 0a 0a   ┆c");    fflush(backup);   }  }  ┆
0x0a00…0a20 09 6d 6f 76 65 6e 75 6d 20 3d 20 30 3b 0a 09 72 65 74 75 72 6e 3b 0a 7d 0a 0a 76 6f 69 64 0a 72   ┆ movenum = 0;  return; }  void r┆
0x0a20…0a40 65 63 6f 72 64 5f 72 65 73 65 74 28 29 0a 7b 0a 09 58 53 65 74 44 69 73 70 6c 61 79 28 77 69 6e   ┆ecord_reset() {  XSetDisplay(win┆
0x0a40…0a60 31 2d 3e 64 69 73 70 6c 61 79 29 3b 0a 09 54 78 74 57 72 69 74 65 53 74 72 28 77 69 6e 31 2d 3e   ┆1->display);  TxtWriteStr(win1->┆
0x0a60…0a80 72 65 63 77 69 6e 2c 20 22 5c 6e 5c 6e 06 31 20 20 20 20 4e 65 77 20 47 61 6d 65 06 30 5c 6e 5c   ┆recwin, "\n\n 1    New Game 0\n\┆
0x0a80…0aa0 6e 22 29 3b 0a 09 69 66 20 28 21 6f 6e 65 62 6f 61 72 64 29 20 7b 0a 09 09 58 53 65 74 44 69 73   ┆n");  if (!oneboard) {   XSetDis┆
0x0aa0…0ac0 70 6c 61 79 28 77 69 6e 32 2d 3e 64 69 73 70 6c 61 79 29 3b 0a 09 09 54 78 74 57 72 69 74 65 53   ┆play(win2->display);   TxtWriteS┆
0x0ac0…0ae0 74 72 28 77 69 6e 32 2d 3e 72 65 63 77 69 6e 2c 20 22 5c 6e 5c 6e 06 31 20 20 20 20 4e 65 77 20   ┆tr(win2->recwin, "\n\n 1    New ┆
0x0ae0…0b00 47 61 6d 65 06 30 5c 6e 5c 6e 22 29 3b 0a 09 7d 0a 09 6d 6f 76 65 6e 75 6d 20 3d 20 30 3b 0a 09   ┆Game 0\n\n");  }  movenum = 0;  ┆
0x0b00…0b20 69 66 20 28 73 61 76 65 66 6c 61 67 29 20 7b 0a 09 09 66 70 72 69 6e 74 66 28 62 61 63 6b 75 70   ┆if (saveflag) {   fprintf(backup┆
0x0b20…0b40 2c 20 22 5c 6e 5c 6e 4e 65 77 20 47 61 6d 65 5c 6e 5c 6e 22 29 3b 0a 09 09 66 66 6c 75 73 68 28   ┆, "\n\nNew Game\n\n");   fflush(┆
0x0b40…0b60 62 61 63 6b 75 70 29 3b 0a 09 7d 0a 09 72 65 74 75 72 6e 3b 0a 7d 0a 0a 76 6f 69 64 0a 72 65 63   ┆backup);  }  return; }  void rec┆
0x0b60…0b80 6f 72 64 5f 65 6e 64 28 73 29 0a 09 63 68 61 72 20 2a 73 3b 0a 7b 0a 09 63 68 61 72 20 62 75 66   ┆ord_end(s)  char *s; {  char buf┆
0x0b80…0ba0 5b 42 53 49 5a 45 5d 3b 0a 0a 09 73 70 72 69 6e 74 66 28 62 75 66 2c 20 22 5c 6e 25 73 5c 6e 22   ┆[BSIZE];   sprintf(buf, "\n%s\n"┆
0x0ba0…0bc0 2c 20 73 29 3b 0a 09 58 53 65 74 44 69 73 70 6c 61 79 28 77 69 6e 31 2d 3e 64 69 73 70 6c 61 79   ┆, s);  XSetDisplay(win1->display┆
0x0bc0…0be0 29 3b 0a 09 54 78 74 57 72 69 74 65 53 74 72 28 77 69 6e 31 2d 3e 72 65 63 77 69 6e 2c 20 73 29   ┆);  TxtWriteStr(win1->recwin, s)┆
0x0be0…0c00 3b 0a 09 69 66 20 28 21 6f 6e 65 62 6f 61 72 64 29 20 7b 0a 09 09 58 53 65 74 44 69 73 70 6c 61   ┆;  if (!oneboard) {   XSetDispla┆
0x0c00…0c20 79 28 77 69 6e 32 2d 3e 64 69 73 70 6c 61 79 29 3b 0a 09 09 54 78 74 57 72 69 74 65 53 74 72 28   ┆y(win2->display);   TxtWriteStr(┆
0x0c20…0c40 77 69 6e 32 2d 3e 72 65 63 77 69 6e 2c 20 73 29 3b 0a 09 7d 0a 09 69 66 20 28 73 61 76 65 66 6c   ┆win2->recwin, s);  }  if (savefl┆
0x0c40…0c60 61 67 29 20 7b 0a 09 09 66 70 72 69 6e 74 66 28 62 61 63 6b 75 70 2c 20 22 5c 6e 25 73 5c 6e 22   ┆ag) {   fprintf(backup, "\n%s\n"┆
0x0c60…0c80 2c 20 73 29 3b 0a 09 09 66 70 72 69 6e 74 66 28 62 61 63 6b 75 70 2c 20 22 54 69 6d 65 3a 20 77   ┆, s);   fprintf(backup, "Time: w┆
0x0c80…0ca0 68 69 74 65 3a 20 25 73 2c 20 22 2c 20 74 73 74 72 69 6e 67 28 77 68 69 74 65 73 65 63 6f 6e 64   ┆hite: %s, ", tstring(whitesecond┆
0x0ca0…0cc0 73 29 29 3b 0a 09 09 66 70 72 69 6e 74 66 28 62 61 63 6b 75 70 2c 20 22 62 6c 61 63 6b 3a 20 25   ┆s));   fprintf(backup, "black: %┆
0x0cc0…0ce0 73 5c 6e 22 2c 20 74 73 74 72 69 6e 67 28 62 6c 61 63 6b 73 65 63 6f 6e 64 73 29 29 3b 0a 09 09   ┆s\n", tstring(blackseconds));   ┆
0x0ce0…0d00 66 63 6c 6f 73 65 28 62 61 63 6b 75 70 29 3b 0a 09 7d 0a 09 72 65 74 75 72 6e 3b 0a 7d 0a 0a 76   ┆fclose(backup);  }  return; }  v┆
0x0d00…0d20 6f 69 64 0a 72 65 63 6f 72 64 5f 73 61 76 65 28 29 0a 7b 0a 09 6d 6f 76 65 20 2a 6d 3b 0a 09 46   ┆oid record_save() {  move *m;  F┆
0x0d20…0d40 49 4c 45 20 2a 66 70 3b 0a 09 69 6e 74 20 69 3b 0a 09 63 68 61 72 20 2a 73 3b 0a 0a 09 69 66 20   ┆ILE *fp;  int i;  char *s;   if ┆
0x0d40…0d60 28 21 28 66 70 20 3d 20 66 6f 70 65 6e 28 72 65 63 6f 72 64 5f 66 69 6c 65 2c 20 22 77 22 29 29   ┆(!(fp = fopen(record_file, "w"))┆
0x0d60…0d80 29 20 7b 0a 09 09 70 65 72 72 6f 72 28 72 65 63 6f 72 64 5f 66 69 6c 65 29 3b 0a 09 09 72 65 74   ┆) {   perror(record_file);   ret┆
0x0d80…0da0 75 72 6e 3b 0a 09 7d 0a 09 66 70 72 69 6e 74 66 28 66 70 2c 20 22 58 20 43 68 65 73 73 20 2d 2d   ┆urn;  }  fprintf(fp, "X Chess --┆
0x0da0…0dc0 20 25 73 5c 6e 22 2c 20 64 61 74 65 73 74 72 69 6e 67 28 29 29 3b 0a 09 69 66 20 28 64 69 73 70   ┆ %s\n", datestring());  if (disp┆
0x0dc0…0de0 6e 61 6d 65 32 29 0a 09 09 66 70 72 69 6e 74 66 28 66 70 2c 20 22 5c 74 57 68 69 74 65 20 6f 6e   ┆name2)   fprintf(fp, "\tWhite on┆
0x0de0…0e00 20 25 73 2c 20 62 6c 61 63 6b 20 6f 6e 20 25 73 5c 6e 22 2c 20 0a 09 09 09 09 64 69 73 70 6e 61   ┆ %s, black on %s\n",      dispna┆
0x0e00…0e20 6d 65 31 2c 20 64 69 73 70 6e 61 6d 65 32 29 3b 0a 09 65 6c 73 65 0a 09 09 66 70 72 69 6e 74 66   ┆me1, dispname2);  else   fprintf┆
0x0e20…0e40 28 66 70 2c 20 22 5c 74 47 61 6d 65 20 70 6c 61 79 65 64 20 6f 6e 20 25 73 5c 6e 22 2c 20 64 69   ┆(fp, "\tGame played on %s\n", di┆
0x0e40…0e60 73 70 6e 61 6d 65 31 29 3b 0a 09 66 70 72 69 6e 74 66 28 66 70 2c 20 22 5c 74 25 73 5c 6e 22 2c   ┆spname1);  fprintf(fp, "\t%s\n",┆
0x0e60…0e80 20 72 65 63 6f 72 64 5f 65 6e 67 6c 69 73 68 20 3f 20 22 65 6e 67 6c 69 73 68 22 20 3a 20 22 61   ┆ record_english ? "english" : "a┆
0x0e80…0ea0 6c 67 65 62 72 61 69 63 22 29 3b 0a 0a 09 66 6f 72 20 28 6d 20 3d 20 6d 6f 76 65 73 2c 20 69 20   ┆lgebraic");   for (m = moves, i ┆
0x0ea0…0ec0 3d 20 31 3b 20 6d 3b 20 69 2b 2b 29 20 7b 0a 09 09 73 20 3d 20 6d 6f 76 65 73 74 72 69 6e 67 28   ┆= 1; m; i++) {   s = movestring(┆
0x0ec0…0ee0 6d 29 3b 0a 09 09 66 70 72 69 6e 74 66 28 66 70 2c 20 22 25 32 64 2e 20 25 2d 31 36 73 20 22 2c   ┆m);   fprintf(fp, "%2d. %-16s ",┆
0x0ee0…0f00 20 69 2c 20 73 29 3b 0a 09 09 6d 20 3d 20 6d 2d 3e 6e 65 78 74 3b 0a 09 09 69 66 20 28 6d 29 0a   ┆ i, s);   m = m->next;   if (m) ┆
0x0f00…0f20 09 09 09 73 20 3d 20 6d 6f 76 65 73 74 72 69 6e 67 28 6d 29 3b 0a 09 09 65 6c 73 65 0a 09 09 09   ┆   s = movestring(m);   else    ┆
0x0f20…0f40 73 20 3d 20 22 22 3b 0a 09 09 66 70 72 69 6e 74 66 28 66 70 2c 20 22 25 73 5c 6e 22 2c 20 73 29   ┆s = "";   fprintf(fp, "%s\n", s)┆
0x0f40…0f60 3b 0a 09 09 69 66 20 28 6d 29 0a 09 09 09 6d 20 3d 20 6d 2d 3e 6e 65 78 74 3b 0a 09 7d 0a 09 66   ┆;   if (m)    m = m->next;  }  f┆
0x0f60…0f80 63 6c 6f 73 65 28 66 70 29 3b 0a 09 72 65 74 75 72 6e 3b 0a 7d 0a 0a 76 6f 69 64 0a 72 65 63 6f   ┆close(fp);  return; }  void reco┆
0x0f80…0fa0 72 64 5f 6d 6f 76 65 28 6d 29 0a 09 6d 6f 76 65 20 2a 6d 3b 0a 7b 0a 09 63 68 61 72 20 2a 73 2c   ┆rd_move(m)  move *m; {  char *s,┆
0x0fa0…0fc0 20 62 75 66 5b 42 53 49 5a 45 5d 3b 0a 0a 09 73 20 3d 20 6d 6f 76 65 73 74 72 69 6e 67 28 6d 29   ┆ buf[BSIZE];   s = movestring(m)┆
0x0fc0…0fe0 3b 0a 0a 09 69 66 20 28 6d 2d 3e 70 69 65 63 65 2e 63 6f 6c 6f 72 20 3d 3d 20 57 48 49 54 45 29   ┆;   if (m->piece.color == WHITE)┆
0x0fe0…1000 20 7b 0a 09 09 6d 6f 76 65 6e 75 6d 2b 2b 3b 0a 09 09 73 70 72 69 6e 74 66 28 62 75 66 2c 20 22   ┆ {   movenum++;   sprintf(buf, "┆
0x1000…1020 25 32 64 2e 20 25 2d 31 36 73 20 22 2c 20 6d 6f 76 65 6e 75 6d 2c 20 73 29 3b 0a 09 7d 20 65 6c   ┆%2d. %-16s ", movenum, s);  } el┆
0x1020…1040 73 65 20 7b 0a 09 09 73 70 72 69 6e 74 66 28 62 75 66 2c 20 22 25 2d 31 36 73 5c 6e 22 2c 20 73   ┆se {   sprintf(buf, "%-16s\n", s┆
0x1040…1060 29 3b 0a 09 7d 0a 09 58 53 65 74 44 69 73 70 6c 61 79 28 77 69 6e 31 2d 3e 64 69 73 70 6c 61 79   ┆);  }  XSetDisplay(win1->display┆
0x1060…1080 29 3b 0a 09 54 78 74 57 72 69 74 65 53 74 72 28 77 69 6e 31 2d 3e 72 65 63 77 69 6e 2c 20 62 75   ┆);  TxtWriteStr(win1->recwin, bu┆
0x1080…10a0 66 29 3b 0a 09 69 66 20 28 21 6f 6e 65 62 6f 61 72 64 29 20 7b 0a 09 09 58 53 65 74 44 69 73 70   ┆f);  if (!oneboard) {   XSetDisp┆
0x10a0…10c0 6c 61 79 28 77 69 6e 32 2d 3e 64 69 73 70 6c 61 79 29 3b 0a 09 09 54 78 74 57 72 69 74 65 53 74   ┆lay(win2->display);   TxtWriteSt┆
0x10c0…10e0 72 28 77 69 6e 32 2d 3e 72 65 63 77 69 6e 2c 20 62 75 66 29 3b 0a 09 7d 0a 09 69 66 20 28 73 61   ┆r(win2->recwin, buf);  }  if (sa┆
0x10e0…1100 76 65 66 6c 61 67 29 20 7b 0a 09 09 66 70 72 69 6e 74 66 28 62 61 63 6b 75 70 2c 20 22 25 73 22   ┆veflag) {   fprintf(backup, "%s"┆
0x1100…1120 2c 20 62 75 66 29 3b 0a 09 09 66 66 6c 75 73 68 28 62 61 63 6b 75 70 29 3b 0a 09 7d 0a 0a 09 72   ┆, buf);   fflush(backup);  }   r┆
0x1120…1140 65 74 75 72 6e 3b 0a 7d 0a 0a 76 6f 69 64 0a 72 65 63 6f 72 64 5f 62 61 63 6b 28 29 0a 7b 0a 09   ┆eturn; }  void record_back() {  ┆
0x1140…1160 63 68 61 72 20 2a 73 20 3d 20 28 6e 65 78 74 74 6f 6d 6f 76 65 20 3d 3d 20 57 48 49 54 45 29 20   ┆char *s = (nexttomove == WHITE) ┆
0x1160…1180 3f 20 22 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 22 0a 09 09 09 3a 20 22 08 08 08 08   ┆? "                 "    : "    ┆
0x1180…11a0 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 22 3b 0a 0a 09 58 53 65 74 44 69 73 70 6c 61   ┆                 ";   XSetDispla┆
0x11a0…11c0 79 28 77 69 6e 31 2d 3e 64 69 73 70 6c 61 79 29 3b 0a 09 54 78 74 57 72 69 74 65 53 74 72 28 77   ┆y(win1->display);  TxtWriteStr(w┆
0x11c0…11e0 69 6e 31 2d 3e 72 65 63 77 69 6e 2c 20 73 29 3b 0a 09 69 66 20 28 21 6f 6e 65 62 6f 61 72 64 29   ┆in1->recwin, s);  if (!oneboard)┆
0x11e0…1200 20 7b 0a 09 09 58 53 65 74 44 69 73 70 6c 61 79 28 77 69 6e 32 2d 3e 64 69 73 70 6c 61 79 29 3b   ┆ {   XSetDisplay(win2->display);┆
0x1200…1220 0a 09 09 54 78 74 57 72 69 74 65 53 74 72 28 77 69 6e 32 2d 3e 72 65 63 77 69 6e 2c 20 73 29 3b   ┆   TxtWriteStr(win2->recwin, s);┆
0x1220…1240 0a 09 7d 0a 0a 09 69 66 20 28 6e 65 78 74 74 6f 6d 6f 76 65 20 3d 3d 20 42 4c 41 43 4b 29 0a 09   ┆  }   if (nexttomove == BLACK)  ┆
0x1240…1260 09 6d 6f 76 65 6e 75 6d 2d 2d 3b 0a 09 69 66 20 28 73 61 76 65 66 6c 61 67 29 20 7b 0a 09 09 66   ┆ movenum--;  if (saveflag) {   f┆
0x1260…1280 73 65 65 6b 28 62 61 63 6b 75 70 2c 20 28 6e 65 78 74 74 6f 6d 6f 76 65 20 3d 3d 20 57 48 49 54   ┆seek(backup, (nexttomove == WHIT┆
0x1280…12a0 45 29 20 3f 20 2d 31 37 20 3a 20 2d 32 31 2c 20 31 29 3b 0a 09 09 66 66 6c 75 73 68 28 62 61 63   ┆E) ? -17 : -21, 1);   fflush(bac┆
0x12a0…12c0 6b 75 70 29 3b 0a 09 7d 0a 0a 09 72 65 74 75 72 6e 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 63 68 61   ┆kup);  }   return; }  static cha┆
0x12c0…12e0 72 20 2a 0a 6d 6f 76 65 73 74 72 69 6e 67 28 6d 29 0a 09 6d 6f 76 65 20 2a 6d 3b 0a 7b 0a 09 69   ┆r * movestring(m)  move *m; {  i┆
0x12e0…1300 6e 74 20 66 79 2c 20 74 79 3b 0a 09 73 74 61 74 69 63 20 63 68 61 72 20 62 75 66 5b 42 53 49 5a   ┆nt fy, ty;  static char buf[BSIZ┆
0x1300…1320 45 5d 3b 0a 0a 09 69 66 20 28 21 72 65 63 6f 72 64 5f 65 6e 67 6c 69 73 68 20 7c 7c 20 28 6d 2d   ┆E];   if (!record_english || (m-┆
0x1320…1340 3e 70 69 65 63 65 2e 63 6f 6c 6f 72 20 3d 3d 20 57 48 49 54 45 29 29 20 7b 0a 09 09 66 79 20 3d   ┆>piece.color == WHITE)) {   fy =┆
0x1340…1360 20 53 49 5a 45 20 2d 20 6d 2d 3e 66 72 6f 6d 79 3b 0a 09 09 74 79 20 3d 20 53 49 5a 45 20 2d 20   ┆ SIZE - m->fromy;   ty = SIZE - ┆
0x1360…1380 6d 2d 3e 74 6f 79 3b 0a 09 7d 20 65 6c 73 65 20 7b 0a 09 09 66 79 20 3d 20 6d 2d 3e 66 72 6f 6d   ┆m->toy;  } else {   fy = m->from┆
0x1380…13a0 79 20 2b 20 31 3b 0a 09 09 74 79 20 3d 20 6d 2d 3e 74 6f 79 20 2b 20 31 3b 0a 09 7d 0a 0a 09 73   ┆y + 1;   ty = m->toy + 1;  }   s┆
0x13a0…13c0 77 69 74 63 68 20 28 6d 2d 3e 74 79 70 65 29 20 7b 0a 09 20 20 20 20 63 61 73 65 20 4d 4f 56 45   ┆witch (m->type) {      case MOVE┆
0x13c0…13e0 3a 0a 09 09 69 66 20 28 72 65 63 6f 72 64 5f 65 6e 67 6c 69 73 68 29 0a 09 09 09 73 70 72 69 6e   ┆:   if (record_english)    sprin┆
0x13e0…1400 74 66 28 62 75 66 2c 20 22 25 73 2f 25 73 25 64 2d 25 73 25 64 25 73 22 2c 20 70 63 6e 61 6d 65   ┆tf(buf, "%s/%s%d-%s%d%s", pcname┆
0x1400…1420 73 5b 28 69 6e 74 29 20 6d 2d 3e 70 69 65 63 65 2e 0a 09 09 09 09 09 74 79 70 65 5d 2c 20 63 6f   ┆s[(int) m->piece.      type], co┆
0x1420…1440 6c 6e 61 6d 65 73 5b 6d 2d 3e 66 72 6f 6d 78 5d 2c 20 66 79 2c 0a 09 09 09 09 09 63 6f 6c 6e 61   ┆lnames[m->fromx], fy,      colna┆
0x1440…1460 6d 65 73 5b 6d 2d 3e 74 6f 78 5d 2c 20 74 79 2c 20 6d 2d 3e 63 68 65 63 6b 20 3f 20 22 2b 22 20   ┆mes[m->tox], ty, m->check ? "+" ┆
0x1460…1480 3a 0a 09 09 09 09 09 22 22 29 3b 0a 09 09 65 6c 73 65 0a 09 09 09 73 70 72 69 6e 74 66 28 62 75   ┆:      "");   else    sprintf(bu┆
0x1480…14a0 66 2c 20 22 25 63 25 64 25 63 25 64 22 2c 20 27 61 27 20 2b 20 6d 2d 3e 66 72 6f 6d 78 2c 20 66   ┆f, "%c%d%c%d", 'a' + m->fromx, f┆
0x14a0…14c0 79 2c 20 27 61 27 20 2b 0a 09 09 09 09 09 6d 2d 3e 74 6f 78 2c 20 74 79 29 3b 0a 09 09 62 72 65   ┆y, 'a' +      m->tox, ty);   bre┆
0x14c0…14e0 61 6b 3b 0a 09 20 20 20 20 63 61 73 65 20 43 41 50 54 55 52 45 3a 0a 09 09 69 66 20 28 72 65 63   ┆ak;      case CAPTURE:   if (rec┆
0x14e0…1500 6f 72 64 5f 65 6e 67 6c 69 73 68 29 0a 09 09 09 73 70 72 69 6e 74 66 28 62 75 66 2c 20 22 25 73   ┆ord_english)    sprintf(buf, "%s┆
0x1500…1520 2f 25 73 25 64 78 25 73 2f 25 73 25 64 25 73 25 73 22 2c 0a 09 09 09 09 09 70 63 6e 61 6d 65 73   ┆/%s%dx%s/%s%d%s%s",      pcnames┆
0x1520…1540 5b 28 69 6e 74 29 20 6d 2d 3e 70 69 65 63 65 2e 74 79 70 65 5d 2c 0a 09 09 09 09 09 63 6f 6c 6e   ┆[(int) m->piece.type],      coln┆
0x1540…1560 61 6d 65 73 5b 6d 2d 3e 66 72 6f 6d 78 5d 2c 20 66 79 2c 0a 09 09 09 09 09 70 63 6e 61 6d 65 73   ┆ames[m->fromx], fy,      pcnames┆
0x1560…1580 5b 28 69 6e 74 29 20 6d 2d 3e 74 61 6b 65 6e 2e 74 79 70 65 5d 2c 0a 09 09 09 09 09 63 6f 6c 6e   ┆[(int) m->taken.type],      coln┆
0x1580…15a0 61 6d 65 73 5b 6d 2d 3e 74 6f 78 5d 2c 20 74 79 2c 0a 09 09 09 09 09 6d 2d 3e 65 6e 70 61 73 73   ┆ames[m->tox], ty,      m->enpass┆
0x15a0…15c0 61 6e 74 20 3f 20 22 65 2e 70 2e 22 20 3a 20 22 22 2c 0a 09 09 09 09 09 6d 2d 3e 63 68 65 63 6b   ┆ant ? "e.p." : "",      m->check┆
0x15c0…15e0 20 3f 20 22 2b 22 20 3a 20 22 22 29 3b 0a 09 09 65 6c 73 65 0a 09 09 09 73 70 72 69 6e 74 66 28   ┆ ? "+" : "");   else    sprintf(┆
0x15e0…1600 62 75 66 2c 20 22 25 63 25 64 25 63 25 64 22 2c 20 27 61 27 20 2b 20 6d 2d 3e 66 72 6f 6d 78 2c   ┆buf, "%c%d%c%d", 'a' + m->fromx,┆
0x1600…1620 20 66 79 2c 20 27 61 27 20 2b 0a 09 09 09 09 09 6d 2d 3e 74 6f 78 2c 20 74 79 29 3b 0a 09 09 62   ┆ fy, 'a' +      m->tox, ty);   b┆
0x1620…1640 72 65 61 6b 3b 0a 0a 09 20 20 20 20 63 61 73 65 20 4b 43 41 53 54 4c 45 3a 0a 09 09 69 66 20 28   ┆reak;       case KCASTLE:   if (┆
0x1640…1660 72 65 63 6f 72 64 5f 65 6e 67 6c 69 73 68 29 0a 09 09 09 73 70 72 69 6e 74 66 28 62 75 66 2c 20   ┆record_english)    sprintf(buf, ┆
0x1660…1680 22 4f 2d 4f 25 73 22 2c 20 6d 2d 3e 63 68 65 63 6b 20 3f 20 22 63 68 22 20 3a 20 22 22 29 3b 0a   ┆"O-O%s", m->check ? "ch" : ""); ┆
0x1680…16a0 09 09 65 6c 73 65 20 69 66 20 28 6d 2d 3e 70 69 65 63 65 2e 63 6f 6c 6f 72 20 3d 3d 20 57 48 49   ┆  else if (m->piece.color == WHI┆
0x16a0…16c0 54 45 29 0a 09 09 09 73 74 72 63 70 79 28 62 75 66 2c 20 22 65 31 67 31 22 29 3b 0a 09 09 65 6c   ┆TE)    strcpy(buf, "e1g1");   el┆
0x16c0…16e0 73 65 0a 09 09 09 73 74 72 63 70 79 28 62 75 66 2c 20 22 65 38 67 38 22 29 3b 0a 09 09 62 72 65   ┆se    strcpy(buf, "e8g8");   bre┆
0x16e0…1700 61 6b 3b 0a 0a 09 20 20 20 20 63 61 73 65 20 51 43 41 53 54 4c 45 3a 0a 09 09 69 66 20 28 72 65   ┆ak;       case QCASTLE:   if (re┆
0x1700…1720 63 6f 72 64 5f 65 6e 67 6c 69 73 68 29 0a 09 09 09 73 70 72 69 6e 74 66 28 62 75 66 2c 20 22 4f   ┆cord_english)    sprintf(buf, "O┆
0x1720…1740 2d 4f 2d 4f 25 73 22 2c 20 6d 2d 3e 63 68 65 63 6b 20 3f 20 22 63 68 22 20 3a 20 22 22 29 3b 0a   ┆-O-O%s", m->check ? "ch" : ""); ┆
0x1740…1760 09 09 65 6c 73 65 20 69 66 20 28 6d 2d 3e 70 69 65 63 65 2e 63 6f 6c 6f 72 20 3d 3d 20 57 48 49   ┆  else if (m->piece.color == WHI┆
0x1760…1780 54 45 29 0a 09 09 09 73 74 72 63 70 79 28 62 75 66 2c 20 22 65 31 63 31 22 29 3b 0a 09 09 65 6c   ┆TE)    strcpy(buf, "e1c1");   el┆
0x1780…17a0 73 65 0a 09 09 09 73 74 72 63 70 79 28 62 75 66 2c 20 22 65 38 63 38 22 29 3b 0a 09 09 62 72 65   ┆se    strcpy(buf, "e8c8");   bre┆
0x17a0…17c0 61 6b 3b 0a 0a 09 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 09 09 73 70 72 69 6e 74 66 28 62 75 66   ┆ak;       default:   sprintf(buf┆
0x17c0…17e0 2c 20 22 73 6f 6d 65 74 68 69 6e 67 20 73 74 72 61 6e 67 65 22 29 3b 0a 09 09 62 72 65 61 6b 3b   ┆, "something strange");   break;┆
0x17e0…1800 0a 09 7d 0a 09 69 66 20 28 28 6d 2d 3e 70 69 65 63 65 2e 74 79 70 65 20 3d 3d 20 50 41 57 4e 29   ┆  }  if ((m->piece.type == PAWN)┆
0x1800…1820 20 26 26 20 28 28 28 6d 2d 3e 70 69 65 63 65 2e 63 6f 6c 6f 72 20 3d 3d 20 42 4c 41 43 4b 29 20   ┆ && (((m->piece.color == BLACK) ┆
0x1820…1840 26 26 20 0a 09 09 09 28 6d 2d 3e 74 6f 79 20 3d 3d 20 37 29 29 20 7c 7c 20 28 28 6d 2d 3e 70 69   ┆&&     (m->toy == 7)) || ((m->pi┆
0x1840…1860 65 63 65 2e 63 6f 6c 6f 72 20 3d 3d 20 57 48 49 54 45 29 20 26 26 0a 09 09 09 28 6d 2d 3e 74 6f   ┆ece.color == WHITE) &&    (m->to┆
0x1860…1880 79 20 3d 3d 20 30 29 29 29 29 20 0a 09 09 73 74 72 63 61 74 28 62 75 66 2c 20 22 28 51 29 22 29   ┆y == 0))))    strcat(buf, "(Q)")┆
0x1880…18a0 3b 0a 0a 23 69 66 64 65 66 20 73 6d 61 72 74 61 73 73 0a 09 69 66 20 28 21 28 72 61 6e 64 6f 6d   ┆;  #ifdef smartass  if (!(random┆
0x18a0…18c0 28 29 20 25 20 35 30 29 29 0a 09 09 73 74 72 63 61 74 28 62 75 66 2c 20 22 3f 22 29 3b 0a 09 65   ┆() % 50))   strcat(buf, "?");  e┆
0x18c0…18e0 6c 73 65 20 69 66 20 28 21 28 72 61 6e 64 6f 6d 28 29 20 25 20 35 30 29 29 0a 09 09 73 74 72 63   ┆lse if (!(random() % 50))   strc┆
0x18e0…1900 61 74 28 62 75 66 2c 20 22 21 22 29 3b 0a 09 65 6c 73 65 20 69 66 20 28 21 28 72 61 6e 64 6f 6d   ┆at(buf, "!");  else if (!(random┆
0x1900…1920 28 29 20 25 20 35 30 30 29 29 0a 09 09 73 74 72 63 61 74 28 62 75 66 2c 20 22 3f 3f 3f 22 29 3b   ┆() % 500))   strcat(buf, "???");┆
[…truncated at 200 lines…]