command synopsis !command....................... passes command to a shell. adaptive NPS a b c d........... enables adaptive hash mode. alarm on|off................... turns audible alarm on/off. analyze........................ analyze a game in progress. annotate....................... annotate game bench.......................... runs performance benchmark. black.......................... sets black to move. book........................... controls book cache=n........................ sets tablebase cache size. clock.......................... displays/adjusts chess clock times. display........................ displays chess board. display [n].................... sets display options draw accept|decline............ decline always declines. draw offer|nooffer............. nooffer never offers a draw. drawscore n.................... sets default draw score. echo........................... echos output to display. edit........................... edit board position. egtb........................... enables endgame database probes. epdhelp........................ info about EPD facility. end............................ terminates program. evaluation..................... adjust evaluation terms. exit........................... restores STDIN to key. force move..................... forces specific move. hash n......................... sets transposition table size. (n bytes, nK bytes or nM bytes). hashp n........................ sets pawn hash table size. history........................ display game moves. import filename................ imports learning data (.lrn files). info........................... displays program settings. input filename [title]......... sets STDIN to filename, and positions the file at the line containing 'title'. kibitz n....................... sets kibitz mode n on ICS. learn n........................ enables/disables learning. level moves time inc........... sets ICS time controls. list........................... update/display GM/IM/computer lists. load file [title].............. load a position from problem file. log on|off..................... turn logging on/off. mode normal|tournament......... toggles tournament mode. move........................... initiates search (same as go). name........................... sets opponent's name. new............................ initialize and start new game. noise n........................ no status until n nodes searched. operator seconds............... sets operator time per move. perf........................... times the move generator/make_move. perft.......................... tests the move generator/make_move. personality save|load fn....... saves/loads a personality file. pgn option value............... set PGN header information. ponder on|off.................. toggle pondering off/on. ponder move.................... ponder "move" as predicted move. read [filename]................ read moves in (from [filename] if given.) reada [filename]............... read moves in (from [filename]]) and append. (appends to current game history.) reset n........................ reset game to move n. resign m n..................... set resign threshold to m pawns. n = # of moves before resigning. savegame [filename]............ saves game in PGN format (to filename). savepos [filename]............. saves position in FEN string (to filename). score.......................... print evaluation of position. sd n........................... sets absolute search depth. search move.................... search specified move only. selective min max.............. set null move depths. setboard FEN................... sets board position to FEN position. settc.......................... set time controls. show book...................... toggle book statistics. smpgroup....................... sets max threads allowed at one node. smpmin......................... sets min remaining depth to split search. smpmt.......................... sets number of thread (CPUS) to use. smpnice........................ sets kill or keep threads. smproot........................ sets whether or not to split at root. sn n........................... sets absolute search node limit. speech on|off.................. enables (disables) audio output. st n........................... sets absolute search time. store val...................... stores position/score (position.bin). swindle on|off................. enables/disables swindle mode. tags........................... list PGN header tags. test file [N].................. test a suite of problems. time........................... time controls. timebook....................... out of book time adjustment trace n........................ display search tree below depth n. usage percentage............... adjusts Crafty's time usage up or down. whisper n...................... sets ICS whisper mode n. white.......................... sets white to move. wild n......................... sets ICS wild position (7 for now). xboard......................... sets xboard compatibility mode. Type "help command" to see more detailed help information, if it is available. Note that help is not available for all possible commands. <end> <analyze> The analyze command puts Crafty into a mode where it will search forever in the current position. When a move is entered, crafty will make that move, switch sides, and again compute, printing analysis as it searches. You can back up a move by entering "back" or you can back up several moves by entering "back n". Note that n is the number of moves, counting each player's move as one (ie n plies, not n full moves). <end> <annotate> annotate[h|t] filename side moves margin time [n] Filename is the input file with game moves, while the output will be written to filename.can. The input file is PGN-compatible with one addition, the ability to request that alternative moves also be analyzed at any point. To do this at the point where you have alternative moves, simply include them in braces {move1, move2}, and Crafty will then search them also. Side can be b/w/bw to indicate whether to annotate only the white side (w), the black side (b) or both (bw). Side can also be the players name, where Crafty will then use the players name and the PGN tags to discover which you want the annotation done for. Moves indicates which moves to annotate. A single value says start at the indicated move and go through the entire game. A range (20-30) annotates the given range only. Margin is the difference between the search value for the move played in the game, and the best move crafty found, before a comment is generated (pawn=1.0). Time is the time limit per move in seconds. If the optional "n" is appended, this produces N best moves/scores/PV's, rather than just the very best move. It won't display any move that is worse than the actual game move played, but you can use -N to force Crafty to produce N PV's regardless of how bad they get. Using 'annotateh' produces an HTML file with bitmapped board displays where analysis was displayed. Using "annotatet" will cause the output to be written in a LaTex (.tex) format. <end> <book> You can use the following commands to customize how the program uses the opening book(book.bin and books.bin). Typically, book.bin contains a large opening database made from GM games. Books.bin is a short, customized book that contains selected lines that are well-suited to Crafty's style of play. The flags can further refine how this small book file is used to encourage/avoid specific lines. binfile create filename [maxply] [mp] [wpc] This command creates a new book by first removing the old binary file. it then will parse filename and add the moves to the binary book filename given as binfile. maxply is the max length of book moves stored from any single PGN game in the input file. mp means a particular move must appear in at least that many games to be stored in the book file. wpc is the relative winning percentage. 50 means exclude any book move that doesn't have at least 50% as many wins as losses. book mask accept chars Sets the accept mask to the flag characters in chars (see flags below.) Any flags set in this mask will include either (a) moves with the flag set, or (b) moves with no flags set. book mask reject chars Sets the reject mask to the flag characters in chars (see flags below.) Any flags set in this mask will reject any moves with the flag set (in the opening book.) book off turns the book completely off. book random 0|1 disables/enables randomness. Book random 0 takes the set of book moves and searches them for about 1/10th of the normal search time and lets the search choose which move to play. Any move not in the book file will not be considered or played. bookw weight v Sets weight for book ordering. (Weights are freq (frequency), eval (evaluation) and learn (learned scores). book width n Specifies how many moves from the sorted set of book moves are to be considered. 1 produces the best move from the set, but provides little randomness. 99 includes all moves in the book move set. Flags are one (or more) members of the following set of characters: {?? ? = ! !! 0 1 2 3 4 5 6 7 8 9 A B C D E F} Normally, ?? means never play, ? means rarely play, = means drawish opening, ! means good move, !! means always play, and 0-F are user flags that a user can add to any move in the book, and by setting the right mask (above) can force the program to either always play the move or never play the move. The special character * means all flags and is probably dangerous to use. Flags are added to a move by entering the move and a / or \ followed by the flags. / means add the flags to the move preserving other flags already there while \ means replace any flags with those following the \. The format of the book text (raw data) is as follows: [title information] (required) 1. e4 e5 2. Nf3 Nc6 3. ... (a sequence of moves) [title information for next line] (required) 1. e4 e6 ... end (optional) <end> <clock> clock crafty-time [opponent-time] clock is primarily intended to be used in a computer chess tournament where the games are played on a real chess board using a real chess clock, rather than through some automatic interface that manages the time automatically. crafty-time is the amount of time left on Crafty's clock, expressed in minutes, or in hh:mm format. Crafty will convert this to its internal representation correctly. opponent-time is the amount of time left on the opponent's clock, expressed in the same way. This is option and is not required as Crafty does not use this information during the game although it does keep up with it. After entering this command, you should probably type "clock" to be sure things look correct. Note that the "operator" command sets a time per move overhead for the operator, and that this affects the actual time used as expected. IE in the above clock setting, assuming the operator has allowed 10 seconds per move, crafty will "hide" 35 * 10 seconds and not use it for searching, which gives the operator time to actually make the moves and press the real clock button. It is CRITICAL that the clock command be used from time to time to keep Crafty's internal clock in sync with the real clock. If you use the operator command, the clock value should match the real chess clock exactly, if you choose to not use the operator time and fudge the chess clock time yourself, that will work as well, but it is more prone to errors. <end> <display> display changes -> display variation when it changes. display extstats -> display search extension statistics. display general -> display general info messages. display hashstats -> display search hashing statistics. display movenum -> display move numbers in PV. display moves -> display moves as they are searched. display nodes -> display nodes for each move searched. display ply1 -> display ply-1 move list/sorting info. display stats -> display basic search statistics. display time -> display time for moves. display variation -> display variation at end of iteration. <end> <evaluation> evaluation item# value [value ... value] The evaluation command allows you to change specific evaluation numbers when you want. The first thing you should do is type "evaluation list" to show all the possible values. The format looks like this when displayed: White(1): evaluation list ------------piece values-------------------- 1 pawn value 100 2 knight value 300 3 bishop value 300 4 rook value 500 5 queen value 900 ------------evaluation scale factors-------- 11 blocked pawn scale factor 100 12 king safety asymmetry -20 13 king safety scale factor 100 14 king safety tropism scale factor 100 15 passed pawn scoring scale factor 100 16 pawn scoring scale factor 100 17 bad trade bonus/penalty 120 ------------pawn evaluation----------------- 21 eight pawns penalty 10 22 center pawn blocked 12 23 center pawn unmoved 16 24 pawn duo 2 25 protected passed pawn wins 50 26 pawn weak (one pawn blocking) 12 27 pawn weak (two pawns blocking) 20 The first number is the evaluation term ID #. To change the value of a pawn from the default 100 to 50, you would type the following command: eval 1 50 Crafty will display this: White(1): eval 1 50 pawn value old:100 new:50 And now pawns are worth 1/2 of what they were prior to the command. Note that unless you specifically save the setting with the "personality save" command, once you exit Crafty the pawn value will return to 100 the next time you start it up. You can, of course, put such commands in the .craftyrc/ crafty.rc file, but it is simpler to use the personality command instead (type "help personality" for more information). Note that some evaluation terms have a list of numbers as they are indexed by something. When you change one of these terms, you must give _exactly_ the correct number of values, or the command will produce an error without changing anything. Some of the values are 8 X 8 matrices of values, where the values correspond to the chess board as viewed with square a1 on the bottom left. You must type the values in in order as they appear on the screen. Crafty will shift things as needed. IE for a piece/square table for knights, the first value displayed is for a8, so the first value you enter must also be for a8. Many of these matrices have black/white counter-parts. You enter the white values, Crafty will mirror those to reflect the _same_ values but from the black side of the board. This will be done automatically. Non 8 X 8 matrices are just dumped in order from element zero to N. You enter those the same way. IE the way it prints them out is the way you enter them, reading from top-to-bottom, and left-to-right. If you come up with an interesting personality, feel free to make it available to everyone, and if it is particularly attractive, it can become part of the "distributed" crafty personalities once this has been released. <end> <lists> list name +name -name ... The lists are as follows: AK Auto-Kibitz list. If crafty plays any opponent named in this list while playing on a chess server, it will kibitz the usual analysis as the game is played. Not advised for human opponents as they do not like the "noise". B Blocker list. If you notice a player repeatedly trying to block the position to get easy draws, put his name in this list. Players in this list get special "anti-human" scoring turned up louder than usual to combat this strategy. C Computer list. This is not needed on ICC as xboard/winboard both tell crafty it is playing a computer opponent. However, if your GUI does not do this, you can put the name of the computer opponents you frequently play in this list and if the GUI sends the "name" command properly, crafty will figure out that it is playing a computer. GM/IM lists are obvious. This identifies players that are strong enough that Crafty should resign or offer draws sooner than normal, rather than hoping for a blunder in lost or drawn positions. SP Special Player list. Names in this list can be used to specify a unique opening book (to replace books.bin, not book.bin) for this particular opponent, as well as specifying a personality file to use rather than the default crafty.cpf. The format of this particular list is: list SP +name [book=filename] [personality=filename] <end> <personality> personality load|save filename perspath path-to-personality-directory Crafty "personality" files (.cpf files) contain information that affects three components of Crafty. You can use the "selective" command to adjust the null-move R (min and max) values. The default values are 2 and 3, and reducing them will reduce Crafty's playing strength to some fairly significant degree. You can use the "extension" command to adjust the search extension values. Reducing these will "dumb down" the search and make crafty tactically (but not positionally) weaker. They can be set all the way down to 0.00 if you choose. You can use the evaluation command to adjust some global evaluation weights (ie turn down total pawn scoring, or king safety, etc.) or you can use this command to adjust individual scoring values, from the value of pieces, to specific scoring terms for each piece such as the value of a doubled pawn or whatever. Once you find settings you like, you can use "personality save filename" to save all of the above settings in one file. Later you can use "personality load filename" to restore those settings prior to playing a game. One final note is that you can save to the specific file "crafty.cpf" and your settings will become the _default_ each time you start Crafty, until you either remove the file, load another personality, or save a new default personality. You can have as many different personality files as you want, and to keep them from getting jumbled up, you can put them in a separate directory and add the "perspath" to your .craftyrc/crafty.rc file to point Crafty to the directory where the personality files belong. <end> <settc> settc moves crafty-time opponent-time settc is primarily intended to be used in a computer chess tournament where the games are played on a real chess board using a real chess clock, rather than through some automatic interface that manages the time automatically. moves is the number of moves left to the next time control from Crafty's perspective. IE if the time control is 60 moves in 120 minutes (a normal time control for the WCCC) and crafty has actually made 25 moves in the current game, then the correct "moves" value would be 35, as there are exactly 35 moves to be made before the next time control is reached. crafty-time is the amount of time left on Crafty's clock, expressed in minutes, or in hh:mm format. Crafty will convert this to its internal representation correctly. opponent-time is the amount of time left on the opponent's clock, expressed in the same way. After entering this command, you should probably type "clock" to be sure things look correct. Note that the "operator" command sets a time per move overhead for the operator, and that this affects the actual time used as expected. IE in the above clock setting, assuming the operator has allowed 10 seconds per move, crafty will "hide" 35 * 10 seconds and not use it for searching, which gives the operator time to actually make the moves and press the real clock button. It is CRITICAL that the clock command be used from time to time to keep Crafty's internal clock in sync with the real clock. If you use the operator command, the settc value should match the real chess clock exactly, if you choose to not use the operator time and fudge the chess clock time yourself, that will work as well, but it is more prone to errors. <end> <test> test filename [N] Test is used to run a suite of "crafty format" test positions in a batch run. filename is the name of the file in crafty test format. [N] is an optional parameter that is used to shorten the test time. If crafty likes the solution move for [N] consecutive iterations, it will stop searching that position and consider it correct. This makes a Win At Chess 60 second run take under 1/2 hour, for example. The "crafty format" requires three lines per position. The first line must be a "title" line and is used to identify each position. The second line is a "setboard" command to set the position. The third line is a line that begins with "solution", and then is followed by one or more solution moves. If a position is correct only if a particular move or moves is *not* played, enter the move followed by a "?", as in Nf3?, which means that this position will be counted as correct only if Nf3 is not played. Note that this command may refer to a normal EPD test file as well and Crafty will run that test in the same way, but Crafty will notice it is an EPD test file rather than a "crafty" test file and handle it appropriately. <end> <time> Time controls whether the program uses CPU time or wall-clock time for timing. For tournament play, it is safer to use wall-clock timing, for testing it may be more consistent to use CPU timing if the machine is used for other things concurrently with the tests being run. (Note that this is not recommended when using a multiprocessor machine, CPU time in a parallel search increases at N times the normal time rate where N is the number of processors being used). Time is also used to set the basic search timing controls. The general form of the command is as follows: time nmoves/ntime/[nmoves/ntime]/[increment] nmoves/ntime represents a traditional first time control when nmoves is an integer representing the number of moves and ntime is the total time allowed for these moves. The [optional] nmoves/ntime is a traditional secondary time control. Increment is a feature related to ICS play and emulates the Fischer clock where increment is added to the time left after each move is made. As an alternative, nmoves can be "sd" which represents a sudden death time control of the remainder of the game played in ntime. The optional secondary time control can be a sudden-death time control, as in the following example: time 60/30/sd/30 This sets 60 moves in 30 minutes, then game in 30 additional minutes. An increment can be added if desired. <end> <timebook> This command is used to adjust the time crafty uses for the first few moves out of book. The first few non-book moves are often critical, but the usual search time limit will be somewhat short since Crafty wants to average the time left over the moves remaining until the next time control. This command allows the user to influence how the time is allocated on the first few moves out of book. timebook <factor> <moves> factor is a number expressed as a percentage, and specifies how much extra time (in terms of the normal target time) to use. For example, a value of 100 says use 100% extra time, which essentially doubles the target time limit. A value of 50 says use 50% extra time, or 1.5X the normal target time. This applies to the first move out of book. moves indicates the number of moves this extra time will be used. The extra time is uniformly "decayed" over those moves. For example a value of 10 says use the "factor" extra time on the first non-book move, then 9/10 of that extra time on the next move, 8/10 on the next move, until after 10 moves out of book, where this is turned off. timebook 100 10 therefore says use 200% of the normal time target for the first move out of book, 190% for the next move out of book, until it drops back to 100% where it will stick for the remainder of the game after the first ten non-book move searches have been completed. <end> <tournament> playing in a manually-operated tournament 1. Starting Crafty. This is the easiest part of the whole process. All that's needed is to simply type the command "crafty". 2. display. This command displays the chess board using the standard chess server style#1 board display. This is most often used to confirm that the board has been set to the proper position in the event that you can't continue an old game and have to set up the position from scratch (explained later). Note that white is always at the bottom, regardless of whether Crafty is playing black or white. 3. read. This command is used to read in a list of moves and make them on the game board prior to using crafty to play that game. There are two ways this can be used: (a) read. This will prompt you for a white move, a black move, over and over until you type "exit" to terminate read mode. The side to move will be set according to the number of moves entered, so that the next move will be for the correct side. (b) read file. This command reads, but the input comes from "file" rather than from the keyboard. Note that superfluous text is ignored, as is line numbers, times, etc. This will read in a PGN game and cull everything but the moves. 4. setboard. This command is used to set up a specific board position when it's impossible to restart a game using the "crafty c" command, and too many moves have been made, making the read command an unattractive alternative. This command parses a FEN-like position description (a Forsythe-like notation) and sets the current board to that position. The notation uses a string of alpha characters to represent the chess position. In this notation, uppercase K Q R B N P represents a white piece, lowercase k q r b n p represents a black piece. for empty squares, you can use numbers 1-8 to indicate consecutive empty squares. A "/" must terminate each rank after defining at most 8 square on that rank, and the ranks are entered in descending order 8..1. In this notation, then, the first square you enter is a8, then b8, .., h8, followed by a "/", then back to a7 and repeating. After all 8 ranks are entered, you need to indicate whether or not one side can castle kingside or queenside by inserting at least one space character, followed by a K (white can castle kingside) Q (white can castle queenside) k (black can castle kingside) or Q (black can castle queenside). After this, add one more space, followed by the square of a pawn that just moved two ranks and is subject to an en passant capture. Note that if there is no en passant capture possible, you do not enter this field. For the above board position (display command), here's the setboard command to set that position up: setboard r2q1knr/pp2bppp/4b3/1BPp4/6PP/2N1P3/PP3P2/2RQK1NR/ K Note that after entering the last piece on a rank, a number for the remaining empty squares is *not* needed, so this could be shortened to: setboard r2q1knr/pp2bppp/4b/1BPp/6PP/2N1P/PP3P/2RQK1NR/ K One unfortunate effect of this command is that you have just lost the ability to detect repetitions of prior positions in the game, which can be a critical issue. It is _always_ better to use the read command to re-enter the moves if the hardware crashes. If you accidentally type ^C and terminate Crafty, you can type "crafty c" and it will continue the last game, although you will need to set the time control information, and anything else that is not in the .craftyrc file. 5. reset <n>. This command is used to back the game up if a different move is to be tried, or if an incorrect move was entered by mistake. It depends on the current side to move, and the command "reset 13" will back the game up to move 13, where the current side on move is still on move, and Crafty will be positioned to read in move 13 for that side. Note that this affects the game, but not the clock or time or level, so that if you back up more than a move or two, you also need to adjust the clock. If you want to first change the side to move, use the "white" or "black" command to set the side to move, then use the reset command to back up to the move for that side. 6. time. This command is used to set the time control. There are several ways to use it, depending on the type of time control desired. (a) time sd/n sets the game to sudden-death in n minutes. such as game/10, game/30. time sd/30 would set game in 30 time control. (b) time moves/time smoves/stime sets the game to "moves" in "time" minutes, then "smoves" in "stime" minutes. A common setting is time 40/120/20/60 for 40 moves in 2 hours, then 20 moves in one hour. (c) time moves/time/sd/sdtime sets a standard first time control, followed by a sudden death time control. For example time 60/60/sd/30 is 60 moves in 60 minutes followed by game in 30 minutes. (d) for any of these, an optional 5th parameter can be added, which is the famous "Fischer clock" increment that is added to each players time remaining after he makes a move. The increment is given in seconds rather than minutes. Note that the default should be right unless the tournament modifies the T/C after the tournament starts for some reason. 7. settc. This command is used to correct time-control info after a restart. it will prompt you for how much time is left on both Crafty's and the opponent's clock, and for how many more moves until crafty makes the next time control. Again, usually not needed, but there for serious circumstances. After restarting, type "clock" to display this info and if it's wrong in any way, this settc command is the quickest way to fix it up. 8. clock. This command is used to adjust the internal clock time as it drifts away from the real chess clock as a game progresses. The format is simply "clock mins" to adjust Crafty's clock. Or "clock cmins omins" to adjust both Crafty's time and Crafty's internal time that the opponent has left. Since the current version doesn't really need the opponent's clock time, it can be ignored with no side-effects. Common problems and how to solve them: 1. Is crafty searching or pondering? I was not watching the screen, and the window size is small enough that all I see is analysis scrolling up the screen. This is easy. Look at the bottom line on the screen, and you will see a line that keeps changing, showing the depth, time used so far, how many moves have been searched and the PV. Look at the third column what shows something like 12/30, which says that at the current depth crafty has already searched 12 of the 30 legal moves at the root. You will notice that there is an extra character after the 30, either a "*" or "?". If an "*" is showing, Crafty is thinking about its move. If a "?" is showing, crafty is pondering and thinks it is the opponent's move. If it shows a "?" but you know it is Crafty's move, you simply missed it. Scroll back up using whatever scroll mechanism your text window uses, to find the move Crafty made. Hopefully this won't happen often, but on the occasional "emergency" men's room break, anything can happen. Just remember that "?" means I am pondering and it is my opponent's move, "*" means I am searching and it is my move. 2. I entered the wrong move, how do I fix this? You are playing in a game and at move 37, you enter Rfe1 rather than Rae1. To correct this, you have to do a couple of things. First, Crafty is now searching, and if you try to reset the position, it won't accept this command. To stop the search, type ? (followed by a <RETURN> of course) to tell Crafty to "move now". Once it displays the move it would play in response to the incorrect move, it will start its "ponder search" but now the reset command will work. Simply type "r 37" to back up to move 37, then type Rae1 and Crafty will continue as though nothing happened. Pay attention to the clock time after it moves and adjust if necessary (if you lost any time while correcting an incorrect move.) Note: You can also use the "remove" command, which will unmake the last move by each side. Crafty has to be pondering or waiting on input for this to work, just like the reset command, so if *you* typed the wrong move, type "?" to make it move, then "remove" which backs up one move for each side, followed by the opponent's move. If the opponent makes the wrong move on the board, and you enter it, do this same thing. Note, if the opponent screws up, you should notice whether or not crafty had predicted the right move. If it had, you should probably call the TD over, back the game up one move with the remove command, then use the "ponder xxx" command to tell crafty to ponder "xxx" (the move it was pondering before the wrong move was made by the opponent) and then it should be allowed to "sit" until the same amount of time elapses before you enter the correct move. The idea is that if the opponent screws up, it should not wipe out any searching crafty did while waiting. 3. The machine dies (power failure maybe). How do I recover? First, you can stop the clock for such failures, so do that *first*. Then, reboot the machine and start crafty by typing "crafty c". Next, type the "history" command and carefully check the last move it displays against the score sheet you are maintaining by hand. If they are the same, you are ready to enter a move and continue. If there are moves missing, use the "reada" command to re-enter these moves and append them to the moves already present. If the continue option won't work due to a corrupted history file, you have two choices. The best choice is to restart crafty without the "c" option, and then use the "read" command and enter the moves by hand so that if you screw up later, the "reset" command will work correctly to let you back up. If you are 100 moves into a game, this might not be practical. In this case, use the "setboard" command to enter the position. Be careful to check the position after entry using the display command, and be careful to not enter the wrong move since you can't use the "reset" command to back up after using the setboard command. After either of the above problems, you need to set the proper time control (if this is in your .craftyrc this is not needed) and then you need to adjust the clock to show the proper amount of time remaining. The command to display the clock is "clock". To adjust the clock use the command form "clock c-time o-time" where c-time is Crafty's time remaining, and o-time is the opponent's time remaining. These can be entered as simply the number of minutes left, or in the hh:mm format if preferred. "clock 60 50" sets Crafty's clock to 60 minutes left, opponent's clock to 50 minutes left. "clock 1:15 45" sets Crafty's clock to 75 minutes remaining, opponent's clock to 45. Crafty pays attention to how much time the opponent has used, so be sure and get them both correct. You should subtract 5 minutes from the actual time left on the clock to give yourself a cushion. Of course, you should *never* enter "0" time left, or even worse, a negative number, because Crafty will go south for the Winter if you do. :) Note that there is a "settc" command that simplifies getting the time control right after a restart... It's explained above. <end>