Lines Matching refs:is

23 PGN is "Portable Game Notation", a standard designed for the representation of
24 chess game data using ASCII text files. PGN is structured for easy reading and
26 programs. The intent of the definition and propagation of PGN is to facilitate
31 PGN is not intended to be a general purpose standard that is suitable for every
33 Instead, PGN is proposed as a universal portable representation for data
34 interchange. The idea is to allow the construction of a family of chess
64 well only within the scope of a single program or application because it is not
77 complexity. Ideally, if the documentation is not available for some reason,
83 property rights. The idea is to let chess programmers compete in a free market
110 Although its description may seem rather lengthy, PGN is actually fairly
138 Other than formats, there is the additional topic of PGN presentation. While
140 is no recommendation that either of these be an ultimate mode of chess data
151 The import format is rather flexible and is used to describe data that may have
159 The export format is rather strict and is used to describe data that is usually
174 storage is defined as storage that may be accessed by a variety of computing
175 systems. The only extra requirement for archival storage is that the newline
176 character have a specific representation that is independent of its value for a
178 a newline is the ASCII control character LF (line feed, decimal value 10,
184 It is well beyond the scope of the PGN project to reconcile all of these to the
187 file with native text editors. In these cases, an indulgence of sorts is
199 The idea is to encourage chess software authors to always allow for at least a
201 capability is available, it is likely to be at least two orders of magnitude
207 A PGN game represented using export format is said to be in "reduced export
211 numeric annotation glyphs ("NAG", see below). Reduced export format is used
218 PGN data is composed of characters; non-overlapping contiguous sequences of
224 PGN data is represented using a subset of the eight bit ISO 8859/1 (Latin 1)
225 character set. ("ISO" is an acronym for the International Standards
226 Organization.) This set is also known as ECMA-94 and is similar to other ISO
230 ASCII usage. (Code value 127, the ASCII DEL control character, is a graphic
231 character in ISO 8859/1; it is not used for PGN data representation.)
236 PGN data is discouraged as their graphic representation varies considerably
239 is encouraged for those languages that require such characters. The graphic
240 representations of this last set of 64 characters is fairly constant for the
252 This is an important point because there are many computing systems that can
261 platforms; this is an acceptable variation as long as the details of the
263 is practical, the Unix "newline is linefeed" convention is preferred.
269 format. This is because the treatment of tab characters is highly dependent
284 are relatively rare. An example of this is the "FEN" tag pair; it may have a
285 long tag value, but this particular tag pair is only used to represent a game
292 first kind is the "rest of line" comment; this comment type starts with a
298 loses its special meaning and is ignored. A semicolon appearing inside of a
299 brace comment loses its special meaning and is ignored. Braces appearing
307 There is a special escape mechanism for PGN data. This mechanism is triggered
309 data on the rest of the line is ignored by publicly available PGN scanning
310 software. This escape convention is intended for the private use of software
319 PGN character data is organized as tokens. A token is a contiguous sequence of
325 A string token is a sequence of zero or more printing characters delimited by a
327 empty string is represented by two adjacent quotes. (Note: an apostrophe is
328 not a quote.) A quote inside a string is represented by the backslash
329 immediately followed by a quote. A backslash inside a string is represented by
332 of strings. A string token is terminated by its closing quote. Currently, a
333 string is limited to a maximum of 255 characters of data.
335 An integer token is a sequence of one or more decimal digit characters. It is
338 An integer token is terminated just prior to the first non-symbol character
341 A period character (".") is a token by itself. It is used for move number
342 indications (see below). It is self terminating.
344 An asterisk character ("*") is a token by itself. It is used as one of the
346 or a game with an unknown or otherwise unavailable result. It is self
359 A Numeric Annotation Glyph ("NAG", see below) is a token; it is composed of a
361 characters. It is terminated just prior to the first non-digit character
364 A symbol token starts with a letter or digit character and is immediately
370 symbol token is terminated just prior to the first non-symbol character
371 following the symbol character sequence. Currently, a symbol is limited to a
377 A PGN database file is a sequential collection of zero or more PGN games. An
378 empty file is a valid, although somewhat uninformative, PGN database.
380 A PGN game is composed of two sections. The first is the tag pair section and
381 the second is the movetext section. The tag pair section provides information
391 The tag pair section is composed of a series of zero or more tag pairs.
393 A tag pair is composed of four consecutive tokens: a left bracket token, a
394 symbol token, a string token, and a right bracket token. The symbol token is
395 the tag name and the string token is the tag value associated with the tag
396 name. (There is a standard set of tag names and semantics described below.)
399 A further restriction on tag names is that they are composed exclusively of
400 letters, digits, and the underscore character. This is done to facilitate
409 value and the right bracket, and there is a single space character between the
426 The tag pair format is designed for expansion; initially only strings are
438 There is a set of tags defined for mandatory use for archival storage of PGN
439 data. This is the STR (Seven Tag Roster). The interpretation of these tags is
440 fixed as is the order in which they appear. Although the definition and use of
441 additional tag names and semantics is permitted and encouraged when needed, the
442 STR is the common ground that all programs should follow for public data
445 For import format, the order of tag pairs is not important. For export format,
447 also appear in order; this order is described below). Also for export format,
466 A set of supplemental tag names is given later in this document.
478 to help facilitate database scanning. If the name of the event is unknown, a
496 three letter names is suggested for those countries where such codes are
497 available. If the site of the event is unknown, a single question mark should
499 No comma is needed to separate a city or region from the IOC country code. A
514 The Date tag value gives the starting date for the game. (Note: this is not
515 necessarily the same as the starting date for the event.) The date is given
518 first four characters are digits that give the year, the next character is a
520 character is a period, and the final two characters are digits that give the
536 competition, this value is the number of the game played. If the use of a
537 round number is inappropriate, then the field should be a single hyphen
538 character. If the round is unknown, a single question mark should appear as
558 The White tag value is the name of the player or players of the white pieces.
560 or last name appears first. If a first name or first initial is available, it
561 is separated from the family name by a comma and a space. Finally, one or more
564 be a period.) If the name is unknown, a single question mark should appear as
567 The intent is to allow meaningful ASCII sorting of the tag value that is
568 independent of regional name formation customs. If more than one person is
570 separated by the colon character between adjacent entries. A player who is
574 The format used in the FIDE Rating Lists is appropriate for use for player name
590 The Black tag value is the name of the player or players of the black pieces.
606 The Result field value is the result of the game. It is always exactly the
608 is always one of four possible values: "1-0" (White wins), "0-1" (Black wins),
610 result otherwise unknown). Note that the digit zero is used in both of the
626 The movetext section is composed of chess moves, move number indications,
647 Neither the first or the last character on an export format PGN line is a
648 space. (This may change in the case of commentary; this area is currently
654 A move number indication is composed of one or more adjacent digits (an integer
675 immediately before a black move element. A white move number indication is
677 character appended. A black move number indication is formed from the integer
682 there is intervening annotation or commentary between the black move and the
683 previous white move; and second, if there is no previous white move in the
684 special case where a game starts from a position where Black is the active
693 SAN (Standard Algebraic Notation) is a representation standard for chess moves
698 character abbreviations for chess pieces, although this is easily changed in
699 the source. English is chosen over other languages because it appears to be
702 An alternative to SAN is FAN (Figurine Algebraic Notation). FAN uses miniature
710 two character name. The first character of a square identifier is the file of
711 the square; a file is a column of eight squares designated by a single lower
713 or kingside). The second character of a square identifier is the rank of the
714 square; a rank is a row of eight squares designated by a single digit from "1"
726 The letter code for a pawn is not used for SAN moves in PGN export format
731 It is admittedly a bit chauvinistic to select English piece letters over those
732 from other languages. There is a slight justification in that English is a de
734 is probably the best that can be done for now. A later section of this
742 A basic SAN move is given by listing the moving piece letter (omitted for
748 SAN kingside castling is indicated by the sequence "O-O"; queenside castling is
749 indicated by the sequence "O-O-O". Note that the upper case letter "O" is
750 used, not the digit zero. The use of a zero character is not only incompatible
753 Also note that the use of the letter "O" is consistent with the practice of
761 immediately following the equal sign. As above, the piece letter is in upper
769 is taken:
772 the originating file letter of the moving piece is inserted immediately after
776 by their originating ranks, the originating rank digit of the moving piece is
780 coordinate of the originating square of the moving piece is inserted
783 Note that the above disambiguation is needed only to distinguish among moves of
784 the same piece type to the same square; it is not used to distinguish among
788 both could legally move there, then a file disambiguation is needed; the
797 If the move is a checking move, the plus sign "+" is appended as a suffix to
798 the basic SAN move notation; if the move is a checkmating move, the octothorpe
799 sign "#" is appended instead.
802 indicator is used for disambiguation purposes. This means that if two (or
823 realistic games is probably just fractionally longer than three characters. If
826 more complex, and that LAN (Long Algebraic Notation, the predecessor of SAN) is
833 movetext section of a PGN game. Import format is somewhat more relaxed and it
836 data appearing in export format is in all cases guaranteed to be importable
840 software for permitting non-canonical SAN move representation. The idea is to
842 that is represented by non-canonical input. Some suggested transformations
852 present, it is always the last part of the move symbol.
854 When exported, a move suffix annotation is translated into the corresponding
862 An NAG (Numeric Annotation Glyph) is a movetext element that is used to
863 indicate a simple annotation in a language independent manner. An NAG is
870 An RAV (Recursive Annotation Variation) is a sequence of movetext containing
871 one or more moves enclosed in parentheses. An RAV is used to represent an
872 alternative variation. The alternate move sequence given by an RAV is one that
874 prior to the RAV. Because the RAV is a recursive construct, it may be nested.
884 is a symbol that is one of the following four values: "1-0" (White wins), "0-1"
886 unknown, or game abandoned). Note that the digit zero is used in the above;
901 Note that if there is more than one player field in an instance of a player
912 for the standard abbreviations for FIDE titles. A value of "-" is used for an
919 "-" is used for an unrated player.
932 players. A value of "-" is used for a player without an electronic address.
961 This uses a string; this is used for the playing section of a tournament (e.g.,
967 This uses a string; this is used for the stage of a multistage event (e.g.,
985 This uses a string; this is used for the traditional opening name. This will
986 vary by locale. This tag pair is associated with the use of the EPD opcode
992 This uses a string; this is used to further refine the Opening tag. This will
993 vary by locale. This tag pair is associated with the use of the EPD opcode
999 This uses a string; this is used to further refine the Variation tag. This
1000 will vary by locale. This tag pair is associated with the use of the EPD
1015 is a letter from "A" to "E" and the "D" positions are digits; this is used for
1017 This tag pair is associated with the use of the EPD opcode "eco" described in a
1023 This uses a string; this is used for an opening designation from the _New in
1024 Chess_ database. This tag pair is associated with the use of the EPD opcode
1039 separators for the Time tag value. The value is taken from the local time
1045 This tag is similar to the Time tag except that the time is given according to
1051 This tag is similar to the Date tag except that the date is given according to
1057 The follwing tag is used to help describe the time control used with the game.
1063 descriptor for each time control period; if more than one descriptor is present
1065 in the order in which they are used in the game. The last field appearing is
1070 The first kind is a single question mark ("?") which means that the time
1071 control mode is unknown. When used, it is usually the only descriptor present.
1073 The second kind is a single hyphen ("-") which means that there was no time
1074 control mode in use. When used, it is usually the only descriptor present.
1076 The third Time control field kind is formed as two positive integers separated
1077 by a solidus ("/") character. The first integer is the number of moves in the
1078 period and the second is the number of seconds in the period. Thus, a time
1081 The fourth TimeControl field kind is used for a "sudden death" control period.
1083 is sometimes the only descriptor present. The format consists of a single
1087 The fifth TimeControl field kind is used for an "incremental" control period.
1089 is usually the only descriptor in the value. The format consists of two
1092 integer gives the number of extra seconds added after each move is made. So,
1096 The sixth TimeControl field kind is used for a "sandclock" or "hourglass"
1098 TimeControl tag value and is usually the only descriptor in the value. The
1101 period. The time control is implemented as if a sandclock were set at the
1122 position is given in the "FEN" tag pair. This tag must appear for a game
1130 position used in the game. FEN is described in a later section of this
1131 document. If a SetUp tag appears with a tag value of "1", the FEN tag pair is
1137 There is a single tag that discusses the conclusion of the game.
1144 extra information and so the Termination tag is defined for this purpose.
1194 NAG zero is used for a null annotation; it is provided for the convenience of
1233 22 White is in zugzwang
1234 23 Black is in zugzwang
1361 is encouraged.
1366 The use of the file suffix ".pgn" is encouraged for ASCII text files containing
1445 There is a standard sorting order for PGN games within a file. This collation
1446 is based on eight keys; these are the seven tag values of the STR and also the
1449 The first (most important, primary key) is the Date tag. Earlier dated games
1450 appear prior to games played at a later date. This field is sorted by
1455 The second key is the Event tag. This is sorted in ascending ASCII order.
1457 The third key is the Site tag. This is sorted in ascending ASCII order.
1459 The fourth key is the Round tag. This is sorted in ascending numeric order
1461 hyphen used for the round is ordered before any integer value. A query
1462 character is ordered before a hyphen character.
1464 The fifth key is the White tag. This is sorted in ascending ASCII order.
1466 The sixth key is the Black tag. This is sorted in ascending ASCII order.
1468 The seventh key is the Result tag. This is sorted in ascending ASCII order.
1470 The eighth key is the movetext itself. This is sorted in ascending ASCII order
1476 This section describes some PGN software that is either currently available or
1489 Some PGN software is freeware and can be gotten from ftp sites and other
1490 sources. Other PGN software is payware and appears as part of commercial
1494 PGN compatibility, it is likely that a few letters to them along with a copy of
1514 The "SAN Kit" is an ANSI C source chess programming toolkit available for free
1519 kit is freely redistributable for anyone as long as future distribution is
1520 unhindered for everyone. The SAN Kit is undergoing continuous development,
1531 text selection. It is available from the chess.uoknor.edu ftp site in the
1533 "pgnrd**.exe"; the latest at this writing is "PGNRD130.EXE". Suggestions and
1542 version is in the directory pub/chess/Unix as the file "mail2pgn.c".
1548 There is a report that mail2pgn has been superseded by the newer program
1554 "XBoard" is a comprehensive chess utility running under the X Window System
1556 now handles PGN data. It is available from the chess.uoknor.edu ftp site in
1564 It is available from the chess.uoknor.edu ftp site in the
1566 version is in the directory pub/chess/DOS as the file "cupgn120.exe".
1575 communication with other EPD capable programs. Historically, Zarkov is the
1579 A vendor for North America is:
1587 A vendor for Europe is:
1600 There is a report of a freeware program, "PGN2CA", that will convert PGN
1601 databases into Chess Assistant format. For more information, the contact is
1605 A vendor for North America is:
1617 is able to use the EPD standard for communication with other EPD capable
1624 BOOKUP database program to provide position scoring. This is done by first
1638 BOOKUP allows for some customizing of EPD actions. One such customization is
1640 that the score is always given from the viewpoint of the active player. This
1641 is explained more fully in the section on the "ce" (centipawn evaluation)
1646 centipawn evaluation convention. There is an apparent problem with HIARCS that
1650 A vendor in North America is:
1662 The current version (2.1) of the commercial chessplaying program "HIARCS" is
1667 A vendor in North America is:
1680 The chess database "Deja Vu" from ChessWorks is a PGN compatible collection of
1681 over 300,000 games. It is available only on CD-ROM and is scheduled for
1683 is US$329. For further information, the authors are John Crayton and Eric
1691 The program is included in the self extracting archive available from
1693 Source code is also included. This program is reported to supersede the older
1695 For further information about MV2PGN, the contact person is Gary Bastin
1712 For further information about the Hansen utilities, the contact person is the
1718 "Slappy the Database" is a commercial chess database and translation program
1719 scheduled for release no sooner than late 1994. It is a low cost utility with
1737 "CBASCII" is a general utility for converting chess data between ChessBase
1738 format and ASCII representations. It has PGN capability, and it is available
1740 "cba1_2.zip". The contact person is the program's author, Andy Duplain
1746 "ZZZZZZ" is a chessplaying program, complete with source, that also includes
1747 some database functions. A recent version is reported to have both PGN and EPD
1748 capabilities. It is available from the chess.uoknor.edu ftp site in the
1750 is its author, Gijsbert Wiesenecker (wiesenecker@sara.nl).
1756 old and new format, to PGN. It is available from the chess.uoknor.edu site in
1758 The contact person is the author, Kevin Nomura (chow@netcom.com).
1763 CHESSOP is an openings database and viewing tool with support for reading PGN
1778 positions) and no PGN or transposition support but is otherwise the same as
1785 The program "CAT2PGN" is a utility that translates data from the format used by
1786 Chess Assistant into PGN. It is available from the chess.uoknor.edu ftp site.
1787 The contact person for CAT2PGN is its author, David Myers
1798 is David Barnes (djb@ukc.ac.uk).
1803 The primary PGN data archive repository is located at the ftp site
1804 chess.uoknor.edu as the directory "pub/chess/Game-Databases/PGN". It is
1806 The European site ftp.math.uni-hamburg.de is also reported to carry a regularly
1975 While PGN is used for game storage, there are other data representation
1982 FEN is "Forsyth-Edwards Notation"; it is a standard for describing chess
1995 FEN is based on a 19th century standard for position recording designed by the
2004 Having a standard position notation is particularly important for chess
2026 A FEN description has six fields. Each field is composed only of non-blank
2039 count of contiguous empty squares along a rank. A solidus character "/" is
2045 The second field represents the active color. A lower case "w" is used if
2046 White is to move; a lower case "b" is used if Black is the active player.
2053 pieces or enemy attacks. If there is no castling availability for either side,
2054 the single character symbol "-" is used. Otherwise, a combination of from one
2061 kingside before queenside. There is no white space between the letters.
2066 The fourth field is the en passant target square. If there is no en passant
2067 target square then the single character symbol "-" appears. If there is an en
2068 passant target square then is represented by a lowercase file character
2070 following a white pawn double advance (Black is the active color) or else be
2073 An en passant target square is given if and only if the last move was a pawn
2075 a square name even if there is no pawn of the opposing side that may
2081 The fifth field is a nonnegative integer representing the halfmove clock. This
2082 number is the count of halfmoves (or ply) since the last pawn advance or
2083 capturing move. This value is used for the fifty move draw rule.
2088 The sixth and last field is a positive integer that gives the fullmove number.
2090 Black. It is incremented by one immediately after each move by Black.
2120 EPD is "Extended Position Description"; it is a standard for describing chess
2122 ASCII character set. It is intended for data and command interchange among
2123 chessplaying programs. It is also intended for the representation of portable
2136 EPD is based in part on the earlier FEN standard; it has added extensions for
2139 and Steven Edwards; its first implementation is in Stanback's master strength
2146 unlike FEN, EPD is designed to be expandable by the addition of new operations
2167 Each EPD data field is composed only of non-blank printing ASCII characters.
2179 count of contiguous empty squares along a rank. A solidus character "/" is
2185 The second field represents the active color. A lower case "w" is used if
2186 White is to move; a lower case "b" is used if Black is the active player.
2193 pieces or enemy attacks. If there is no castling availability for either side,
2194 the single character symbol "-" is used. Otherwise, a combination of from one
2201 kingside before queenside. There is no white space between the letters.
2206 The fourth field is the en passant target square. If there is no en passant
2207 target square then the single character symbol "-" appears. If there is an en
2208 passant target square then is represented by a lowercase file character
2210 following a white pawn double advance (Black is the active color) or else be
2213 An en passant target square is given if and only if the last move was a pawn
2215 a square name even if there is no pawn of the opposing side that may
2221 An EPD operation is composed of an opcode followed by zero or more operands and
2222 is concluded by a semicolon.
2224 Multiple operations are separated by a single space character. If there is at
2225 least one operation present in an EPD line, it is separated from the last
2231 An opcode is an identifier that starts with a letter character and may be
2235 An operand is either a set of contiguous non-white space printing characters or
2236 a string. A string is a set of contiguous printing characters delimited by a
2240 If at least one operand is present in an operation, there is a single space
2241 between the opcode and the first operand. If more than one operand is present
2242 in an operation, there is a single blank character between every two adjacent
2243 operands. If there are no operands, a semicolon character is appended to the
2257 operands appearing in ASCII order. An example of the latter set is the "bm"
2262 should be represented using SAN. If a different representation is used, there
2263 is no guarantee that the EPD will be read correctly during subsequent
2268 described in the opcode list given below. A negative integer is formed with a
2270 sign may be used for indicating a non-negative value, but such use is not
2271 required and is indeed discouraged.
2276 point operand is constructed from an optional sign character ("+" or "-"), a
2284 starts with a lower case letter and is composed of only lower case letters,
2289 programs should start with an upper case letter. This is so they may be easily
2294 If a given program does not recognize a particular opcode, that operation is
2295 simply ignored; it is not signaled as an error.
2307 The opcode "acn" takes a single non-negative integer operand. It is used to
2310 byte) representation is suggested.
2315 The opcode "acs" takes a single non-negative integer operand. It is used to
2318 byte) representation is suggested.
2325 writer. Each operand is a SAN move; they appear in ASCII order.
2332 writer. Each operand is a SAN move; they appear in ASCII order.
2338 level comment that applies to the given position. It is the first of ten
2343 This ten member comment family of opcodes is intended for use as descriptive
2351 2) As the EPD record for each position in the game is processed, the comment
2360 null. (This is the set "cN" though "c9".) Second, and only if a string
2361 operand is present, the value of the corresponding comment string register is
2379 active player. The number of plies until mate is given by subtracting the
2380 evaluation from the value 32767. Thus, a winning mate in N fullmoves is a mate
2387 passive player. The number of plies until mate is given by subtracting the
2389 mate in N fullmoves is a mate in (2 * N) halfmoves (or ply) and has a
2402 The "dm" opcode is used to indicate the number of fullmoves until checkmate is
2404 takes a single operand which is a positive integer giving the fullmove count.
2408 This opcode is intended for use with problem sets composed of positions
2414 The opcode "draw_accept" is used to indicate that a draw offer made after the
2415 move that lead to the indicated position is accepted by the active player.
2421 The opcode "draw_claim" is used to indicate claim by the active player that a
2422 draw exists. The draw is claimed because of a third time repetition or because
2424 move (see the opcode "sm") is also required to appear as part of the same EPD
2430 The opcode "draw_offer" is used to indicate that a draw is offered by the
2431 active player. A supplied move (see the opcode "sm") is also required to
2432 appear as part of the same EPD record; this move is considered played from the
2438 The opcode "draw_reject" is used to indicate that a draw offer made after the
2439 move that lead to the indicated position is rejected by the active player.
2445 The opcode "eco" is used to associate an opening designation from the
2448 operand at all. If an operand is present, its value is associated with an
2449 "ECO" string register of the scanning program. If there is no operand, the ECO
2450 string register of the scanning program is set to null.
2452 The usage is similar to that of the "ECO" tag pair of the PGN standard.
2458 It always takes a single operand that is the positive integer value of the move
2461 This opcode is used to explicitly represent the fullmove number in EPD that is
2462 present by default in FEN as the sixth field. Fullmove number information is
2473 The halfmove clock of a position is equal to the number of plies since the last
2474 pawn move or capture. This information is used to implement the fifty move
2475 draw rule. It always takes a single operand that is the non-negative integer
2478 This opcode is used to explicitly represent the halfmove clock in EPD that is
2479 present by default in FEN as the fifth field. Halfmove clock information is
2489 The opcode "id" is used to provide a simple identifying label for the indicated
2492 This opcode is intended for use with test suites used for measuring
2502 The opcode "nic" is used to associate an opening designation from the _New In
2504 string operand (the NIC opening name) or no operand at all. If an operand is
2505 present, its value is associated with an "NIC" string register of the scanning
2506 program. If there is no operand, the NIC string register of the scanning
2507 program is set to null.
2509 The usage is similar to that of the "NIC" tag pair of the PGN standard.
2514 The "noop" opcode is used to indicate no operation. It takes zero or more
2516 processing. It is intended for use by developers for program testing purposes.
2521 The "pm" opcode is used to provide a single predicted move for the indicated
2523 move is judged by the EPD writer to represent the best move available to the
2526 If a non-empty "pv" (predicted variation) line of play is also present in the
2527 same EPD record, the first move of the predicted variation is the same as the
2530 The "pm" opcode is intended for use as a general "display hint" mechanism.
2535 The "pv" opcode is used to provide a predicted variation for the indicated
2537 playable from the position. This sequence is judged by the EPD writer to
2540 If a "pm" (predicted move) operation is also present in the same EPD record,
2541 the predicted move is the same as the first move of the predicted variation.
2546 The "rc" opcode is used to indicate the number of occurrences of the indicated
2548 including the initial starting position, is considered to have an "rc" value of
2555 The opcode "resign" is used to indicate that the active player has resigned the
2561 The "sm" opcode is used to provide a single supplied move for the indicated
2563 move is the move to be played from the position.
2565 The "sm" opcode is intended for use to communicate the most recent played move
2566 in an active game. It is used to communicate moves between programs in
2573 The "tcgs" opcode is one of the telecommunication family of opcodes used for
2575 operand that is a positive integer. It is used to select among various games
2581 The "tcri" opcode is one of the telecommunication family of opcodes used for
2583 dependent string operands. The first operand is the e-mail address of the
2584 receiver of the EPD record. The second operand is the name of the player
2585 (program or human) at the address who is the actual receiver of the EPD record.
2590 The "tcsi" opcode is one of the telecommunication family of opcodes used for
2592 dependent string operands. The first operand is the e-mail address of the
2593 sender of the EPD record. The second operand is the name of the player
2594 (program or human) at the address who is the actual sender of the EPD record.
2600 level variation name that applies to the given position. It is the first of
2605 This ten member variation name family of opcodes is intended for use as
2613 2) As the EPD record for each position in the game is processed, the variation
2622 set to null. (This is the set "vN" though "v9".) Second, and only if a string
2623 operand is present, the value of the corresponding variation name string
2624 register is set equal to the string operand.
2632 use piece letter codes common in their locales. This is not a problem as long
2633 as PGN data that resides in archival storage or that is exchanged among
2697 *** This section is under development.
2702 *** This section is under development.
2704 The binary coded version of PGN is PGC (PGN Game Coding). PGC is a binary
2714 PGC files should be used only when the use of PGN is impractical due to time
2718 because it is much more difficult (than PGN) to understand without proper
2721 PGC data is composed of a sequence of PGC records. Each record is composed of
2722 a sequence of one or more bytes. The first byte is the PGN record marker and
2724 remaining portion is composed of zero or more PGN record items. Item types
2730 At the lowest level, PGC binary data is organized as bytes, words (two
2737 A one byte integer item is called "int-1". A two byte integer item is called
2738 "int-2". A four byte integer item is called "int-4".
2741 There is no provision for other characters sets or representations.
2746 A chess move is represented using a move ordinal. This is a single unsigned
2747 byte quantity with values from zero to 255. A move ordinal is interpreted as
2748 an index into the list of legal moves from the current position. This list is
2752 systems, is insufficient as there are some positions that have more than 128
2759 Moves can be organized into sequences and sets. A move sequence is an ordered
2761 set is a list of moves that are all playable from the current position.
2763 Move sequence data is represented using a length header followed by move
2764 ordinal data. The length header is an unsigned integer that may be a byte or a
2770 Move set data is represented using a length header followed by move ordinal
2771 data. The length header is an unsigned integer that is a byte. The integer
2780 PGC string data is represented using a length header followed by bytes of
2781 character data. The length header is an unsigned integer that may be a byte, a
2786 "string-4" items. No special ASCII NUL termination byte is required for PGC
2787 storage of a string as the length is explicitly given in the item header.
2793 0x00) is the "noop" marker and carries no meaning. Each additional marker code
2799 Marker 0x01 is used to indicate a single complete game in reduced export
2801 moves, and no annotations or comments. This record type is used as an
2803 The general marker pair (0x05/0x06) is used to help represent game data that
2827 Marker 0x02 is used to indicate a single tag pair. There are two items that
2837 Marker 0x03 is used to indicate a short move sequence. There is one item that
2838 follows marker 0x03 to form the "short move sequence" record; this is:
2845 Marker 0x04 is used to indicate a long move sequence. There is one item that
2846 follows marker 0x04 to form the "long move sequence" record; this is:
2853 Marker 0x05 is used to indicate the beginning of data for a game. It has no
2854 associated items; it is a complete record by itself. Instead, it marks the
2857 same game. (PGC record type 0x01, "reduced export format single game", is not
2859 game construct is to be used as an alternative to record type 0x01 in those
2860 cases where the latter is too restrictive to contain the data for a game.)
2865 Marker 0x06 is used to indicate the end of data for a game. It has no
2866 associated items; it is a complete record by itself. Instead, it marks the end
2874 Marker 0x07 is used to indicate the presence of a simple NAG (Numeric
2875 Annotation Glyph). This is an annotation marker that has only a short type
2876 identification and no operands. There is one item that follows marker 0x07 to
2877 form the "simple-nag" record; this is:
2884 Marker 0x08 is used to indicate the beginning of an RAV (Recursive Annotation
2885 Variation). It has no associated items; it is a complete record by itself.
2887 annotation. It is considered an opening bracket for a later rav-end record;
2888 the recursive annotation is completely described between the bracket pair. The
2894 Marker 0x09 is used to indicate the end of an RAV (Recursive Annotation
2895 Variation). It has no associated items; it is a complete record by itself.
2897 annotation. It is considered a closing bracket for an earlier rav-begin
2898 record; the recursive annotation is completely described between the bracket
2904 Marker 0x0a is used to indicate the presence of an escape string. This is a
2906 PGN. The data that is escaped is the sequence of characters immediately
2908 is the case with the PGN percent sign escape, the use of a PGC escape-string
2909 record is limited to use for non-archival data. There is one item that follows
2910 marker 0x0a to form the "escape-string" record; this is the string data being
2918 *** This section is under development.