@DATABASE D.A.SModulePlayer	
@NODE MAIN
@TITLE "D.A.S Module Player V1.60 19-AUG-93"
@next MAIN
        DAS ModulePlayer Documents Amigaguide edition 
        =============================================
        (D.A.S. = Digital Audio Systems)
    
    All texts containing something new are marked with *

    For @{b}Version V.1.60 19-AUG-1993@{ub}

    @{" Contents   " link conts}
    @{" Features   " link feats}

    @{" Hints&Tips     " link hints}    @{" Gadgets        " link gads}
  * @{" Tooltypes      " link toolts}    @{" Program list   " link lists}
    @{" Packers        " link packs}    @{" Appwin/icon    " link apps} 
    @{" Fast ram Reloc " link fastram}    @{" Restrictions   " link rests}
    @{" Commodities    " link commods}    @{" Keyboard       " link keybs}
  * @{"    ARexx       " link rexxs}  * @{"  Interrupts    " link intes}
   
  * @{" Contact&Thanx  " link contact} 
  * @{"    History     " link hists} -> New things listed here
    @{"    Future      " link futs}

@ENDNODE

@NODE conts "Contents of this package"
@prev main
@next feats

PACKAGE:
  DasModPlayer              - Program itself
  DASModPlayer.guide        - Documentation in AmigaGuide format
  DMODPAPPICON.info         - Application icon used by DMODP
  libs/das.library          - Library needed by DMODP
  s/das-cfgfile.config      - Example Configuration file
@ENDNODE
@NODE feats "Features list"
@NEXT gads
@PREV conts		
- @{" Packers " link packs} supported
    o XPK libraries
    o Powerpacker (using XPK master)
    o LHA archives (external packer needed) (Thanx to Stefan Boberg)
        Single file archives
        Multiple files can be extracted from single archive
    o Theoritically all external archivers supported (zip, zoo, shrink)
        Theory is usually different from reality :-)
- @{"Main gadgets" link mgads}
    o Unique Active Module search from list
    o High speed module sorting
    o Hide window (iconify)
    o Speed/Tempo/Volume controls
- @{"Commodity" link commods} hotkeys
- @{" Tooltypes " link toolts} support
    o Automatic hide on startup (Very useful when started from WBStartup)    
    o Commodity switchable through toolts
    o Application icon name changeable through toolts
    o Info window on startup switchable through toolts
    o Modplayer windows can be told to open on publicscreen through toolts
- @{" Program List " link lists}
   o Automatic listfile loading on startup
   o About 20 different ways to read modules to list.
        Incl. Application win/icon, multi/single filerequester selection
        Directory selection (pattern match selection optional)
        Listfile selections......
- @{" Application icon " link apps}
- @{" Application window " link apps}
- @{" Enviroment " link pgads}
    o Fast ram relocation
    o Double Buffering
    o Selective Directory selection (Follows pattern definitions)
    o Listview auto positioning while play
    o Autoplay opt
    o Both the CIA and the VBlank interrupts by your choice
- @{"Keyboard shortcuts" link keybs}
- Screen jumping (main window to any screen)
- @{"ARexx support" link rexxs}
- Auto detach from CLI

...... (Not every little but useful opt listed in here)

@ENDNODE
@NODE hints "Hints & Tips for optimal using"
@prev feats
@next toolts
Search patterns:
Pattern gadget accepts any Amigados patterns, like ?, #?, (ab|ba).....

If you don't get LHA unpacking working the fault is about 99% propability
on your setups, 'cos it works and it works FINE. It has been tested
thoroughly.

If you have 'First in extr' disabled, so that player uses External packer to 
find out whats in archive, then it would be wise to put your External 
archiver (lha) as resident (RESIDENT lha PURE) and put 'extr path' = lha
Archive listing will be considerably faster when there is no more time
wasted for loading archiver itself from disk.



@ENDNODE
@NODE gads "Gadget Information for D.A.S Module Player"
@prev hints
@next toolts
		
	
            @{" Main window gadgets " link mgads}
            @{"   Config gadgets    " link pgads}
            @{"    Other gadgets    " link ogads} -> None at this time.



@ENDNODE
@NODE mgads "Gadgets for main window"

           @{b}Gadgets for main window@{ub} 
        (These are partly in order of appearance)
