/*                                                                    */
/* LCDmpega v1.0 2001 by Bream                                       */
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                                       */
/*                                                                    */
/* Tm ARexx scripta tulostaa Amplifierin tai Songplayerin tietoja   */
/* LCD-nytlle. Tm versio tulostaa soitetun ajan.                  */
/*                                                                    */
/* VAATII: Lcdecho                                                    */
/*                                                                    */
/* HUOMIOTAVAA: SongPlayer ei vastaa ARexx kutsuihun levyoperaatioden */
/*              aikana. Amplifier vastaa ARexx kutsuihin aina.        */
/* AmigaAmp:ssa EI ole TAGID-tiedoille rexx-tukea.                    */
/*                                                                    */
/* HUOMAA, ett ohjelmasta on tehty mahdollisimman kevyt, mutta silti */
/*         kaunis. ARexx on muutenkin hidas kieli, joten turha ehto-  */
/*         jen mrittely on jtetty pois. Jos joskus knnn tmn   */
/*         assembleriksi, lisn kaikki herkut ja heitn Aminettiin   */
/*         (nimell LCDmpega.lha).                                    */
/*                                                                    */
/* Ohjelmassa on yksi mainittava bugi: Jos Amplifier tai SongPLayer   */
/* suljetaan kesken loopin ajon, seuraa siit yleens skriptan taha-  */
/* ton keskeytys. Tm johtuu siit, ett aikatiedot otetaan talteen  */
/* juuri ennen tekstin kirjoitusta LCD:lle. Jos skriptan keskeytymi-  */
/* nen on harmillista, kannattaa kytt LCDmpega-notime versiota.    */
/*                                                                    */
/* Toinen bugi liittyy tapaan, jolla lcdecho toimii. Jokainen teksti  */
/* viipyy nytll jonkin ajan, ja sen vuoksi aika ei usein ny oi-   */
/* kein. LCDmpega liskin aikaan 1 sekunnin, jolloin yleens saadaan */
/* suhteellisen oikea aika LCD:lle. Harmillista tss on se, ett     */
/* ajanlasku aloitetaan aina 0:01:sta, eik alusta.                   */
/* Toinen ratkaisu on hankkia ohjelma, joka odottaa lyhyemmn ajan    */
/* kuin OS1.3-3.5:n C:Wait, joka odottaa minimissn sekunnin.        */
/* Kyttmll tllaista ohjelmaa ja muuttamalla lcdechojen TIME      */
/* kenttien arvoja pienemmiksi saadaan ajan pivitys nopeammaksi.     */
/* Voit toki poistaa koko 'Wait 1' komennon, mutta sen tarkoitushan   */
/* on sst CPU-aikaa, jota mp3 sy muutenkin aivan tarpeeksi.      */
/* Loopissa pyriv ARexx-skripta ei muutenkaan olisi kiva.           */
/*                                                                    */
/* LCDmpega nytt tekstin vrin, jos kappale on pidempi kuin 9:59. */
/* Pidemmn ajan tarkastus on jtetty pois, jotta koodi olisi edes    */
/* hieman lyhempi.                                                    */
/*                                                                    */
/* LCD lisilee ominpin vlilyntej tulostettavaan tekstiin, ja     */
/* siksi ohjelmassa on omituisia ehtoja ja vlilynnin lisyksi.     */


OPTIONS RESULTS

ADDRESS COMMAND
if show('P','AMPLIFIER.1') then do
  'LcdEcho TIME 200 "Welcome to LCDmpega!    Using: Amplifier"'
end
if show('P','SONGPLAYER.1') then do
  'LcdEcho TIME 200 "Welcome to LCDmpega!   Using: SongPlayer"'
end
'LcdEcho TIME 250 " "'   /* Nytt on 0.5s pimen bannerin jlkeen  */


do while 1




/* Support for Amplifier (I used v1.54)  */

  if show('P','AMPLIFIER.1') then do
    ADDRESS AMPLIFIER.1

    GETTAGINFO STEM tag
    IF tag.ready = "1" then DO
      if tag.artist="" then tag.artist="Unknown Artist"
      if tag.title="" then tag.title="Unknown Title"
      store=length(tag.artist)
      tag.artist=' 'tag.artist
      tag.artist=left(tag.artist,15)' '
      if length(tag.title)<16 then do
        tag.title='     'tag.title
        if store>13 then tag.title=' 'tag.title
      end
    end

    if tag.ready = "0" then DO
      tag.artist=' Unknown Author       '
      tag.title ='Unknown Title'
    end

    /* Vaikka Amplifier olisi kynistetty, ei nytet kappaleen nime, jos */
    /* AMplifier on stopissa. LCD on silloin vapaa muille ohjelmille.      */
    PLAYSTATE
    if RESULT~=1 then do
      GETTIME
      Call TimeConversion
      ADDRESS COMMAND
      'LcdEcho TIME 120 "'time||tag.artist||tag.title'"'
    end
  end



/* Support for SongPlayer (I used 1.52)   */

  if show('P','SONGPLAYER.1') then do
    ADDRESS SONGPLAYER.1
    GET_STATE
    IF RESULT='PLAY' | RESULT='PAUSE' then do
      text=""
      GET_ARTIST
      if RESULT="" then RESULT="Unknown Author"
      store=length(RESULT)
      text=left(RESULT,14)' '
      GET_NAME        /* Songplayer ei koskaan anna tyhj kappaleen nime, vaan jos */
                      /* kappaleen nimi on tuntematon, tiedostonnimi palautetaan.    */
      if length(RESULT)<16 then text=text'     '
      if store>13 then text=text' '
      text=text||RESULT
      GET_TIME				/* Ajanotto tll! */
      Call TimeConversion
      ADDRESS COMMAND
      'LcdEcho TIME 120 "'time' 'text'"'	/* echo tll! */
    end
  end


ADDRESS COMMAND
'Wait 1'          /* Odotellaan sekunti ennen seuraavaa kierrosta  */
end
exit

TimeConversion:
  time=RESULT+1       /* Listn 1 sekunti konpensoimaan porttien ja */
                      /* scriptan hitautta                            */
  minutes=trunc(time/60)
  seconds=time-minutes*60
  if seconds<10 then seconds='0'seconds
  time=minutes':'seconds
return
