

                      E A G L E P L A Y E R   2 . 0  4
                              
                              
                                written by

                     Jan Blumenthal and Henryk Richter


Introduction
-------------

Eagleplayer is a popular music player for the Amiga platform. It runs under native Amiga processors (68020+) 
and Amiga OS 2.0+. Due to its modular design, Eagleplayer has a small memory footprint and can be easily 
extended by external plugins. It support more that 200 playing systems, such as Protracker, Startrekker, 
TFMX, FutureComposer, MP3, and much more. Further, it supports optional Engines. Engines may be additional 
Graphical User Interfaces (GUI), such as a classical view, an impressive sound system (EMPYGUI), or the 
very popular EagleAMP (badly known from the M$ platform). Moreover, some engines are designed modular as 
well (i.e. provide own plugins). These engines include additional rippers, converters, loaders and savers.

Eagleplayer was written by Jan Blumenthal and Henryk Richter, formally known as Eagleeye & Buggs of Defect. 
It was originally released as shareware. Due to the other commitments, we are not able to continue our
development of Eagleplayer. Therefore, we decided to release the source code of Eagleplayer 
under GPL. Maybe, there are a few idealists still using Amiga computers and like to enhance Eagleplayer.



License
--------

As already stated, Eagleplayer is from version 2.04 on licensed under the GNU General Public License.
In short, this means Eagleplayer is now free and it is meant to stay that way. The chosen license
grants everybody the right to obtain, use, and modify freely. There is however the obligation of
retaining the authors and GPL copyright notices. For detailed information regarding the GPL,
please read the file COPYING. Non-free licenses for using our code base in a closed source 
environment are available on request.


Some really important remarks:
------------------------------

Development of Eagleplayer was started in 1992 with SEKA assembler or one of its derivates.
Currently, we use Asm-Pro 1.15 or Trash-M-One. Other Seka-clones may work, but Eagleplayer 
will not be assembled out of the box with Devpak or Maxon-Assembler. This is caused by lower=upper 
case limitations and variations in some type definitions, as well as defined macros. Additionally, 
we provide some of our patched includes, because due to the lower case=upper case code convention, 
original includes may not work correctly.

Eagleplayer is fully programmed in 68000 assembler. We think, it is senseless and impossible to 
port Eagleplayer to any other hardware plattform. If you plan to do so, you might consider writing
a completely new player! 

Since Eagleplayer was startet in the early nineties, there are some very old parts in the source, 
which may be appear terrible with nowadays knowledge of software engineering. Unbelievable but true, 
Eagleplayer does not use any semaphores or mutexes to synchronize processes (though our workarounds are 
pretty stable and most inter process communication is handled by message ports). Anyone who does not 
understand the dimension of this problem should study the problem of the dining philosophers. 
Eagleplayer was just learning by doing. Nevertheless, the inconsistencies are very small and do not 
lead to crashes. The current version of Eagleplayer is very stable. Most problems we encountered are 
caused by external libraries. For example, some libraries do not work correctly under UAE.

We prepared the source code as best as possible. We tried to compile the latest sources from our 
confused source repositories. But we are not sure, that any version of the external plugins are 
up-to-date. But note, the main source is the lastest one. The initial GPL release covers the main 
program and engines. The external Eagleplayers are not released under the GPL. In Eagleplayer, 
labels are mainly in English but unfortunately most of the comments are in German. Sorry about 
that inconvenience.

Finally, Eagleplayer has a heavy key protection system. That means, hacking of several jumps used 
for checking and decoding keyfiles leads to overwriting the execbase (address 4) and an inevitably 
reboot of the system. Please be careful by changing the marked parts within the source code. Removing 
these check routines is critical as well due to missing hidden functionality :-)



Requirements to assemble Eagleplayer
-------------------------------------
- AmigaOS 2.0+
- valid Keyfile (provided)
- ASM-Pro 1.15



Optional runtime components/libraries
--------------------------------------
- Filerequesters:
  - req.library
  - asl.library
  - reqtools.library
- Decrunchers
  - xpkmaster.library
  - lh.library
  - powerpacker.library
  - xfdmaster.library
  - CrM.library
- Other
  - screennotify.library
  - amigaguide.library
  - commodities.library
  - rexxsyslib.library
  - locale.library
  - guigfx.library
  - popupmenu.library



Build the Eagleplayer main program
-----------------------------------
- unzip Eagleplayer source to any directory and assign this directory to EP:
  ("assign EP: <your_directory>")
- run ASM-Pro 1.15 or any other compatible assembler
- If asked, select 8MB of workspace
- Enter Menu Assembler->Preferences->Environment and uncheck "Save Marks"
- Enter Menu Assembler->Preferences->Assembler and check "UCase=LCase"
- load EP:src/EP_Main.s (command: r)
- start assembler with command "a"
- write the executable file to "EP:" using command "wo"
- Now, you are ready to start Eagleplayer main program from EP:. There is no further installation procedure
  necessary. Make sure that Eagleplayer.key is in your Path or better in EP:



Build Eagleplayer PlugIns
--------------------------
- External plugins are: Engines, Eaglerippers, Formatloaders, Noiseconverters, Samplesavers, and Eagleplayers
- most of these plugins are stand-alone sources and can be assembled by an easy standard procedure:
  - read source into Asm-Pro (command: "r")
  - assemble source (command: "a")
  - write executable object (command: "wo") to the appropriate directory (EP:Engines, EP:Engines/Eaglerippers...)
- Some extra includes might be required in "include:", such as those from guigfx.library,popupmenu.library,
  reqtools.library. Most of them can be found on aminet.




Have fun with Eagleplayer !



Jan Blumenthal	&  Henryk Richter
  (Eagleeye)         (Buggs)



November 2004
