Alive
News Team Current issue History Online Support Download Forum @Pouet

01 - 02 - SE - 03 - 04 - 05 - 06 - 07 - 08 - 09 - 10 - 11 - 12 - 13 - 14

Alive 10
Interview with

Dark Angel / Aura

       cxt: Hi Dark Angel, a lot of sceners might think of you as a 
       member of Aura or as the author of MusicMon a famous chiptracker 
       which was updated quite recently :). Also your real name (Frank 
       Lautenbach) is no secret, since it is clearly visible in 
       MusicMon. Last not least you also seem to join the IRC channel 
       #atariscne more or less frequently. What other interesting facts 
       can you tell us about yourself?

       da: Well, I used to play keyboards in some rock bands, the most 
       important one was Re-Zeppelin, a Led Zeppelin cover band. I am 
       32 years old living in Mainz for some years now. For Insiders: 
       My MBTI profile is INTP.

       cxt: Wow, I wasn't expecting that much information:), it seem 
       you are referring to the Myers-Briggs Type Indicator codes. If 
       that lead is right INTP is one of 16 personality types, as far 
       as one can determine that. Personally I doubt it is possible to 
       completely make a picture of a person this way, but perhaps it 
       can be indicating some characteristics. So lets google a bit and 
       see what INTP is going to reveal about you. "The driving force 
       in the lives of INTPs is to understand whatever phenomenon is in 
       the focus of their attention" which seems pretty common to me. 
       "INTPs want to make sense of the world and they often take 
       opportunities to be creative." Well I am not sure but I guess 
       this will also apply to most people. "They are analytical, 
       logical and detached in their approach to the world and they 
       question and criticize ideas and events on their way to 
       understanding. INTPs don't need to bring order to the world and 
       appear to be flexible and adaptable in their lifestyle." Do you 
       think this description fits yourself?

       da: Quite exactly, yes. You mentioned that the description comes 
       close to your own temperament. That's normal, most techies have 
       such a profile in some way. Especially the N for being Intuitive 
       and the T for being a Thinker is very characteristic for people 
       like us. A good introduction to MBTI provides the book 
       "Personality Reading". The MBTI theory is a commonly accepted 
       theory in psychology.

       cxt: What was your first computer and which other machines have 
       you used since then?

       da: Z1 ;-) --> 130 XE --> 520 ST --> Falcon 030 --> PC (starting 
       with 486 DX2/66)

       cxt: Z1? you have to be kiddin :), anyway do you still own any 
       of these machines?

       da: The 520 ST is still lying at my parents home.

       cxt: What happened to the others? And even more important why 
       have you kept the 520? Couldn't find a buyer? A wave of 
       nostalgia?

       da: Wave of nostalgia, yes. I shared so many years of my life 
       with this machine so why should I sell it for some euros? It's a 
       real memory to the old times ... 

       cxt: Did you ever enjoyed playing games or did you "just" stick 
       to coding and creating music?

       da: On 130 XE my major activity was playing games besides some 
       rudimentary BASIC coding. I started reasonable coding on ST 
       which I bought when I was 15 or 16. On ST I started with some 
       GFA-Basic coding and then began learning 68k assembler. My first 
       bigger project was the game "Brutalo" realized in pure GFA-
       Basic. It was some kind of sports game with some strange 
       disciplines like head throwing (inspired by "Viking-Games" which 
       has cat throwing). It never had been finished and once I decided 
       to restart from scratch with it. Before doing so I decided to 
       program a small music editor first because I had no sound engine 
       so far. Initially this editor was planned for internal use only 
       and I estimated 3 months of programming for that before resuming 
       Brutalo development again ... As you surely expect already that 
       music editor became Music-Mon. I never continued the Brutalo 
       development ... Don't ask for it, I don't have it anymore because I 
       deleted the disk (what a shame! Today I really rue that). At 
       that time I also did some intro coding under the label "The 
       Electronic Knights". My pseudo was "Bert Brecht" at that time ;-
       ) Actually it never was my clear intention to become a musician 
       but it just happened. Anyhow, coding was always the primary joy, 
       composing was just a means to an end to demonstrate the 
       capabilities of my sound engine.

       cxt: You are a member of Aura a famous Atari Demo group. It's 
       rather obvious that you took the role of a musician inside the 
       crew. However I can't recall to have seen your name in Axxis- or 
       early Aura demos, when did you join them?

       da: I joined Aura quite late, I think in late 1991 as I 
       remember. I was just finished with Music-Mon 1.5 which never 
       became an official release (don't ask for it, I don't have it 
       anymore). A friend of mine had already contact to the Aura guys 
       and he arranged a meeting with them on a small coding party 
       taking place at my home. I demonstrated Music-Mon and then they 
       asked me to join Aura. 

       cxt: Sounds like you weren't to well integrated into Aura, so I 
       guess you don't have any remaining contact to the other members 
       of Aura like BDC, Aeon, Chris or Clash just to mention a few?

       da: You are right, I just played an under role but I never had a 
       problem with that and I never wanted to change that ... I am not 
       staying in contact to the AURA guys today, that's true.

       cxt: You mentioned your "primary joy" was coding not composing, 
       have you ever written a demo or participated in the coding of 
       one? Well if none of the above is true, would you like to write 
       one, or what kind of program do you like to code?

       da: Well, as I wrote above before Music-Mon I coded some lame 
       intros and started coding of "Brutalo". For Music-Mon I coded a 
       small Boot-Intro that was on some of the MM demo disk, as I 
       remember. It had a sync-colour scroller, some lissajous sprites 
       and a wobbling Galactic Logo. Quite lame stuff ... 

       cxt: Is that demo still available somewhere? I guess it's 
       missing in the archive you get from DHS for example.

       da: Of course the intro is still available, it belongs to the 
       demo version of MM 1.0 and you can include it with Alive if you 
       want. It only runs from low resolution and I have no idea if it 
       works on other machines than ST(E), however I won't change a 
       single byte of that intro :).

       cxt: Hehe, sounds like real coders talk :). As a coder and 
       especially as a sound coder you probably know all about the 
       timers on the ST. Is there an easy way for musicians to 
       determine which timers are used in a track created with MusicMon 
       2.1 sid? Perhaps something like Timer A is used for the 1st 
       voice or something?

       da: The replay routine of MM 2.1 supports a timer-use-mask by 
       that you can explicitly specify which timers the routine is 
       allowed to use for SIDs, Digis, and Sync-Buzzers. The allowed 
       timers are then dynamically assigned to the channels as needed. 
       If the song requires more timers simultaneously than allowed 
       some voices will not sound as expected whereby digis have always 
       priority. For more details see also the HOWTO.TXT file in the 
       subfolder REPLAY coming with MM 2.1.

       Actually there is no way to determine how many timers a song 
       requires simultaneously at a maximum.

       cxt: I guess this will lengthen the appendix of this article a 
       bit :) But lets get back to demos, Mathematica contained a 
       nearly endless chiptune, recalling your answer from above I have 
       my doubts but is there a chance for us to hear more stuff from 
       you? I'd love to hear one of your tracks in the next issue of 
       Alive ...

       da: There is a new tune coming along with MM 2.1 (The !Song). I 
       think that's it for the next decade ...

       cxt: What a pity. Anyway if you had to put up a list of your top 
       5 chip-musicians and their most important song how would that 
       look like?

       da: 

       1. Tao 

       2. Mad Max

       3. Big Alec 

       4. stu

       5. celtic

       Sorry that I didn't state particular songs ...

       cxt: Wow, stu will be pleased to see that I guess. However the 
       stuff he produces recently is top league for sure. It also seems 
       he is expanding his activities onto the Amiga, he is looking for 
       a machine to run AHX (Abyss Highest Experience, am Amiga 
       chipmusic tracker) on.

       da: Great. I am taut about what he is doing with that. But I 
       hope he also abides to MM ;-)

       cxt: You have made MusicMon freely available. Do you have any 
       idea how much copies of it were sold, while it was distributed 
       by Galactic?

       da: Music-Mon 1.0 sold about 250 times. For Music-Mon 2.0 I have 
       no track record because I negotiated a blanket compensation with 
       Galactic. 

       cxt: Wow, 250 was certainly not what you have hoped for, right? 
       I wonder why you did a 2.0 version knowing about these 
       disappointing sales. What is it that made you develop it? Was it 
       only to include new effects like SID for example? Was it to make 
       a tool for yourself? To support the scene or other musicians? Or 
       were you just bored with OO-Coding :) ?

       da: I continued development of MM immediately after finishing MM 
       1.0. Until MM 1.0 was finally released and the first sale 
       numbers came in I was quite far with MM 1.5 as I remember. The 
       major problem with MM 1.0 was that it was released too late 
       (time between finishing coding and release was quite a long 
       period). When it finally was up for sale its features where 
       already quite out-dated. First, MM 1.5 was intended to be the 
       next release but then I decided to go a step further which 
       resulted in Version 2.0 (main additional feature compared to 1.5 
       was digis). When MM 2.0 was finished and finally found its way 
       to the shops the Atari market was already fading ... So the major 
       issue of both releases was a problem with time-to-market. Lust 
       but not least, I think pirate copies where a major factor ... But I 
       think you know that only too well from your own game releases ...

       cxt: Well the official numbers for the Lethal Xcess sales were 
       about 2500 pieces, not very motivating if you ask me. Besides 
       where do you know Sven Bauer (for the readers, that's the guy 
       who painted the interface graphic for MusicMon) from? Afair he 
       was the guy who painted the 2nd Eclipse Logo for Marc Rosocha 
       (the 1st one was done by Erik Simon).

       da: I met him on a small party celtic held at his home at that 
       time. MM 2.0 was close to be finished but had still this old 
       yellow style. Sven asked me if he shall spend a facelift and I 
       agreed. Sven visited me one or more times after the party then 
       we lost contact. I don't know where he is living today, but at 
       that time he lived in Bodenheim (close to Mainz) which is just a 
       kilometre away from where I am living today (Laubenheim). 

       cxt: Many famous chiptrackers are not only available as a binary 
       but as source code as well, are there any plans to release the 
       sources for MusicMon?

       da: No, because the code is too cruel for being published (at 
       least the GFA-Basic part). This would damage my reputation ;-)

       cxt: Lol, You surely can't live from the income MusicMon 
       generates and I guess you are far from retirement yet :) so what 
       do you do to pay your bills, what's your current profession?

       da: I am a software engineer at IBM. 

       cxt: As far as no NDAs are violated, what kind of software are 
       you working on? 

       da: I started with doing coding for inspection and automation 
       solutions IBM required for its own hard-disk production lines. I 
       focused on image processing at that time. As you probably know, 
       they sold this business to Hitachi some years ago. After that I 
       realigned into telematics projects. Maybe you recently read on 
       some news tickers (e.g. at heise.de) about the speeding 
       application IBM is now doing for the United Arab Emirates. I 
       recently joined this project team. 

       cxt: It seems to be a common phenomenon that former sceners keep 
       reappearing in intervals at the scene. What made you come back? 

       da: Read the scroller of Music-Mon 2.0 SID for that ;-)

       cxt: Oh dear, nobody reads scrollers anymore nowadays :). But if 
       someone wants a closer look without waiting for the scroller to 
       transport the text, just open SYSTEM_1.DAT and start reading at 
       offset $3df0 or just have a closer look at Appendix A of this 
       interview. In this scrolltext you have written, that you 
       stumbled over a website and found out that people are still 
       using their Ataris. Not only for demos and stuff but also for 
       tracks played in clubs etc. You also found MusicMon lacking SID 
       voices and lots of demand for them from musician. and this made 
       you come back for a while. 

       da: As I said, it's all in the scroller text. Thanks for 
       creating a transcript of it. For MM 2.1 I already did so on my 
       own, did you notice? 

       cxt: Hehe, I guess not, but it was quite easy to rip :). Well 
       informed sources told me, that you are about to enter another 
       hibernation-mode concerning your Atari activities. How long do 
       you think this will last and much more important, when can we 
       expect MM 2.2 or MM 2.3?

       da: Yes, that's true, the wave of enthusiasm seems to rage out 
       again ... New releases maybe next decade, maybe never. 

       cxt: Doesn't sound to promising, but you mentioned that earlier, 
       so it was to be expected. I heard most of the current 
       development and testing on MM2.1 was done using emulators. What 
       is your general view on emulators and which one is your 
       favourite when it comes to Atari stuff?

       da: I am quite impressed by that emulators and also by its 
       creators. I have no real machine at hand anymore (old ST is at 
       my parent's home) and the development with the emulator is quite 
       more comfortable IMHO. My favourite emulator is Steem, I never 
       used anything else seriously. Tests on real machines have been 
       performed by stu, gwem, drx and evil. Thanks again for that, 
       folks!

       cxt: What do you think about clones and accelerators for real 
       Atari hardware, I mean things like the CT60 and so on. Is this 
       something you would like to have too or do you think they are 
       superfluous?

       da: I never used that accelerators, I always preferred original 
       machines. I thought about purchasing a Falcon again, but I 
       buried that thought now since I am going to hibernation mode 
       again ;-)

       cxt: This interview is about to end soon, and I am sure you have 
       already expected our silly Alive brainstorming test. I really 
       can't help it so here we go. This time we have a real challenge 
       for you :) ...

       da:

       F: Firefox(rulez!)

       R: Rantanplan(dog of Lucky Luke and Messiah originating from 
           my weird mind)

       A: Aura ;-)

       N: Nanometer(I dealed with this dimension for a while)

       K: Koitus;-)



       L:  Lethal Xcess(respect!)

       A:  Angels in hell(Title track of MM2 ;-) ) 

       U:  ULM (one of the greatest Atari groups IMHO) 

       T:  Tripods (a low budget but very cool BBC SF TV serial)

       E:  = mc2

       N:  Negative (I like this expression as a substitution for "no")

       B:  BMW (my favourite car brand)

       A:  Atari (what else)

       C:  Captain Future (I loved that serial in my childhood)

       H:  Nnickname of Steve Hogarth (vocalist of my all time favourite 
            band: Marillion)



       I:  IBM (my employer and a great company)

       S:  Seventh son of a seventh son (Iron Maiden album)



       D:  Dio (my favourite band in my youth)

       A:  Unit of current

       R:  Re-Zeppelin (I used to play keyboards in this cover band)

       K:  Kent (very good Swedish rock band)



       A:  Antic (great magazine)

       N:  Symbol for set of natural numbers

       G:  Gelnhausen (my birthplace)

       E:  Evel Knievel

       L:  Lauti (that's what some of my colleagues call me)

       Puh ... that was a hard one ...

       cxt: Well done, if you have some final words for the sceners out 
       there, or if you want to spit out some greetz do it now :).

       da: Greetz to all! And hold on! 

       cxt: Thanks for the time and energy you used on this interview 
       and lets hope your next hibernation will be much shorter than 
       expected ...


       Cyclone / X-Troll for Alive, 2005-02-19


       The following parts may give you further insights without the 
       need to spend hours in front of a stupid scroller :) 

       Appendix A contains the scrolltext of MusicMon 2.0 SID.

       Appendix B is the more technical scrolltext of MusicMon 2.1.

       Appendix C is a copy of the very technical Replayer HowTo.



