home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / opus / v5 / cdda_mpeg_op5 / arexx / playcdda_yacdp.dopus5 < prev    next >
Text File  |  1977-12-31  |  18KB  |  519 lines

  1. /* Programm: PlayCDDA_YACDP.dopus5 [1-Januar-1996]
  2. ** $VER: PlayCDDA_YACDP.dopus5 2.6 (1-Jan-1996)
  3. ** 
  4. ** Needed: Directory Opus V5.11 (© by Jonathan Potter & GPSoftware)
  5. **         YACDP V1.2 or newer (© by Frank Würkner)
  6. **
  7. **           SCSI2-CDROM required !
  8. **
  9. **           only for save MPEG Layer 2:
  10. **           musicin & MPEGTables (FPU required !)
  11. **           for save AIFF & 8SVX (YACDP V1.2) only Toshiba & Sony
  12. **           CDDA V1.12 (Author: mlelstvspecklec.mpifr-bonn.mpg.de)
  13. **           for save ADPCM3 (only Toshiba CDROM):
  14. **           CDRipper (Author: flowerpeikon.e-technik.tu-muenchen.de)
  15. **
  16. ** Copyright © 1996 Eckhard Ludwig (EMail: Eckhard@top.east.de)
  17. ** PlayCDDA_YACDP.dopus5 is freeware. It may be distributed freely.
  18. **
  19. ** Play Audio-CD from DOPUS5, Test Play Audio-CD, Save Tracks to
  20. ** MPEG Layer2, RAW, IFF 8SVX, AIFF & ADPCM3.
  21. **
  22. ** Create new button (CDDA YACDP), Call as:
  23. ** ----------------------------------------------------------------------
  24. ** ARexx    DOpus5:ARexx/PlayCDDA_YACDP.dopus5 {Qp}
  25. ** ----------------------------------------------------------------------
  26. ** Set Attribut: "Output to window" (Ausgabe in Fenster).
  27. **
  28. */
  29.  
  30. /*--------S E T T I N G S : --------------------------------------------*/
  31. /* If the file PlayCDDA_YACDP.PREFS exists, that one will override the  */
  32. /* settings here ...                                                    */
  33.  
  34. /* Path to YACDP (© 1994-1995 by Frank Würkner)
  35.    (Run needed C:WBRun & Libs:parm.library) */
  36. CDPlay = "WORK:YACDP/YACDP"
  37. YACDPVER="1.2"      /* Version of YACDP, 1.2 or newer */
  38.  
  39. /* Path to MPEG-Encoding */
  40. MPEGENC= "DOpus5:MpegAudio/musicin -b 192 -d c -m j"
  41. MPEGTAB= "DOpus5:MpegAudio/Tables"
  42.  
  43. /* Path to CDDA V1.12 */
  44. CDSave = "C:CDDA" /* only for save AIFF */
  45. /* Path to CDRipper  */
  46. CDRip = "C:CDRipper" /* only for save ADPCM3 */
  47.  
  48. /*-Volume Settings------------------------------------------------------*/
  49.  
  50. CDROMVOLUME=255 /* 1 to 255 (For play via CDROM)       */
  51. AMIGAVOLUME=65  /* 1 to 65  (For play via Amigaaudio)  */
  52.                 /* 0 = no volumesetting & no balancesetting  */
  53. PLAYVIASCSI=0   /* 0=off (Play via CDROM) 1=on (Play via SCSI/Amigaaudio)*/
  54.  
  55. RESTTIME="02:00"  /* Auslaufzeit (Pause) in sec:1/75sec */
  56.           /* For Play & Save */
  57.  
  58. /*--end of settings------------------------------------------------------*/
  59.  
  60.  
  61. if ~show('l','rexxsupport.library') then
  62.     call addlib('rexxsupport.library',0,-30,0)
  63. if ~openport('cdda-handler') then exit
  64.  
  65. if open(1,'env:PlayCDDA_YACDP.prefs','R') then do
  66.    do i=1 to 11
  67.     prefs.i = readln(1)
  68.         end
  69.    if prefs.2 ~="" then CDPLAY=prefs.2
  70.    if prefs.3 ~="" then CDSave=prefs.3
  71.    if prefs.4 ~="" then CDRip =prefs.4
  72.    if prefs.5 ~="" then CDROMVOLUME=prefs.5
  73.    if prefs.6 ~="" then AMIGAVOLUME=prefs.6
  74.    if prefs.7 ~="" then PLAYVIASCSI=prefs.7
  75.    if prefs.8 ~="" then YACDPVER=prefs.8
  76.    if prefs.9 ~="" then RESTTIME=prefs.9
  77.    if prefs.10 ~="" then MPEGENC=prefs.10
  78.    if prefs.11 ~="" then MPEGTAB=prefs.11
  79.    drop prefs.
  80.    call close(1)
  81. end
  82.  
  83. /* init locale */
  84. if ~show(l,'locale.library') then
  85.         call addlib('locale.library',0,-30)
  86. if show(l,'locale.library') then
  87.         catalog=opencatalog('PlayCDDA_YACDP.catalog','deutsch',0)
  88.  
  89.  
  90. parse arg portname
  91. if portname='' then portname='DOPUS.1'
  92. address value portname
  93.  
  94. signal on syntax
  95. options results
  96. options failat 20
  97. lf='0a'x
  98.  
  99. if ~show('P','YACDP') then do
  100.    if ~exists(CDPlay) then do
  101.       dopus front
  102.       dopus request '"'getcatstr(0,'Fehler:'lf'YACDP nicht gefunden (Pfad: %s ?).'lf'Setze Pfad oder starte YACDP >= V1.2 zuerst !',CDPlay)'"' getcatstr(1,'Beenden')
  103.       Exit
  104.       end
  105.    if ~exists("C:WBRun") then do
  106.       dopus front
  107.       dopus request '"Error:'lf'C:WBRun'getcatstr(2,' nicht gefunden. Starte YACDP >= V1.2 zuerst !')'"' getcatstr(1,'Beenden')
  108.       Exit
  109.       end
  110.    if ~exists("Libs:parm.library") then do
  111.       dopus front
  112.       dopus request '"Error:'lf'Libs:parm.library'getcatstr(2,' nicht gefunden. Starte YACDP >= V1.2 zuerst !')'"' getcatstr(1,'Beenden')
  113.       Exit
  114.       end
  115.    address command "C:WBRun "CDPlay" STACK 10000"
  116.    address command 'waitforport YACDP'
  117. end
  118.     
  119. RESTBLOCK=left(RESTTIME,2)*75+substr(RESTTIME,4,2)
  120. address value portname
  121. lister new
  122. handle=result
  123.  
  124. do forever   /* Schleife bei CD-Wechsel */
  125. address 'YACDP'   
  126. 'HIDE'
  127. 'GETVAR STATUS'
  128. if (STATUS < 3) then call Meldung1
  129. 'STOP'
  130. 'GETVAR CDNAME'
  131. 'GETVAR BY'
  132. 'GETVAR MAXTRACK'
  133. if CDNAME="-" then CDNAME=getcatstr(3,'Audio-CD nicht katalogisiert')
  134.  
  135. address value portname
  136. lister set handle title CDNAME||"    "||BY
  137. lister set handle sort name
  138. lister set handle busy on
  139. lister set handle progress MAXTRACK getcatstr(4,'Erstelle Titelliste ...')
  140. lister refresh handle full  
  141.  
  142. do i=1 to MAXTRACK
  143.    lister query handle abort
  144.    if result then leave
  145.    lister set handle progress count i
  146.    lister set handle progress name getcatstr(5,'Titel')' 'i
  147.    address 'YACDP'
  148.    'GETVAR STATUS'
  149.    if (STATUS < 3) then leave
  150.    'GETVAR SONGNAME NUM='i
  151.    'GETVAR TRACKLEN NUM='i' T2 MODE=2' 
  152.    'GETVAR TRACKLEN NUM='i
  153.    'GETVAR TRACKSTART NUM='i
  154.    SONGNAME=TRANSLATE(SONGNAME,"'",'22'x) /* STRIP "  */
  155.    j=right(i,2)
  156.    Startblock=right(TRACKSTART,6)
  157.    Endblock=right(TRACKSTART+TRACKLEN-1,6)
  158.    address value portname   
  159.    if SONGNAME="-" then SONGNAME='Track  'j'   '
  160.    lister add handle '"'j" "SONGNAME'" "'TRACKLEN*2352'" -1 0 r 'substr(T2,4,5)'  'Startblock" - "Endblock''
  161.    lister set handle display name size comment
  162.    lister refresh handle full
  163. end
  164.  
  165. address 'YACDP'
  166. 'GETVAR STATUS'
  167. if (STATUS < 3) then do
  168.     address value portname
  169.     lister set handle busy off
  170.     lister clear handle
  171.     lister refresh handle full
  172.     iterate
  173.     end
  174. 'GETVAR CDLEN'
  175. cdid=CDLEN
  176.  
  177. address value portname
  178. lister set handle busy off
  179. lister set handle handler 'cdda-handler' 'quotes'
  180.  
  181. /* install traps */
  182. dopus addtrap copy 'cdda-handler'
  183. dopus addtrap move 'cdda-handler'
  184. dopus addtrap copyas 'cdda-handler'
  185. dopus addtrap moveas 'cdda-handler'
  186. dopus addtrap read 'cdda-handler'
  187. dopus addtrap hexread 'cdda-handler'
  188. dopus addtrap delete 'cdda-handler'
  189. dopus addtrap rename 'cdda-handler'
  190. dopus addtrap devicelist 'cdda-handler'
  191. dopus addtrap parent 'cdda-handler'
  192. dopus addtrap root 'cdda-handler'
  193. dopus addtrap show 'cdda-handler'
  194. dopus addtrap play 'cdda-handler'
  195. dopus addtrap protect 'cdda-handler'
  196. dopus addtrap datestamp 'cdda-handler'
  197. dopus addtrap comment 'cdda-handler'
  198. dopus addtrap makedir 'cdda-handler'
  199. dopus addtrap addicon 'cdda-handler'
  200. dopus addtrap cachelist 'cdda-handler'
  201.  
  202. do forever
  203.   if waitpkt('cdda-handler') then do
  204.    packet=getpkt('cdda-handler')
  205.    if packet='00000000'x then iterate
  206.    event=getarg(packet,0)
  207.    handle=getarg(packet,1)
  208.    titel=getarg(packet,2)
  209.    user=getarg(packet,3)
  210.    pathstr=getarg(packet,4)
  211.    if event="Root" then leave
  212.    if event="Parent" then leave
  213.    if event="parent" then leave
  214.    if event="inactive" then call Ende
  215.    address 'YACDP'
  216.    'GETVAR STATUS'
  217.    if (STATUS < 3) then leave
  218.    'GETVAR CDLEN'
  219.    if CDLEN~=cdid then leave
  220.    T_FLAG=0
  221.     select
  222.       when event="doubleclick" then call Player
  223.       when event="Play" then call SelPlay
  224.       when event="path" then call SelPlay
  225.       when event="Show" then call CDTest
  226.       when event="Copy" then call SaveCD
  227.       when event="Move" then call SaveCD
  228.       when event="CopyAs" then call SaveCDAs
  229.       when event="MoveAs" then call SaveCDAs
  230.       when event="MakeDir" then call CDEject
  231.       when event="AddIcon" then call CDEject
  232.       when event="dropfrom" then call SaveCD
  233.       when event="drop" then iterate
  234.       otherwise call Productinfo
  235.     end
  236.    reply(packet,10)
  237.   end
  238. end
  239. address value portname
  240. lister clear handle
  241. lister refresh handle full
  242. end      /* Ende Schleife bei CD-Wechsel */
  243.  
  244. /*--------------------------------------------------------------------------------*/
  245. CDEject:
  246. address 'YACDP'
  247. 'GETVAR STATUS'
  248. if STATUS>1 then EJECT
  249. return
  250.  
  251. /*---------------------------------------------------------------------------------*/
  252. SelPlay:
  253. address value portname
  254. lister set handle busy on
  255. lister query handle selfiles stem files.
  256. lister set handle progress files.count getcatstr(6,'Spiele Audio-CD ...')
  257. lister refresh handle full  
  258.  
  259. do i=0 to files.count-1
  260.    lister query handle abort
  261.    if result then leave
  262.    lister set handle progress count i+1
  263.    lister set handle progress name i+1"/"files.count"  "files.i
  264.    titel=files.i
  265.    call Player
  266.    address 'YACDP'
  267.    'WAIT ' TRACKSTART+TRACKLEN-RESTBLOCK 'FLAGS='2+128+8192+16384
  268.    'STOP'
  269.    address value portname
  270.    lister select handle '"'files.i'"' off
  271.    lister refresh handle full
  272. end
  273.  
  274. lister set handle busy off
  275. return
  276.  
  277. /*---------------------------------------------------------------------------------*/
  278. Player:
  279. address 'YACDP'
  280. 'STOP'
  281. if CDROMVOLUME>0 then 'PUTVAR CDROMVOL VALUE='CDROMVOLUME
  282. if AMIGAVOLUME>0 then 'PUTVAR AMIVOL VALUE='AMIGAVOLUME
  283. if CDROMVOLUME>0 then'PUTVAR CDROMBAL VALUE='0
  284. if AMIGAVOLUME>0 then 'PUTVAR AMIBAL VALUE='0
  285. 'PUTVAR VIASCSI VALUE='PLAYVIASCSI
  286. if PLAYVIASCSI=1 then 'PUTVAR LOWPASSFILTER VALUE='0
  287. 'GETVAR TRACKSTART NUM='left(titel,2)
  288. 'GETVAR TRACKLEN NUM='left(titel,2)
  289. 'PLAYBLOCK ' TRACKSTART
  290. return
  291.  
  292. /*---------------------------------------------------------------------------------*/
  293. CDTest:
  294. address 'YACDP'
  295. 'STOP'
  296. 'REQUESTER DUMMY 'getcatstr(8,'"Audio-CD anspielen:"') getcatstr(7,'"Die Titel anspielen für wie lang ?"') getcatstr(9,'"15s|30s|15s ab 0:30|Abbruch"')
  297. if DUMMY=0 then return
  298. if DUMMY=2 then sec=30
  299.    else sec=15
  300. address value portname
  301. lister set handle busy on
  302. lister query handle selfiles stem files.
  303. lister set handle progress files.count getcatstr(10,'Spiele Titel kurz an ...')
  304. lister refresh handle full  
  305.  
  306. do i=0 to files.count-1
  307.    lister query handle abort
  308.    if result then leave
  309.    lister set handle progress count i+1
  310.    lister set handle progress name i+1"/"files.count"  "files.i
  311.    titel=files.i
  312.    call Player
  313.    address 'YACDP'
  314.    if DUMMY=3 then do
  315.       'STOP'
  316.       'PLAYBLOCK ' TRACKSTART+75*30
  317.       'WAIT ' TRACKSTART+75*45 'FLAGS='2+128+8192+16384
  318.       end
  319.       else 'WAIT ' TRACKSTART+75*sec 'FLAGS='2+128+8192+16384
  320.    'STOP'
  321.    address value portname
  322.    lister select handle '"'files.i'"' 0
  323.    lister refresh handle full
  324. end
  325.  
  326. lister set handle busy off
  327. return
  328. /*---------------------------------------------------------------------------------*/
  329. SaveCDAs:
  330. T_FLAG=1
  331. SaveCD:
  332. address 'YACDP'
  333. 'STOP'
  334. 'GETVAR DEVICE'
  335. 'GETVAR UNIT'
  336. 'GETVAR VENDORID'
  337. if YACDPVER="1.2" then do
  338.     if VENDORID="TOSHIBA" then 'REQUESTER DUMMY 'getcatstr(11,'"Speichern von Audiodaten:"') getcatstr(12,'"Bitte das Speicherformat wählen."') getcatstr(29,'"MP2|AIFF|8SVX|MONO|ADPCM3|Abbruch"')
  339.        else 'REQUESTER DUMMY 'getcatstr(11,'"Speichern von Audiodaten:"') getcatstr(12,'"Bitte das Speicherformat wählen."') getcatstr(30,'"MP2|AIFF|8SVX|MONO|Abbruch"')
  340. end
  341. else do
  342.     if VENDORID="TOSHIBA" then 'REQUESTER DUMMY 'getcatstr(11,'"Speichern von Audiodaten:"') getcatstr(12,'"Bitte das Speicherformat wählen."') getcatstr(13,'"MP2|AIFF|8SVX|MONO|ADPCM3|RAW|Abbruch"')
  343.        else do 
  344.        'REQUESTER DUMMY 'getcatstr(11,'"Speichern von Audiodaten:"') getcatstr(12,'"Bitte das Speicherformat wählen."') getcatstr(28,'"MP2|AIFF|8SVX|MONO|RAW|Abbruch"')
  345.        if DUMMY=5 then DUMMY=6
  346.        end
  347. end
  348.  
  349. if DUMMY=0 then return
  350. if DUMMY=1 then FT=".mp2"
  351. if DUMMY=2 then FT=".aiff"
  352. if DUMMY=6 then FT=".cdr"
  353. if DUMMY=3 then FT=".8svx"
  354. if DUMMY=4 then FT=".mono"
  355. if DUMMY=5 then do
  356.     if ~exists(CDRip) then do
  357.        'REQUESTER DUMMY 'getcatstr(14,'"Leider ist ein Fehler aufgetreten !"') getcatstr(15,'"Der externe ADPCM-Saver CDRipper wurde nicht gefunden (Pfad %s ?)."',CDRip) getcatstr(16,'"Zurück"')
  358.        return
  359.            end
  360.     else FT=".adpcm3"
  361. end
  362. if DUMMY=1 | DUMMY=2 | (DUMMY=3 & YACDPVER="1.2") | (DUMMY=4 & YACDPVER="1.2") then do
  363.     if ~exists(CDSave) then do
  364.        'REQUESTER DUMMY 'getcatstr(14,'"Leider ist ein Fehler aufgetreten !"') getcatstr(17,'"Der externe Saver CDDA V1.12 wurde nicht gefunden (Pfad %s ?)."',CDSave) getcatstr(16,'"Zurück"')
  365.        return
  366.            end
  367.     else do
  368.       call open('file','ENV:CDDA_DEVICE',W)
  369.       call writech('file',DEVICE)
  370.       call close ('file')
  371.       call open('file','ENV:CDDA_UNIT',W)
  372.       call writech('file',UNIT)
  373.       call close ('file')
  374.       end
  375. end
  376. address value portname
  377. lister set handle busy on
  378. lister set user busy on
  379. if event='dropfrom' then do
  380.    files.count=1
  381.    LNG=POS('22'x,titel,2)-1
  382.    titel=left(titel,LNG)
  383.    files.0=right(titel,LNG-1)
  384.    end
  385.    else lister query handle selfiles stem files.
  386. lister set handle progress files.count getcatstr(18,'Speichere Audiodaten ...')
  387. lister refresh handle full  
  388. lister query user path
  389. Zielpfad=result
  390. do i=0 to files.count-1
  391.    titel=strip(left(substr(files.i,4),24))
  392.    lister set handle progress count i+1
  393.    lister set handle progress name titel||FT
  394.    lister query handle abort
  395.    if result then leave
  396.    if T_FLAG=1 then do
  397.     command beep
  398.     dopus getstring getcatstr(31,'"Bitte neuen Namen eingeben"') 24 '"'titel'"' getcatstr(32,'OK|Abbruch') 
  399.     if DOPUSRC=0 then leave
  400.     ttitel=result
  401.     if ttitel~="RESULT" then titel=ttitel
  402.         lister set handle progress name titel||FT
  403.     end 
  404.    address 'YACDP'
  405.    'GETVAR TRACKSTART NUM='left(files.i,2)
  406.    'GETVAR SONGNAME NUM='left(files.i,2)
  407.    'GETVAR TRACKLEN NUM='left(files.i,2)
  408.    TRACKLEN=TRACKLEN-RESTBLOCK
  409.    if YACDPVER ="1.2" then do
  410.       if DUMMY=3 then address command CDSave||" START="||TRACKSTART||" LENGTH="||TRACKLEN||" FILE="'"'||Zielpfad||titel||FT'"'||" MUTE 8SVX"
  411.       if DUMMY=4 then address command CDSave||" START="||TRACKSTART||" LENGTH="||TRACKLEN||" FILE="'"'||Zielpfad||titel||FT'"'||" MUTE 8SVX MONO"
  412.       end
  413.    else do
  414.       if DUMMY=6 then "SAVEAUDIO FILENAME="'"'Zielpfad||titel||FT'"' "STARTBLOCK="TRACKSTART "ENDBLOCK="TRACKSTART+TRACKLEN "COMP="1 "TYPE="1
  415.       if DUMMY=3 then "SAVEAUDIO FILENAME="'"'Zielpfad||titel||FT'"' "STARTBLOCK="TRACKSTART "ENDBLOCK="TRACKSTART+TRACKLEN "COMP="2 "TYPE="2
  416.       if DUMMY=4 then "SAVEAUDIO FILENAME="'"'Zielpfad||titel||FT'"' "STARTBLOCK="TRACKSTART "ENDBLOCK="TRACKSTART+TRACKLEN "COMP="3 "TYPE="3
  417.       end
  418.    if DUMMY=5 then address command CDRip||" "||left(files.i,2)||" to "||'"'Zielpfad||titel||FT'"'||" bits=3 Device="||DEVICE||" Unit="||Unit
  419.    if DUMMY=2 then address command CDSave||" START="||TRACKSTART||" LENGTH="||TRACKLEN||" FILE="'"'||Zielpfad||titel||FT'"'||" MUTE"
  420.    if DUMMY=1 then do
  421.         call pragma("STACK",40000)
  422.         address command
  423.         "setenv MPEGTABLES "||MPEGTAB
  424.         CDSave||" START="||TRACKSTART||" LENGTH="||TRACKLEN||" FILE="'"'||Zielpfad||titel'"'||" MUTE"
  425.         MPEGENC" "'"'||Zielpfad||titel'"'" "'"'||Zielpfad||titel||FT'"'        
  426.         "Delete >NIL: "'"'||Zielpfad||titel'"'
  427.         end
  428.    TMIN=right("0"||TRACKLEN%4500,2)
  429.    TSEC=right("0"||TRACKLEN%75-TMIN*60,2)
  430.    address command "FILENOTE >NIL: "'"'Zielpfad||titel||FT'"'" "'"'TMIN":"TSEC" "left(BY,32,'20'x)" "SONGNAME'"'
  431.    address value portname
  432.    lister select handle '"'files.i'"' off
  433.    lister refresh handle full
  434. end
  435.  
  436. lister set handle busy off
  437. lister set user busy off
  438. lister read user Zielpfad force
  439. lister refresh user full
  440. return
  441.  
  442. /*---------------------------------------------------------------------------------*/
  443. Productinfo:
  444. address 'YACDP'
  445. do forever
  446.  'REQUESTER DUMMY 'getcatstr(19,'"Über PlayCDDA_YACDP.dopus5 V2.6"') getcatstr(20,'"Copyright ©1996 Eckhard Ludwig.*nFrei verteilbare copyrighted Software."') getcatstr(21,'"Beenden|Über CDROM|Hilfe|Ok"')
  447.  if DUMMY=0 then return
  448.  if DUMMY=1 then call Ende
  449.  if DUMMY=2 then do
  450.    'GETVAR DEVICE'
  451.    'GETVAR UNIT'
  452.    'GETVAR BOARD'
  453.    'GETVAR PRODUCT'
  454.    'GETVAR REVISION'
  455.    'GETVAR VENDORID'
  456.     POS1=pos("-m",MPEGENC)
  457.     if POS1>0 then CM=substr(MPEGENC,POS1+3,1)
  458.     POS1=pos("-d",MPEGENC)
  459.     if POS1>0 then DE=substr(MPEGENC,POS1+3,1)
  460.     POS1=pos("-b",MPEGENC)
  461.     if POS1>0 then BitR=substr(MPEGENC,POS1+3,3)
  462.     else BitR="382"
  463.    select
  464.     when CM="d" then CMode="Dual channel"
  465.     when CM="j" then CMode="Joint stereo"
  466.     when CM="m" then CMode="Single channel"
  467.     otherwise CMode="Stereo"
  468.        end
  469.    select
  470.     when DE="5" then DEE="50/15 microsec"
  471.     when DE="c" then DEE="CCITT j.17"
  472.     otherwise DEE="None"
  473.        end
  474.    dopus request '"'"MPEG Encoder Configuration:"lf"Layer = 2"lf"Channel Mode = "CMode||lf"Total bitrate = "BitR" kbps"lf"De-emphasis = "DEE'"' getcatstr(16,'Zurück')
  475.    'REQUESTER DUMMY "Device='DEVICE' Board='BOARD' Unit='UNIT'" "'VENDORID' 'PRODUCT'  Rev.'REVISION'*n*nMPEG Encoder Configuration:*nLayer = 2   Channel Mode = 'CMode'*nTotal bitrate = 'BitR' kbps  De-emphasis = 'DEE'" 'getcatstr(24,'"Zurück"')
  476.    end
  477.  else 'REQUESTER DUMMY 'getcatstr(22,'"PlayCDDA_YACDP.dopus5 Hilfe"') getcatstr(23,'"Mutterverzeichnis: CD neu lesen*nDoppelklick: Spiele ab Titel*nAbspielen: Spiele alle selektierten Titel*nAnzeigen: Spiele alle selektierten Titel kurz an*nKopieren: Selektierte Titel speichern"') getcatstr(24,'"Zurück"')
  478. end
  479. /*---------------------------------------------------------------------------------*/
  480. Meldung1:
  481. do forever
  482.   if (STATUS = 0) then leave
  483.  'REQUESTER DUMMY 'getcatstr(25,'"PlayCDDA_YACDP.dopus5   Fehler"') getcatstr(26,'"Bitte eine Audio-CD einlegen !"') getcatstr(27,'"Beenden|Ok"')
  484.   if DUMMY=1 then leave
  485.   'WAIT 0 321'
  486.   address value portname
  487.   lister query handle busy
  488.   if RC>0 then leave
  489.   address 'YACDP'
  490.   'GETVAR STATUS'
  491.   if STATUS>2 then return
  492. end
  493. /*---------------------------------------------------------------------------------*/
  494. Ende:
  495. address value portname
  496. lister close handle
  497. dopus remtrap '*' 'cdda-handler'
  498. call closeport('cdda-handler')
  499. address 'YACDP'
  500. 'GETVAR STATUS'
  501. if STATUS>2 then EJECT
  502. QUIT
  503. exit
  504. /*---------------------------------------------------------------------------------*/
  505. getcatstr:
  506.    parse arg msgno,msgstring,insert.1,insert.2
  507.    if catalog~=0 then msgstring=getcatalogstr(catalog,msgno,msgstring)
  508.    j=0
  509.    do while pos('%s',msgstring)>0
  510.       parse var msgstring fore '%s' aft
  511.       j=j+1
  512.       msgstring=fore||insert.j||aft
  513.       end
  514.    return msgstring
  515. /*---------------------------------------------------------------------------------*/
  516. syntax:
  517. SAY "error at line" SIGL ":" RC
  518. Return
  519.