MagiCop - The Magic Copper Version 0.8 written in 1992 by The Dark Lord of The Wizards,Inc. - So what ? This little tool brings colors to your boring life as an amiga addict. I recently came upon some old (1987) tool called 'rainbow' by some 'John Hodgson', which modifyed the copperlist of your system screens. Yet it crashed under 2.0 in several conditions so I forgot about it for a few weeks, but the boring colors sticked out, so here is MagiCop, completely written in assembly and for Kickstart 2.0 (or higher), which has the following features for your pleasure : * Looks nice * Doesn't Crash * Doesn't loose memory * Doesn't install useless tasks * Very flexible * Beautiful presets * Many features * Small (only about 5 kb) and Fast * Works with PAL,NTSC,HAM,Hires,Lores,DBPF,Interlace, you name it.. * Works with CLI and Workbench interface * It's plain MAGIC * It won't cost you anything - Let me try before reading this whole shit magicop @7 @~7 all - Ok, tell me about it MagiCop installs a UserCopperList on the selected Screen(s). Well, the only 'Magic' about it is, that evidently it doesn't crash (yeah, sounds funny, but that's about it.) I had to experiment at first, because I didn't have any real information besides the intuition autodoc, and this one doesn't give you much of a hint of how to do it (The technical stuff is given in the sourcecode). - Any hardware requirements or whatever ? Yes, you need at Kickstart 2.0 or higher installed on your system. - What are Colortables ? Colortables are data files which contain the specific colors in a plain $RGB format familiar to all assembler programmers. For those who haven't got any idea what this is : You combine the RGB-Values of the Color in a WORD hexformat. For instance, $359 has intensity 3 on red, intensity 5 on green and intensity 9 on blue. Every list can (but doesn't have to) end with a $FFFF to indicate the end of the colortable (and eventually a restart with the first color). You can very simply create these colortables in assemblers and save them as plain objectcodes (=without hunk information). - What about the Presets ? Well, for your convenience, I have supplied 8 presets. Presets available are formed by @(Preset Number) which means you have @1,@2,@3,@4,@5,@6,@7 and @8. Just check them out yourself. Of course you can specify presets more than once (if you ever find a need for this). Presets are reversed by @~(Preset Number) which means, you have @~1,@~2,@~3,@~4,@~5,@~6,@~7 and @~8,too. - How do I do it ? C0,C1,..,C31 - These keywords specify the colorfile to be used for this color, which means that e.g. C0 is $180, C1 is $182 and so on. Of course, most users will use C0 and C1, but if you really want to, MagiCop can do it all. After the keyword you can give either the filename of the colortable or a preset (see the section on colortables and presets above).There is even more to it, you can automagically 'reverse' the colors in a colortable, i.e. $268 will get to be shown as $d97 by specifing a ~-sign before the filename, e.g. magicop c0=mycolors c1=~mycolors workbench The reason for this feature is that if you use a colortable, you will want to be able to read your screen after you have installed it. Now, if you e.g. specify unmatching colortables, it is easy that chars on some lines cannot be easily read, because foreground and background colors are too similar. By 'reversing' the colors you can be sure that your colors will be almost always visible, in fact there is only one limitation : If you have colors of around $888 (medium gray) you will get problems, because of course the reverse of $888 is $888. However, why use gray if you can have the most beautiful colors at your fingertips. ALL/S - By specifying this flag you ask MagiCop to patch every Screen that currently exists in your system. In this case you need not specify any special screen (in fact, every other keyword regarding screen specification will be ignored). WORKBENCH/S - This flag tells MagiCop to affect the Workbench Screen. This may fail if you have closed your Workbench Screen, either because of memory savings or because you have a Public Screen Environment to go. DEFPUB/S - If this flag comes up, the default Public Screen will be affected by MagiCop. For most users this will be the Workbench Screen. SCREENNAME/K - After this keyword you can specify the name of the Screen you wish to affect. This Name can be abbreviated, in which case the first match is picked. The search is performed case independent, so e.g. you'll find the CygnusED Screen with SCREENNAME=ced (if ya don't have another screen of a similar name, which I doubt) SCREENADDR/K - You can give a direct address of a screen (which you can get by a monitor tool such as XOper or ARTM) if you want to force MagiCop to do what you want it to do. Numbers are specified in hex-format as of default, but you can use the identifiers # - Decimal Numbers $ - Hexadecimal Numbers @ - Octal Numbers % - Binary Numbers to force a number system (although I don't see why you should need to specify a 32 bit address via binary numbers). The Address has to be exact and will be tested on existence before processing. This feature may seem unpractical at first sight, but it is very usefull e.g. for Programms with NULL Screen Titles (such as DPaint3). By the way : Via MagiCop you can paint your Logos in Dpaint3 much as if they already were in your demos, because you can install the colors as you wish! Check your head! STEP/K - MagiCop will decide the steprate by examining the size of the first colortable specified (the first in memory, not necessarily the first on the command line). You can use this argument to force a steprate of this size. This should of course NOT be 0. REMOVE/S - Tells MagiCop to remove the User-Copper-Lists from the Screen specified. This way you might regain precious memory. But be warned, DON'T remove UserCopperLists from other programs,because these might have their own pointers and could react very upset. If a screen is closed, its UserCopperlist is automagically removed. By using REMOVE in combination with ALL you can clear all UCLs in your system. DAYSWITCH/S - Now this one is cool for people with hardware watches. If you like the colors, but you find it boring that each day you switch on your computer they are the same, this function helps you to have more variety without costing you any effort. This keyword indicates, that MagiCop is to automagically select the colors it believes are best fitting for today. MagiCop does this by examining the current date and deciding by the current number of days which color to use. You therefor can put a line like magicop dayswitch all in your startup-sequence, and each day you turn on your computer the new colors can be seen. Please note that MagiCop will *NOT* change the colors while you are working, so e.g. if you are in a session and a new day begins, colors don't change. This function is in effect only each time magicop is called, so you should either restart the above line or reset this session if your really think it is vital to your mental state to have the proper colors for the day. Again, this is nothing normal people will ever wonder about, but.. you never know... - What about Workbench usage MagiCop has an Icon with several tooltypes. These are named the same as the corresponding CLI arguments, but there are a few limitations: * If you specify a tooltype, it is 'defined', so if you have 'C10' MagiCop interprets it as 'C10=' which will cause an error message. * Boolean Values are set to true if they are defined, this means, that even a line like 'DAYSWITCH=OFF' will set dayswitch on. This may very well change in future versions. Right now you should set booleans either to 'ON' or remove them from the tooltype list. * You have to specify the name of the color you wish to install (e.g. 'C0=@6') because of icon.library/FindToolType limitations. - Hey, but there must be some problems ! Yeah, but none which couldn't be solved. For one, if you drag a screen that has a user copperlist, the colors will behave strange. This is *NOT* a problem of MagiCop, but a problem of Intuition, which so far (V38) apparently hasn't been solved. Maybe I one day get into fixing this Intuition Bug, but right now I don't even have an Idea what causes this. The 'Project D' seems to be able to work around this, well I guess I gotta have a look into that. My guess is that Intuition does the copperlist merging for multiple screens in a very simple manner and doesn't really bother about user copperlists. If you got a better Idea, contact me! You can 'overload' your copper. For instance, if you specify all 32 colors, AND you have a large coppertable, your machine gets too much work and will behave UNPREDICTABLY. Now, this problem again is not mine but one of the hardware and the amiga architects, so don't blame me. I didn't see a way of preventing this, and anyway maybe new amigas one day will have better customchips to deal with this. - What about this strange sourcecode ? You can use it with Macro68 (the BEST assembler available on the amiga), and probably only with Macro68 (If you still use something else, you're a punk motherfucker and don't deserve the sourcecode). - Any mind expanding future plans ? * MagiCop should be able to install a 'color cycling' task, so you can really have some action on your workbench. * MagiCop should have a look into this other bug about dragged screens. * MagiCop should have a way of dealing with 'detailed' copperlists, i.e. you specify all CWaits and CMoves in a Table and MagiCop does the rest of the job for you. * MagiCop should solve all problems of the known universe. - I'm a fucking stupid brainless nazi perot-supporter and therefor interested in learning history V0.1/2/3 - never given away, so I doubt you got one V0.4 - first ever publically released version.No major bugs besides the need for PAL resolution. Unable to remove UserCopperlist by force (only by closing screens). V0.5 - Presets can now be reversed. Screens can have any height (either NTSC or PAL or whatever). Bug in 'ALL'-Option fixed V0.6 - Major bug fixed : MagiCop lost memory under several conditions, this is fixed now. REMOVE option added. Colortables can have different sizes, and will be 'restarted' if necessary. V0.7 - Dayswitch added. V0.8 - MagiCop DOES NOT CRASH anymore on interlaced screens. MagiCop now can be run from both CLI and Workbench. Tooltypes supported are the same as those in the CLI argument template. Colorrange is decided upon screen height if no steprate is given, not on the size of the colortable anymore. Errors are sent via EasyRequest if necessary. - Where do I send my complains and Bug reports to ? Nowhere, or to : Gerson Kurz Karl Kögelsperger.Str 7 / A303 8000 München 45 West Germany or call (Germany)-089-3119421 *NO ILLEGAL SOFTWARE SWAPPING* - OK. IF I USE IT, WHAT'S IT GONNA COST ME. Well, I found this segment in the documentation of the ilbm.library and I liked it so much I use it for MagiCop, too : « MagiCop may be used by and FREELY distributed with any application be it commercial or public domain. There are no pagan users fees, Trump-esque licenses, or other forms of rabid capitalist trickery associated with using this tool and its support files. You do not even have to acknowledge the secret of your superb colorful and extremly nice screens. The only limitation is that you may not alter the actual executable of MagiCop, nor sell the product and its support files as a distinct product (i.e. represent it as such). » (End of a Quote, from 'Jeff Glatt', cheers man!) - Yeah, right, any famous last words ? They Call It 'Earth Versus Space', allright... (Jimi Hendrix, 1969)