Appendix A

[ Scrolltext of MusicMon 2.0 SID ]

        Ladies and gentlemen...

        It's done, it's real!

        More than a decade after the release of Music-Mon 2.0 I stumbled
        over some web sites and realized that there are some crazy
        people still using it! Not only for making tracks for demos and
        intros... Rather for making spacy tracks played in clubs around
        the globe, at modern art workshops, museums and barns! Well, I
        suppose for most people reading these lines this is not really a
        news, but I was quite impressed when I heard about all that. I
        left Atari scene approx. 10 years ago and I really could not
        imagine that there is still that activity...

        People like stu and gwEm praised Music-Mon to be still their
        favourite chip tracker whenever it does not support modern
        techniques like SID voices...

        All that made me to resurrect the good old days for a while... I
        made a plan to upgrade Music-Mon with SID voices to give
        pleasure to all Music-Mon fans and of course, also to myself!
        Steem was already installed on my machine for some time...
        Snatching up all sources and getting the build process to work
        again after ages was a little bit more challenging...
        Fortunately I rescued all that stuff some years ago to PC
        already ... I was quite happy about the fact I did some detailed
        documentation at that time... By the way: My good old and holy
        520ST is still alive, it's placed in a spectacular showcase at
        my parents home! Ok, just kidding ;-) It's indeed alive but
        stands quite dusty and yellowed on a desk there...

        At first I was in the opinion that it would take me some days to
        finish that work... At start, it took me some time to dig into
        GFA-Basic and 68k Assembler again... It was a great experience
        after so many years... It's very funny to meet your own ancient
        code again after years of programming in an object oriented
        fashion with C++, Java and C#... For some minutes I missed UML
        documentation... ;-) The more I dealt with it, the more I
        realized that it's in fact more work than I expected. Not only
        adding SID voices but even more the secondary work. E.g., I also
        improved machine compatibility so this version now runs stable
        on Falcon, Mega STE, etc. I think it was not tested on CT060 so
        no guarantee for that... Then, I added this scroller which I
        reimplemented for that purpose. Beyond that, I extended the
        title track as you surely notice while reading these lines. Last
        but not least that nasty face flashing up a second ;-) I think I
        was 25 when this photo was taken ;-) Fortunately some kind guys
        supported me a lot in beta testing on different machine
        derivates. At some time I hated myself for starting this
        project... I had to spend more time for it than originally
        thought of to bring it to an acceptable closure. But now, I
        don't rue anything and I am happy to present the result to you!

        SID voices can be used on all 3 channels simultaneously, there
        is a new small button 'SID' on the sound screen. When activated
        it just adds the SID square to this sound. Frequency of the SID
        generator only reacts on Arpeggio, it's not influenced by PMD,
        Pitch Bend, etc. This allows you to detune SID square and PSG
        square so you can control phasing and can also create some weird
        sounds... SID feature can be combined with any other feature,
        even buzzer. Music-Mon 2.0 SID is completely backward
        compatible, you can load your existing songs without problems.
        Same thing for the replay routine, it can replay old mod-files.

        I want to especially thank stu and gwEm for inspiring me to
        start that project and also for doing intensive beta testing
        work. Many thanks to gwEm, evil and grazey for their help in
        improving machine compatibility. These guys gave me some good
        hints (e.g. about 'spurious interrupt') and we had some nice
        technical talking... Many thanks also to drx who sent me a nice
        EP of 'Bodenstaendig 2000' which contains tracks created with
        Music-Mon! A big honour to the makers of Steem, really a great
        job! Without steem this would not have been possible at all...
        Finally greetings to Drop Da Bomb, YM-Rockerz, Bodenstaendig
        2000, the lost Aura members (BDC, where are you?), Juergen
        Baeckmann alias Dragon, Florian Becker alias Mr. Bond, Sven
        Bauer alias Jora and all other remaining Atari veterans!
        Credits: Coding, title-track : Me Grafix : Sven Bauer (I am now
        a 'Meenzer', too) Stars on help screen : Florian Becker If you
        like to contact me, I am always happy about some e-mail :
        frank.lautenbach (at) gmx.de once again : frank.lautenbac (at)
        gmx.de

        Now I wish you a lot of fun with this proggy!

        Bye bye !!!



