======================== NORMAL.EXE Version 3.0 12/95 ASCII Chess Game Converter ======================== Normal has two functions--it converts chess notation and game headers to a standard syntax. Normal operates on switch settings. A run can be custom-built to serve a user's specific needs. Normal reads input (chess games) from one file and writes the verified and converted games to an output file. Minor notation errors--such as missing check, mate or capture--are corrected. Moves that do not follow the rules of chess are flagged as errors. Notation -------- Normal accepts most algebraic notations including USCF, Long, Compact, and Coordinate. Move numbers, except for the first (1.), are optional. Thus, the following game could be converted... 1.f2-f3 e7-e6 b1-c3 f8-e7 g2-g4 e7-h4 0-1 All that was necessary was to affix the move number "1." and add the terminator "0-1". The output notation will appear as standard USCF or PGN (also known as "short algebraic"). Header conversion ----------------- There are many formats of game headers--Normal deals with only two--NTR format and PGN format. NTR - Nunn's Text Reader Format - Sample games Player,A - Player,B Tournament 1994 1.e4 1-0 White,Charles (0900) - Black,Samuel (1000) [B35] London Chess Tournament 1881 1.f3 e6 2.Nc3 Be7 3.g4 Bh4++ 0-1 PGN - Portable Games Notation - Sample games Pseudo-PGN [White Player,A] [Black Player,B] [Site Tournament] [Date 1994] 1.e4 1-0 Standard PGN (quotes required; first 7 lines required) [Event "Chess Tournament"] [Site "London"] [Date "1881.??.??"] [Round "1"] [White "White,Charles"] [Black "Black,Samuel"] [Result "0-1"] [ECO "B35"] [WhiteElo "0900"] [BlackElo "1000"] [Opening "Sicilian Defense, Accelerated Dragon Variation, Simagin Var."] 1.e4 c5 2.Nf3 ... 0-1 The NTR and PGN formats above account for perhaps 80% of all chess games published in ASCII form. Normal can also be used for other formats, such as NIC, to verify and correct move notation. (For conversion of NIC game headers, use shareware NIC2PGN.ZIP.) Normal ALWAYS verifies and corrects notation. On the other hand, header conversion is controlled by a "switch." convertHdrs=0 (default conversion set off) Switches -------- Switches set options. They determine the format of output; whether annotations are left in a game and how they are treated; whether certain fields should be treated individually or combined. Switches set to "1" activate a particular option. If set to "0" the option is turned off. Some switches of note: bracketOut=0 (bracketed comments are not written to output) comLevelOut=0 (strips ?! move comments) bracketIn="[]" (scan input for comments within [ ] brackets) Configuration files ------------------- These are files which contain switch settings for customized runs. The following one might be appropriate for converting NTR to PGN: * FILE : N2PFIN.cfg [fmtIn=NTR] [fmtOut=PGN] [bracketIn="{}"] [bracketIn="[]"] [bracketIn="()"] [convertHdrs=1] [comLevelOut=0] [bracketOut=0] [combSiteOut=1] It does several things: for one, it scans for three different sets of brackets, treating them as comments. The switch, bracketOut=0, tells Normal to drop all the bracketed comments it has found from the output. Likewise, ?! move comments will also be dropped (comLevelOut=0). If one desires to save annotations, then use bracketOut=1 and comLevelOut=1. (These are also the defaults.) Another switch, braceTrans=1, informs Normal to convert all outermost scanned brackets to { } brackets on output. Beginning with version 3.0 this is likely not necessary since, if fmtOut=PGN, any outer [ ] comments are automatically converted to { }. Thus, if braceTrans is not specified (or omitted), outer variation ( ) brackets will be preserved. The switch combSiteOut=1 (a default) tells Normal to combine the Site and Event fields of PGN into Site. There is another switch, combEventOut=1 which will combine both fields into Event. To keep the Site and Event fields separate, be sure to include the switch, combSiteOut=0. Here's a configuration file for going in the opposite direction from the one above, It converts PGN to NTR: * FILE : P2NFIN.cfg [fmtIn=PGN] [fmtOut=NTR] [bracketIn="{}"] [bracketIn="()"] [convertHdrs=1] [comLevelOut=0] [bracketOut=0] A run using P2Nfin.cfg will convert games and headers to the syntax used by Nunn's Text Reader (a ChessBase product). Note that all annotations are removed. Configuration (.cfg) files can also be updated from within Normal. Just enter the configuration name (the extension can be omitted), then again enter an asterisk (*) at the same prompt. This takes you to the editor. Switches can be set with or without saving the changes to the current configuration file--thus allowing modifications on a run-by-run basis. (Just bypass the "Save?" prompt by hitting Enter.) Other Formats ------------- By using convertHdrs=0, Normal will bypass any header conversions. This can be used to verify notation in games having formats other than NTR or PGN. Game Terminators ---------------- The only terminators recognized by Normal are 1-0, 0-1, 1/2, and 1/2-1/2. Special Notes ------------- Owners of Chess Assistant converting to PGN format for use with C.A.'s PGN2CA.exe will want to specify combSiteOut=1 (now also the default). This is because the Event field of PGN is put in the "Remarks" field of C.A. instead of into "Place". Remarks will be lost if you subsequently print the base back to ASCII. Hints ----- Normal is quite forgiving of PGN headers on input. Thus the following would be a valid game header: [white Holmes,L][black Wilkinson][event cr Ch] Even though the quotes are missing; the Result, Site, Date, Round, etc., and the fields are on a single line and out of order, it would still be converted--or corrected if fmtOut=PGN. This knowledge is helpful if you have a batch of new games that need formatting. Just edit in the [ ] brackets. Be sure to also edit the output afterwards, changing the [Date "????.??.??"] field appropriately to, say, [Date "1994.??.??"]. Command Line Run Parameters --------------------------- Normal can be run from the Windows command line (Cntl/R) or using "drag and drop." A command line entry might look like the following... c:\chess\normal.exe myFile.txt myFile.pgn normal.cfg Then just click OK to run. More samples (each should be preceded by "normal.exe"): trial.txt trialout.txt normal.cfg [typical full default] trial.txt [same as above--defaults assumed] trial [ditto; looks for 1 .pgn; 2 .txt; 3 .doc] trial.txt * n2p.cfg [ASCII->PGN writes back to input] trial.txt * n2p [ditto; .cfg assumed] WARNING: If running from the Command Line, there is no warning about backup nor about overwriting the output file when Input = Output!! In all cases, never write back to input unless you have a BACKUP. APPENDIX -------- Normal switches fmtIn=[NTR/PGN] - sets defaults; may be omitted fmtOut=[NTR/PGN] - sets defaults and output format; required 1/0 Switches "On" function (switch=1) --------------------------------------------- braceTrans= - translates all scanned brackets to { } braces (default is Off) verboseOut= - insert space after period of move number (default is Off) convertHdrs= - attempt header conversion/reformat PGN from PGN (default is On) bracketOut= - pass bracketed comments to output (default is On) comLevelOut - pass ?! move comments to output (default is On) combEventOut - create PGN Event=Site + Event (clear Site) (default is Off) combSiteOut - create PGN Site=Site + Event (clear Event) (default is On) expandECO - create expanded opening name text (PGN [Opening "text"]) if ECO code is present (default is Off) (Requires ECO index table) bracket switches --------------------------------------------- bracketIn="{}" - Scans incoming notation for { } brackets and treats any enclosed text as a comment bracketIn="[]" - as above but scans for [ ] brackets bracketIn="()" - etc. Other brackets could be used such as "<>", etc. Note* if braceTrans=1 then all incoming brackets are converted to { } on output. Comments, suggestions, bugs? Contact: Paul W. Onstad, INTERNET:70641.3236@compuserve.com NORMAL.EXE is now shareware. See the U4Key.txt file for registration information. Non-validated copies (limited to 500 games) can be freely distributed. The only restriction is that Normal should not be modified, and, if posted elsewhere, should be accompanied by this ReadMe file plus the other accompanying files--U4Key.txt, Normal.cfg, and the sample tutor file, Trial.txt. [end of file]