@DATABASE D.A.SModulePlayer	
@NODE MAIN
@TITLE "D.A.S Module Player V1.80 17-10-93"
@next MAIN
        D.A.S. ModulePlayer Documents Amigaguide edition 
        =============================================
        @{b}(D.A.S. = Digital Audio Systems)@{ub}
    
    For @{b}Version V.1.80 17-10-1993@{ub}

    @{" Disclaimer     " link discl } (Copyright notice!)

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

    @{" Panels         " link gads}    @{" Hints&Tips     " link hints}

    @{" Appwin/icon    " link apps}             Beta Testers:
    @{"    ARexx       " link rexxs}                   Erno Tuomainen
    @{" Commodities    " link commods}                   Harri Tolvanen
    @{" Keyboard       " link keybs}                   Henri Talaskare
    @{" Tooltypes      " link toolts}                   Juha Lehtinen
                                        Jari Pakarinen
    @{" Program list   " link lists}
    @{" Packers        " link packs}
    @{" Restrictions   " link rests}
    @{"  Interrupts    " link intes}  
    @{" Module types   " link modtyps}

    @{" Programmers    " link progs}    
                                        
    @{" Contact&Thanx  " link contact}  
    @{"    History     " link hists}    
    @{"    Future      " link futs}     
                                        



@ENDNODE                
@NODE discl

Following notice applies to product called "D.A.S.ModulePlayer" and everything
else in its original disribution archive.

    * Program is published by Pauli Porkka under consept of PublicDomain.

    * You may NOT sell this product without written permission from me.
      Only exception to this rule is Fred Fish collection of amiga programs.
      No one else may not make profit selling this product except when
      fee is the same as the cost of disk/other media it was spread with.

      Other so called "PD collections" may not spread this if they require
      person to pay any sum of money exceeding the sum of above mentioned media.

    * You can spread this program through BBS's and any other electronic means
      if it does not require money exchange between spreader and the person
      receiving product. Normal NET (such as internet/fidonet) fees are not
      considered to be "money exchange between parties"
    
    * If someone wishes to include this product to program collection and
      requires fee for it, you MUST ask permission from me and I WILL
      demand certain percentage of profit gained from selling my product.

Above mentioned rules apply to D.A.S.ModulePlayer and other texts/libraries 
within the original package version 1.80 and above unless otherwise stated.

@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
  Goodies/                  - Lots of example arexx scripts
    ........
  libs/das.library          - Library needed by DMODP
  libs/dasMMD0.library      - External player library MMD0/1/2
  libs/dasDSS0.library      - External player library DSS0
  s/das-cfgfile.config      - Example Configuration file
  programmer/               - source example/includes for external
  ............                player libraries.
    
@ENDNODE
@NODE feats "Features list"
@NEXT gads
@PREV conts		
            Features list

- FONT sensitivity
- First moduleplayer ever with JOYSTICK control option. :-)
- Multimodule support
    o MMD0 = MED/OctaMED modules, medplayer.library 2++ required
        - For MMD1/MMD2 modules medplayer.library 5++ required
    o DSS0 = GVP DSS8 Tracker modules

- @{" 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
        @{b}Multiple files can be extracted from single archive@{ub}
- @{"Main gadgets" link mgads}
    o Unique Active Module search from list
    o High speed module sorting
        - By date (reverse)
        - By Name (reverse)
    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}
- @{" Advanced conf " link p3gads}
    o Font controls
    o External archiver "Advanced" controls.
- @{" Configuration " link pgads}
    o Effect Tracing
    o Fader
    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 relocatable 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
USE WHOLE DIRECTORY SELECTION INSTEAD OF MULTISELECT IF YOU ARE
GOING TO ADD THE WHOLE DIRECTORY.
                         
REQTOOLS USERS CANNOT DO THIS because reqtools' way of handling things.

    
Search patterns:
Pattern gadget accepts any Amigados patterns, like ?, #?, (ab|ba).....

