home *** CD-ROM | disk | FTP | other *** search
/ ST-Computer Leser 2002 January / STC_CD_01_2002.iso / GAMES / DR_WHO / ELLY / DEVELOP / ELLYCALL.LST < prev    next >
File List  |  1998-06-18  |  9KB  |  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.