Appendix B

[ Scrolltext of MusicMon 2.1 ]

        Hi folks, just some weeks after the release of MusicMon 2.0 SID
        here is the next one with the following new features:

        * Sync-Buzzers

        * Improved SID syncing

        * Range of PMD Hardwave Depth extended to 63 (previously 15)

        * Pitch-Bend can now be applied also to Hardwave (very important
          for sync-buzzers but also usefull for normal buzzers)

        * Overlay/Underlay Paste Feature (SHIFT + 'U' / 'O')

        * Entering of song- and soundname can now be canceled by 'ESC'
          key (small issue but it was just nasty when accidentally
          klicking into the sound/song name field with left instead of
          right mouse-key)

        * Starts also from ST med res now

        * Support of 'Install Application...' (for .SNG extension)

        * SMC-free replay routine with free configurable timer use

        * 100% backward compatible to all previous MusicMon versions

        Small introduction:

        The hardwave menu offers a new sync alternative activated by the
        new purple button 'S. 3'. Once activated it applies periodically
        sync on hardwave providing the sync buzzer effect. The frequency
        of the sync generator behaves in the same way as the SID square
        generator does (but is driven one octave lower). Same as for SID
        generator, only Arpeggio affects the generator frequency, but
        Pitch Bend or PMD do not. Sync Buzzer feature cannot be combined
        with SID so activating 'S. 3' automagically switches off SID and
        vice versa.

        Most important on Sync-Buzzer sounds is smart modulation of
        hardwave frequency as you surely know already. So now, the pitch
        bend generator can also be applied to the hardwave by the new
        button 'A.P.B.' (Apply Pitch Bend). The Frequency offset of
        pitch-bend is divided by 16 to achieve a match with the PSG
        square frequency (so slides of normal buzzer sounds sound also
        correctly). That means, a speed of 16 corresponds to a
        continuous frequency slide each 1/50 s, 1/100 s, 1/200 s.

        Beyond that, the PMD Depth for Hardwave has been extended to 63
        which provides also additional possibilities. It's worth
        experimenting with fixed hardwave-frequency or high main-tune
        values also... You can also produce interesting arpeggio
        sounds...

        Thanks to gwem and tao for providing me some hints regarding the
        sync buzzer effect...

        Thanks to stu for intensive beta testing...

        Thanks to stu, drx, Marcer and Nexus 6 for donating demo
        songs...

        Thanks to Cyclone for assisting me in switching the screen
        resolution and sending me a code snippet about fetching command
        line arguments...

        Some words about the replay routine: The focus was to deliver a
        system friendly routine running on any machine. Regarding
        performance there is some room for improvement. So if you have a
        particular need for squeezing out the last cycle out of it you
        might convince me to provide customized versions using SMC
        and/or reserved registers... Send your special requests to
        frank.lautenbach (at) gmx.de

        Ok, that's all for now... Have fun! And watch out for
        forthcoming releases which maybe will come...



