home *** CD-ROM | disk | FTP | other *** search
/ YPA: Your Privacy Assured / YPA.ISO / other_goodies / music / ep154b_1.dms / ep154b_1.adf / EagleplayerDeveloper / Help / TestPlayer.s < prev    next >
Text File  |  1995-01-17  |  20KB  |  629 lines

  1. **
  2. **    Testplayer.s    (based of the DeliTracker Testplayer)
  3. **
  4. **    A sample player that visually reports EaglePlayer's actions
  5. **    within external players.
  6. **
  7. **    Use the source as a skeleton model for your own players.
  8. **    Refer to the sample sources for additional information.
  9. **
  10. **    Once assembled, load this player into EaglePlayer, and try
  11. **    playing the file 'testmodule'.  It is only a textfile with
  12. **    the word "TEST" at the beginning.  Notice now that
  13. **    EaglePlayer's actions on the module are visible.  This should
  14. **    aid you in your coding sequences.
  15. **
  16. **    Original source by Peter Kunath and Frank Riffel of Delirium.
  17. **    Changed for EaglePlayer by Eagleeye of DEFECT
  18. **
  19. **    English, comments, and general banter by Kevin Dackiw, Eagleeye
  20. **    and Buggs.
  21. **
  22. **    Have any problems/concerns/ideas?  Feel free to contact the
  23. **    authors:
  24. **
  25. **    Author from DeliTracker:        Author from EaglePlayer:
  26. **    ------------------------        ------------------------
  27. **    Frank Riffel                Jan Blumenthal
  28. **    Merkstr. 27                Erich-Mⁿhsam-Str.33
  29. **    8129 Wessobrunn                18069 Rostock
  30. **    Germany                    Germany
  31. **
  32. **    Or myself:
  33. **
  34. **    Kevin Dackiw
  35. **    sikorsky@bode.ee.ualberta.ca (preferred)
  36. **    kevind@ersys.edmonton.ab.ca
  37. **
  38. _LVOOldOpenLibrary    EQU -408        ;exec library offsets
  39. _LVOCloseLibrary    EQU -414
  40.  
  41. _LVOTextRequest        EQU -174        ;offset for TextRequest in Req.
  42.  
  43.         incdir    "include:"
  44.         include    "Misc/EaglePlayer.i"
  45.  
  46.         PLAYERHEADER Test_TagArray    ; define start of header
  47.  
  48.     dc.b '$VER: TestPlayer V1.50 (29 Dec 93)',0
  49.         even
  50.  
  51. Test_TagArray:
  52.     dc.l    DTP_RequestDTVersion,$ffff
  53.     dc.l    DTP_PlayerVersion,4            ; define all the tags
  54.     dc.l    EP_PlayerVersion,6
  55.     dc.l    DTP_PlayerName,Test_Name        ; for the player
  56.     dc.l    DTP_Creator,Test_Creator
  57.     dc.l    DTP_Check2,Check            ; omit any unused
  58.     dc.l    DTP_Config,ConfigPlayer            ; functions as
  59.     dc.l    DTP_UserConfig,UserConfig        ; needed!
  60.     dc.l    DTP_SubSongRange,SubSongrange
  61.     dc.l    DTP_InitPlayer,InitPlay
  62.     dc.l    DTP_EndPlayer,EndPlay
  63.     dc.l    DTP_InitSound,InitSnd
  64.     dc.l    DTP_EndSound,EndSnd
  65.     dc.l    DTP_StartInt,StartInt
  66.     dc.l    DTP_StopInt,StopInt
  67.     dc.l    DTP_Volume,Volume
  68.     dc.l    DTP_Balance,Balance
  69.     dc.l    DTP_Faster,Faster
  70.     dc.l    DTP_Slower,Slower
  71.     dc.l    DTP_PrevPatt,PrevPatt
  72.     dc.l    DTP_NextPatt,NextPatt
  73.     dc.l    DTP_PrevSong,PrevSubSong
  74.     dc.l    DTP_NextSong,NextSubSong
  75.  
  76.     dc.l    EP_StructInit,StructInit        ;Init & Get Analyzer
  77.                             ;Structure
  78.     dc.l    EP_StructEnd,StructEnd            ;Free AnalyzerStructure
  79.                             ;if nessesary
  80.  
  81.     dc.l    EP_Get_ModuleInfo,Get_ModuleInfo    ;Get Infotaglist about
  82.     dc.l    EP_Free_ModuleInfo,Free_ModuleInfo    ;Module
  83.  
  84.     dc.l    EP_Voices,Voices            ;Set Voices on/off
  85.     dc.l    EP_SampleInit,SampleInit
  86.     dc.l    EP_SampleEnd,SampleEnd
  87.     dc.l    EP_Save,Save                ;Save the Module
  88.  
  89.     dc.l    EP_ModuleChange,ModuleChange        ;change Playroutine of
  90.                             ;Modules with Player
  91.                             ;in them
  92.     dc.l    EP_ModuleRestore,ModuleRestore        ;restore these Mods,
  93.                             ;for Saving
  94.  
  95.     dc.l    EP_LoadPlConfig,LoadConfig        ;Load & Save the
  96.     dc.l    EP_SavePlConfig,SaveConfig        ;Config of the Player
  97.  
  98.     dc.l    EP_GetPositionNr,GetPositionNr        ;Positionnumber for
  99.                             ;Next/PrevPattern
  100.     dc.l    EP_SetSpeed,SetSpeed
  101.     dc.l    EP_CheckModule,CheckModule
  102.     dc.l    EP_EjectPlayer,EjectPlayer
  103.  
  104.     dc.l    EP_Date
  105.     dc.b    10,7
  106.     dc.w    1993
  107.  
  108.  
  109.     dc.l    EP_SaveAsPT,SaveAsPT
  110.  
  111.     dc.l    TAG_DONE                ; signify end of tags
  112.  
  113. *-----------------------------------------------------------------------*
  114. *---- Playername / creatorname and textstructure for our requesters ----*
  115. *-----------------------------------------------------------------------*
  116. Test_Name:    dc.b    'TestPlayer',0
  117. Test_Creator:    dc.b    'Written by Delirium & Eagleeye for Testpurposes',0
  118. Reqname        dc.b    'req.library',0
  119.  
  120. *---------------------- TextStructure fⁿr Req.Library --------------------*
  121.     even
  122. TextStruct:
  123.     dc.l    0                    ; ^Text
  124.     dc.l    0                    ; ^ParamList
  125.     dc.l    0                    ; ^Window
  126.     dc.l    0                    ; ^MiddleText
  127.     dc.l    0                    ; ^PositiveText
  128.     dc.l    OKTxt                    ; ^NegativeText
  129.     dc.l    TitleTxt                ; ^Title
  130.     dc.w    $ffff                    ; KeyMask
  131.     dc.w    0                    ; textcol
  132.     dc.w    0                    ; detailcol
  133.     dc.w    0                    ; blockcol
  134.     dc.w    0                    ; versionnumber
  135.     dc.w    0                    ; Timeout
  136.     dc.l    0                    ; abortmask
  137.     dc.l    0                    ; reserved
  138.  
  139. OKTxt:        dc.b    '  OK  ',0
  140. TitleTxt:    dc.b    'TestPlayer-Information',0
  141.  
  142. InitPlayer.TXT:
  143.     dc.b    10
  144.     dc.b    '                 InitPlayer routine called.',10,10
  145.     dc.b    'This routine is called every time a new module is loaded.',10
  146.     dc.b    'The audiochannels should be allocated here, and any',10
  147.     dc.b    'player specific initialization should be performed.',10
  148.     dc.b    0
  149.  
  150. EndPlayer.TXT:
  151.     dc.b    10
  152.     dc.b    '                 EndPlayer routine called.',10,10
  153.     dc.b    'This routine is called every time a module is killed',10
  154.     dc.b    '(removed from memory).  Player specific cleanup routines',10
  155.     dc.b    'are performed here, and the audiochannels should be',10
  156.     dc.b    'released at this point.',10
  157.     dc.b    0
  158.  
  159. InitSound.TXT:
  160.     dc.b    10
  161.     dc.b    '                 InitSound routine called.',10,10
  162.     dc.b    'This routine handles the initialization of the module.',10
  163.     dc.b    0
  164.  
  165. EndSound.TXT:
  166.     dc.b    10
  167.     dc.b    '                 EndSound routine called.',10,10
  168.     dc.b    'This routine clears the audioregisters.',10
  169.     dc.b    0
  170.  
  171. StartInt.TXT:
  172.     dc.b    10
  173.     dc.b    '                 StartSound routine called.',10,10
  174.     dc.b    'This code must start the sound interrupts.',10
  175.     dc.b    'If you use the internal DeliTracker routines, you must',10
  176.     dc.b    'delete this entry from the TagArray.',10
  177.     dc.b    0
  178.  
  179. StopInt.TXT
  180.     dc.b    10
  181.     dc.b    '                 StopSound routine called.',10,10
  182.     dc.b    'This code must stop the sound interrupts.',10
  183.     dc.b    'If you use the internal DeliTracker routines, you must',10
  184.     dc.b    'omit this entry from the TagArray.',10
  185.     dc.b    0
  186.  
  187. UserConfig.TXT:
  188.     dc.b    10
  189.     dc.b    '                 UserConfig routine called.',10,10
  190.     dc.b    'This routine is for the use of advanced players.',10
  191.     dc.b    'For example, if your player needs access to a directory',10
  192.     dc.b    'of instruments, this routine could prompt the user with',10
  193.     dc.b    'a requester for the path to the instruments.  Additionally',10
  194.     dc.b    'the path could then be saved in a custom config file, such',10
  195.     dc.b    'as s:<playername>.config.  Any future runs of the player',10
  196.     dc.b    'would only then have to fetch the path from its config file.',10
  197.     dc.b    'This custom config file must be accessed from the Config routine.',10
  198.     dc.b    0
  199.  
  200. ConfigPlayer.TXT:
  201.     dc.b    10
  202.     dc.b    '                ConfigPlayer routine called.',10,10
  203.     dc.b    'This routine is entered after the player is loaded.',10
  204.     dc.b    'At this point you may load a custom config file to fetch',10
  205.     dc.b    'such things as a default instrument path, and the like.',10
  206.     dc.b    0
  207.  
  208. EjectPlayer.TXT:
  209.     dc.b    10
  210.     dc.b    '                 EjectPlayer routine called.',10,10
  211.     dc.b    'This routine is entered before the player is deleting.',10
  212.     dc.b    'At this point you may save a custom config file to fetch',10
  213.     dc.b    'such things as a instrument path, and the like.',10
  214.     dc.b    0
  215.  
  216. CheckModule.TXT:
  217.     dc.b    10
  218.     dc.b    '                 CheckModule routine called.',10,10
  219.     dc.b    'This routine checks a module of faults and gives the',10
  220.     dc.b    'Eagleplayer a returncode.',0
  221.     dc.b    0
  222.  
  223. LoadConfig.TXT:
  224.     dc.b    10
  225.     dc.b    "                 Load PlayerConfig routine called.",10,10
  226.     dc.b    "This routine loads the players preferences from",10
  227.     dc.b    "ENV:Eagleplayer/<Filename> .",10
  228.     dc.b    "You may e.g. load a config with the instrument path.",10
  229.     dc.b    0
  230.  
  231. SaveConfig.TXT:
  232.     dc.b    10
  233.     dc.b    "                 Save PlayerConfig routine called.",10,10
  234.     dc.b    "This routine saves the player preference from the selected",10
  235.     dc.b    "player to ENVArc:EaglePlayer/<Filename>",10
  236.     dc.b    "Usefull for Instruments path.",10
  237.     dc.b    0
  238.  
  239. NextPattern.TXT:
  240.     dc.b    10
  241.     dc.b    '                 NextPattern routine called.',10,10
  242.     dc.b    'This routine skips ahead one pattern in the module.',10
  243.     dc.b    0
  244.  
  245. PrevPattern.TXT:
  246.     dc.b    10
  247.     dc.b    '                 PrevPattern routine called.',10,10
  248.     dc.b    'This routine skips back one pattern in the module.',10
  249.     dc.b    0
  250.  
  251. GetPositionNr.TXT:
  252.     dc.b    10
  253.     dc.b    "                 Get PositionsNr routine called.",10,10
  254.     dc.b    "You have to give the actual Position in Module back",10
  255.     dc.b     `Useful to show on which Position you are ...`,10
  256.     dc.b    0
  257.  
  258. NextSubSong.TXT:
  259.     dc.b    10
  260.     dc.b    '                 NextSubsong routine called.',10,10
  261.     dc.b    'This routine jumps to the next subsong (if supported).',10
  262.     dc.b    0
  263.  
  264. PrevSubSong.TXT:
  265.     dc.b    10
  266.     dc.b    '                 PrevSubsong routine called.',10,10
  267.     dc.b    'This routine jumps to the previous subsong (if supported).',10
  268.     dc.b    0
  269.  
  270. SpeedFaster.TXT:
  271.     dc.b    10
  272.     dc.b    '                 Faster Speed routine called.',10,10
  273.     dc.b    'This routine increases the playspeed.',10
  274.     dc.b    0
  275.  
  276. SpeedSlower.TXT:
  277.     dc.b    10
  278.     dc.b    '                 Slower Speed routine called.',10,10
  279.     dc.b    'This routine decreases the playspeed.',10
  280.     dc.b    0
  281.  
  282. SetSpeed.TXT:
  283.     dc.b    10
  284.     dc.b    "                 Set Speed routine called.",10,10
  285.     dc.b    "Here you get & set the Speed in Eagleplayer which you"
  286.     dc.b    "control comfortable by the slider on the left side",10
  287.     dc.b    0
  288.  
  289. SubSongRange.TXT:
  290.     dc.b    10
  291.     dc.b    '                 SubSongRange routine called.',10,10
  292.     dc.b    'This routine must determine the min & max subsong number.',10
  293.     dc.b    0
  294.  
  295. Volume.TXT:
  296.     dc.b    10
  297.     dc.b    '                 Volume routine called.',10,10
  298.     dc.b    'This routine controls the volume.',10
  299.     dc.b    0
  300.  
  301. Balance.TXT:
  302.     dc.b    10
  303.     dc.b    '                 Balance routine called.',10,10
  304.     dc.b    'This routine controls the balance.',10
  305.     dc.b    0
  306.  
  307. Voices.TXT:
  308.     dc.b    10
  309.     dc.b    '                 Voices routine called.',10,10
  310.     dc.b    `This Routine switches the 4 Voices of Amiga on/off`,10
  311.     dc.b    0
  312.  
  313. Save.TXT:
  314.     dc.b    10
  315.     dc.b    "                 Save routine called,",10,10
  316.     dc.b    "This routine saves the module.",10
  317.     dc.b    0
  318.  
  319. SaveAsPT.TXT
  320.     dc.b    10
  321.     dc.b    "                 Save routine called,",10,10
  322.     dc.b    "This routine saves the actually module as",10
  323.     dc.b    "a protrackermodule.",10
  324.     dc.b    0
  325.  
  326. SampleInit.TXT:
  327.     dc.b    10
  328.     dc.b    "                 SampleInit routine called,",10,10
  329.     dc.b    "This routine handels the initialization",10
  330.     dc.b    "of the Sample-Taglist.",10
  331.     dc.b    0
  332.  
  333. SampleEnd.TXT:
  334.     dc.b    10
  335.     dc.b    "                 SampleEnd routine called.",10,10
  336.     dc.b    "This routine has been called every time if a Samplewindow",10
  337.     dc.b    "had been closed.",10
  338.     dc.b    "The player will free the used memory of the",10
  339.     dc.b    "Sample-Taglist.",10
  340.     dc.b    0
  341.  
  342. GetModuleInfo.TXT:
  343.     dc.b    10
  344.     dc.b    "                 Get_ModuleInfo routine called,",10,10
  345.     dc.b    "This routine handels the initialization of the ModuleInfo-",10
  346.     dc.b    "Taglist",10
  347.     dc.b    0
  348.  
  349. FreeModuleInfo.TXT:
  350.     dc.b    10
  351.     dc.b    "                 Free ModuleInfo routine called.",10,10
  352.     dc.b    "This Routine will be called if a Module was ejected, so that",10
  353.     dc.b    "the player could free allocated Memory for the TagList, if",10
  354.     dc.b    "needed",10
  355.     dc.b    0
  356.  
  357. Check.TXT:
  358.     dc.b    10
  359.     dc.b    "                 Check routine called.",10,10
  360.     dc.b    "This routine will has been called every time a module had",10
  361.     dc.b    "been loaded. The player tests if it knows this module-",10
  362.     dc.b    "format.",10
  363.     dc.b    0
  364.     
  365. ModuleChange.TXT:
  366.     dc.b    10
  367.     dc.b    "                 Module Change routine called.",10,10
  368.     dc.b    "This routine will be called every time a module with",10
  369.     dc.b    "playroutine within itself has been loaded. The playroutine",10
  370.     dc.b    `will change it to an Analyzer/Volume&Balanceset ...`,10
  371.     dc.b    `compatible replayer`,10
  372.     dc.b    0
  373.     even
  374.  
  375. ModuleRestore.TXT:
  376.     dc.b    10
  377.     dc.b    "                 Module Restore routine called.",10,10
  378.     dc.b    "This routine has been called every time a module with",10
  379.     dc.b    "playroutine should be saved.",10
  380.     dc.b    "The original replayercode will be restored.",10
  381.     dc.b    0
  382.  
  383. StructInit.TXT:
  384.     dc.b    10
  385.     dc.b    "                 StructInit routine called.",10,10
  386.     dc.b    "This routine returns a Pointer to an anylyzerstructure.",10
  387.     dc.b    "This structure will be filled by the player.",10
  388.     dc.b    0
  389.  
  390. StructEnd.TXT:
  391.     dc.b    10
  392.     dc.b    "                 StructEnd routine called.",10,10
  393.     dc.b    "This routine has been called when player stops or the",10
  394.     dc.b    "module will be killed. This routine deallocates",10
  395.     dc.b    "the structure memory.",10
  396.     dc.b    0
  397.  
  398. *-----------------------------------------------------------------------------*
  399. *-- Check if the module is a TestPlayer-Module (THIS ROUTINE MUST EXIST!!!) --*
  400. *-----------------------------------------------------------------------------*
  401.         even
  402. Check:        move.l    dtg_ChkData(a5),a0    ; get module base from DT
  403.         moveq    #0,d0                ; clear register
  404.         cmpi.l    #'TEST',(a0)            ; supported type ?
  405.         sne    d0                ; no - signal false
  406.         bne.s    .NotFound
  407.         lea    Check.TXT(pc),a2
  408.         bsr    DisplayMsg            ; output
  409.         moveq    #0,d0
  410. .NotFound:    rts                    ; leave
  411.  
  412. *-----------------------------------------------------------------------*
  413. *-------------------------- Initialize the player ----------------------*
  414. *-----------------------------------------------------------------------*
  415. InitPlay:    lea    InitPlayer.TXT(pc),a2        ; fetch text
  416.         bra    DisplayMsg            ; output
  417.  
  418. *-----------------------------------------------------------------------*
  419. *---------------------------- Clean up the player ----------------------*
  420. *-----------------------------------------------------------------------*
  421. EndPlay:    lea    EndPlayer.TXT(pc),a2        ; fetch text
  422.         bra    DisplayMsg            ; output
  423.  
  424.  
  425. *-----------------------------------------------------------------------*
  426. *--------------------------- Initialize the module ---------------------*
  427. *-----------------------------------------------------------------------*
  428. InitSnd:    lea    InitSound.TXT(pc),a2        ; fetch text
  429.         bra    DisplayMsg            ; output
  430.  
  431.  
  432. *-----------------------------------------------------------------------*
  433. *------------------------------- End sound -----------------------------*
  434. *-----------------------------------------------------------------------*
  435. EndSnd:        lea    EndSound.TXT(pc),a2        ; fetch text
  436.         bra    DisplayMsg            ; output
  437.  
  438.  
  439. *-----------------------------------------------------------------------*
  440. *------------------------------ Start interrupts -----------------------*
  441. *-----------------------------------------------------------------------*
  442. StartInt:    lea    StartInt.TXT(pc),a2        ; fetch text
  443.         bra    DisplayMsg            ; output
  444.  
  445.  
  446. *-----------------------------------------------------------------------*
  447. *------------------------------- Stop interrupts -----------------------*
  448. *-----------------------------------------------------------------------*
  449. StopInt:    lea    StopInt.TXT(pc),a2        ; fetch text
  450.         bra    DisplayMsg            ; output
  451.  
  452.  
  453. *-----------------------------------------------------------------------*
  454. ;
  455. ; IMPORTANT NOTE:
  456. ;    There is a BIG difference between the ╗Config½ and the
  457. ;    ╗UserConfig½ Routine !!! The Config routine is immediately
  458. ;    called after that the Player is loaded. It is used to
  459. ;    configure player (e.g. load config file and set pathes)!
  460. ;    The UserConfig routine is only called if the User selects
  461. ;    the player in the PrefWindow and presses the Config Player
  462. ;    GADGET. This routine is thought as a method of getting
  463. ;    informations (playerspecific preferences) from the user
  464. ;    (e.g. pathes for instruments or maximum memory usage).
  465. ;    The difference between Config and InitPlayer is that
  466. ;    Config is called ONCE the player is loaded and that
  467. ;    InitPlayer is called every time a module is played.
  468. ;
  469. *-----------------------------------------------------------------------*
  470. *----- get/set playerspecific preferences (configuration routines) -----*
  471. *-----------------------------------------------------------------------*
  472. ConfigPlayer:    lea    ConfigPlayer.TXT(pc),a2        ; fetch text
  473.         bra    DisplayMsg            ; output
  474.  
  475. EjectPlayer:    lea    EjectPlayer.TXT(pc),a2        ; fetch text
  476.         bra    DisplayMsg            ; output
  477.  
  478. UserConfig:    lea    UserConfig.TXT(pc),a2        ; fetch text
  479.         bra    DisplayMsg            ; output
  480.  
  481. LoadConfig:    lea    LoadConfig.TXT(pc),a2        ; fetch text
  482.         bra    DisplayMsg            ; output
  483.  
  484. SaveConfig:    lea    SaveConfig.TXT(pc),a2        ; fetch text
  485.         bra    DisplayMsg            ; output
  486.  
  487.  
  488. *-----------------------------------------------------------------------*
  489. *----------------------------- Patterncontrol --------------------------*
  490. *-----------------------------------------------------------------------*
  491. NextPatt:    lea    NextPattern.TXT(pc),a2        ; fetch text
  492.         bra    DisplayMsg            ; output
  493.  
  494. PrevPatt:    lea    PrevPattern.TXT(pc),a2        ; fetch text
  495.         bra    DisplayMsg            ; output
  496.  
  497. GetPositionNr:    lea    GetPositionNr.TXT(pc),a2    ; fetch text
  498.         bsr    DisplayMsg            ; output
  499.         moveq    #1,d0                ; PatternNr
  500.         rts
  501.  
  502.  
  503. *-----------------------------------------------------------------------*
  504. *------------------------------ Subsongcontrol -------------------------*
  505. *-----------------------------------------------------------------------*
  506. SubSongRange:    lea    SubSongRange.TXT(pc),a2        ; fetch text
  507.         bsr    DisplayMsg            ; output
  508.         moveq    #0,d0
  509.         moveq    #2,d0
  510.         rts
  511.  
  512. NextSubSong:    lea    NextSubSong.TXT(pc),a2        ; fetch text
  513.         bra    DisplayMsg            ; output
  514.  
  515. PrevSubSong:    lea    PrevSubSong.TXT(pc),a2        ; fetch text
  516.         bra    DisplayMsg            ; output
  517.  
  518.  
  519. *-----------------------------------------------------------------------*
  520. *------------------------------ Speedcontrol ---------------------------*
  521. *-----------------------------------------------------------------------*
  522. Faster:        lea    SpeedFaster.TXT(pc),a2        ; fetch text
  523.         bra    DisplayMsg            ; output
  524.  
  525. Slower:        lea    SpeedSlower.TXT(pc),a2        ; fetch text
  526.         bra    DisplayMsg            ; output
  527.  
  528. SetSpeed:    lea    SetSpeed.TXT(pc),a2        ; fetch text
  529.         bra    DisplayMsg            ; output
  530.  
  531. *-----------------------------------------------------------------------*
  532. *--------------------------- ModuleInfocontrol -------------------------*
  533. *-----------------------------------------------------------------------*
  534. Get_ModuleInfo:    lea    GetModuleInfo.TXT(pc),a2    ; fetch text
  535.         bsr    DisplayMsg            ; output
  536.         sub.l    a0,a0
  537.         rts
  538.  
  539. Free_ModuleInfo:lea    FreeModuleInfo.TXT(pc),a2    ; fetch text
  540.         bra    DisplayMsg            ; output
  541.  
  542. *-----------------------------------------------------------------------*
  543. *-------------------------- SampleInfo-Control -------------------------*
  544. *-----------------------------------------------------------------------*
  545. SampleInit:    lea    SampleInit.TXT(pc),a2        ; fetch text
  546.         bsr    DisplayMsg            ; output
  547.         sub.l    a0,a0
  548.         rts
  549.  
  550. SampleEnd:    lea    SampleEnd.TXT(pc),a2        ; fetch text
  551.         bra    DisplayMsg            ; output
  552.  
  553.  
  554. *-----------------------------------------------------------------------*
  555. *------------------ UserProgramm-Structure-Control ---------------------*
  556. *-----------------------------------------------------------------------*
  557. StructInit:    lea    StructInit.TXT(pc),a2        ; fetch text
  558.         bsr    DisplayMsg            ; output
  559.         sub.l    a0,a0
  560.         rts
  561.  
  562. StructEnd:    lea    StructEnd.TXT(pc),a2        ; fetch text
  563.         bra    DisplayMsg            ; output
  564.  
  565. *-----------------------------------------------------------------------*
  566. *------------------ UserProgramm-Structure-Control ---------------------*
  567. *-----------------------------------------------------------------------*
  568. ModuleChange:    lea    ModuleChange.TXT(pc),a2        ; fetch text
  569.         bra    DisplayMsg            ; output
  570.  
  571. ModuleRestore:    lea    ModuleRestore.TXT(pc),a2        ; fetch text
  572.         bra    DisplayMsg            ; output
  573.  
  574.  
  575. *-----------------------------------------------------------------------*
  576. *------------------ Volume & Balance & Voice Control -------------------*
  577. *-----------------------------------------------------------------------*
  578. Volume:        lea    Volume.TXT(pc),a2        ; fetch text
  579.         bra    DisplayMsg            ; output
  580.  
  581. Balance:    lea    Balance.TXT(pc),a2        ; fetch text
  582.         bra    DisplayMsg            ; output
  583.  
  584. Voices:        lea    Voices.TXT(pc),a2        ; fetch text
  585.         bra    DisplayMsg            ; output
  586.  
  587.  
  588. *-----------------------------------------------------------------------*
  589. CheckModule:    lea    CheckModule.TXT(pc),a2
  590.         bra    DisplayMsg            ; output
  591.         
  592. SaveAsPT:    lea    SaveAsPT.TXT(pc),a2
  593.         bra    DisplayMsg            ; output
  594.  
  595. *-----------------------------------------------------------------------*
  596. *-------------------------------- Save ---------------------------------*
  597. *-----------------------------------------------------------------------*
  598. Save:        lea    Save.TXT(pc),a2
  599.         bra.w    DisplayMsg
  600.  
  601. *-----------------------------------------------------------------------*
  602. *---------------------------- Subroutines ------------------------------*
  603. *-----------------------------------------------------------------------*
  604. *-----------------------------------------------------------------------*
  605. DisplayMsg:    move.l    a2,EPG_Arg1(a5)
  606.         move.l    EPG_PubScreen(a5),EPG_Arg2(a5)
  607.         clr.l    EPG_Arg3(a5)
  608.         subq.l    #1,EPG_Arg3(a5)            ;X-Koordinate
  609.         lea    Test_Gadgets(pc),a0
  610.         move.l    a0,EPG_Arg4(a5)
  611.         lea    Test_Title(pc),a0
  612.         move.l    a0,EPG_Arg5(a5)
  613.         clr.l    EPG_Arg6(a5)
  614.         moveq    #-1,d0
  615.         move.l    d0,EPG_Arg7(a5)
  616.         moveq    #7,d0
  617.         move.l    d0,EPG_ArgN(a5)
  618.         move.l    EPG_TextRequest(a5),a0
  619.         jsr    (a0)
  620.         moveq    #0,d0
  621.         rts
  622.  
  623.  
  624. Test_Gadgets:    dc.l    0,Ok.MSG
  625.         dc.b    "Oo",13,10
  626.  
  627. Test_Title:    dc.b    "TestPlayer-TextRequest",0
  628. Ok.MSG:        dc.b    "Alles Klar !",0
  629.