If you have 'First in archive' 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}
            @{"  Config 2 gadgets   " link p2gads}
            @{"   Advanced config   " link p3gads}
            @{"       EXTLIB        " link extlibs}

@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.
    Sorting is based on name or date. Order depends on your settings in
    configurations. 
    Possible sorting methods are: Name, Reverse name, Date, Reverse date.

    NOTE: If you have lha bases (<...>) in a list then those modules
        extracted from that specific lha base node are kept under
        the base node but are not sorted.


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:
    Write 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


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. Double click on this one needed

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
Q
    Quit gadget. Double click needed for this one.
	
@ENDNODE
@NODE pgads "Gadgets for Config window"
@next p2gads
@prev mgads

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

- Randomize visible (CHECKBOX GADGET)
    If enabled: Randomizer will show you the randomize process in the list.

- Joystick control (CHECKBOX GADGET)
    Enables joystick controls. Use up/down to scroll through  the list.
    Fire button starts playing (also does PAUSE if clicked over playing mod)

- Effect Trace (CHECKBOX GADGET)
    Traces efx changes when performing ">>" action.
    Following effects are currently traced:
        Speed/Tempo
        Filter

- Fade (CHECKBOX GADGET)
    Fades moudle when switching to another module or stopping.
    Slider on the right side of the Fade gadget is fade speed set gadget.

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

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


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

- First in Extr (CHECKBOX GADGET)
   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 (CHECKBOX GADGET)
   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 :) )

- Dirsel obey patt (CHECKBOX GADGET)
    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 (CHECKBOX GADGET)
    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 (CYCLE GADGET)
   Lets you select of different playing modes. Selfexplanatory.
   Even random is finally working. 

- Int type @{" Interrupts " link intes} (CYCLE GADGET)

   Interrupt type selection (CIA/VBLANK)
   If vblank is used, PT command $F(>32) (Tempo set) is ignored.

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

- Window state
    Four different window sizes for the main window.
    Normal = normal
    1/3 = only play gadgets visible
    L2/3 = Lower two thirds of the window visible (play gadgets and texts)
    U2/3 = Upper two thirds of the window visible (list and play gadgets)

- Add
    Add type.
    Normal = add all selected files 
    Update = Add only those which are newer than currently loaded list file.
- Sort
    Sorting type
    Name = Normal aphabetical sorting
    Date = Date sorting, from older to newer
    Reverse Name = Reverse alphabetical sort
    Reverse Date = Reverse date, newer to older
    
- @{" OPTS 2 " link p2gads}
    Opens the 'External Packer and Default Dir' preferences window

- @{" ADV OPTS " link p3gads}
    Opens the "Advanced options configuration window"

- @{" EXTLIB " link extlibs}
    Open the "External player libraries" panel
    
- USE
   Closes the preferences window

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


@ENDNODE
@NODE p2gads "External packer and default directory options"
@prev pgads
@next p3gads

- Def list dir (STRING GADGET)
   Default directory for list files.
    Example: "dh0:audio/modules/lists"

- Def module dir (STRING GADGET)
   Default directory for modules
    Examples: "dh0:audio/modules"
             "MODULES:"

- Ex.Ending (STRING GADGET)
    External archiver postfix. 
    This is used to recognise external packer files. 
    Example "(#?.lha|#?.lzh)"

- PT DMA WAIT (INTEGER GADGET)
   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. For fast amigas like A3000/A4000 this 
   should be set something like >1200-2000 

- Modpatt/listpatt (STRING GADGET)
   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)"

- Extr path (STRING GADGET)
    Path + name for external archiver used to unpack archives.
    EXAMPLE: "dh0:packers/lha"  this uses lha for depacking

- Temp dir (STRING GADGET)
    Temporary dir where to unpack the file from archive.
    EXAMPLE: "ram:"
    

@ENDNODE

