home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ST-Computer Leser 1998 October
/
STC_CD_10_1998.iso
/
MUSIK
/
ELLY
/
DEVELOP
/
ELLYCALL.LST
< prev
next >
Wrap
File List
|
1998-09-26
|
9KB
|
494 lines
$m8192
'
' 18.06.1998 Richard Gordon Faika
'
' Eine kleine Bibliothek zum Fernsteuern
' von Elly.
' Aufruf erfolgt mit Funktion VA_START() (so sind keine neuen Messages nötig)
' ============================================================================
'
' binding:
'
' msg[0] = $4711 ; va_start()
' msg[1] = ap_id ; Applikations-Id
' msg[2] = 0
' msg[3] = command/high-W ; Kommandonummer (siehe unten) bzw. high-Word eines Zeigers auf eine Kommandozeile
' msg[4] = var/low-W ; je nach Kommando die zusätzlich nötige Variable bzw. low-Word - "" -
' msg[5] = 0
' msg[6] = 0
' msg[7] = 0
'
' Elly antwortet mit AV_STARTED() und liefert die
' empfangenden Werte mit der eigenen ap_id in msg[1]
' zurück.
'
' Kommandos:
'
' Nummer(msg[3]) Variable(msg[4]) Name Beschreibung ( ' = nur wenn Modul schon geladen )
' -------------------------------------------------------------------------------------------------------
' -1 - Play' ~ Modul (weiter) abspielen
' -2 - Pause' ~ Play anhalten
' -3 - Stop' ~ Playstop & zurück auf Anfang)
' -4 - Kill' ~ Modulreset (Stop & Speicher freigeben)
' -5 - Reward' ~ Spule rückwärts
' -6 - Forward' ~ Spule vorwärts
' -7 - backdrop ~ Ellys Fenster schlie₧en
' -8 - exit ~ Elly beenden (wie Message AP_TERM())
' -9 - fsel-open ~ Elly öffnet Fileselector zum laden eines MODs
'
' -20 rack ~ einstellen von Stereo/Mono, Repeat, Frequenz
' 1 Stereo an/aus ~ Ggf. DMA-Register auslesen NICHT SCHREIBEN!!!
' 2 Repeat an/aus ~ Ggf. DMA-Register auslesen NICHT SCHREIBEN!!!
' 6 6.25 kHz
' 12 12.5 kHz
' 25 25 kHz
' 50 50 kHz
'
' 0 0 wie z.Bsp. Klick auf Elly in Appline (Fenster toppen oder öffnen)
' ------------------------------------------------------------------------------------------------------
'
'
@main
PROCEDURE main
PRINT
PRINT "Testprogramm zur Fernsteuerung von Elly"
PRINT "Programm im VT52-Fenster (o.Ä.) starten und in"
PRINT "Elly ein MOD abspielen."
PRINT "---------------------------------------"
PRINT " Taste Funktion"
PRINT "---------------------------------------"
PRINT " Return Play"
PRINT " Space Pause"
PRINT " S Stop"
PRINT " CRS > forward"
PRINT " CRS < reward"
PRINT " F10 backdrop Elly"
PRINT " F1 Top Elly"
PRINT " T terminate Elly"
PRINT " K stop & Memfree"
PRINT " Help Stereo/Mono"
PRINT " 1 6,25 kHz"
PRINT " 2 12,5 kHz"
PRINT " 3 25 kHz"
PRINT " 4 50 kHz"
PRINT " R Repeat an/aus"
PRINT " F Elly open Fileselector"
PRINT "---------------------------------------"
PRINT " Escape Exit Testprogramm"
PRINT "---------------------------------------"
'
'
'
'
'
'
DO
t&=INP(2)
SELECT t&
CASE 13
~@elly.play_mod
CASE 32
~@elly.pause_mod
CASE 115
~@elly.stop_mod
CASE 205
~@elly.forward_mod
CASE 203
~@elly.reward_mod
CASE 196
~@elly.backdrop
CASE 187
~@elly.top
CASE 116
~@elly.term
CASE 107
~@elly.kill_mod
CASE 226
~@elly.set_stereo
CASE 49
~@elly.set_freq(6)
CASE 50
~@elly.set_freq(12)
CASE 51
~@elly.set_freq(25)
CASE 52
~@elly.set_freq(50)
CASE 102
~@elly.open_fsel
ENDSELECT
LOOP UNTIL t&=27
EDIT
RETURN
'
'
' Aufrufbeispiele ohne warten auf Antwort:
' ========================================
'
' Ggf. Speicherschutz beachten, es sind nur Beispiele!
' in der Variable 'ap_id&' steht die eigene ApID
'
> FUNCTION elly.modload_and_play(modul$)
$F%
'
id&=APPL_FIND("ELLY ")
'
IF id&>-1
DIM msg&(7)
'
modul%=V:modul$
'
msg&(0)=&H4711
msg&(1)=ap_id&
msg&(2)=0
msg&(3)=WORD{V:modul%}
msg&(4)=WORD{V:modul%+2}
msg&(5)=0
msg&(6)=0
msg&(7)=0
'
~APPL_WRITE(id&,16,V:msg&(0))
~EVNT_TIMER(50)
ERASE msg&()
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
> FUNCTION elly.play_mod
$F%
'
id&=APPL_FIND("ELLY ")
'
IF id&>-1
DIM msg&(7)
'
modul%=V:modul$
'
msg&(0)=&H4711
msg&(1)=ap_id&
msg&(2)=0
msg&(3)=-1
msg&(4)=0
msg&(5)=0
msg&(6)=0
msg&(7)=0
'
~APPL_WRITE(id&,16,V:msg&(0))
~EVNT_TIMER(50)
ERASE msg&()
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
> FUNCTION elly.pause_mod
$F%
'
id&=APPL_FIND("ELLY ")
'
IF id&>-1
DIM msg&(7)
'
modul%=V:modul$
'
msg&(0)=&H4711
msg&(1)=ap_id&
msg&(2)=0
msg&(3)=-2
msg&(4)=0
msg&(5)=0
msg&(6)=0
msg&(7)=0
'
~APPL_WRITE(id&,16,V:msg&(0))
~EVNT_TIMER(50)
ERASE msg&()
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
> FUNCTION elly.stop_mod
$F%
'
id&=APPL_FIND("ELLY ")
'
IF id&>-1
DIM msg&(7)
'
modul%=V:modul$
'
msg&(0)=&H4711
msg&(1)=ap_id&
msg&(2)=0
msg&(3)=-3
msg&(4)=0
msg&(5)=0
msg&(6)=0
msg&(7)=0
'
~APPL_WRITE(id&,16,V:msg&(0))
~EVNT_TIMER(50)
ERASE msg&()
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
> FUNCTION elly.kill_mod
$F%
'
id&=APPL_FIND("ELLY ")
'
IF id&>-1
DIM msg&(7)
'
modul%=V:modul$
'
msg&(0)=&H4711
msg&(1)=ap_id&
msg&(2)=0
msg&(3)=-4
msg&(4)=0
msg&(5)=0
msg&(6)=0
msg&(7)=0
'
~APPL_WRITE(id&,16,V:msg&(0))
~EVNT_TIMER(50)
ERASE msg&()
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
> FUNCTION elly.reward_mod
$F%
'
id&=APPL_FIND("ELLY ")
'
IF id&>-1
DIM msg&(7)
'
modul%=V:modul$
'
msg&(0)=&H4711
msg&(1)=ap_id&
msg&(2)=0
msg&(3)=-5
msg&(4)=0
msg&(5)=0
msg&(6)=0
msg&(7)=0
'
~APPL_WRITE(id&,16,V:msg&(0))
~EVNT_TIMER(50) ! hier muss eine Pause von mindestens 50 ms eingehalten werden
ERASE msg&()
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
> FUNCTION elly.forward_mod
$F%
'
id&=APPL_FIND("ELLY ")
'
IF id&>-1
DIM msg&(7)
'
modul%=V:modul$
'
msg&(0)=&H4711
msg&(1)=ap_id&
msg&(2)=0
msg&(3)=-6
msg&(4)=0
msg&(5)=0
msg&(6)=0
msg&(7)=0
'
~APPL_WRITE(id&,16,V:msg&(0))
~EVNT_TIMER(50) ! hier muss eine Pause von mindestens 50 ms eingehalten werden
ERASE msg&()
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
> FUNCTION elly.backdrop
$F%
'
id&=APPL_FIND("ELLY ")
'
IF id&>-1
DIM msg&(7)
'
modul%=V:modul$
'
msg&(0)=&H4711
msg&(1)=ap_id&
msg&(2)=0
msg&(3)=-7
msg&(4)=0
msg&(5)=0
msg&(6)=0
msg&(7)=0
'
~APPL_WRITE(id&,16,V:msg&(0))
~EVNT_TIMER(50)
ERASE msg&()
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
> FUNCTION elly.top
$F%
'
id&=APPL_FIND("ELLY ")
'
IF id&>-1
DIM msg&(7)
'
modul%=V:modul$
'
msg&(0)=&H4711
msg&(1)=ap_id&
msg&(2)=0
msg&(3)=0
msg&(4)=0
msg&(5)=0
msg&(6)=0
msg&(7)=0
'
~APPL_WRITE(id&,16,V:msg&(0))
~EVNT_TIMER(50)
ERASE msg&()
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
> FUNCTION elly.term
$F%
'
id&=APPL_FIND("ELLY ")
'
IF id&>-1
DIM msg&(7)
'
modul%=V:modul$
'
msg&(0)=&H4711
msg&(1)=ap_id&
msg&(2)=0
msg&(3)=-8
msg&(4)=0
msg&(5)=0
msg&(6)=0
msg&(7)=0
'
~APPL_WRITE(id&,16,V:msg&(0))
~EVNT_TIMER(50)
ERASE msg&()
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
> FUNCTION elly.open_fsel
$F%
'
id&=APPL_FIND("ELLY ")
'
IF id&>-1
DIM msg&(7)
'
modul%=V:modul$
'
msg&(0)=&H4711
msg&(1)=ap_id&
msg&(2)=0
msg&(3)=-9
msg&(4)=0
msg&(5)=0
msg&(6)=0
msg&(7)=0
'
~APPL_WRITE(id&,16,V:msg&(0))
~EVNT_TIMER(50)
ERASE msg&()
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
> FUNCTION elly.set_stereo
$F%
'
id&=APPL_FIND("ELLY ")
'
IF id&>-1
DIM msg&(7)
'
modul%=V:modul$
'
msg&(0)=&H4711
msg&(1)=ap_id&
msg&(2)=0
msg&(3)=-20
msg&(4)=1
msg&(5)=0
msg&(6)=0
msg&(7)=0
'
~APPL_WRITE(id&,16,V:msg&(0))
~EVNT_TIMER(50)
ERASE msg&()
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
> FUNCTION elly.set_repeat
$F%
'
id&=APPL_FIND("ELLY ")
'
IF id&>-1
DIM msg&(7)
'
modul%=V:modul$
'
msg&(0)=&H4711
msg&(1)=ap_id&
msg&(2)=0
msg&(3)=-20
msg&(4)=2
msg&(5)=0
msg&(6)=0
msg&(7)=0
'
~APPL_WRITE(id&,16,V:msg&(0))
~EVNT_TIMER(50)
ERASE msg&()
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC
> FUNCTION elly.set_freq(freq&)
$F%
'
id&=APPL_FIND("ELLY ")
'
IF id&>-1
DIM msg&(7)
'
modul%=V:modul$
'
msg&(0)=&H4711
msg&(1)=ap_id&
msg&(2)=0
msg&(3)=-20
msg&(4)=freq& ! 6 = 6.25 kHz, 12 = 12.5 kHz, 25 = 25 kHz, 50 = 50 kHz
msg&(5)=0
msg&(6)=0
msg&(7)=0
'
~APPL_WRITE(id&,16,V:msg&(0))
~EVNT_TIMER(50)
ERASE msg&()
RETURN TRUE
ENDIF
RETURN FALSE
ENDFUNC