Sort
    Very simple yet very effective high speed bubble sort algorithm.
    (Done by me in half an hour, including gadgets :-) )

    This simply sorts all modules in your list. 

    NOTE: Sorting is done based on first seven letters, this was
    done for maximum speed while maintaining good sorting.

    SPEED: Very good.

    BUG: If you have <lha bases> in list, respective lha files
        are not necessarily kept within visible range of eachother.
        This is due that they may have different names. (can't help it)

Search 
    String gadget you can write search pattern for a module
    in list (Very helpful if you have over a 100 modules).

    Works As follows:
    You start writing letters to string and player actively 
    keeps matching module in selected stage, updating search
    everytime you change the string. 

    YOU DON'T HAVE TO WRITE '#? or *' TO THE PATTERN END, 
    PROGRAM DOES THIS FOR YA.

  While string gadget active:

  RETURN =  Presently selected (highlighted) module will start playing.

  TAB key         = next matching entry will be highlighted.
  Shift+TAB       = Previous matching entry will be highlighted
  Any other key   = back to first matching selection 
    (Ofcourse if you press any of the normal character keys that match 
    search will be done)

Load/Save
   Loads or saves list files (Also known as program files)

   This can also be accomplished by just using "ADD" or throwing
   files icon to appwindow/icon, @{" Program list   " link lists}
			
   You can compress list files using xpk library based packers.
   Do not compress list files using lha!

Add
   Hits you with a FileReq asking you to select a module
   to add to the module list. Multiselect supported.
   Whole directory loading supported. 
   When you want to select the whole directory don't
   select any files only the drawer. ---> ZAZAMMM... the whole
   directory is being scanned and added to list. 
   Pattern definitions in FR pattern gadget are followed when 
   loading the whole directory.

Del
   Deletes selected module or first module in list.

Exg
   Swaps two modules with each other. First press
   Exg then select first module and then the other.
				
CLR
   Clears the whole current list

R +/-
   Increase/decrease module's repetition count.
   Note: this is real repeat count so that count 3 in here
   means that module will be played 4 times.

R  (checkboxgad) overrides R +/- and Playmode values.

>   = Play
   Loads/start playing module selected, or first
   module in list if none selected.

[]  = Stop
   As expected this one will terminate current play.

|«  = Previous
   Loads/start playing previous module.

»|  = Next
   Loads/starts playing next module in list.

<<
   Rewind - gadget. Goes one pattern backwards in module.

>>
   Fwd - gadget. Adds currently playing pattern count by one.

||
   Pauses the play, pressing this one again will continue

INF
   Shows a window containing instrument info about module
   There is also some info about location of samples and song
   and their respective sizes, Compression factor also found here.
   CF is always 0 on lha files.

Hide
   Closes the main window and maintains only the ApplicationIcon.
   If the appicon was not created then the hide option will be
   disabled. By double clicking the appicon you may bring 
   the main window back to life.    
   Same can be accomplished using hotkey combination
	
@ENDNODE
@NODE pgads "Gadgets for Config window"


        @{b}Gadgets for Config window@{ub}

- Positioning Switch
    Enables/disables listview positioning.
    = Always shows the module which is currently playing (Enabled)

- Alloc channels Switch
   If you want to allocate channels using audio.device
   you should enable this option


- Locate mod >fast
   Read section: MODULE RELOCATION TO @{"FAST RAM" link fastram} 

- LHA e/x fullpath 
   If your lha packet includes file with paths (not only file name)
   and you have used lha option x (or e without -x0) for extracting,
   then this option  instructs ModPlayer to use full path when loading 
   extracted file to memory. 
   Example: You have lha packet with a file audio/modules/mod.anthrax
   Normally you would put to 'lha opts' string following "e -x0 >NIL:"
   then the lha should extract the file to tempdir:mod.anthrax
   but if you have used 'lha opts' "x >NIL:" then lha would extract file
   to tempdir:audio/modules/mod.anthrax and if you DON'T have the
   'lha e/x fullpath' option enabled then player would try to read the
   file from tempdir:mod.Anthrax and not as it should be read tempdir:
   audio/modules/mod.Anthrax. (You got it right?)

   It is quite easy to just put lha opts = "e -x0 -N >NIL:" and let the
   'LHA e/x fullpath' gadget be disabled then the modules will be
   extracted to tempdir without any paths and everything goes just fine. :)

   @{"Packers" link packs}


- First in Extr
   In enabled state this instructs player to just load first file
   from lha packet and ignore the rest. In disabled state this 
   tells the player to show every file in packet and play them
   accordingly. Check 'lha discard' gadget also.

- Autoplay
   When enabled causes the player to play automatically 
   module when you add it. If you do multiselect or load lha file
   with multiple files then last of them is played (not the first, 
   which would seem logical! But Hey ! who says this program 
   should be logical :) )

- Short Name hdr
    Lets you use some lha/lzh packets which didn't work before
    with 'First in external'. Uses only 1 byte name header size.

- Dirsel obey patt
    When used with Whole directory selection:
    This instructs player to select only those files matching
    the pattern defined in FileRequesters pattern gadget.
    Forexample: Only "#?.LZH" ending files to be added or "a#?"
    only files starting with 'a' should be added.