Appendix C

[ Replay Routine HOW TO ]

       **************************************************
       ********** MusicMon 2.1 Replay Routine ***********
       **********                             ***********
       ********** a short HowTo               ***********
       **************************************************

        replay.inl is the actual replay routine as known from MM2.

        Interface is almost the same, only the INIT1 call (Base+4) now
        expects a so called 'Timer-Use-Mask' by that you can control
        which timers the routine allocates for playing Digis and SIDs.
        The specified timers are assigned dynamically to the channels as
        needed.

        There are two different ways of using the replay routine:

        The first one is using the so called "comfort header" which is
        basically good for integration into high level languages. On
        using the comfort-header patching of Timer C, ACIA and spurious
        IRQ as well as restauration work is done for you automatically
        as well as according clean up on calling the DEINIT function.
        All parameters are handed over on the stack.

        The second way is the "foot way" where you have to establish
        your own interrupt handler from that you are calling te
        soundroutine frequently. Any patching and restauration work you
        have to do also explicitely. Fortunately there are some sub-
        routines supporting you in that (see below). The advantage of
        this method is to be more flexible.

        Attention: Do not mix up the two variants! Either you are doing
        anything via the comfort-header (routbase+32), OR you are doing
        anything on the footway calling the other routines but not
        routbase+32!

        There are two example sources showing both variants:

        * MODPLAY.GFA shows use of the comfort-header * EXAMPLE.S
        shows how to do it the footway

        Note: The replay routine makes use of the reset resident memory
        space

        Range from $200 to $21B is reserved!

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Following the jump-in offsets including parameter description:

