home *** CD-ROM | disk | FTP | other *** search
-
- ModPack V1.4b
- -----------------
- by Mike Coenen
-
-
- INFO
- This little assembler-program packs soudtracker-modules together with a
- file containing additional information into an LHA-archive.
- The program needs at least OS2.04, but it will run on every processor
- of the 68000-family (that's not quite me, is it ?). In addition the
- program 'LHA' is needed somwhere where you can reach it without having
- to add a path (e.g. C:).
- ModPack is ThinkWare. So if you use it frequently, you should think of
- me...
- A propos: I will NOT be held responsible for any damage or dataloss
- caused in connection with ModPack!
-
- SELECT FILES
- As ModPack has to know which files to pack, you have to tell him somehow.
- To do so, you have three choices.
- You can call a file-requester by pressing the 'Add'-gadget and select the
- desired modules (multiselect with SHIFT is allowed). You are also able
- to drag icons directly into the ModPack window and drop them there (even
- more than one, if you like). This would make more sense with large
- numbers of modules, as you can show files without icons on the Workbench
- as well. Third, you can do an ExtendedSelect. That means you click once
- on the ModPack-icon, and then with the SHIFT-key held down click on all
- files you want to be loaded. Do a double-click on the last icon (SHIFT
- still pressed) so that ModPack is started and the files will be read.
- If you want to select an entire directory, but it is unreachable from
- Workbench because it lies in a fifth-level-subdirectory without any
- icons or whatever, you don't have to 'Window/Show/All Files' all
- directories. Just click 'Add', select the desired directory and press
- 'Add' in the file requester without selecting ANY file. Then the entire
- directory will be analyzed. Note that by selecting entire directories
- the pattern defined in the ToolTypes (or the default one) will be used
- and NOT the one in the file requester. That's because I don't know how
- to access it.
-
- The selected files are then examined and, together with their size,
- displayed in the ListViewGadget. If you want to add some modules to the
- List later on, just repeat the procedure and the new files will be
- attached at the end of the list. Don't care about the path - it doesn't
- matter. In fact every file could be in an other directory, ModPack
- handles it automatically.
- The number of selected files can be seen in the bottom left hand corner
- in the 'Cnt:'-TextGadget.
- ModPack recognizes files crunched with the PowerPacker or the Imploder.
- Such files will be marked in the ListViewGadet with a "P" for "Power-
- Packer" or an "I" for "Imploder". The RealName will in such cases only
- be "PP_x" or "IMP_x", where x is a number.
-
- EDIT FILES
- When you select an item from the ListViewGadget, some information will
- become visible on the left side, as there are:
- 'RealName': This TextGadget displays the module's name. This is not the
- filename but the 'real one' which is read from the file.
- 'Filename': Here, the filename of the arcive will be displayed. It will
- be assembled from the RealName and the suffix '.lha'.
- All spaces, colons, slashes, full stops, commas, and "_"s
- (I dont't know what a '_' is called in english...) will be
- thrown out, and the following character will be capitalized
- (Ä, Ü, ö etc. treated correctly). 'live long,and_Prosper'
- would therefore be converted into 'LiveLongAndProsper'.
- 'Composer': The Composer... The name will be extracted from the file's
- comment which must have the following format:
- COMPOSER^FROM^INFO
- The character '^' operates as separator, where it is not
- necessary for all three fields to be existent. Valid is for
- example '^^Metal', what leads to an empty Composer- and
- From-String, and to an Info-String containing 'Metal'. You
- can enter 'Mike Coenen' as well, so that the Composer will be
- 'Mike Coenen' and the rest will be empty ('Mike Coenen^^'
- will, of course, work too).
- 'From' : The source of the module (e.g. Demo xyz). This will be
- extracted from the file's comment which must have the
- following format: COMPOSER^FROM^INFO
- 'Info' : This field can contain many things, for example the kind of
- music... The Info-string will be extracted from the file's
- comment which must have the following format:
- CMOPOSER^FROM^INFO
- Except for the RealName you can edit everything, even the name of the
- archive, which, in many cases, might be not quite like you want it.
- But Attention! ALL INPUTS WILL ONLY BE ACCEPTED AFTER PRESSING RETURN,
- TAB OR SHIFT-TAB! IF A STRINGGADGET IS INACTIVATED BY A MOUSECLICK, THE
- CHANGE WILL NOT BE CARRIED OUT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- ALL STRINGGADGETS IN THIS PROGRAM WILL HANDLE IT THIS WAY !!!!!!!!!!!!!
-
- DELETE FILES
- If you want to delete a file from the list, just select it, and click on
- 'Del'.
- By clicking on 'ClrAll' you can delete all entries in the ListViewGadget.
- There won't be any changes on disk when you delete an entry. Only the
- items in the list will be affected.
-
- SAVE INFO
- ModPack offers you the possibility to save the info displayed on the
- left as an ASCII-file. Click on 'Save' and a file requester will open.
- Select or enter the filename and confirm it. Should the file already
- exist, you can either overwrite it or append the new information. As a
- third option you can cancel and not do anything.
-
- (DONT'T) PAY ATTENTION TO COMMENT
- With the CheckboxGadget you can define whether ModPack shall examine
- the module's file comment or not. If the comment is not in the format
- 'COMPOSER^FROM^INFO' there might be some unwanted results which have
- to be corrected manually. So you can switch this function off to ignore
- the comment. Note that ignoring the comment can only be done while
- selecting files. Once a file is in the list, switching on or off will
- have no effect.
- The default is 'COMMENT=TRUE' that makes the comment to be examined.
- If you want to have it the other way round just from the start, set
- 'COMMENT=FALSE' in the ToolTypes. This would then be the predefined
- setting when launched from the Workbench.
-
- 8 CHARACTER LIMIT
- This has been implemented in order to save MS-DOS users from total
- despair. I did see more than one BBS crashing because of too long file-
- names. If activated the filenames of all Modules in the ListView will
- be truncated to eight characters plus '.lha'. Making the option inactive
- causes all filenames to be normal again :-)
- This can also be controlled by the ToolTypes. Add 'CHARLIMIT=TRUE' to
- activate it right from the start.
-
- EXTERNAL ID
- As the default file_id.diz-layout might surely not please everyone, I
- added the possibility to use you own IDs. You have to set up two ASCII-
- files, one for the 'full' ID and one for the 'empty' one. Add the Tool-
- Types 'FILEIDFULL=File' (where 'File', of course, can be any valid path
- to a file) and 'FILEIDEMPTY=File'. Only if those two entries are valid,
- the CheckboxGadget will be enabled.
- The File can be as long as you want it to be. To insert the RealName
- you have to type '^R_$(xx)' where xx is a number indicating the length
- of the string (shorter ones will be padded with SPACEs). The keyword
- for the composer is '^C_$(xx)', for the From-entry '^F_$(xx)' and for
- the Info-entry '^I(xx)'. so it could look like:
-
- A MODULE...
- ======================================
- RealName : ^R_$(20)
- --------------------------------------
- Author : ^C_$(30)
- --------------------------------------
- From : ^F_$(7)
- --------------------------------------
- Information : ^I_$(128)
-
- This inserts a 20-bytes RealName string, a 30-bytes Composer string, a
- 7-bytes From string and a 128 bytes Info string.
- The order must always be the same: first RealName, then Composer,
- followed by From and Info.
- The 'Empty' ID (without 'From' and 'Info' fields) lacks the ...well...
- 'From' and 'Info' fields. Surprising, isn't it ;-)
- With the two ToolTypes present and(!) valid, the CheckboxGadget is auto-
- matically enabled and activated. However, 'EXTERNALID=FALSE' overrides
- that, and leaves the Gadget blank (but enabled). Note that you cannot
- force the gadget to be enabled by 'EXTERNALID=TRUE' without having valid
- ID-files.
-
- THE LIST FILE
- The ListFile keeps track of all files prcessed so far. It also prevents
- name conflicts by renaming files that already exist. The ListFile can
- only be activated by setting ToolType 'LISTFILE=File' (where 'File' can
- be any file. If the specified file doesn't exist, ModPack creates it.
- With a file present, ModPack reads all entries an stores them in memory.
- Everytime a file is processed by LHA, ModPack checks its name and adds
- it to the file.
- If a name conflict occurs, ModPack renames the file to Filename_xx, where
- xx is a hexadecimal serial number. In 8-character-mode the files are
- renamed to Filenaxx. The name is cut off behind the sixth character and
- the seriel number is appended. Of course you can edit the ListFile with
- every text editor...
-
- SELECT DESTINATION PATH
- All modules, after they have been archived, will be stored in this
- directory. The default path is 'RAM:'. Do you want another path, you can
- either enter it manually or, by clicking onto the gadget to the left,
- select the new path in a directory-reueqster. In addittion there is the
- possibility to drop a drawer icon into the ModPack-window. The program
- will take its path and put it into the StringGadget.
- If there are some drawer icons within some file icons that are dragged
- into the window, ModPack will take the path from them as well.
- If you want to have another destinaion directory right after the start,
- you have to change the ToolTypes. Example: 'DESTINATION=DH5:Upload/'
-
- SELECT SOURCE PATH
- This is the directory that is the default directory in the file requester
- when you select files. It is always changed when you select a module in
- a different directory. The default is 'Modules:'. If you don't have
- this assign or volume, with the first file requester comes the nasty
- 'Please insert volume...' message. To prevent this you can set the source
- directory in the ToolTypes to whatever you want. If you'd like
- 'DH1:Music/Modules/', type 'SOURCE=DH1:Music/Modules/'.
-
- CHANGE PATTERN
- When selecting files by file requester only those files will be shown
- that either start witn 'mod.' or end with '.mod'. This can only be
- changed in the requester itself and is then only valid once. To achieve
- a constant change, change the ToolTypes. If you want that for example
- files with the suffix '.xyz' shall be visible as well, write
- 'PATTERN=(mod.#?|#?.mod|#?.xyz)'
-
- START ARCHIVING
- After a click on 'Start' all modules will be archived one by one. ModPack
- opens a CON:-window to show the output of LHA. In addition to the module
- the ASCII-File 'file_id.diz' will be added, which contains information
- about the module.
-
- STOP ARCHIVING
- To stop archiving, klick on the 'Stop!'-Gadget. After the current module
- has finished, the process will be interrupted.
-
- QUIT PROGRAM
- To quit ModPack klick on the window's CloseGadget or the button labeled
- 'Quit'.
-
- START FROM CLI
- When launched from the CLI, the following presets will be activated:
- Source : 'Modules:'
- Destination: 'RAM:'
- Comment : 'TRUE'
- Pattern : '(mod.#?|#?.mod)'
- CharLimit : 'FALSE'
- ExternalID : 'FALSE' (disabled)
- ListFile : (disabled)
- Those presets are also valid if launched from the Workbench and there
- are no ToolTypes.
-
- ----------------------------------------------------------------------------
-
- BUGS
- Perhaps there might be some layout problems with OS2.0. The appearance
- of the ListViewGadgets has been changed from 2.0 to 3.0 an, so do I
- believe, the reaction on the Height-parameter as well. I couldn't test
- the program with Kick 2.0, so dear OS2.0 users, if there goes something
- wrong, ask Commodore (or Samsung or whoever) why.
-
- If there should be any more bugs, please contact me...
-
- HISTORY
- V0.xx before 12.08.1994 Inofficial beta-versions
-
- V1.0a 12.08.1994 First public, fully operational release
- Code length: 9408 bytes
- Sourcecode : 52421 bytes / 2249 lines
-
- V1.1a 13.08.1994 - Now supports ExtendedSelect on Workbench
- - Colons, commas, full stops, slashes and
- '_'s (those things, you know) will be
- taken out of the filename
- Code length: 9600 bytes
- Sourcecode : 54067 bytes / 2304 lines
-
- V1.4a 13.09.1994 - Eliminates question marks, inverted commas,
- '#'s and '%'s (whatever they're called) in
- the filename and converts '()' and '[]'
- into '{}' (brackets like '(' or '[' confuse
- LHA's parser...)
- - Pressing the 'Add' button in the file
- requester before having selected a file now
- means to add all the files in the directory
- - Option added to limit filenames to 8 chars
- plus the '.lha' extension
- - Reading only the first 19 Bytes as the
- RealName (that's the ...well specification)
- - Recognizing PowerPacked and Imploded files
- and doesn't read any RealName but gives
- them a number and marks them in the ListView
- - Added a ListFile option to keep track of
- processed files and to prevent name
- conflicts
- - Eliminated enforcer-hit that occured when
- dropping icons into the window. ModPack is
- now free of enforcer-hits ! (*)
- - Added the possibility to use custom FileIDs
- Code length: 12864 bytes
- Sourcecode : 79181 bytes / 3174 lines
-
- V1.4b 14.09.1994 - Cleaned up BSS-Hunk. Memory usage now 3172
- bytes less than before
- - The 'Save' and 'ClrAll' gadgets were
- disabled after an extended select. Fixed now
- - Module and ID file now archived in one pass.
- CodeLength: 12848 bytes
- Sourcecode: 79495 bytes / 3181 lines
-
- (*) It wasn't so hard to find this bug although it occured in ROM. I just
- debugged me through there and in a matter of minutes I found it. In order not
- to make any effort, my MessagePort for the AppMessages was the same as for the
- IntuiMessages. I waited with WaitPort() for something to happen and then
- called GT_GetIMsg(). So far so good, but if an AppMsg comes in, it will be
- processed by GetIMsg() as well. GetIMsg() does nothing but calling exec's
- GetMsg() and processing the data by calling gadtools' GT_FilterIMsg(). But as
- the structure of AppMessages and IntuiMessages differs, FilterIMsg() reads at
- the wrong offsets. Now, after WaitPort() I check whether it's an AppMsg or not.
- If it is, ModPack does only call exec's GetMsg() and ReplyMsg().
- I just wanted to say this so that other programmers are able to fix that nasty
- bug in advance...
-
-
- THANKS
- ...go to Timo Henke who had the initial idea of ModPack and who came up
- with a lot of suggestions and some icons.
-
-
- ADDRESS
-
- In general:
-
- Mike Coenen
- Kleestr. 10
- D-31655 Stadthagen
- Germany
-
-
- Until about 01.08.1995:
-
- Mike Coenen
- Virchowstr. 5
- D-31737 Rinteln
- Germany
-
-
-
-
-
-
-
-
-