- Double Buffering
    Those annoying pauses while decrunching/loading is avoided.
    Uses lots of memory.

    Unfortunately I just have to free old module before relocation!!!!
    So there is a little pause in music if you use Fast ram reloc.
        

- Play mode 
   Lets you select of different playing modes. Selfexplanatory.
   Even random is finally working. 

- Int type
   Interrupt type selection (CIA/VBLANK)
   If vblank is used PT command $F(>32) (Tempo set) is ignored.
   With CIA interrupt this works quite fine.

   You can see what VB/CIA is used currently. after currently playing 
   module name there is a 2 letter ID:
        L2 =Level 2 CIA interrupt
        L6 =Level 6 CIA interrupt (No software interrupt)
        L6S=Level 6 CIA Interrupt + Software interrupt
        VB =VerticalBlank 


- Def list dir
   Write a default directory for list files.

- Def module dir
   Write a default directory for modules
- Ex.Ending
    External archiver postfix. forexample (#?.lha|#?.lzh)

    
- PT DMA WAIT	
   This is dma wait cycle amount for Protracker moduleplayer.
   Handle with care. If you change this one and start
   experiencing strange noises in near vicinity, try changing
   this back to what it was. I read somewhere that in fast
   machines like A3000/A4000 this should be set something like
   >1200-2000 

- Modpatt/listpatt
   Selection patterns for lists and mods. These are feeded to FileRequester.
   If nothing in here then FileRequester won't have Pattern gadget attached 
   in to it. (Example: for modules pattern "(mod.#?|#?.LHA)"

- OPTS 2
    Opens the 'External Packer and Default Dir' preferences window

- USE
   Closes the preferences window

- SAVE
   Saves preferences to S:DAS-CFGFILE.config.

@ENDNODE
@NODE ogads "Other gadgets"

    No other gadget available

@ENDNODE

@NODE toolts "Tooltype support for D.A.SModulePlayer"
@prev gads
@next packs

TOOLTYPES:

   When starting from workbench you can do certain initial procedures
   by setting Tooltypes in icon:
   <tooltype>=OFF  ; turns option off, same as not using it at all.

   INITHIDE=ON
   HIDE=
    Just pops up appicon. No window presented
    doubleclick in appicon causes the window popup

   INITINFO=ON   
   INFO=
    opens info window immediately after start

   FILE=<list file name> or OFF
    Loads named list when starting the player
    This may support module loading in a near future, currently it is
    not supported.


   OPENONPUBSCREEN=ON
   PUBSCR=
    opens windows in a PUBLICSCREEN (if any present)
    instead of WBENCHSCREEN.

   APPICONNAME=<path+name> 
   AICON=
    icons name which you want to use as appicon.

   CX_PRIORITY=<-127...127> Commodities priority

   CX_POPUP=ON/OFF should we use popup keys or not

   CX_POPKEY=ctrl lalt p
    Or something similar (ctrl lalt p = default)

   NOCOMMODITY=ON/OFF   When on, no commodity is used for player.
   NOCOM=

  CLI parser supports these same values.
@ENDNODE
@NODE commods "Commodity support"

    Main window popup key combination:
        Default "ctrl lalt p"
        Can be set using CX_POPKEY @{"Tooltype" link toolts}

        FUNCTIONS: When pressed in a same screen where the window is
        then the window is hidden.
        When pressed any screen where the window doesn't exist then
        window will be moved to that screen. BE CAREFULL WITH THIS!!!

    Other hotkeys:
        Next = ctrl lalt numericpad 2
        Prev = ctrl lalt numericpad 8
        Pause= ctrl lalt numericpad 5
        
@ENDNODE
@NODE packs "Packer support"
@prev toolts
@next lists

COMPRESSORS SUPPORTED:

Powerpacker	
    Through powerpacker.library AND xpkmaster.library
	So you will need xpkmaster.library for powerpacker files!!!!

Xpk crunchers 
    through xpkmaster.library + appropriate xpk????.library

EXTERNAL PACKET HANDLING   @{" Prefs gadgets " link pgads}
   Open the prefs window, there you will find three new gadgets.
   Extr path = Path to your lha packer + lha itself (dh0:packers/lha/lha)
   Extr opts = options commands feeded to lha. YOU MUST ADD >NIL: TO THIS
   LINE. This is good 'opts' line --->  e -x0 -N >NIL: 
   temp dir = Temporary dir where lha packet should be temporarely
   extracted. Files extracted to here will be removed after loading.


   Extr discard = discard pattern to feed to lha packer. This one is
   used when 'extr first in lha' is disabled and player reads all
   files from Archive. If you set this gadget forexample ~(#?read#?)
   then all files in Archive with string 'read' will _not_ be added to list.

   Short name = This allows additions for some different lha headers

   Ending = With this you set the postfix which are to be handled as
        External packer files (#?.LHA|#?.LZH)

RANDOMID:
    When you add a Extr packet to program list then player makes a random
    id code for that certain External base and uses same id for files
    that are in the Packet. If you load several previously saved lists
    at same time then this causes some distortion in list handling.
    Player won't crash your amiga or anything like that but when
    you remove one base several other files will be deleted also.

    So don't load same list twice!
@ENDNODE

@NODE lists "Program list"
@next fastram
@prev lists

Program list in DASModPlayer differs somewhat from other moduleplayers
lists. For instance there is one file type in the list which cannot be
played, they just hang in there. These items are called "External bases".

EXTERNAL BASES:

External bases are different from other files in list that they have "< >"
in start and end of name. When such a file is encountered when playing list
they are simply skipped. 

When you have such a External base in list it usually has archived file(s)
attached to it. if you remove External base file then all its attached files
are also removed. If you remove all attached files then base file is also
removed.


HANDLING:

You can add/remove files to/from list. You can clear the whole list
and you can swap two items in list using "EXG" gadget. 

List is saved using "SAVE" gadget. You can load these lists either
using "LOAD" gadget or selecting them from FileRequester (ADD)
or just throwing their icons to player window or application icon.

AUTOMATIC LIST FILE LOADING:
You can instruct player to load 1 list file automatically on startup
by using Tooltype FILE=<listfile>, this file has to be placed in
default list file directory @{"PREFS GADGETS" link pgads}

FUNCTIONS:
 RightMouseButton = Positions the listview to last selected item.
 RightMouseButton Dblclick = Positions listview on playing item.
 LeftMouseButton Dblclick on list = starts playing selected item.

@ENDNODE

@NODE fastram "FAST RAM Relocation"
@prev lists
@next rests

MODULE RELOCATION TO FASTRAM:

   You can switch option 'Relocate >FAST' on from prefs.    
   By enabling this option, the whole module will be loaded
   to fast ram and then sliced to Songdata and samples. Samples are
   then moved to chip memory one by one. After this player will
   try to relocate songdata to different part of Fastram, if
   this succeeds original module will be deallocated, if it doesn't
   succeed then player will unfortunately consume considerably 
   your fast memory resources, but still it is able to play the module.

   If there is not enough continuous FAST RAM then player will try
   to load the whole module to CHIP without asking user.
	
@ENDNODE
@NODE rests "Restrictions, system needed"
@prev fastram
@next apps
WHAT YOU NEED:
You will need operating system V37++
    At the present time I am doing this assembly on V40 kickstart
    so there might be some gadget outlook problems in KS2.04,
    due that commodore decided to change the Listview gadgets appearance.
    It should look same on every machine, but mainly 'cos I screwed up
    and used little too big listview size in KS2.04 it may look
    somewhat different. Sorry
You should have V38 asl.library (or newer)
    If you have KS2.x there is no logical reason why you should not
    use V38 libraries (WB2.1), 'cos it is totally compatible with
    V37/V36, but much better.

You might need Powerpacker and xpk.... libraries.
    If you are going to use modules packed with xpk/powerpacker libraries
    then you will need respective libraries.

YOU WILL NEED das.library in your libs: drawer. (Version 6)

WHAT YOU SHOULD **NOT** DO:
Don't compress list files with lha. 
Don't compress files with xpk/pp and then stuff'em to lha packet. 
    Multiple packings are not supported.

Don't compress config file.

@ENDNODE
@NODE apps "Application window/icon implementation"
@prev rests
@next contact

            Application window/icon implementation


This player supports these neat features presented in V36/37 such as:

Application window:
    You can just throw module's icons to players window and they are
    loaded like you had selected them using filerequester.

Application icon:
    Same as application window.

    1. If you want to use the icon named DMODAPPICON as your application
    icon for DasModplayer you should keep it in a same drawer as 
    DasModPlayer itself, otherwise DMODP will use default project icon.
    If you don't like the way DMODPAPPICON looks, then just draw another
    one and rename it as 'DMODPAPPICON'

    2. You may also use the APPICONNAME=<> tooltype and define there
    the icon you want to use.
@ENDNODE
@NODE keybs " Keyboard"
@prev apps
@next contact
    
When Search string active:
    TAB             = Next matching selection highlighted
    Shift + TAB     = Previous matching selection highlighted
    Return          = Plays the selected item

When window active:
    UpArrow         = Scrolls the list up
    DownArrow       = Scrolls the list down
    CTRL+UpArrow    = Top of the list
    CTRL+DownArrow  = Bottom of the list
    RightArrow      = Next pattern (FWD)
    LeftArrow       = Previous pattern (REW)
    RETURN/ENTER    = Plays the selected item
    +               = Repetition count + 1 (For highlighted item)
    -               = Repetition count - 1 (For highlighted item)
    R               = Endless repeat ON/OFF
    I               = Open/Close info window

Commodity hotkeys
    ctrl+lalt+numericpad 5  = Pause ON/OFF
    ctrl+lalt+numericpad 2  = Jump to next 
    ctrl+lalt+numericpad 8  = Jump to previous
@ENDNODE
@NODE rexxs "Arexx support for DASModPlayer"
@prev keybs
@next contact

    AREXX Interface For D.A.SModulePlayer

ARexx port name: 'DASMP_Rexx'

Commands supported:
        (Commands with '»' are commands that will be executed AFTER the
        ArexxMsg is replied, so no error codes for these)

    ADDMODULE modname   * If no path defined -> default mod dir used.
                        * otherwise defined path used.
                        * UNLESS!!! file is found from current directory.
                        * If found -> then loaded from there
                        * If modname ends ':' or '/' then name treated
                        * as directory and added as such.
                       
    LOAD listname       * If no path defined -> default list dir used.
                        * otherwise defined path used.
                        * UNLESS!!! file is found from current directory.
                        * If found -> then loaded from there

    CLEAR               * Clears the list


    PLAY                * Start playing selected item
    STOP                * stop current play
    NEXT                * Moves to next modules (play)
    PREV                * Moves to previous module (play)
    WAITMOD             * Wait for the module to end
        o No rexx messages will be received until module stopped
        o Be carefull with this, may cause eternal waiting loop.
        o If your playmode is not ONEONCE then player will actually be
            in a next module when next rexx command will be taken in.
    PAUSEON             * Switches the Pause on
    PAUSEOFF            * Switches the Pause off

    PLAYMODE RANDOM     * Playmode to random mode
    PLAYMODE ALLREPEAT  * All in sequence repeating the list
    PLAYMODE ALLONCE    * Goes the list once through and then stops
    PLAYMODE ONEONCE    * Plays one module and then stops
    INTERRUPT CIA       * Switches the cia interrupt on
    INTERRUPT VBL       * Switches the vblank interrupt on


    MOVELIST LAST       * move to last module in list (MODCOUNT-1)
    MOVELIST FIRST      * move to first module in list
    MOVELIST number     * number = decimal number. the ordinal number of
                        * module to move to. (0 = first)
    SELECTNEXT          * goes one down the list
    SELECTPREV          * goes one up the list
    SORT                * sorts modules, note that this will destroy
                        * current selection. So first will be selected
    SETSEARCH xxxxxx    * Set search str and do search for that pattern
        o Error code 1 is returned if no matching entries found.
        o Main window must be open for search operations
    SEARCHFORWARD       * Does search forward
        o Error code 1 is returned if no more matching entries found.
    SEARCHBACKWARD      * Does search backwards
        o Error code 1 is returned if no more matching entries found.
        o If you have received error code during search on either direction,
            and you are planning to change the direction of search, then you
            have to do two searches for that direction until anything
            happens. Sorry.

    SETMODULEDIR xxxxx  * Sets the default moduledir.
    SETLISTDIR xxxxx    * Sets the default listdir.

    MODCOUNT            * You can request current module count with this
        o Example: MODCOUNT; say result;
    MODNAME             * returns currently playing modules name.
        o if no module playing at this time error code 1 returned
    MODNUM              * returns currently playing modules ordinal number.        
        o if no module playing at this time error code 1 returned
    MAXPATTERN          * returns max patterncount
        o if no module playing at this time error code 1 returned
    CURRENTPATTERN      * returns pattern we are currently playing
        o if no module playing at this time error code 1 returned    

    VOLUMEUP decimal    * Volume increases by amount indicated by decimal
    VOLUMEDOWN decim.   * Volume decreases by amount indicated by decimal
        o Example VOLUMEDOWN 3
    VOLUMELEVEL         * Returns current volumelevel as result
        o Example VOLUMELEVEL; SAY result;


    HIDE                * Hides the window 
    POPUP               * popups the window after hide
»   QUIT                * quits the player

@ENDNODE
@NODE intes "Info about interrupts "
@prev rexxs
@next contact

    D.A.S.ModulePlayer uses two different kind of interrupts.
    There is a selection between VBlank and CIA interrupts.
    
VBLANK
    When VBLANK selected interrupt timing is tied to VerticalBlanking
    Frequency. Which is 50 to 90 times per second depending on
    the vertical frequency of the frontmost screen. When using VBlank
    you won't be able to use Tempo commands, but if such commands
    are encountered when playing they are converted to nearest possible
    Speed command. Due that Vblank is dependant of the frontmost screen's
    frequency the modules may not always play correctly, when this happens
    you should use CIA interrupts instead. (CIA is always better)

CIA
    When using cia timing, the interrupt timing is tied to one of the
    four CIA timers; 2 timers for CIA A and 2 timers for CIA B.

    CIA B is not very good choice because its interrupt level is 6 
    and thus it may steal time from other lower priority interrupts, such
    as Serial port. Level 2 is much better for these purposes, but
    as the one of the two CIA A timers is reserved by the system (usually)
    then there is only other left and if somebody has already reserved that
    we may have to take the CIA B instead. 

    DASMP is quite smart about these. If we have to take Level 6 (CIAB)
    interrupt then we will only use it for Causing a Software interrupt,
    which is in much lower priority (Lowest possible), thus you will not
    experience any problems with hihgspeed modems and such.

    *BUT* there is one problem, there can only be one Software interrupt
    and if somebody has reserved that also then we have to use plain Level 6
    CIA for the playing which is bad.

    To help you to know which interrupt is used there is a little
    space reserved between playing modules name and used playing routine
    (which is nowadays always PT)

    Between name and play routine ID there is 3 letter ID:

        L2 =Level 2 CIA interrupt
        L6S=Level 6 CIA Interrupt + Software interrupt
        L6 =Level 6 CIA interrupt (No software interrupt)
        VB =VerticalBlank 
    

@ENDNODE

@NODE contact "Contact information & thanx"
@prev intes
@next hists


Finally D.A.S ModulePlayer is almost what I wanted it to be from the
beginning. Although all major features have now been added, I won't
stop developing this one completely, there is always room for 
some bug fixes/speed adds and lots more, but as life goes on so will I.
Version 1.60 is propably a last release for a few weeks.

            I hope you enjoy using this program.


Thanx to following guys. Without them development of this program
would not have been possible.

    Erno Tuomainen "Assistant Developer" :-)
            - A lot of New ideas/Bug reports
            - "Enforcer TOP-10 HIT LIST"
            - Arexx ideas/support and script package
           
    Jari Pakarinen (Bug reports/New ideas)
    Mika Pöytäkivi (New ideas/Bug reports)
    H. Talaskare --> Jump Screen idea
    Teemu Suikki --> CIA info (I had completely forgotten some very
                                important facts)


    Author. (snail mail address)

    @{b}        Pauli Porkka
            Kaskitie 2 B 10
            SF-37600 VALKEAKOSKI

            FINLAND@{ub}

SUPPORT BBS:
    I keep Moonlight Sonata bbs as my main spreading point for this
    package, so you can always find the newest version of this prog
    from there. Often I don't spread version anywhere else, just here.
    You can find DASModPlayer package from Filearea 3 and it is FREE!!

    Moonlight Sonata +358-18-161763 (Fido: 2:221/112.0)
    (Finland) Sysop: Erno Tuomainen

    I like this bbs and I am sure you would like too. So make a visit
    it's worth calling.

            Signed    
              __         __
             /__|  ___  /__|  __ ___
            /  ___\    /  ___/
   
            Pauli Porkka

    PS. This is not paid advertisement although it might look like one.
        I Just plainly like the place.

@ENDNODE

@NODE hists "History of D.A.S ModulePlayer"
@prev contact
@next futs
    (ADD ) = Added new option/routine/thingy
    (CHNG) = Modified old working routine
    (FIXD) = Fixed old not working routine (Bug noticed and fixed)
    (BUGN) = Bug reported (Not corrected, 'cos I am a lazy bastard)
    (REMD) = Removed function/routine/option

********************************************************************
VERSION: (V1.60 19-AUG-93)
    (ADD ) @{"AREXX" link rexxs} Support (over 30 commands)
    (ADD ) Software interrupt when using LEVEL 6 CIA
    (ADD ) Interrupt change "on the fly" now possible.
    (ADD ) Current interrupt type shown in main window. (L2/L6/VB)
    (ADD ) Auto-Detaching from CLI.
    (FIXD) CIA interrupt corrected AGAIN! Now Level 2 is tried first.
    (FIXD) Several minor bugs.
    (FIXD) ForceFilter bug
    (FIXD) Show MaxPattern on start - bug.
    (ADD ) Shorter @{"TOOLTYPE" link toolts} definitions.
    (ADD ) Hotkey combination now popups the main window to any
           screen (the one which you were in when pressing hotkeys)
           If you press hotkeys in a same screen where the window is
           currently it will be hidden. 
      @{b}WARNING!WARNING! This option is very dangerous, so be carefull
           where you wish to open the main window.@{ub}
           NOTE: Only the main window will be moved.
           Now if Player just dissappers (the whole program) then it
           and the screen had severe disagreements about opening
           the window on that specific screen.
    (FIXD) Some window mistreadments corrected.
    (FIXD) Config bug. Bug introduced in V1.58 due the large amout of
            reorganization in prefs window.
    (FIXD) Problem with Exchange, caused disturbance in local space-time.
    
VERSION: (V1.58 14-AUG-93)
    (CHNG) Preferences window rewritten. Added a OPTS 2 window
    (FIXD) Volume now changes also currently running samples.
    (ADD ) 2 new @{"keyboard" link keybs} shortcuts
    (ADD ) FileRequester follows mouse
    (BUGN) Enforcer hits when using LOAD/SAVE. Something to do with FR.
            Fortunately they are only READ Hits.

VERSION: (V1.57 12-AUG-93)
    (FIXD) 1 ENFORCER HIT (Write) removed
    (FIXD) 1 ENFORCER READ HIT
    (BUGN) 1 ENFORCER HIT KNOWN, COULDN'T FIND EXACTLY WHERE. (READ HIT)
    (FIXD) CIA interrupt vector adding corrected a little.
    (ADD ) 12 Keyboard shortcuts added
    (CHNG) Search string error fixed. --> Search not done until next time
            pattern is correct. 

VERSION: (V1.56 10-AUG-93)
    (CHNG) Main window changed a bit
    (CHNG) Little internal FR definitions changed 
            (please let me know if something is not working)

VERSION: (V1.55 09-AUG-93) (Maintenance version)
    (FIXD) Several minor bugs fixed.
    (CHNG) Windows changed a little.

VERSION: (V1.54 04-AUG-93) (Maintenance version)
    (FIXD) Volume control, now reflects real spacetime volume controls :-)
    (ADD ) Force Filter OFF, switch
    (ADD ) Default pref values, easier for beginner AND FOR THOSE WHO
            DON'T READ THESE MANUALS!!!!!!
    (ADD ) RightMouseButton = positions listview on selected item
    (ADD ) DoubleClick on module name will start playing.
    (ADD ) DoubleClick with RightMouseB = positions on playing item,
            even when no Positioning enabled.

VERSION: (V1.53 01-AUG-93)
    (FIXD) Applicationwin/icon functioning properly
    (ADD ) Random play finally added
    (CHNG) Some cleaning operations all over the place.
    (CHNG) Little speed for everything (Very little though)
            Most speed gained when adding LHA packet(s) to list.

VERSION: (V1.52 30-JUL-93) 
    (ADD ) Sorting
    (CHNG) Search, now it does active search.
    (CHNG) Little internal priorities, changed

VERSION: (V1.51 29-JUL-93) (1.50 not released)
    (ADD ) Any list can be loaded on startup
    (CHNG) INITLIST tooltype --> FILE 
    (BUGN) Random play still missing
    (ADD ) Deletes old config version (presently version is 3)
    (ADD ) Modulecount show (MC   0)
    (ADD ) Search for modules
    (ADD ) Stop scan in multiselection if "not a known module" requester
            is shown (selectable "skip" or "stop scan").
    (ADD ) Hotkeys "NEXT","PAUSE"&"PREV" "ctrl lalt numericpad 2","5","8"
    (FIXD) Some fixes to double buffering (works much better now)

VERSION: (V1.49 27-JUL-93) (1.48 not released)
    (ADD ) Doublebuffering (This may not be what you expect,but still...)
            Note that I did this in 20 minutes and thus it may contain
            some odd things/side effects.
    (ADD ) ->Prefs-> 'Short name header'
    (ADD ) ->Prefs-> 'Ending'
    (ADD ) ->Prefs-> 'Dirsel Obey patt'
    (ADD ) ->Prefs-> 'Positioning'
    (ADD ) Listview follows the module while playing. (selectable)
    (ADD ) Save prefs saves now the window coordinates.
    (CHNG) List files rearranged, memory consumption is now about
            50 - 70% smaller, depending on filename sizes.
            Due the better performance old list files are no longer valid.
    (CHNG) Info window resizable (sorry about closing/opening)
    (CHNG) Changed config (Old won't work)
    (CHNG) Added new das.library V6. (old won't work)
    (FIXD) lots of misc little bugs (propably still several left)

VERSION: (V1.47 25-JUL-93)
    (ADD ) Whole Directory add with single selection
    (ADD ) AmigaGuide documentation

VERSION: (V.1.46 20-JUL-93)
    (ADD ) Commodity support (read docs for more exact info)
    (ADD ) Tooltypes CX_POPUP/CX_POPKEY/CX_PRIORITY
    (ADD ) Tooltypes OPENONPUBSCREEN, APPICONNAME, NOCOMMODITY
    (FIXD) Lha base handling in program list.    

VERSION: (V.1.45 06-JUL-93)
    (CHNG) You can treat list files same as separate modules 
    (FIXD) Some Possible buggy routines

VERSION: (V.1.44 05-JUL-93) * NOT RELEASED *
    (ADD ) Tooltype INITLIST added
    (CHNG) ProgramLists logic and intelligence increased considerably. :o)
    (CHNG) Window layout
    (FIXD) Shell/CLI crash bug
    (FIXD) Few (remotely) possible bug causes 
    (REMD) Tempo type selector (prefs)

VERSION: (V.1.43.2 03-JUL-93)
    (ADD ) Repeat gadgets, repeat count counters. (main)
    (ADD ) List files can be compressed using xpk libraries. (lists)
    (ADD ) Multiple files in one lha handled.
    (ADD ) Tooltype settings. (wb icon, read doc for full briefing)
    (ADD ) Autoplay added (prefs)
    (CHNG) List version number changed (lists)
    (CHNG) Powerpacked files now uses xpkmaster.library
    (CHNG) Window is now somewhat smaller. (-10,-15)
    (CHNG) Code optimised little (executable -3k)
    (FIXD) Handles now lha packets with spaces in namestring.

VERSION: (V.1.42 24-JUN-93)
    (FIXD) Fixed lha. Handles now files with space in namestring.
    (BUGN) Players VBP wait routine still doesn't work :(...
           I am starting to be little pissed off 'cos this fucking
           wait routine doesn't work!!!! Why don't I have the money to buy
           faster amiga so that I could test this myself? (@#%&@@)
           Nowadays I have to rely on others reports about this one.

VERSION: (V.1.41 21-JUN-93)
    (ADD ) Added few gadgets to prefs 
    (FIXD) Fixed the lha handling. 
    (CHNG) Changed VBP PT Wait routine a little, please test it first.
    (ADD ) Automatic 'prefs' -popup when no config file found.

VERSION: (V1.40 20-JUN-93) * NOT RELEASED *
	(CHNG) E.Tuomainen reported that My player wait routine wasn't as good
      as I thought, so I decided to put back the old routine.
      New one is still there and you may enable it by setting
      DMA wait value to NULL.
    (ADD ) LHA PACKET HANDLING <== control gadgets in prefs
    (CHNG) Changed prefs a little, module/list default pattern gadgets added
    (CHNG) Changed prefs gadget handling a bit, works better now.
    (ADD ) 'About' window.

VERSION: (V1.38VA 18.JUN.93) * NOT RELEASED *
    - Speed slider fixed, it used to be disabled always in OS3.x
    - Modules listview gadget also fixed, this used to be
      too big in OS3.x machines. (M. Pöytäkivi reported this one)

VERSION: (V1.37VA 18.JUN.93) * NOT RELEASED *
    - Added some more things to info
    - Changed main window outlook a little
    - Some internal bugs fixed
    - CLI crash bug fixed (J. Pakarinen reported this one)
    - SONG RELOCATION TO FAST RAM, IMPLEMENTED (phase 1)

VERSION: (V1.35.4VA 14.JUN.93)
    - Added some info to info window, and changed it a little
			
VERSION: (V1.35VA 11.JUN.1993)
    - More bugs fixed
VERSION: (V1.34VA 07.JUN.1993)
    - Few minor bugs fixed. (exchange, prefs window)
    - DSS module support removed.			

VERSION: (V1.31VA 31.05.1993)
    - AppIcon added 
    - Code optimised a little (code is now about 3k smaller)
    - NEW PT PLAYER ROUTINE. 20-30% faster than previous one
        takes about 6000 (six thousand) instructions less 
        (measured on AIBB 6.1 InstTest) on a A500PLUS.
    - Few minor bugs fixed.
@ENDNODE

@NODE futs "Future additions for D.A.SModulePlayer"
@prev hists
@next main

Dated 03-JUL-93

* Do you have anything nice to add in here, if you do, let me know.

  - Some missing functions/options in prefs should be done to work.


Things I won't do (unless someone asks for them):

   Multimodule format support. I just noticed that I have only PT
   modules in my modules dir, so everybody else should too,... **NOT**

   Yeah! Sorry about that moduletype support but I don't have time
   to design any libraries for different modules. If you have
   developer files (like lib offsetts) for SmartPlays/Delitrackers
   player libs, I would appreciate having them. So I might try using them.
   (With the authors permission ofcourse! :-D )

@ENDNODE