routbase = Address where you loaded replay.inl to.

; ------------------------------------------------------------------------------
; I. routbase+0    ASK, routine to query the new overall length of a Digi-Module
;                  after conversion by INIT2

;    IN:       A0 = Baseadress of the module
;    OUT:      A0 = new length or -1 in case of this is no digi-module
; ------------------------------------------------------------------------------
; II. routbase+4     INIT1, Initialization for all kind of modules
;                    Can be called multiple times to restart replay
;

;    IN:       A0 = Baseadress of the module
;              D0 = Timer-Use-Mask (SID+DIGI+Sync-Buzzer)
;                   (Bit 0 = Timer A, Bit 1 = Timer B, Bit 2 = Timer C,
;                    Bit 3 = Timer D)

; ------------------------------------------------------------------------------
; III. routbase+8    INIT2, Pre-Initialization for digi-modules (call only
;                    ONCE (before INIT1) !!!)

;    IN:       A0 = Baseadress of the module
;              A1 = Baseadress of the converted module (use this for Input on
;                                                       INIT1 then!)
; ------------------------------------------------------------------------------
; IV. routbase+12    SOUND, actual replay routine for modules without sounds
;                    with 100 oder 200Hz
;                    Call with 50Hz !!!
; ------------------------------------------------------------------------------
; V. routbase+16     SOUND2, also actual replay routine, but for modules
;                    using sounds with 100 or 200Hz
;                    Call with 200Hz !!!
; ------------------------------------------------------------------------------
; VI. routbase+20    FAST-DIGI on/off