@NODE p3gads "Advanced user configurations"
@prev p2gads
@next toolts

  These options are for users who know what they are doing, no novice users.


- Match string (STRING GADGET)
   This is used to regocnise header start of external packer file.
   "?" character in this string is considered to match any character.

   Example: 
        LHA/LZH archives = -lh?-

- Namelen offset (INTEGER GADGET)
    Offset from start of recognised "match string"
    From this point we will take the length of the name of the first file
    in archive.

    Default value for this is 19 (when short name header enabled)
    If "short name header" disabled this must be even number. 

    EXAMPLE: match string = "-lh?-" 
             Namelen offset = "19"
             First archived file's name's length will be found:
                -lh
                ^ + 19 = ?? (which is usually 21)

- Name offset (INTEGER GADGET) 
    Offset from start of recognised "match string"
    From this point we'll start taking the name of the first file in archive.

    Default value is 20
    
- Listing options (STRING GADGET)
    This is used when "first in extr" is disabled.
    Feeded to external archiver to create listing file of files in archive.
    
    Output must be pure file names terminated on each line with hexadecimal 
    $0A.
    
    Example: "lq -N" this is for lha. =default
        

- Short Name hdr (CHECKBOX GADGET)
    Lets you use some lha/lzh packets which didn't work before
    with 'First in archive'. Uses only 1 byte name header size.
    You should keep this enabled at al times. If you don't, remember to
    set the namelen offset to even figure.

- LHA e/x fullpath (CHECKBOX GADGET)
   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}

@ENDNODE
@NODE extlibs "External player library control panel"
@prev p3gads
@next toolts

LISTVIEW: 
    In the listview gadget lies a list of available external player
    libraries. For every different module type you need ExtLib to play
    it. Internal library is always here, you can not delete it. 
    
    To add a new library so that DASMP finds it you have to add it using
    the "ADD" gadget located in this window, just select das????.library from
    your libs: drawer (or anywhere else you keep them). When you exit from
    this window you are asked if you want to save changes made to this list.
    
    Programmers wishing to do their own libraries for DASMP should look
    from @{" Programmers " link progs} for more detailed info.


External Libraries control panel:

CLOSE   Closes the window and if list changed, requests for saving.

QUERY   Shows ExternalPlayer info extracted from library itself.
        Press this again to view the libraries list.

ADD     Pops out a file requester in which you should select the
        das????.library made by me or someone else.
        For example: dasMMD0.library is for MED modules, without it you
        can't listen MED modules.

DEL     Deletes selected library from list.

@ENDNODE
@NODE toolts "Tooltype support for D.A.SModulePlayer"
@prev extlibs
@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 while playing list
they are skipped over. 

When you have such an "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 8)

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

Window shortcuts:
    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
    c               = Clear list. "double keystroke" required
    q               = Quit DASMP. "double keystroke" required

        FOLLOWING IS A LIST OF KEYBOARD SHORTCUTS WHICH ARE NOT UNDERSCORED
        IN A GADGET, AND THUS ARE NOT VISIBLE ANY WAY.

    +               = Repetition count + 1 (For highlighted item)
    -               = Repetition count - 1 (For highlighted item)
    r               = Endless repeat ON/OFF
    x               = activate search gadget
    p               = Play selected item (=return)
    1/2/3/4         = Channel switches
    w               = Window state selection (shift backwards)
    HELP            = Online help

Numeric keypad:
    7 (home)        = start of list
    1 (end)         = end of list
    8 (up)          = scroll list up
    2 (down)        = scroll list down
    4 (left)        = previous pattern (REW)
    6 (right)       = next pattern (FWD)
    9 (pg up)       = This scrolls 3 modules upwards 
    3 (pg down)     = This scrolls 3 modules downwards

