
========================
 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]