;
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
; !!!!!!!!!!!!!!!!!!!!!!! NOT SUPPORTED IN V 2.1  !!!!!!!!!!!!!!!!!!!!
; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

; ------------------------------------------------------------------------------
; VII. routbase+24   VOLUME CONTROL

;     IN:            D0.b = set mastervolume (0-15) or -1, if not to modify
;                           0 means maximum volume, 15 means minimum volume!
;                    D1.b = fade in (pos. values), fade out (neg. values)
;                           The value determines the fading speed, the
;                           closer to 0, the faster it is
;                           In case of D1.b=0, no fading at all!
; ------------------------------------------------------------------------------
; VIII routbase+28   ASKING FOR MODUL TYPE

;       IN:          A0   = Baseadress of the module
;      OUT:          D0.b =     Bit 0 - set, if this is a digi module
;                               Bit 1 - set, if module uses sounds >50HZ
;                               Bit 2 - set, if module uses SID-Voices
;                               Bit 3 - set, if module uses Sync Buzzer Voices
; ------------------------------------------------------------------------------
; IX routbase+32 COMFORT-HEADER

; good for integrating in high level languages since it comes with
; an own interrupt driver (VBL and Timer C) and applies according patches
; to ACIA and Timer C in the context of digis and SIDs
; Also spurious interrupt is already respected
;
; all parameters are handed over on stack, see below for Details
; return-values in D0, if applicable

