home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 2 / goldfish_vol2_cd2.bin / bbs / gfx / coppercontrol-1.0.lha / CopperControl / CC-ED.doc < prev    next >
Text File  |  1993-11-29  |  38KB  |  812 lines

  1.  
  2. _______________________________________________________________________________
  3. -------------------------------------------------------------------------------
  4.     ____ ____ ____ ____ ____ ____    ____ ____ __  __ _____ ____  ____ __    
  5.    /\___\\___\\___\\___\\___\\___\  /\___\\___\\_\/\_\\____\\___\ \___\\_\   
  6.   / / __//   // _ // _ // __//__ / / / __//   //  \/ //_  _//__ / /   // /_  
  7.  / / /\ / / // __// __// __//   / / / /\ / / // /\  // / / /   / / / // /__\ 
  8.  \/___//___//_/ \/_/ \/___//_/\_\ \/___//___//_/\/_/ \/_/\/_/\_\/___//_____/ 
  9.  
  10.                -=*  THE EDITOR  *=-
  11. _______________________________________________________________________________
  12. -------------------------------------------------------------------------------
  13.  
  14.          Version 1.0, Every OS compatible (tested on 1.3, 2.0+, 3.0)
  15.  
  16.                       SHAREWARE ©1993 by Nadir Boussoukaia
  17.  
  18.  
  19.  
  20.                   >>>  AUTHOR  <<<             >>>  DISTRIBUTOR  <<<
  21.  Write to:  /--------------------------\   /----------------------------\
  22.             |     Nadir Boussoukaia    |   |        SILICONE-DP         |
  23.             |   1 Rue Des Romanesques  |   |     5 Bld des Arceaux      |
  24.             | 13015 Marseille (France) |   | 34000 Montpellier (France) |
  25.             \--------------------------/   \----------------------------/
  26.              ---> comments/Hellos           ---> Purchasing the program:
  27.                  suggestions/Bugs report        30 French Francs per disk
  28.                  Demos swapping                 (compensed shareware).
  29.  
  30.  
  31.  
  32.         ==================================================
  33.          ANY SERIOUS JOB PROPOSITION IS WARMLY WELCOMED.
  34.         ==================================================
  35.  
  36. -------------------------------------------------------------------------------
  37. Introduction
  38. -------------------------------------------------------------------------------
  39. Copper Control Editor (Let's call it CC-ED) is a general purpose copperlist
  40. editor, with practically no limitation (ie more than one color per rasterline
  41. allowed). With it you can edit and save copperlists for your machine-code
  42. programs or anything like. 
  43.  
  44. Another interesting feature is that you can save copperlists for Copper
  45. Control: That small program (3844 bytes) gives you the possibility to use your
  46. own copperlist instead of ANY NUMBER of colors, in any Intuition Screen, like
  47. Workbench screen for example. See other doc.
  48.  
  49. CC-ED offers a user friendly DeluxePaint style editor, with a lot of features
  50. originals for this kind of program (like UNDO).
  51. It has been made in the optics of a total simplicity and functionality in use,
  52. in order that non-specialists could use it with no headaches ( You will find NO
  53. esoteric function or message !).
  54. However, it enforces no restrictions, so coders can use it and have at their
  55. disposal practically all COPPER possibilities.
  56.  
  57. A French or German version could be available.
  58.  
  59. Features
  60. --------
  61. - Copper Control done in short & fast assembly
  62. - The editor CC-ED done in AMOS 1.3 (maybe a 2.0 version in C)
  63. - Intuitive interface (Hope so!)
  64. - You can choose the color register of the copperlist
  65. - More than one color per line possible (every 8 pixels)
  66. - Possibility of multi-color register copperlists
  67. - Copperlists also saved as RAW or ASCII files for coders
  68. - Colors tables generated as RAW and ASCII files too
  69.  
  70. Non-Features
  71. ------------
  72. - AGA support (not yet ?) 
  73. - 100% bug free ! (let's talk only 99%...)
  74.  
  75. -------------------------------------------------------------------------------
  76. Disclaimer
  77. -------------------------------------------------------------------------------
  78. THIS PROGRAM IS PROVIDED ON AN `AS IS' BASIS, NO WARRANTIES ARE MADE, EITHER
  79. EXPRESSED OR IMPLIED. SO THE AUTHOR DOES NOT ASSUME ANY RESPONSIBILITY OR
  80. LIABILITY, AND ALL USE OF THIS PROGRAM IS AT YOUR OWN RISK.
  81.  
  82. -------------------------------------------------------------------------------
  83. Distribution & ShareWare Donation
  84. -------------------------------------------------------------------------------
  85. This product is SHAREWARE: Using it assumes that you have already payed the
  86. small CONTRIBUTION FEE of 30 French Francs (about 6$). Otherwise, it has been
  87. fixed very low, so you have no excuse: You should do it now (You'll find the
  88. distributor's adress at the beginning of text).
  89.  
  90. After that, You could use it like you want, including in commercial
  91. productions, with reserve that it's not the principal object.
  92.  
  93. The future of this product depends on you. If you support me I'll continue
  94. working on it and improve it. I have also some other projects in mind.
  95. But everything depends on my moral...   And my moral depends on my wallet.
  96.  
  97. -------------------------------------------------------------------------------
  98. Installation 
  99. -------------------------------------------------------------------------------
  100. Copper Control Editor may be placed anywhere you want.
  101. It looks for an optionnal configuration file in current directory (in Workbench
  102. this will be the same directory than CC-ED) or in S:
  103. Note that This file is OPTIONNALLY needed. CC-ED needs no file, except for one
  104. library: I removed the use of `Mathtrans.Library', but I wasn't able to remove
  105. the use of `Diskfont.Library'. Though I only set ROM fonts, AMOS uses this
  106. library. So it must be in your LIBS:
  107.  
  108. CC-ED has been compiled for Workbench, but It can be run either from CLI or
  109. Workbench. From CLI you should use a `Run >NIL:' to keep hand.
  110.  
  111. -------------------------------------------------------------------------------
  112. Using Copper Control Editor
  113. -------------------------------------------------------------------------------
  114. Preliminary: I call `Color Register' one of the 32 memory cells used to stock
  115.              colors of the palette.
  116.  
  117. Once program loaded, you can see on your screen:
  118.  - A pannel with quite a lot of gadgets,
  119.  - A cursor composed with two sprites on the left black screen,
  120.  - Your beautiful pinky mousepointer.
  121.  
  122. You can move the cursor with:
  123.  - Keyboard:    Arrows up & down on main edit. You can speed up the move with
  124.         shift keys (there's a different step for each shift key).
  125.         Arrows left & right when you edit a line. Shift keys are used
  126.         here to go directly to the beginning or the end of the edited
  127.         line.
  128. - Mouse:    Just click wherever you want to place the cursor.
  129.         If you hold down mouse button on top or bottom of screen then
  130.         copperlist smoothly scrolls.
  131. - Slider:    Grab the slider bar and move it up and down to go where you
  132.         want. If you don't click on the bar then there will be just
  133.         a small jump.
  134.  
  135. The program philosophy is that everything must be as simple and intuitive as
  136. possible. There are three ways of modifying the edited copperlist:
  137.  - With Cursor functions:
  138.             Most are in the `Current Line' pannel,like for example
  139.             modify color, Edit, Delete, Insert..
  140.  - With Block functions:
  141.             Such as Spread, Paste, Clr, Roll. Most are in `Block'
  142.             pannel. The using is quite logical: You first specify
  143.             the function limits then click on the function gadget
  144.             you want to use.
  145.  - With MousePointer functions:
  146.             Currently they're only two, Pick Color and Smooth. You
  147.             first click on gadget, then use it as long as needed.
  148.             To exit, click right mousebutton or simply go to
  149.             functions pannel.
  150.  
  151.  
  152. Copper Control Editor allows you to display only one color per rasterline on
  153. main screen, for speed (making use of AMOS functions) and for simplicity in
  154. coding as much as in using. Imagine for example with spread function: when we
  155. are spreading on a few lines, How could we simply determine if we take care of
  156. the inside of any line or not ?
  157. For those reasons I decided to separate vertical and horizontal edition of the
  158. copperlist. So by using the EDIT LINE function, you can edit horizontally and
  159. display far more colors per line (usually 44 !).
  160. You will also have to use this in combination with TEST function to see the
  161. real result (see below for details).
  162.  
  163. You can use the MIX feature to have multi-registers copperlists (this means
  164. copperlists on color00 plus color01 plus color03 for example).
  165. I will totally explain its using below.
  166.  
  167. Practically all functions have keyboard shortcut.
  168. If you press the HELP key, you will change the cursor color. Test it !
  169.  
  170. You must know that there's a limited number of COPPER instructions.
  171. It's generally about 3000 on Workbench, this corresponds to 66 edited lines of
  172. 44 colors. You can have more instructions in an assembly program, but Workbench
  173. uses a lot of them for the screens display, etc...
  174. However, you could have In no way 44 colors per line on 256 lines. Forget this!
  175. Moreover, the new COPPER in AGA chipset is more powerfull, so he could have
  176. more instructions available.
  177. So since this maximum number could change with the purpose the copperlist is
  178. designed for, I decided to NOT control it. So YOU must check yourself for the
  179. maximum number of instructions you can use. For knowing this, you have to know
  180. that when maximum number is overreached, the display shuts down. So save
  181. everything before using a large copperlist (A file larger than 10k) not tested
  182. before. You have been warned !
  183. For copperlists using on Workbench with NO RISK, simply avoid using of edited
  184. lines, or slightly.
  185. Please notice that TEST function checks number of COPPER instructions overflow:
  186. make use of that...
  187.  
  188. I think the program is quite simple to use, so the more I can do now is simply
  189. to explain what each gadget do.
  190.  
  191. A last advice: save as often as possible to avoid surprises !
  192.  
  193. -------------------------------------------------------------------------------
  194. Gadgets Functions Summary 
  195. -------------------------------------------------------------------------------
  196. Note that clicking on a numeric gadget allow you to edit it by keyboard.
  197. If there's a keyboard shortcut, it's specified in brackets.
  198. NB: No Explain order...
  199.  
  200.  
  201. Gadget Name    Description
  202. --------------    ---------------------------------------------------------------
  203. X (Esc)        Exits after a prompt.
  204.  
  205. CC-ED        This is the Author and program general informations.
  206.  
  207. WB (Amiga+M)    Go to Workbench or CLI. 
  208.         A small window is opened. You have to close it to return to
  209.         the editor CC-ED.
  210.  
  211. Hide (H)    Hides the Function Pannel to have an overview of your working
  212.         copperlist. Click again to make it appear again.
  213.  
  214. Test (T)    Makes another copperlist to see the real result of your work,
  215.         And this in the currently displayed section of copperlist.
  216.         The difference with `Hide' is that it takes care of the edited
  217.         lines, and also of the real X positions of lines.
  218.         If there's no edited lines the real X positions of lines will
  219.         be practically the only    difference.
  220.  
  221.         `Practically' because there is the interlace feature:
  222.         When the screen is interlaced, the Workbench displays only the
  223.         odd lines of copperlist. This is what the interlace feature do.
  224.         So if you double-click on this gadget, a requester provides you
  225.         to simulate the workbench interlace.
  226.         (A trick: Under Workbench, if you shift down interlaced screen
  227.         on one line, even lines appear in place of odd.)
  228.  
  229. RMB        With this you can simulate any `normal' click on any gadget
  230.         just by clicking right mouse button.
  231.         Click on this gadget, then click on the gadget you want to
  232.         simulate. After this, every time you click your Right Mouse
  233.         Button, the gadget selected will be pressed as if you have 
  234.         clicked    it by positionning pointer on it and clicking with left
  235.         one. You have not understood ? Test it, it's simpliest.
  236.         And if you find this of no use, don't use it !
  237.  
  238. UNDO (U)    Allows you to cancel last modification.
  239.         Note that Undo restores colors but also X positions.
  240.         But Undo CANNOT restore a deleted Edited line, or its previous
  241.         Y position. So be carefull !
  242.  
  243. CLR (C)        Clear: A requester asks you what you want to clear:
  244.         Either all copperlist or only marked bloc.
  245.         If setted, resets also X positions to $28 (40 in decimal).
  246.  
  247. Config        This saves your current settings in a configuration file, that
  248.         will be reloaded in next program loading. A filerequester
  249.         appears: the filename must be `CC-ED.config'.
  250.         On loading, CC-ED will look for it firstly in current
  251.         directory, and after in S: logical directory if he has not
  252.         found it. So if don't like `S:' placed config files, you must
  253.         save it in same directory than CC-ED for Workbench loading. By
  254.         CLI, don't forget to use `CD' command If you want CC-ED to find
  255.         it !
  256.  
  257. Lines (L)    This is a numeric gadget used to display the copperlist length.
  258.         Click on it then a requester allows you to set the copperlist
  259.         size. There's on the left of this requester some presets
  260.         gadgets (256, 512, 313), providing usual sizes to be setted by
  261.         a simple click (313 is for coders).
  262.         If the new size is smaller than previous then current edited
  263.         copperlist is cutted to new size, otherwise blank lines are
  264.         added.
  265.         Note that you can set the number of lines to anything between
  266.         0 and 999 (I choosed 999 arbitrary).
  267.         This includes sizes smaller than 256.
  268.  
  269. Color        Sets the color register of the copperlist. Currently only a
  270.         number between 0 and 31 is available.
  271.  
  272.         ---------------------------------------------------------------
  273.         Bloc Marks Pannel
  274.         ---------------------------------------------------------------
  275.         A drawing is better than a long speech :
  276.         
  277.  
  278.             -------------------
  279.             |    Blk Marks    |
  280.             | --------------- |
  281.             | |     [1]     | |
  282.             | --------------- |
  283.             | ------- ------- |
  284.         [3]-->| 000 | | <-1 |<--[2]
  285.             | ------- ------- |
  286.             | --------------- |
  287.             | |     [1]     | |
  288.             | --------------- |
  289.             | ------- ------- |
  290.         [3]-->| 999 | | <-2 |<--[2]
  291.             | ------- ------- |
  292.             -------------------
  293.  
  294. [1]        Displays you color of marked line. This is useful to be sure of
  295.         what we do. Moreover, when clicking inside it, the cursor is
  296.         placed on the corresponding line.
  297.  
  298. [2] ([ and ])    Marks a bloc limit. This will be used by bloc functions.
  299.         keyboard shortcuts:`[' and `]' on numeric keypad.
  300.  
  301. [3]        Displays line number of bloc mark.
  302.  
  303.         Note:    No order is necessary in placing the marks. Mark #1 can
  304.         -----    be placed on a line lower than Mark #2 or the contrary
  305.             as well.
  306.  
  307.         Using Example:
  308.         place mark #1 on line 0 and mark #2 on line 255 by positionning
  309.         the cursor on t hese lines and clicking on gadgets [2] (numbers
  310.         0 and 255 must appear in gadgets [3]). You can also edit
  311.         directly gadgets [3]. Then click on the fonction gadget you
  312.         want to use, for example Spread or RollUp.
  313.  
  314.         ---------------------------------------------------------------
  315.         Block Pannel
  316.         ---------------------------------------------------------------
  317. Spread (S)    This will do a normal spread between the marked lines.
  318.         (In fact, it do a separated spread on each color component,
  319.         Red, Green and Blue).
  320.         If setted, this will also spread X positions.
  321.  
  322.         If you double-click on this gadget, a small pannel allows you
  323.         to choose what color component (Red, Green or Blue) have to be
  324.         included in the folllowing Spread.
  325.         It's a user definable Spread. Click `OK' to execute it.
  326.         What It does ?
  327.         It normally Spreads selected components, and don't affect
  328.         values in the copperlist of non-selected components.
  329.         If no component is selected, nothing will be done.
  330.         If all are selected, it will be exactly same as normal Spread.
  331.         Why using it ?  In fact, it's of use if you have to modify
  332.         colors of a complex pattern. It's Hard to explain, so if you
  333.         didn't understood, try to test it with complex copperlists
  334.         (not simple spreaded), and the result will be obvious.
  335.  
  336.         On the rightside of the gadget, I've added a second spread
  337.         which uses another method. I call it smoothed spread. It gives
  338.         best results on large spreads, and especially when the RGB
  339.         components are not proportionnal. However, on small spreads
  340.         (less than about 32 lines), other spread have best results.
  341.  
  342. Paste (P)    Copy the marked bloc in memory, then paste it starting current
  343.         line (do a copy & a paste).
  344.         If setted, this will paste X positions.
  345.         If setted, this will copy & paste edited lines.
  346.         If you double-click on this gadget, a pannel with two functions
  347.         appears: `Halve & Paste' and `Double & Paste'. These are
  348.         self-explained, I added them to simplify conversions between
  349.         copperlists for normal or interlaced screen.
  350.  
  351. Invert (I)    Inverts colors between block marks.
  352.         Color under mark 1 and under mark 2 will be swapped,and so on..
  353.         If setted, inverts also X positions.
  354.         If setted, inverts also positions of edited lines.
  355.  
  356. Roll UP        rotates colors until you loosen mouse button. Colors on uppest
  357. Roll DOWN    line will appear on downest line, or the contrary, and so on...
  358.         If setted, rolls also X positions.
  359.         If setted, rolls also positions of edited lines.
  360.  
  361.         ---------------------------------------------------------------
  362.         Current Line Pannel
  363.         ---------------------------------------------------------------
  364.         Note: Current line is line where the cursor is placed (!)
  365.         -----
  366.                   [1]
  367.                    T
  368.         ---------------|-------------
  369.         |    Current   |    ------- |
  370.         |    -------   |    | 028 | |
  371.         |    | 000 |<--+     === === <---[2]
  372.         |    -------        |<|X|>| |
  373.         |                   --- --- |
  374.         | -------  -------  ------- |
  375.         | | 001 |  | 015 |  | 007 | |
  376.         | === ===  === ===  === === |
  377.         | |<|R|>|  |<|G|>|  |<|B|>| |
  378.         | --- ---  --- ---  --- --- |
  379.         ----/\-------/\--------/\----
  380.                      \________\_________\________[3]
  381.  
  382. [1]        Gives you number of current line.
  383.  
  384. [2]        Gives you starting Horizontal position (X position) of current
  385.         line. You can have a precision of 4 pixels (hardware).
  386.         If you double-click it, you can have at your disposal a pannel
  387.         with specific functions on X. This pannel is more detailed
  388.         below.
  389.  
  390. [3]    (|)    These are the RGB values (components) of copperlist color that
  391.      |    is under current line. You can modify them with arrows. Note
  392.      |    that values loop.
  393.      |    When you double-click numeric gadgets then the corresponding
  394.      |    value is reseted instead of being edited.
  395.      |
  396.      +--->    Keyboard Shortcuts:
  397.         7 - RED=RED+1        8 - RED=RED-1        9 - RED=0
  398.         4 - GREEN=GREEN+1    5 - GREEN=GREEN-1    6 - GREEN=0
  399.         1 - BLUE=BLUE+1        2 - BLUE=BLUE-1        3 - BLUE=0
  400.         
  401.         You can note that it's just like inside Dpaint..
  402.  
  403.         ---------------------------------------------------------------
  404.         Pos X Parameters Pannel
  405.         ---------------------------------------------------------------
  406.         This provides you with possibility to copy the value of current
  407.         line's X position to Bloc or also to all copperlist. You will
  408.         surely find this useful (as I find it).
  409.         You can also choose if the subsequent operations will affect
  410.         the X positions. In example, this means that when you make a
  411.         spread, values of horizontal positions will be spreaded too.
  412.         You can moreover make a spread only on X positions.
  413.  
  414.         At last, you can choose the default X position for edited
  415.         lines. So each time you edit a line for the first time, this
  416.         value will be setted automatically.
  417.  
  418.         I think these little functions could save a lot of repetitive
  419.         work.
  420.  
  421.         ---------------------------------------------------------------
  422.         Line Pannel
  423.         ---------------------------------------------------------------
  424.         As always, a drawing is better than a long speech.
  425.  
  426.             ---------------------
  427.             | ----------------- |
  428.             | |    E D I T    |<---[1]
  429.             | ----------------- |
  430.             | ---- --[2]-- ---- |
  431.            [3]--->|/\| | 000 | |\/|<---[3]
  432.             | ---- ------- ---- |
  433.             | -------   ------- |
  434.            [4]--->| Ins |   | Del |<---[5]
  435.             | -------   ------- |
  436.             ---------------------
  437.  
  438. [1] Edit (E)    With this gadget you can edit Current line. If line is already
  439.         edited then the edit window pops up normally, otherwise    the
  440.         numeric gadget in [2] is increased before.
  441.         You can take no care of the color under current line, as it
  442.         will be replaced by edited line colors definitions.
  443.  
  444.         You can move the edit window with left mousekey on drag bar
  445.         (like in Workbench), and you can also replace it automatically
  446.         near cursor with right Mousekey.
  447.         
  448. [2]        Gives you the total number of edited lines.
  449.         By clicking on it you can call the edited lines parameters
  450.         pannel. This pannel is more detailed below.
  451.  
  452. [3] (+ or -)    Searches the next edited line upward or backward and if there's
  453.         one also place cursor on it. When the edit window is poped up,
  454.         extra keys are provided as shortcut: Arrows up & down (more
  455.         intuitive).
  456.  
  457. [4] Ins        Inserts a line at current one. Like in any text editor, shifts
  458. (Enter or CR)    down all lines below current. However, last line is lost.
  459.  
  460. [5]        Deletes current line. Like in any text editor, shifts up all
  461. (Del or Bkspc)    lines below current. A black last line is added.
  462.         If current line is edited and if selected, its definitions are
  463.         also deleted, So the count of edited line is decreased in
  464.         gadget [2].
  465.  
  466.         note:    If Edited Line definition don't go until right screen
  467.         -----    border, the last line's color will fill the rest.
  468.  
  469.         ---------------------------------------------------------------
  470.         Edited Lines Parameters Pannel
  471.         ---------------------------------------------------------------
  472.         Because the memory allocation was quite big to store the
  473.         definitions for all 999 possible lines (90 Ko) and that
  474.         objectively we can't have 999 lines composed with 44 colors,
  475.         I finally decided to make this buffer configurable. (In fact
  476.         it's also because I've added line edition lastly...).
  477.         So this is the object of this Pannel:
  478.          - You can set the maximum of lines that could be edited,
  479.          - And You can set the number of colors per line that will be
  480.            reserved.
  481.         There is a used memory indicator for full control.
  482.  
  483.         Moreover, there is a gadget that allows you to choose if the
  484.         subsequent operations will affect the edited lines, if they
  485.         could (in example Del could delete an edited line..)
  486.  
  487.         ---------------------------------------------------------------
  488.         Smooth Pannel
  489.         ---------------------------------------------------------------
  490.         A lot of guys do this in their graphics or copperlist manually,
  491.         and as I also do it, I decided to include this because it's a
  492.         repetitive procedure.
  493.  
  494.         There are three smooth presets, allowing you to temper
  495.         transitions between colors.
  496.         All it do is simply swap the good lines under and above the
  497.         line pointed by your mouse.
  498.         To cancel, click right mouse button or go to functions pannel.
  499.  
  500.         Maybe there will be a totally configurable smooth in a future
  501.         version, or maybe not because of AGA (This will be totally
  502.         useless !). Aniway not everyone Have AGA.
  503.         I didn't do it because of color tests and of -My Lazyness- .
  504.  
  505.         An extra gadget allows you to double the Smooth's range.
  506.         I've added this for interlaced screens. On this kind of screen,
  507.         doubled Smooth will appear like `normal' Smooth (Hello Adam !).
  508.         Otherwise they will appear REALLY doubled !
  509.  
  510.         ---------------------------------------------------------------
  511.         Pick Pannel
  512.         ---------------------------------------------------------------
  513.         To cancel, click right mouse button or go to functions pannel.
  514.  
  515. Get (G)        Allows you to get a color from copperlist. It will appear
  516.         inside the special pointer box.
  517.  
  518. Put (F)        Allows you to put the last picked color into copperlist (this
  519.         color is inside the pointer box), Until you abort.
  520.         I couldn't use P for shortcut because it's used for Paste and F
  521.         is close to G in most keyboards.
  522.  
  523.         ---------------------------------------------------------------
  524.         Disk Pannel
  525.         ---------------------------------------------------------------
  526. Load (Amiga+L)    A FileRequester allows you to choose your file. If it could be
  527.         loaded, namely if this is a copcon file, then CC-ED loads it.
  528.         If it's a mixed file CC-ED asks you before what color register
  529.         he must load.
  530.         If the current copperlist size is different to that of the
  531.         file, then you will also be prompted if you want to change it.
  532.         if you don't change it there are two cases:
  533.          - Either the current is smaller than file's, then the file
  534.            copperlist will be cutted.
  535.          - Or the file's copperlist size is smaller, then it will be
  536.            inserted in current copperlist, at its saved position.
  537.  
  538. Save (Amiga+S)    After clicking on it, a quite big pannel appears. Don't panic,
  539.         I'm going to explain it in details.
  540.  
  541.         In this pannel, you can choose:
  542.          - What section of copperlist you want to save. This could be
  543.            all copperlist or only the block that you have previously
  544.            marked.
  545.            A more feature is that if you choose to save only marked
  546.            bloc, It will be saved at its real Y position, so copperlist
  547.            will start from the lowest line of the bloc. This entails
  548.            that the copperlist will be loaded and displayed starting
  549.            this line by both Copper Control and CC-ED (ie if you save
  550.            bloc between lines 200 & 255 then when loaded, its display
  551.            will affect only these lines).
  552.          - The saving format:
  553.            1 -    Copcon format: Saving as Copper Control File will save
  554.             -------------- your copperlist in a format that can be
  555.             loaded by both Copper Control Editor and Copper Control.
  556.             This was of course the first saving format implemented.
  557.             Even if you don't design a copperlist especially for
  558.             copper control,    you should save it also on this format
  559.             because you will problably have to reload it later.
  560.  
  561.            2 -    Asm format: Save as assembly file. I call it like this
  562.             ----------- tough Raw save could be used in other
  563.             languages. This saves the copperlist as real copperlist
  564.             directly processable by    Copper.
  565.             I takes care of    problems for lines under 255 (coders
  566.             know what I mean).
  567.             You can save as Raw file (really directly processable)
  568.             or as ASCII file with assembly opcode `dc.w' (that you
  569.             must assemble).
  570.             You can also choose if the file must contain the end of
  571.             copperlist command (The $FFFFFFFE !).
  572.             This saving format was done for advanced users,
  573.             otherwise it is quite useless.
  574.  
  575.            3 -    Tabcol format: Saving as color table. This will save
  576.             -------------- only color values. You can also choose
  577.             between Raw and ASCII `dc.w' format, plus an extra
  578.             ASCII `data' format for BASIC users. 
  579.             The `Full' switcher provides you to choose if CC-ED
  580.             saves all colors (one for each line) or only color's
  581.             differences. For example if we have red between lines 0
  582.             & 9, and green between lines 10 & 19, `Full' will save
  583.             20 colors, 10 reds following by 10 greens. `Not full'
  584.             will save only two colors, one red and one green.
  585.             You can find this quite useless, but -I- use it and it
  586.             wasn't hard to implement it.
  587.  
  588.         Notes:
  589.         -----
  590.         For edited lines, there will be NO optimisation on saved
  591.         copperlist. This means that for each edited line, for example
  592.         of 44 colors, 44 moves will be added even if they all copy same
  593.         color.
  594.         This is only because of my lazyness (this is quite hard & long
  595.         for modifying algorithms, recoding and testing them, and I
  596.         think this extra work isn't justified because I'm practically
  597.         sure that I will NOT be thanked for my work), so I will perhaps
  598.         implant it in a hypothetic future version. For instant, you'll
  599.         have to optimise it by hand. Otherwise if there is no edited
  600.         line, saved copperlist will be as smallest as possible.
  601.  
  602. Mix        This function implanted to provide user the use of multi-color
  603.         register copperlists.
  604.         I think It was too heavy to edit directly copperlists on more
  605.         than one register, because of proportionnal memory use, and
  606.         possible headaches to user (!). On top of that There's the
  607.         color display problem: a special screen    might be opened in the
  608.         correct depth divided in horizontals & verticals areas for each
  609.         colors, or at least a switching system for each registers
  610.         copperlists. So I finally tought it was simpliest to make
  611.         copperlists separately and after merge them in a second time.
  612.         This is what Mix feature do.
  613.  
  614.         So notice that this function is in fact independent of the rest
  615.         of program (namely it could be a separated program). It merges
  616.         two real copperlists into only one.
  617.         I choosed that the two copperlists should always rest on 
  618.         different color registers, tough it's not obligatory in fact
  619.         (It was possible to mix a copperlist between lines 1 and 10 on
  620.         color00 with another between 240 and 255 on same color
  621.         register. But this is also feasible using Load).
  622.  
  623.         When the Mix pannel appears, You can choose:
  624.  
  625.          - Source 1:    The first Copcon file to Mix with
  626.          - Source 2:    The second Copcon file to Mix with
  627.          - Destination:    The name of destination file
  628.            Each Time you click one of these gadgets, the Filerequester
  629.            will appear. The small `?' gadget at their rightside will
  630.            remember you the full pathname of the corresponding file
  631.            selected.
  632.  
  633.          - Priority:    Eiher Source 1 or Source 2.
  634.            Sorry but I'm forced to be precise for explanations:
  635.            When mixing files, the only problems appear when there are
  636.            WAITs on same line in each source. So we must use only one
  637.            WAIT and copy both subsequent MOVEs list. Giving the
  638.            priority to source 1 for example will first copy MOVEs on
  639.            source 1.
  640.            Why using This ?
  641.            Because the MOVEs copied in second will be shifted 8 pixels
  642.            right, due to hardware. So it could be annoying !
  643.  
  644.         -  Mode: This sets Copy mode in the previous explained problem:
  645.            either we copy all moves (Normal mode), or there is the best
  646.            matching mode: The difference in this mode is that he tries
  647.            as possible to copy MOVEs at their original position.
  648.            This mode is of use when there are edited lines in at least
  649.            one source, otherwise you MUST use other copy mode.
  650.  
  651.  
  652.         A small drawing to clarify Priority and Mode features:
  653.         ------------------------------------------------------
  654.         W=Wait, M=Move. Wait are same: Y and X are equal.
  655.  
  656.             ------------------------------
  657. Line in source 1:    | W | M 1.1 | M 1.2 | M 1.3 | etc...
  658.             ------------------------------
  659.             :   :       :       :       :
  660.             ------------------------------
  661. Line in source 2:    | W | M 2.1 | M 2.2 | M 2.3 | etc...
  662.             ------------------------------
  663. Result: ================:======================================================
  664.             :   :       :       :       :
  665. `Copy All' Mode        ------------------------------------------------------
  666. Priority source 1:     | W | M 1.1 | M 2.1 | M 1.2 | M 2.2 | M 1.3 | M 2.3 |..
  667.                        ------------------------------------------------------
  668.             :   :       :       :       :
  669. `Copy All' Mode        -----------------------------------------------------
  670. Priority source 2:    | W | M 2.1 | M 1.1 | M 2.2 | M 1.2 | M 2.3 | M 1.3 |..
  671.                        -----------------------------------------------------
  672.             :   :       :       :       :
  673. `Best Match' Mode    ------------------------------
  674. Priority source 1:    | W | M 1.1 | M 2.2 | M 1.3 |...
  675.             ------------------------------
  676.             :   :       :       :       :
  677. `Best Match' Mode    ------------------------------
  678. Priority source 2:    | W | M 2.1 | M 1.2 | M 2.3 |...
  679.             ------------------------------
  680.  
  681.  
  682.         After you've setted all, Click on start gadget to begin Mixing.
  683.         Two vu-metters will appear showing you the merging progress.
  684.         After this, the save pannel allows you to choose the saving
  685.         format. Please notice that `All/Bloc' and color table gadget
  686.         are not allowed.
  687.  
  688.         For having a copperlist with more than two color registers,
  689.         simply re-mix the destination file with another file on a color
  690.         register different than the two previous, and so on until you
  691.         have number of registers you want.
  692.  
  693. -------------------------------------------------------------------------------
  694. Program history
  695. -------------------------------------------------------------------------------
  696. Coding this product took one week of school holidays for the first working
  697. version. It took me about three monthes for all the improvements I wanted to
  698. add !  (Of course not full time, as I was telling to you I'm student). It has
  699. been made as Assembly and Structured Coding exercise. In a second time, it was
  700. intensive code optimizing and HARD debugging. I had not enough time for the
  701. debugging and there are surely some BUGS left. You have to know that no large
  702. program can be certified 100% bug free. So be lenient, and pleeeaaase send me
  703. your bug(s!) report. The work progress was hampered by the idea that this was
  704. mainly for nothing. Prove me contrary, please consider SERIOUSLY contributing.
  705. I hope it's also a contribution in demonstrating Powers of COPPER & Amiga OS.
  706.  
  707. A French or German version could be available.
  708. Any Suggestions and ideas are welcomed.
  709.  
  710. -------------------------------------------------------------------------------
  711. BUYING SOURCE CODE
  712. -------------------------------------------------------------------------------
  713. The code of this program is very structured and optimized for minimal code size
  714. and memory use. If you are a beginner in coding, or if you want to see how this
  715. shit turns, I can sell you the full sourcecodes (AMOS and Assembly). They are
  716. very well commented (I do this for me!) and are very easy to read because of
  717. that, structured coding and extensive variables names. If you are interested,
  718. I can yield them to you $30 (or 150 Francs).
  719.  
  720. -------------------------------------------------------------------------------
  721. Suggestions to Francois Lionet
  722. -------------------------------------------------------------------------------
  723. I've to give you my humble suggestions. They may be Objectless now (I've v1.3):
  724.  
  725. - 'Param': it was a little better to make Functions, like C or Pascal.
  726.   It's easier to read and little more elegant.
  727. - 'Data' take too much room: for about 3000 bytes of real data (on Words..),
  728.   about 30000 took on executable !
  729.   This forced me to avoid use it and do data storage & read by hand.
  730. - Arrays seems to not return good values when they are big(>1700 elements).
  731. - There's no possibility for the programmer to control the variables size. Why?
  732. - Why not considering to include an ARRAYFILL function ? 'Polygon' is amusing,
  733.   but when you have a 30 egdes polygon to draw...
  734. - I think the Auto-ScreenSwap in Bob Update should not be. ie, when you display
  735.   a double-buffered screen with 'autoback 2' (for full control of frames) plus
  736.   another screen with an AMAL bob program WITHOUT double buffer: You can't use
  737.   'Bob Update Off' because of that, so you can't have full control of frames.
  738.   I think it's better to let the user choose where and when he swaps screens.
  739. - I find AMOS Filerequester too slow, hawfull and irritating because of no
  740.   buffer and no possible customization. See the mighty `Req.library'...
  741. - I think AMOS should be a little more WORKBENCH friendly.
  742. - Why there's two compiling modes (CLI or Worbench). I hope you can easily
  743.   merge both into only one. I could understand this if there's a CLI parameters
  744.   and Workbench tooltypes support, but this is not the case ?
  745. - Why there's no interlace command in SCREEN OPEN, though we could load an
  746.   interlaced pic with LOAD IFF ? To use these screens I personally UNPACK a
  747.   black interlaced screen: It's not serious.
  748. - The directory functions (dir first$,dir next$..) hide .info files but not
  749.   files like 'filename.doc.fr.info'...
  750. - Why AMOS creates a blank viewport on WorkBench when we return to him using
  751.   'Amos to back' (this viewport is placed starting line 245-250) ?
  752.  
  753. With hope you take care of these.
  754.  
  755. -------------------------------------------------------------------------------
  756. TO DO
  757. -------------------------------------------------------------------------------
  758. - IFF pic <-> Copperlist converter: already done (see examples) but release
  759.   in a future version because of no interface.
  760. - AGA support ?  (I've no documentation for instant)
  761. - A More Powerfull Editor in C (or AMOS Pro ?)
  762. - ASM and ASCII `dc.w' copperlists loading
  763. - Edited lines optimisation
  764. - Add graphics primitives like draw, line, fill...
  765. - More customizable
  766. - Animated & morphed copperlists (Is it Possible ?)
  767. - Workbench loading for CopCon, with tooltypes, File requester... 
  768. - Installing copperlist on other programs loading ?
  769.   (ie when you load DirOpus,CopCon detect this and install corresponding user
  770.   copperlist. Hello Adam ! )
  771.  
  772. - Any suggestion and idea is welcomed...
  773. -------------------------------------------------------------------------------
  774. Greetings & Thanks
  775. -------------------------------------------------------------------------------
  776. - Amiga Operating System : HE do all the job, I only USE it...
  777. - Furthermore our marvellous COPPER !
  778. - Adam CARANO        :    for his patient support during coding & debugging time
  779.             (receiving a dozen of `final version'), and for a lot
  780.             of ideas and to be a REAL amiga user and supporter.
  781. - Mourad BELHOUCHET  :    For his (very) numerous good ideas, the C books,
  782.             the Maths books, and above all for H.P Lovecraft books.
  783.             And to be my friend.
  784. - Joseph COSTAGLIOLA :    For NO support.
  785. - Stephane EISENLHOR :    To simply be...
  786. - Jean-Louis LESIEUR :    To be so bad and agressive with me. It's welfare some
  787.             little frankness... I really love your music album
  788.             `Lands Of Pain'. (REALLY !)
  789. - MICKAEL SERKIS     :    For spending a few of his time in correcting english
  790.             doc.
  791.  
  792. -------------------------------------------------------------------------------
  793. Other greetings
  794. -------------------------------------------------------------------------------
  795. - Ivan TRUJAS (Iron Man), Chritophe HERNANDEZ (The Invisible Man),
  796. - Loïc DUPUY, Zef & his Trash group `ETHERIZE', Fred P., Arthur,
  797. - Celine, Eric & Cecile, Fred M., Alain,
  798. - Ahmed Rehiel, Eric S., Michel, Nordine, Laurence, Rachid, Nadia, Christine,
  799.   Sandrine, Sandra, Sabrina, Angelique, Nacer, Valerie, Youssef, Marese,
  800.   Claude, Brigitte & Beatrice, Pio, Boule, Nadjib,
  801. - BATHORY,VENOM,BOLTHROWER,SEPULTURA,METALLICA,GODFLESH,CARCASS,NAPALM DEATH,
  802. - KLAUS SCHULZE,
  803. - E.M. CIORAN:
  804.     `Exister serait une entreprise totalement impraticable
  805.     Si on cessait d'accorder de l'importance à ce qui n'en a pas.'
  806. I worship your GREAT work, demo coders :
  807. ----------------------------------------
  808. The Spy(Silents), Slayer(Scoopex), Azatoth(Phenomena), Delta(Red Sector),
  809. Tec(CryptoBurners), Thomas Landspurg, Chaos(Sanity), Mosh(Anarchy),
  810. Mediator(Anarchy), Deftronic(Crionics), Lone Starr(Spaceballs), MCD(Rebels),
  811. Corto(quartex?), Cocy (PMC).
  812.