home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD1.bin / new / game / think / chaos / src / porting < prev    next >
Text File  |  1994-01-26  |  5KB  |  145 lines

  1.  
  2.         Porting Chaos
  3.  
  4.  
  5. 1.) Source organization
  6.  
  7.   I have tried to write this program in a way to make porting easy.
  8.  
  9.   System independent stuff (being of general interest, except for some
  10.   #ifdef AMIGA statements) is in the following files:
  11.     Chaos.h
  12.     DWZtabs.c
  13.     Memory.c
  14.     NonAmiga.h
  15.     NonAmiga.c
  16.     Out.c
  17.     OutDWZ.c
  18.     Pairings.c
  19.     Players.c
  20.     Project.c
  21.     Rounds.c
  22.     main.c
  23.   The files are organized mainly due to the menus which are offered on
  24.   the Amiga: A 'project' menu allowing things like loading, saving and
  25.   quitting the program, a 'players' menu which is used to add or modify
  26.   players, a rounds menu for the pairings and to enter results and a
  27.   'output' menu.
  28.  
  29.   A special case are NonAmiga.h and NonAmiga.c: I used some Amiga
  30.   functions in the system independent part, as they are of general use
  31.   and easy to implement. BUT: I never tested this source! Handle it
  32.   with care!
  33.  
  34.   DWZtabs.c contains tables which are used to compute the DWZ. (German
  35.   rating number) This is very close to ELO or USCF, you might use it for
  36.   another rating system. Please leave this and OutDWZ.c inside, as you
  37.   might have german users. If you want to implement another rating
  38.   system, please send the source to me, as I am very interested in
  39.   including it into the Amiga version.
  40.  
  41.   The main pairing algorithm is in Pairings.c. It is (hopefully) well
  42.   documented inside the file.
  43.  
  44.  
  45.  
  46.   System dependent stuff is in files ending with Ami:
  47.     ARexxAmi.c
  48.     MainAmi.c
  49.     OutAmi.c
  50.     PairingsAmi.c
  51.     PlayersAmi.c
  52.     ProjectAmi.c
  53.     RoundsAmi.c
  54.   In general xxxAmi.c implements the system dependent functions of xxx.c.
  55.   (Examples: Opening a special window, receiving input from this window
  56.   and so on.) You have to rewrite this from scratch. The advantage is,
  57.   that you are *very* flexible in designing the user interface.
  58.  
  59.   You may ignore ARexxAmi.c: Rexx is a process communication language,
  60.   which is used to control Chaos from the outside world on the Amiga.
  61.   (I use this for example to update the rating numbers in a player
  62.   database.)
  63.  
  64.  
  65.   Note, that the program doesn't use strings directly! Chaos is a
  66.   localized program, which means, that the user can select the language
  67.   of the strings. (The Amigs supports this very well.) If you need a
  68.   string, get it by calling GetChaosString(id), where id is a unique
  69.   number. These numbers are defined in Chaos_Cat.h, the english strings
  70.   (which are the default) themselves in Chaos_Cat.c. Additionally there
  71.   are three functions present in Chaos_Cat.c:
  72.     OpenChaosCatalog  - this is called at startup to select the
  73.                 language. (A so called catalog file is opened
  74.                 on the Amiga, if the language is anything else
  75.                 than english. The language might be selected
  76.                 by an option or something similar.)
  77.     GetChaosString      - this returns a pointer to the string
  78.     CloseChaosCatalog - the opponent to OpenChaosCatalog, called at
  79.                 exit.
  80.  
  81.  
  82. 2.) The documentation
  83.  
  84.   The documentation source is written in texinfo: This is a special set of
  85.   tex macros and developed by the Free Software Foundation (the GNU
  86.   project) especially for documentation purposes. I strongly encourage you,
  87.   to read this documentation (as it might give you a feeling, how Chaos
  88.   works on the Amiga) and to use it for your docs too, as it gives you the
  89.   possibility to get three different documentation formats from on file:
  90.     - Ascii format (by using the GNU program makeinfo)
  91.     - DVI format (by using TeX), which can be brought into PostScript
  92.     - Hypertext format, different versions available:
  93.         GNU info    (created with makeinfo, read with GNU Emacs)
  94.         www html    (World wide web, created with texi2html, read with
  95.             Mosaic)
  96.         AmigaGuide    (created with Amiga-makeinfo, read with
  97.             Amiga-MultiView, probably not very useful for
  98.             you... ;-)
  99.  
  100.   If you cannot get Makeinfo, ask me for the Ascii version or get it from
  101.   the binary archive of the Amiga version.
  102.  
  103.  
  104.  
  105. 3.) What you should do
  106.  
  107.   In general, I would like to see one big source archive finally, which
  108.   can be compiled on any system by using the appropriate Makefile. This
  109.   would make it easy to add enhancements (either for you or for me)
  110.   or fix bugs in the general part. So try to come close to the following
  111.   suggestions:
  112.  
  113.     - Do not change the general part (except for enhancements, of
  114.       course). If you need to do, use something like
  115.  
  116.         #ifdef MSDOS
  117.         ...
  118.         #endif.
  119.  
  120.     - Create files called MainMac.c, RoundsMSDOS.c or PairingsCursesX.c
  121.       (or OutCurses.c? Why not! ;-) which do the same as the respective
  122.       xxxAmi.c files.
  123.  
  124.     - If possible, use the original documentation in texinfo format.
  125.       Feel free to edit it, especially for introducing subsections
  126.       on Amiga behaviour, Macintosh behaviour, ... whereever you want.
  127.  
  128.     - If you are ready, send the sources to me. I would like to get it
  129.       through my compiler and update the source archive. Don't release
  130.       your version, until you have my agreement. (This is really just
  131.       to see, that it still works here.)
  132.  
  133.   Please understand, that I would like to keep it the same program on
  134.   any system.
  135.  
  136.   One final note: Please be so kind and include into your program a
  137.   possibility for the user to get informations (typically a menuitem
  138.   called 'About' or something similar) and include a note there, that
  139.   the original version is for the Amiga.
  140.  
  141.  
  142.  
  143.  
  144.         Jochen Wiedmann, 26.01.1994
  145.