; ------------------------------------------------------------------------------
; X routbase+36 Timer-INTERRUPTS OFF

; stops the timers used for Digis, SIDs and Sync Buzzers (according to
; Timer-Use-Mask set on INIT1)
;
; no parameters, no return-value
; ------------------------------------------------------------------------------
; XI mod.base+40 SOUNDS OFF

; clears any sound output
;
; no parameters, no return-value
; ------------------------------------------------------------------------------
; XII mod.base+44 PATCH ACIA

; Patches Acia Interrupt so that it doesn't disturb digis, SIDs and Sync-Buzzers
;
; no parameters, no return-value
; ------------------------------------------------------------------------------
; XIII mod.base+48 UNPATCH ACIA

; Undos ACIA patching
;
; no parameters, no return-value
; ------------------------------------------------------------------------------
; XIV mod.base+52 PATCH TIMER C

; Patches Timer C IRQ so that it does not disturb digis, SIDs and Sync-Buzzers
;
; no parameters, no return-value
; ------------------------------------------------------------------------------
; XV mod.base+56 UNPATCH TIMER C

; Undos Timer C patching
;
; no parameters, no return-value
; ------------------------------------------------------------------------------
; XVI mod.base+60 PATCH SPURIOUS INTERRUPT

; Patches Spurious interrupt
;
; no parameters, no return-value
; ------------------------------------------------------------------------------
; XVII mod.base+64 UNPATCH SPURIOUS INTERRUPT