Commodity hotkeys
    ctrl+lalt+p             = Hide/popup main window
    ctrl+lalt+numericpad 5  = Pause ON/OFF
    ctrl+lalt+numericpad 2  = Next module
    ctrl+lalt+numericpad 8  = Previous module


@ENDNODE
@NODE rexxs "Arexx support for DASModPlayer"
@prev keybs
@next contact

    AREXX Interface For D.A.SModulePlayer

ARexx port name: 'DASMP_Rexx'

Check out the 'goodies' drawer for example scripts by Erno Tuomainen

Commands supported: 

    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
    DELETE              * Deletes currently selected module

    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;

    FADE fadelevel      * Set FADE speed, if level = 0 fade disabled
                        * Select between 0-6

    USERMSG text        * Text max. 39 letters, will be printed on upper
                        * of the two text lines in the bottom of modplayer
    USERMSGNORMAL       * This will return normal printings.
                        * Note that it is upto you to keep the correct
                        * text visible.
    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. (I just hope that I'm right about this)

    To help you to know which interrupt is used there is a little
    space reserved between playing modules name and used play routine.

    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 modtyps " Multi module support"
@prev intes
@next contact

D.A.S. ModulePlayer V1.63++ now supports multiple module formats.
Due the lack of time I have done only two module libraries.

    dasDSS0.library * for GVP's DSS8 Tracker
    dasMDD0.library * for MED modules (requires medplayer.library V2++)
        This seems to be using LEVEL 6 CIA, so beware with highspeed modem
        transfers.

As you may have realised by now, player supports different moduletypes
using "External Player Libraries". For every new module format I must
create new library, but no change to main program is needed.

About libraries:
    Library does everything for the module, main program just provides
    loading and user interface for it. Relocating (if supported), 
    playing and interrupt handlings are done by a library.
    Not every function is supported, forexample MMD0 library doesn't
    support anything else but playing/stopping.

I am not planning to do FutureComposer or SIDmonitor (or whatever)
module support because I don't like supporting extinct module formats.
But if you like doing my dirty work, you are welcome. @{"Programmers" link progs"}


@ENDNODE
@NODE contact "Contact information & thanx"
@prev modtyps
@next hists

        I hope ya all 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
            - Arexx ideas/support and script package

    Harri Tolvanen - Ideas/bugs

    Janne Saarme - for spreading through ADS
    Jari Pakarinen (Bug reports/New ideas)
    Mika Pöytäkivi (constant criticism) :-)

Thax for following guys for bug reports/ideas
    
    Mikko Kekäläinen 
    Juha Lehtinen
    Taneli Korhonen
    Teemu Suikki

    
    For suggestions/bug reports: Fido 2:221/112.4

    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)
    Sysop: Erno Tuomainen (running Dialog Professional)

    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.80 17-10-93)
    (ADD ) Online help added, copy appropriate file to your HELP:drawer
    (ADD ) ExtLib panel.
    (ADD ) List file conversion from 7 to 8.
            * IF old list is converted then  all modules will have converted list's 
            datestamp attached to them, so date sorting won't work properly
    (ADD ) Sort by date/reverse date/reverse name
    (ADD ) New addtype = updating (based on files datestamp)
    (ADD ) Underscores for most of the gadgets
    (ADD ) Title namedraw when 1/3 or U2/3 window active
    (ADD ) Few keyboard short cuts @{" KEYBOARD " link keybs}
    (CHNG) About window changed to requester (reqtools Ezrequest used if available)
    (CHNG) List file revision bumped from 7 to 8
    (CHNG) bumped das.library revision to V8.1, also internal
            functions changed a bit. 
    (CHNG) dasMMD0/DSS0.libraries bumped to revisions V1.1, added
            new function also. Don't use older libraries.
    (FIXD) List refresh after delete fixed.
    (FIXD) Info window handling corrected a little.
    (FIXD) CLI CRASH, I and the linker had little misunderstanding
            about the order of linking. :-)
    (FIXD) Arexx MOVELIST FIRST/LAST were switched to their right places

