The Chameleon Vers. 1.19 --------------------------- Karsten Isakovic Wilmersdorferstr.82 D-1000 Berlin 12 Federal Republic of Germany published at Markt&Technik-Verlag, all rights by the author Everybody knows the following problems: --------------------------------------- - There are many, many useful DA, but one can't install them all at the same time. To install a new DA, you have to reboot the system. This is the reason, why the MultiDAs came up. They allowed us to install more DAs than six and there are some MonsterDAs that give you everything you ever could need under just one menu entry. These solutions often need lots of memory, which is a rare on normal STs. - If you programm DAs it is very bad that you have to reboot for every test. This costs time and nerves. Now there is a new solution to this problem: -------------------------------------------- The CHAMELEON is an extrem short DA - about 5 KB -, that allows to load in every DA you need and - that's the advantage of the Chameleon - can unload DA if you don't need it any more. Not only the main memory is freed, the Chameleon frees all resources the DA demanded from the system. Usage ----- Copy the CHMELEON.ACC onto the boot disc and reboot. If you choose 'The Chameleon' from the DA-menu a file selector appears and you can select the DA, which is then loaded and started. If you don't want to open the DA, hold down the left shift- key, while selecting the name in the file selector by double- clicking or while pressing the return key. After the DA is started, the Chameleon menu entry is replaced by the menu entry of the DA. An arrow on the left side of the entry shows that this DA was loaded with 'The Chameleon'. If the DA normally uses 2 menu entries the menu text is split in the middle. The right entry is selected if you hold down one of the shift keys while selecting the menu entry. If the DA normally uses 3 menu entries you can select the middle entry with the left shift key and the right entry with the right shift key. Now you can use the DA, as if it was loaded after a reboot. If you want to remove the DA, just hold down the shift and alternate keys and select the menu entry. If the DA had opened some windows, these are closed. All memory the DA demanded is freed up and the normal 'The Chameleon' menu entry appears in the DA menu. If you want to remove the DA and immediately load another DA, hold down the right mouse button in addition to the shift and alternate keys while selecting the menu entry. After the DA is unloaded, the file selector comes up. Installation for GEMINI users: ------------------------------ Test with 'env' in the MUPFEL, whether the SUFFIX contains 'acc'. If not insert it with 'setenv SUFFIX "$SUFFIX;acc" '. The best way to do this is in the file MUPFEL.MUP. Now you can select the CHMELEON.ACC and install it as default- application for '*.AC?'. The next step is to rename all other DAs to ACX, because with the SUFFIX '*.ACC', GEMINI only tests whether the DA is already loaded. If you double click onto a file with the SUFFIX '*.ACX', 'The Chameleon' gets a message from GEMINI. The Chameleon loads the selected DA and opens it. If there was already a DA loaded, this DA is removed first. If you put a 'The Chameleon' icon onto the desktop of GEMINI, you can drag DA onto the icon to load them in. If you drag a text file onto the icon, this GEMINI message is passed to to loaded DA. If the DA has also an icon on the desktop, you can load the DA by dragging the DA icon onto the Chameleon icon. If the DA receives GEMINI messages, it does not matter whether you drag text files onto the icon of the DA or onto the Chameleon icon. Default-DA: ----------- Another speciality hides in the patch variables of Chameleon. You can specify a default-DA that is loaded in at boot time. So you can set up your normal configuration without losing the flexibility 'The Chameleon' offers you. The default is the ATARI control panel with the file name CONTROL.ACX on the boot device. All preferences are set up by the control panel. If you need another DA, just unload the control panel and load the other DA. Patch variables: ---------------- First: Make a copy of CHMELEON.ACC, before starting to experiment! You can only change the patch variables with a disc monitor. It is very likely that there are collisions with the shift codes that Chameleon uses, so you can change the combination. Right before the string 'V1.19 ½K.Isakovic Berlin 09.10.90' you find a '^', which is the delimiter between the patch variables. It marks the longest possible space that you have to enter path names, you should not overwrite it. The first 2 bytes ($0A $02) in front of the ^ are the shift combinations. The first bytes ($0A) are the combination to remove a DA, the second ($02) is the combination that tells Chameleon not to open up the DA, when you load it in. If you set this value to $00, the DA is not opened up automatically, only if you press a shift key. These values are the hexadecimal value of the sum out of the following table: value | key ------+-------- 1 | right shift 2 | left shift 4 | control 8 | alternate The bytes $0A stand for the value 10, which stands for left shift - alternate. In front of these two shift combinations you find the name of the default DA. If the first byte after the '^' is $00 (default), no DA is loaded in. Enter the absolute pathname of the DA (i.e. A:\CONTROL.ACX, the drive specification is necessary!). If the drive 'A:\' is automatically replaced with the boot drive. If there is another drive letter than 'A', no modification takes place. Don't forget to end the name with a NULL ($00) ! In front of this you find yet another field separated with a '^'. In this field you can fill in the path that is used if you first select a DA in the file selctor. This feature is very good, if all the DAs reside in a sub-directory. The drive letter is modified (or not) in the same manner as for the default DA. The last patch variable is a byte value that tells the file handle that Chameleon uses for output redirection. The value $00 means no redirection at all. On the ST there is no NULL- device that takes all input and does nothing, so Chameleon redirects STDOUT to a file handle that is not opened. If the DA writes to STDOUT, it only gets error-messages (and it normally ignores them). The GEMDOS supports 75 open files, the default redirect handle is handle 74 ($4A). Chameleon also tests whether this handle is in use and only redirects the STDOUT output if not. Some details: ------------- 'The Chameleon' is TOS independent, it uses no illegal system- variables. It hooks into the GEM- and GEMDOS-vector with the XBRA-ID 'Cham'. The trap handler supports all from 68000 up to 68030. If you choose the menu entry, a file selector appears and you can select a DA. This DA is now loaded and started. In the vectors, Chameleon protocols every demand of system resources: Windows, VDI-workstations, resource files, memory blocks and also the loading of GDOS-fonts, hiding of the mouse... With this information 'The Chameleon' can restore the original state. If the user want's to unload the DA, all system vectors are tested, whether they point into one of the memory blocks of the DA. Chameleon follows XBRA chain. If the DA hooked into the system, Chameleon can't remove it. You get an alert with a warning. If the DA uses the XBRA convention to hook into the traps, 'The Chameleon' can unhook it from the vectors. If a GEMINI-message arrives with the string '$KILL', the DA is unloaded. If you change the resolution, a loaded DA is unloaded and the chameleon trap handlers unhook from the system. This is only possible if the XBRA-convention is used. If chameleon can't unhook, the system bombs. This is because all DAs are removed but the now no-longer-existing trap handler is called. Some DAs write a text message to the screen. If you load in such a DA from the desktop, this would overwrite the menu bar. This is the reason why 'The Chameleon' redirects these output to an unopened file. Known problems: --------------- - You can limit the memory segmentation if you free the DA on the desktop. If you now select a text file and show it up, the desktop reorganises its memory. - If you load in reset resident ram disks, these ram disks modify the MEMTOP-variable which is not restored by Chameleon. If you load the DA again, the ram disk data has not changed. - If the DA doesn't use a menu entry, 'The Chameleon' writes the file name with two arrows into the menu entry. A little hint: -------------- If you install two Chameleons, you only need 11 KB memory, but you always can load the DAs that you need. History ------- The Chameleon had a very long testing phase. It could load DAs since the version 0.00. Up to the version 0.37, many improvements were made. The publishing date came nearer and nearer, so I named the next version 1.00. Some testers were already happy with the version 0.11, after 0.28 no tester had any problems. The next versions (0.28--0.37, 1.00-1.19) only small changes were made. Since the version 1.07 the chameleon can load a default DA, 1.12 was the first version that could free DAs that use no menu entry. Since 1.13 the STDOUT redirection is implemented. Near future: ------------ I am already testing a 2.00 version, that offers code-sharing. Only the first Chameleon needs 6 KB. You also have 'little' Chameleons with 450 bytes, that use the code of the 'big' one. Redirection is done with another trick and there are other improvements. I will release the version 2.00 at XMAS 1990. ****************************************************************** * * * Only if the files * * * * CHMELEON.ACC and CHMELEON.TXT * * * * are not modified, private users are allowed to copy and use * * 'The Chameleon' for free. * * * * All rights (copyright,distribution...) for 'The Chameleon' * * remain at the author (K.Isakovic). * * A commercial use in any form (also includes the distribution * * on public-domain discs or simular) is NOT ALLOWED. * * * * You get the latest version from the author or in the german * * MAUS mailbox net. * * * ****************************************************************** I know that my English is not good, but I hope that you understood, what I meant. A 'bad' manual is better than 'no' manual. Yours Karsten Isakovic, 11.12.1990 very late at night