; Undos Spurious interrupt patching
;
; no parameters, no return-value
; ------------------------------------------------------------------------------


; ***************************************************
; *****            The Comfort-Header          ******
; ***************************************************
; ***** Parameters on the stack!               ******
; *****                                        ******
; ***** +++ ASK FOR MODUL TYPE +++             ******
; *****                      L: Modul Baseadr. ******
; *****                      W: Funct.No. #0   ******
; ***** Return in D0.b :                       ******
; *****                     Bit 0 - Digis      ******
; *****                     Bit 1 - >50Hz      ******
; *****                     Bit 2 - SID        ******
; *****                     Bit 3 - Sync-Buzz  ******
; *****                                        ******
; ***** +++ ASK FOR NEW LENGTH (DIGI-MODULE) + ******
; *****                      L: Modul Baseadr. ******
; *****                      W: Funct.No #1    ******
; ***** Return in D0.L :                       ******
; *****                      new length        ******
; *****                                        ******
; ***** +++ INIT 1 (all  modules) +++          ******
; *****                L: Modul Baseadr.       ******
; *****                W: Timer-Use-Mask       ******
; *****                   Bit 0 : Timer A      ******
; *****                   Bit 1 : Timer B      ******
; *****                   Bit 2 : IGNORED      ******
; *****                   Bit 3 : Timer D      ******
; *****                                        ******
; *****                W: Funct.No #2          ******
; *****                                        ******
; ***** + INIT 2 (only Digi.Modules, ONCE!!!)  ******
; *****                L: Modul Baseadr.       ******
; *****                L: Modul Destinationadr ******
; *****                W: Funct.No #3          ******
; *****                                        ******
; ***** +++ START INTERRUPT +++                ******
; *****                W: Integration Method   ******
; *****                                        ******
; ***** 0 = VBL-QUEUE                          ******
; ***** 1 = VBL direct (System-routine in)     ******
; ***** 2 = VBL direct ("     "        out)    ******
; ***** 3 = TIMER C (System-routine in)        ******
; ***** 4 = TIMER C (System-routine out)       ******
; *****                                        ******
; *****                W: Funct.No #4          ******
; *****                                        ******
; ***** +++ DEINIT +++                         ******
; ***** (stops Timers, stops sound-routine,    ******
; *****  removes patches, etc.)                ******
; *****                                        ******
; *****                W: Funct.No. #5         ******
; *****                                        ******
; ***** +++ VOLUME SET / FADER +++             ******
; *****                                        ******
; *****                B: MASTERVOLUME         ******
; *****                   0 = max., 15 = min.  ******
; *****                   -1 = no effect       ******
; *****                B: Fadespeed (+ or -)   ******
; *****                   + fades in           ******
; *****                   - fades out          ******
; *****                W: Funct.No. #6         ******
; *****                                        ******
; ***************************************************

Alive 10