VERSION: (V1.70 04-10-93)
    (ADD ) Four different sizes for the main window @{" CONFIG " link pgads,78}
    (ADD ) Module specific configurations.
    (ADD ) Font requester 
    (ADD ) Font sensitivity (not perfect but mostly functioning)
    (ADD ) Advanced user options @{" CONF ADV " link p3gads}
    (ADD ) Corrupted archiver packet handling
    (ADD ) More keyboard equivalents 
    (ADD ) 'randomize visible' @{" CONFIG " link pgads}
    (ADD ) Joystick control :-). This started as a joke, but I decided to
            do it just for the fun of it.
    (CHNG) Channel switchers made toggle gadgets.
    (CHNG) Window outlook. (minor changes)
    (CHNG) CLR and QUIT gadgets changed to "double click" gadgets
    (CHNG) Info window can be sized on every direction.
    (FIXD) Multifile archive sorting bug. (Files weren't kept within base)
    (FIXD) Speed slider guru'ing
    (FIXD) Random player little more random now.
    (FIXD) Some minor fixes in misc places

VERSION: (V1.63 16-09-93)
    (ADD ) 2 Moduleplayer libraries @{"External" link modtyps}
            dasDSS0.library 
            dasMMD0.library 
            (Requires medplayer.library V2++, and for MMD1/MMD2 requires V5)
    (ADD ) Channel disable/enable (on the right side of SORT gadget)
    (ADD ) Rexxcommand 'DELETE'
    (CHNG) Changed das.library --> V7.3
    (CHNG) Changed LIST version number again 
            (those 'need to do' things, sorry.)
    (FIXD) Bug which caused GURU'ing when couldn't open file when doing 'ADD'
 
VERSION: (V1.62 01-SEP-93)
    (ADD ) Shows real module name while playing (when available)
    (ADD ) LC->UC conversion during the module add to list.
    (FIXD) Return code bug (mainly visible on arexx)
    (FIXD) AutoDetach from CLI seems to be working now.
    (FIXD) Application icon bug fixed.
    (FIXD) Crash on corrupted external packet
    (FIXD) Active Search bug when searching for "<...>" and "  blah" files
    (FIXD) Ext.Base placement bug on sort routine
    (FIXD) "Only 1 module" crash on sort
    (FIXD) removed "Only 1 module" fade

VERSION: (V1.61 26-AUG-93)
    (ADD ) 'Effect trace' (Traces: speed, tempo and filter efx's)
    (ADD ) 'Fade on End'
    (ADD ) 'Fade speed'
    (ADD ) Arexx Commands for fade control
    (ADD ) Usermsg arexx commands
    (FIXD) Few misc bugs.
    (FIXD) Some bugs conserning cli initialization
    (FIXD) Sorting on Multifile lha packets corrected.
            NOTE. Files within a lha packet are not sorted, only kept
            under their respective lha bases. (<???> nodes)

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.


 ********************
Older revision news removed so that this text wouldn't get too long.

@ENDNODE

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

Dated 23-09-93

   o More external player libraries

                    -----------------
@ENDNODE
@NODE progs "Information for Programmers"

This page and "Programmer" directory were added to version 1.72.

In the "programmer" drawer you can find include files and an example
library source for das????.library. As of version 1.72 in config panel
you can find "EXTLIB" window where you can find necessary things
to add an external player library so that D.A.S.M.P will notice it.

With included files it is possible for seasoned programmer to do
his/her own external player library for dasmp to use. Although
programmers must follow strict guidelines for doing their own libraries
it is quite easy to do. The hardest thing to do is actual player routine,
in example sources there is already routines for allocating VB and CIA
interrupts. 

So if anyone has a source for a player routine you are free to make your
own library for dasmp. I would appreciate if you send me the copy of your
library so that I may add it to next realease of D.A.S.ModPlayer.

@ENDNODE


