home *** CD-ROM | disk | FTP | other *** search
/ ST-Computer Leser 2002 January / STC_CD_01_2002.iso / GAMES / DR_WHO / ELLY / DEVELOP / ELLYCALL.GFA (.txt) next >
GFA-BASIC Atari  |  1998-06-18  |  10KB  |  494 lines

  1. $m8192
  2. '
  3. ' 18.06.1998 Richard Gordon Faika
  4. '
  5. ' Eine kleine Bibliothek zum Fernsteuern
  6. ' von Elly.
  7. ' Aufruf erfolgt mit Funktion VA_START()  (so sind keine neuen Messages nötig)
  8. ' ============================================================================
  9. '
  10. ' binding:
  11. '
  12. ' msg[0] = $4711              ; va_start()
  13. ' msg[1] = ap_id              ; Applikations-Id
  14. ' msg[2] = 0
  15. ' msg[3] = command/high-W     ; Kommandonummer (siehe unten) bzw. high-Word eines Zeigers auf eine Kommandozeile
  16. ' msg[4] = var/low-W          ; je nach Kommando die zusätzlich nötige Variable bzw. low-Word - "" -
  17. ' msg[5] = 0
  18. ' msg[6] = 0
  19. ' msg[7] = 0
  20. '
  21. ' Elly antwortet mit AV_STARTED() und liefert die
  22. ' empfangenden Werte mit der eigenen ap_id in msg[1]
  23. ' zurück.
  24. '
  25. ' Kommandos:
  26. '
  27. ' Nummer(msg[3]) Variable(msg[4])  Name           Beschreibung ( ' = nur wenn Modul schon geladen )
  28. ' -------------------------------------------------------------------------------------------------------
  29. '  -1                  -           Play'          ~ Modul (weiter) abspielen
  30. '  -2                  -           Pause'         ~ Play anhalten
  31. '  -3                  -           Stop'          ~ Playstop & zurück auf Anfang)
  32. '  -4                  -           Kill'          ~ Modulreset (Stop & Speicher freigeben)
  33. '  -5                  -           Reward'        ~ Spule rückwärts
  34. '  -6                  -           Forward'       ~ Spule vorwärts
  35. '  -7                  -           backdrop       ~ Ellys Fenster schlie₧en
  36. '  -8                  -           exit           ~ Elly beenden  (wie Message AP_TERM())
  37. '  -9                  -           fsel-open      ~ Elly öffnet Fileselector zum laden eines MODs
  38. '
  39. '  -20                             rack           ~ einstellen von Stereo/Mono, Repeat, Frequenz
  40. '                      1           Stereo an/aus  ~ Ggf. DMA-Register auslesen NICHT SCHREIBEN!!!
  41. '                      2           Repeat an/aus  ~ Ggf. DMA-Register auslesen NICHT SCHREIBEN!!!
  42. '                      6           6.25 kHz
  43. '                      12          12.5 kHz
  44. '                      25          25   kHz
  45. '                      50          50   kHz
  46. '
  47. '  0                   0           wie z.Bsp. Klick auf Elly in Appline (Fenster toppen oder öffnen)
  48. ' ------------------------------------------------------------------------------------------------------
  49. '
  50. '
  51. @main
  52. PROCEDURE main
  53.   PRINT
  54.   PRINT "Testprogramm zur Fernsteuerung von Elly"
  55.   PRINT "Programm im VT52-Fenster (o.Ä.) starten und in"
  56.   PRINT "Elly ein MOD abspielen."
  57.   PRINT "---------------------------------------"
  58.   PRINT "  Taste          Funktion"
  59.   PRINT "---------------------------------------"
  60.   PRINT "  Return         Play"
  61.   PRINT "  Space          Pause"
  62.   PRINT "  S              Stop"
  63.   PRINT "  CRS >          forward"
  64.   PRINT "  CRS <          reward"
  65.   PRINT "  F10            backdrop Elly"
  66.   PRINT "  F1             Top Elly"
  67.   PRINT "  T              terminate Elly"
  68.   PRINT "  K              stop & Memfree"
  69.   PRINT "  Help           Stereo/Mono"
  70.   PRINT "  1              6,25  kHz"
  71.   PRINT "  2              12,5  kHz"
  72.   PRINT "  3              25    kHz"
  73.   PRINT "  4              50    kHz"
  74.   PRINT "  R              Repeat an/aus"
  75.   PRINT "  F              Elly open Fileselector"
  76.   PRINT "---------------------------------------"
  77.   PRINT "  Escape         Exit Testprogramm"
  78.   PRINT "---------------------------------------"
  79.   '
  80.   '
  81.   '
  82.   '
  83.   '
  84.   '
  85.   DO
  86.     t&=INP(2)
  87.     SELECT t&
  88.     CASE 13
  89.       ~@elly.play_mod
  90.     CASE 32
  91.       ~@elly.pause_mod
  92.     CASE 115
  93.       ~@elly.stop_mod
  94.     CASE 205
  95.       ~@elly.forward_mod
  96.     CASE 203
  97.       ~@elly.reward_mod
  98.     CASE 196
  99.       ~@elly.backdrop
  100.     CASE 187
  101.       ~@elly.top
  102.     CASE 116
  103.       ~@elly.term
  104.     CASE 107
  105.       ~@elly.kill_mod
  106.     CASE 226
  107.       ~@elly.set_stereo
  108.     CASE 49
  109.       ~@elly.set_freq(6)
  110.     CASE 50
  111.       ~@elly.set_freq(12)
  112.     CASE 51
  113.       ~@elly.set_freq(25)
  114.     CASE 52
  115.       ~@elly.set_freq(50)
  116.     CASE 102
  117.       ~@elly.open_fsel
  118.     ENDSELECT
  119.   LOOP UNTIL t&=27
  120.   EDIT
  121. RETURN
  122. '
  123. '
  124. ' Aufrufbeispiele ohne warten auf Antwort:
  125. ' ========================================
  126. '
  127. ' Ggf. Speicherschutz beachten, es sind nur Beispiele!
  128. ' in der Variable 'ap_id&' steht die eigene ApID
  129. '
  130. > FUNCTION elly.modload_and_play(modul$)
  131.   $F%
  132.   '
  133.   id&=APPL_FIND("ELLY    ")
  134.   '
  135.   IF id&>-1
  136.     DIM msg&(7)
  137.     '
  138.     modul%=V:modul$
  139.     '
  140.     msg&(0)=&H4711
  141.     msg&(1)=ap_id&
  142.     msg&(2)=0
  143.     msg&(3)=WORD{V:modul%}
  144.     msg&(4)=WORD{V:modul%+2}
  145.     msg&(5)=0
  146.     msg&(6)=0
  147.     msg&(7)=0
  148.     '
  149.     ~APPL_WRITE(id&,16,V:msg&(0))
  150.     ~EVNT_TIMER(50)
  151.     ERASE msg&()
  152.     RETURN TRUE
  153.   ENDIF
  154.   RETURN FALSE
  155. ENDFUNC
  156. > FUNCTION elly.play_mod
  157.   $F%
  158.   '
  159.   id&=APPL_FIND("ELLY    ")
  160.   '
  161.   IF id&>-1
  162.     DIM msg&(7)
  163.     '
  164.     modul%=V:modul$
  165.     '
  166.     msg&(0)=&H4711
  167.     msg&(1)=ap_id&
  168.     msg&(2)=0
  169.     msg&(3)=-1
  170.     msg&(4)=0
  171.     msg&(5)=0
  172.     msg&(6)=0
  173.     msg&(7)=0
  174.     '
  175.     ~APPL_WRITE(id&,16,V:msg&(0))
  176.     ~EVNT_TIMER(50)
  177.     ERASE msg&()
  178.     RETURN TRUE
  179.   ENDIF
  180.   RETURN FALSE
  181. ENDFUNC
  182. > FUNCTION elly.pause_mod
  183.   $F%
  184.   '
  185.   id&=APPL_FIND("ELLY    ")
  186.   '
  187.   IF id&>-1
  188.     DIM msg&(7)
  189.     '
  190.     modul%=V:modul$
  191.     '
  192.     msg&(0)=&H4711
  193.     msg&(1)=ap_id&
  194.     msg&(2)=0
  195.     msg&(3)=-2
  196.     msg&(4)=0
  197.     msg&(5)=0
  198.     msg&(6)=0
  199.     msg&(7)=0
  200.     '
  201.     ~APPL_WRITE(id&,16,V:msg&(0))
  202.     ~EVNT_TIMER(50)
  203.     ERASE msg&()
  204.     RETURN TRUE
  205.   ENDIF
  206.   RETURN FALSE
  207. ENDFUNC
  208. > FUNCTION elly.stop_mod
  209.   $F%
  210.   '
  211.   id&=APPL_FIND("ELLY    ")
  212.   '
  213.   IF id&>-1
  214.     DIM msg&(7)
  215.     '
  216.     modul%=V:modul$
  217.     '
  218.     msg&(0)=&H4711
  219.     msg&(1)=ap_id&
  220.     msg&(2)=0
  221.     msg&(3)=-3
  222.     msg&(4)=0
  223.     msg&(5)=0
  224.     msg&(6)=0
  225.     msg&(7)=0
  226.     '
  227.     ~APPL_WRITE(id&,16,V:msg&(0))
  228.     ~EVNT_TIMER(50)
  229.     ERASE msg&()
  230.     RETURN TRUE
  231.   ENDIF
  232.   RETURN FALSE
  233. ENDFUNC
  234. > FUNCTION elly.kill_mod
  235.   $F%
  236.   '
  237.   id&=APPL_FIND("ELLY    ")
  238.   '
  239.   IF id&>-1
  240.     DIM msg&(7)
  241.     '
  242.     modul%=V:modul$
  243.     '
  244.     msg&(0)=&H4711
  245.     msg&(1)=ap_id&
  246.     msg&(2)=0
  247.     msg&(3)=-4
  248.     msg&(4)=0
  249.     msg&(5)=0
  250.     msg&(6)=0
  251.     msg&(7)=0
  252.     '
  253.     ~APPL_WRITE(id&,16,V:msg&(0))
  254.     ~EVNT_TIMER(50)
  255.     ERASE msg&()
  256.     RETURN TRUE
  257.   ENDIF
  258.   RETURN FALSE
  259. ENDFUNC
  260. > FUNCTION elly.reward_mod
  261.   $F%
  262.   '
  263.   id&=APPL_FIND("ELLY    ")
  264.   '
  265.   IF id&>-1
  266.     DIM msg&(7)
  267.     '
  268.     modul%=V:modul$
  269.     '
  270.     msg&(0)=&H4711
  271.     msg&(1)=ap_id&
  272.     msg&(2)=0
  273.     msg&(3)=-5
  274.     msg&(4)=0
  275.     msg&(5)=0
  276.     msg&(6)=0
  277.     msg&(7)=0
  278.     '
  279.     ~APPL_WRITE(id&,16,V:msg&(0))
  280.     ~EVNT_TIMER(50)             ! hier muss eine Pause von mindestens 50 ms eingehalten werden
  281.     ERASE msg&()
  282.     RETURN TRUE
  283.   ENDIF
  284.   RETURN FALSE
  285. ENDFUNC
  286. > FUNCTION elly.forward_mod
  287.   $F%
  288.   '
  289.   id&=APPL_FIND("ELLY    ")
  290.   '
  291.   IF id&>-1
  292.     DIM msg&(7)
  293.     '
  294.     modul%=V:modul$
  295.     '
  296.     msg&(0)=&H4711
  297.     msg&(1)=ap_id&
  298.     msg&(2)=0
  299.     msg&(3)=-6
  300.     msg&(4)=0
  301.     msg&(5)=0
  302.     msg&(6)=0
  303.     msg&(7)=0
  304.     '
  305.     ~APPL_WRITE(id&,16,V:msg&(0))
  306.     ~EVNT_TIMER(50)             ! hier muss eine Pause von mindestens 50 ms eingehalten werden
  307.     ERASE msg&()
  308.     RETURN TRUE
  309.   ENDIF
  310.   RETURN FALSE
  311. ENDFUNC
  312. > FUNCTION elly.backdrop
  313.   $F%
  314.   '
  315.   id&=APPL_FIND("ELLY    ")
  316.   '
  317.   IF id&>-1
  318.     DIM msg&(7)
  319.     '
  320.     modul%=V:modul$
  321.     '
  322.     msg&(0)=&H4711
  323.     msg&(1)=ap_id&
  324.     msg&(2)=0
  325.     msg&(3)=-7
  326.     msg&(4)=0
  327.     msg&(5)=0
  328.     msg&(6)=0
  329.     msg&(7)=0
  330.     '
  331.     ~APPL_WRITE(id&,16,V:msg&(0))
  332.     ~EVNT_TIMER(50)
  333.     ERASE msg&()
  334.     RETURN TRUE
  335.   ENDIF
  336.   RETURN FALSE
  337. ENDFUNC
  338. > FUNCTION elly.top
  339.   $F%
  340.   '
  341.   id&=APPL_FIND("ELLY    ")
  342.   '
  343.   IF id&>-1
  344.     DIM msg&(7)
  345.     '
  346.     modul%=V:modul$
  347.     '
  348.     msg&(0)=&H4711
  349.     msg&(1)=ap_id&
  350.     msg&(2)=0
  351.     msg&(3)=0
  352.     msg&(4)=0
  353.     msg&(5)=0
  354.     msg&(6)=0
  355.     msg&(7)=0
  356.     '
  357.     ~APPL_WRITE(id&,16,V:msg&(0))
  358.     ~EVNT_TIMER(50)
  359.     ERASE msg&()
  360.     RETURN TRUE
  361.   ENDIF
  362.   RETURN FALSE
  363. ENDFUNC
  364. > FUNCTION elly.term
  365.   $F%
  366.   '
  367.   id&=APPL_FIND("ELLY    ")
  368.   '
  369.   IF id&>-1
  370.     DIM msg&(7)
  371.     '
  372.     modul%=V:modul$
  373.     '
  374.     msg&(0)=&H4711
  375.     msg&(1)=ap_id&
  376.     msg&(2)=0
  377.     msg&(3)=-8
  378.     msg&(4)=0
  379.     msg&(5)=0
  380.     msg&(6)=0
  381.     msg&(7)=0
  382.     '
  383.     ~APPL_WRITE(id&,16,V:msg&(0))
  384.     ~EVNT_TIMER(50)
  385.     ERASE msg&()
  386.     RETURN TRUE
  387.   ENDIF
  388.   RETURN FALSE
  389. ENDFUNC
  390. > FUNCTION elly.open_fsel
  391.   $F%
  392.   '
  393.   id&=APPL_FIND("ELLY    ")
  394.   '
  395.   IF id&>-1
  396.     DIM msg&(7)
  397.     '
  398.     modul%=V:modul$
  399.     '
  400.     msg&(0)=&H4711
  401.     msg&(1)=ap_id&
  402.     msg&(2)=0
  403.     msg&(3)=-9
  404.     msg&(4)=0
  405.     msg&(5)=0
  406.     msg&(6)=0
  407.     msg&(7)=0
  408.     '
  409.     ~APPL_WRITE(id&,16,V:msg&(0))
  410.     ~EVNT_TIMER(50)
  411.     ERASE msg&()
  412.     RETURN TRUE
  413.   ENDIF
  414.   RETURN FALSE
  415. ENDFUNC
  416. > FUNCTION elly.set_stereo
  417.   $F%
  418.   '
  419.   id&=APPL_FIND("ELLY    ")
  420.   '
  421.   IF id&>-1
  422.     DIM msg&(7)
  423.     '
  424.     modul%=V:modul$
  425.     '
  426.     msg&(0)=&H4711
  427.     msg&(1)=ap_id&
  428.     msg&(2)=0
  429.     msg&(3)=-20
  430.     msg&(4)=1
  431.     msg&(5)=0
  432.     msg&(6)=0
  433.     msg&(7)=0
  434.     '
  435.     ~APPL_WRITE(id&,16,V:msg&(0))
  436.     ~EVNT_TIMER(50)
  437.     ERASE msg&()
  438.     RETURN TRUE
  439.   ENDIF
  440.   RETURN FALSE
  441. ENDFUNC
  442. > FUNCTION elly.set_repeat
  443.   $F%
  444.   '
  445.   id&=APPL_FIND("ELLY    ")
  446.   '
  447.   IF id&>-1
  448.     DIM msg&(7)
  449.     '
  450.     modul%=V:modul$
  451.     '
  452.     msg&(0)=&H4711
  453.     msg&(1)=ap_id&
  454.     msg&(2)=0
  455.     msg&(3)=-20
  456.     msg&(4)=2
  457.     msg&(5)=0
  458.     msg&(6)=0
  459.     msg&(7)=0
  460.     '
  461.     ~APPL_WRITE(id&,16,V:msg&(0))
  462.     ~EVNT_TIMER(50)
  463.     ERASE msg&()
  464.     RETURN TRUE
  465.   ENDIF
  466.   RETURN FALSE
  467. ENDFUNC
  468. > FUNCTION elly.set_freq(freq&)
  469.   $F%
  470.   '
  471.   id&=APPL_FIND("ELLY    ")
  472.   '
  473.   IF id&>-1
  474.     DIM msg&(7)
  475.     '
  476.     modul%=V:modul$
  477.     '
  478.     msg&(0)=&H4711
  479.     msg&(1)=ap_id&
  480.     msg&(2)=0
  481.     msg&(3)=-20
  482.     msg&(4)=freq&  ! 6 = 6.25 kHz, 12 = 12.5 kHz, 25 = 25 kHz, 50 = 50 kHz
  483.     msg&(5)=0
  484.     msg&(6)=0
  485.     msg&(7)=0
  486.     '
  487.     ~APPL_WRITE(id&,16,V:msg&(0))
  488.     ~EVNT_TIMER(50)
  489.     ERASE msg&()
  490.     RETURN TRUE
  491.   ENDIF
  492.   RETURN FALSE
  493. ENDFUNC
  494.