home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Sound / MidI / MIDISTATION2_01D.DMS / in.adf / Midistation / MSPlayer / Programmdemos / MPlayerDemo.ASM next >
Encoding:
Assembly Source File  |  1992-07-24  |  5.3 KB  |  194 lines

  1. ;/----------------------------------------------------------------------\
  2. ;|                                        |
  3. ;|    Name:     MPlayerdemo.ASM                     |
  4. ;|                                        |
  5. ;|    Von Joachim Hellmann  © 1992 MAXON Computer GMBH        |
  6. ;|                                        |
  7. ;|    Benötigt MPlayer V1.0 oder höher !                  |
  8. ;|                                        |
  9. ;|    Achtung : MPlayer muß sich auf der Diskette im aktuellen       |
  10. ;|          Directiory befinden, wenn nicht, dann  einfach    |
  11. ;|          den  Pfad  für MPlayers ( PlayerPfad ) auf den    |
  12. ;|          gewünschten Pfad setzen !                    |
  13. ;|                                        |
  14. ;|    Zum Compilieren mit Seka-Assembler SECTION Anweisung entfernen    |
  15. ;|                                        |
  16. ;\----------------------------------------------------------------------/
  17.  
  18. Execbase    equ    4
  19.  
  20. ;-----------------------------  Exec-Library  ---------------------------
  21.  
  22. OpenLibrary    equ    -552
  23. CloseLibrary    equ    -414
  24.  
  25. ;-----------------------------  Dos-Library  ----------------------------
  26.  
  27. LoadSeg        equ    -150
  28. UnLoadSeg    equ    -156
  29.  
  30. ;--------------------------------  MPlayer  -----------------------------
  31.  
  32. InitPlayer    equ    4   ; InitPlayer    ()
  33. FreePlayer    equ    8   ; FreePlayer    ()
  34. LoadSong    equ     12  ; d0 = LoadSong (Name) d0
  35. FreeSong    equ     16  ; FreeSong      ()
  36. PlaySong    equ    20  ; PlaySong      (Songpointer,Patternanzahl) d0,d1
  37. StopSong    equ    24  ; StopSong      ()
  38. PlayPattern    equ    28  ; PlayPattern   (Patternnummer,Anzahl) d0,d1
  39. StopPattern    equ    32  ; StopPattern   ()
  40. CheckMidi    equ    36  ; d0 = Checkmidi()
  41. WaitMidi    equ    40  ; WaitMidi      ()
  42. AdjustMidi    equ    44  ; AdjustMidi    ()
  43. NoteOff        equ    48  ; NoteOff       ()
  44. Panic        equ    52  ; Panic         ()
  45. CallStack    equ    56  ; Callstack     (Offset,Rückgabewert,d0,d1,d2,d3)
  46.                   ; Nur für AmigaBasic und C-Programmierer gedacht!
  47.  
  48. ;------------------------------------------------------------------------
  49.  
  50.         SECTION _Main,CODE
  51.  
  52. ;---------------------------- Hauptprogramm  ----------------------------
  53.  
  54. Startup:
  55.  
  56.         move.l    Execbase,a6        ; Doslibrary öffnen
  57.         lea    DosName(PC),a1        ; Library Name
  58.         moveq    #0,d0            ; Version egal !
  59.         jsr    OpenLibrary(a6)        ; und öffnen
  60.         tst.l    d0            ; Fehler ?
  61.         beq    KeineDosLib        ; sollte nicht vorkommen !
  62.         move.l    d0,DosBase
  63.         
  64.         move.l    DosBase(PC),A6        ; MPlayer laden
  65.         move.l     #PlayerPfad,D1        ; Pfad des Players
  66.         jsr    LoadSeg(A6)        ; und laden
  67.         tst.l    d0            ; Fehler ?
  68.         beq    SegFehler        ; dann beenden !
  69.         move.l    d0,SegmentZeiger    ; Segmentzeiger sichern 
  70.         
  71.         asl.l    #2,d0            ; BCPL-Zeiger 
  72.         addq.l    #4,d0            ; umwandeln
  73.         move.l    d0,MMidiBase        ; und sichern !
  74.  
  75.         move.l    MMidiBase,a5        ; Zeiger auf Playermodul
  76.         jsr    InitPlayer(a5)        ; Player initialisieren
  77.         tst.l    d0            ; Fehler
  78.         bmi    InitFehler        ; dann Programm beenden
  79.                 
  80.         move.l    MMidiBase,a5        ; Zeiger auf Playermodul
  81.         move.l     #DemoSong,d0        ; Name des Demosongs
  82.         jsr    LoadSong(a5)        ; Laden
  83.         tst.l    d0            ; Fehler ?
  84.         beq    Exit            ; Bää, Programm beenden
  85.         move.l    d0,MidiBase        ; Zeiger auf MidiBase
  86.  
  87.         move.l    MMidiBase,a5        ; Zeiger auf Playermodul
  88.         jsr    AdjustMidi(a5)        ; Daten des Midimixers
  89.                         ; an Midigerät schicken !
  90.  
  91.         move.l    MMidiBase,a5        ; Zeiger auf Playermodul
  92.         move.l    #0,d0            ; Songpointer auf null
  93.                         ; setzen ( Songanfang )
  94.         move.l    #3,d1            ; drei Pattern spielen
  95.         jsr    PlaySong(a5)        ; Spielen
  96.         tst.l    d0            ; Fehler ?
  97.         bmi    Exit            ; Programm beenden
  98.         
  99.         move.l    MMidiBase,a5        ; Zeiger auf Playermodul
  100.         jsr    WaitMidi(a5)        ; Warte auf Songende
  101.                         ; Ohne Prozessorzeit zu
  102.                         ; verbrauchen 
  103.                         ; Demotask wird auf waiting
  104.                         ; gesetzt !                        
  105. Exit:
  106.         move.l    MMidiBase,a5        ; Zeiger auf Playermodul
  107.         jsr    FreePlayer(a5)        ; Player von seiner Arbeit
  108.                         ; befreien !
  109. InitFehler:
  110.         move.l    Dosbase(PC),a6        ; Player aus System 
  111.         move.l    SegmentZeiger(PC),d1    ; entfernen
  112.         jsr    UnloadSeg(a6)        ; und tschüüs !
  113. SegFehler:
  114.         move.l    Execbase,a6        ; Doslibrary schließen 
  115.         move.l    DosBase(PC),a1
  116.         jsr    CloseLibrary(a6)
  117. KeineDosLib:
  118.         moveq    #0,d0            ; Keine Fehler !
  119.         rts                ; zurück zum CLI
  120.         
  121. ;------------------------ Programm Daten --------------------------------
  122.         
  123. DosBase:    dc.l 0                ; Zeiger auf Dos-Library
  124. MMidiBase:    dc.l 0                ; Zeiger auf MPlayer
  125. MidiBase:    dc.l 0                ; Zeiger auf MidiBase
  126. SegmentZeiger:    dc.l 0                ; BCPL MPlayerzeiger
  127.  
  128.  
  129. DosName:    dc.b "dos.library",0        ; Name der Doslibrary
  130. PlayerPfad:    dc.b "MPlayer",0        ; MPlayer Diskettenpfad
  131.         even
  132. DemoSong:    dc.b "df0:Songs/Demosong",0    ; Name des Demosongs
  133.  
  134.         end
  135.                 
  136. ;----------------------- Strukturen -------------------------------------
  137.  
  138. AmigaSampleList:
  139.     $0010    16    Sizeof(AmigaSampleList)
  140.     $0000     0    Sample_Adress
  141.     $0004     4    Sample_Size
  142.     $0008     8    Sample_LoopStart
  143.     $000c    12    Sample_LoopSize    
  144.  
  145. Analyzer:
  146.     $0018    24    Sizeof(Analyzer)
  147.     $0000     0    Channel 1
  148.     $0001     1    Channel 2
  149.     $0002     2    Channel 3
  150.     $0003     3    Channel 4
  151.     $0004     4    Channel 5
  152.     $0005     5    Channel 6
  153.     $0006     6    Channel 7
  154.     $0007     7    Channel 8
  155.     $0008     8    Channel 9
  156.     $0009     9    Channel 10
  157.     $000a    10    Channel 11
  158.     $000b    11    Channel 12
  159.     $000c    12     Channel 13
  160.     $000d    13     Channel 14
  161.     $000e    14     Channel 15
  162.     $000f    15     Channel 16
  163.     $0010    16     Channel 17
  164.     $0011    17     Channel 18
  165.     $0012    18     Channel 19
  166.     $0013    19     Channel 20
  167.     $0014    20     Channel 21
  168.     $0015    21     Channel 22
  169.     $0016    22     Channel 23
  170.     $0017    23     Channel 24
  171.         
  172. MidiBase:
  173.     $001e    26    Sizeof(Midi_Base)
  174.     $0000     0    Module_Adress
  175.     $0004    4    InstrumentChannelInfo
  176.     $0008     8    Analyzer
  177.     $000c    12    Amiga_SampleList
  178.     $0010    16    SongList
  179.     $0014    20    Pattern_count
  180.     $001a    22    Actual_Line
  181.     
  182. SongList:
  183.     $00ff    255    Sizeof(Songlist)
  184.     $0000     0    Pattern 1
  185.     $0000     1    Pattern 2
  186.     $0000     2    Pattern 3
  187.          ..  .. 
  188.          ..  .. 
  189.          ..  .. 
  190.          ..  .. 
  191.     $00fe  254    Pattern 254
  192.  
  193.  
  194.