home *** CD-ROM | disk | FTP | other *** search
- ;/----------------------------------------------------------------------\
- ;| |
- ;| Name: MPlayerdemo.ASM |
- ;| |
- ;| Von Joachim Hellmann © 1992 MAXON Computer GMBH |
- ;| |
- ;| Benötigt MPlayer V1.0 oder höher ! |
- ;| |
- ;| Achtung : MPlayer muß sich auf der Diskette im aktuellen |
- ;| Directiory befinden, wenn nicht, dann einfach |
- ;| den Pfad für MPlayers ( PlayerPfad ) auf den |
- ;| gewünschten Pfad setzen ! |
- ;| |
- ;| Zum Compilieren mit Seka-Assembler SECTION Anweisung entfernen |
- ;| |
- ;\----------------------------------------------------------------------/
-
- Execbase equ 4
-
- ;----------------------------- Exec-Library ---------------------------
-
- OpenLibrary equ -552
- CloseLibrary equ -414
-
- ;----------------------------- Dos-Library ----------------------------
-
- LoadSeg equ -150
- UnLoadSeg equ -156
-
- ;-------------------------------- MPlayer -----------------------------
-
- InitPlayer equ 4 ; InitPlayer ()
- FreePlayer equ 8 ; FreePlayer ()
- LoadSong equ 12 ; d0 = LoadSong (Name) d0
- FreeSong equ 16 ; FreeSong ()
- PlaySong equ 20 ; PlaySong (Songpointer,Patternanzahl) d0,d1
- StopSong equ 24 ; StopSong ()
- PlayPattern equ 28 ; PlayPattern (Patternnummer,Anzahl) d0,d1
- StopPattern equ 32 ; StopPattern ()
- CheckMidi equ 36 ; d0 = Checkmidi()
- WaitMidi equ 40 ; WaitMidi ()
- AdjustMidi equ 44 ; AdjustMidi ()
- NoteOff equ 48 ; NoteOff ()
- Panic equ 52 ; Panic ()
- CallStack equ 56 ; Callstack (Offset,Rückgabewert,d0,d1,d2,d3)
- ; Nur für AmigaBasic und C-Programmierer gedacht!
-
- ;------------------------------------------------------------------------
-
- SECTION _Main,CODE
-
- ;---------------------------- Hauptprogramm ----------------------------
-
- Startup:
-
- move.l Execbase,a6 ; Doslibrary öffnen
- lea DosName(PC),a1 ; Library Name
- moveq #0,d0 ; Version egal !
- jsr OpenLibrary(a6) ; und öffnen
- tst.l d0 ; Fehler ?
- beq KeineDosLib ; sollte nicht vorkommen !
- move.l d0,DosBase
-
- move.l DosBase(PC),A6 ; MPlayer laden
- move.l #PlayerPfad,D1 ; Pfad des Players
- jsr LoadSeg(A6) ; und laden
- tst.l d0 ; Fehler ?
- beq SegFehler ; dann beenden !
- move.l d0,SegmentZeiger ; Segmentzeiger sichern
-
- asl.l #2,d0 ; BCPL-Zeiger
- addq.l #4,d0 ; umwandeln
- move.l d0,MMidiBase ; und sichern !
-
- move.l MMidiBase,a5 ; Zeiger auf Playermodul
- jsr InitPlayer(a5) ; Player initialisieren
- tst.l d0 ; Fehler
- bmi InitFehler ; dann Programm beenden
-
- move.l MMidiBase,a5 ; Zeiger auf Playermodul
- move.l #DemoSong,d0 ; Name des Demosongs
- jsr LoadSong(a5) ; Laden
- tst.l d0 ; Fehler ?
- beq Exit ; Bää, Programm beenden
- move.l d0,MidiBase ; Zeiger auf MidiBase
-
- move.l MMidiBase,a5 ; Zeiger auf Playermodul
- jsr AdjustMidi(a5) ; Daten des Midimixers
- ; an Midigerät schicken !
-
- move.l MMidiBase,a5 ; Zeiger auf Playermodul
- move.l #0,d0 ; Songpointer auf null
- ; setzen ( Songanfang )
- move.l #3,d1 ; drei Pattern spielen
- jsr PlaySong(a5) ; Spielen
- tst.l d0 ; Fehler ?
- bmi Exit ; Programm beenden
-
- move.l MMidiBase,a5 ; Zeiger auf Playermodul
- jsr WaitMidi(a5) ; Warte auf Songende
- ; Ohne Prozessorzeit zu
- ; verbrauchen
- ; Demotask wird auf waiting
- ; gesetzt !
- Exit:
- move.l MMidiBase,a5 ; Zeiger auf Playermodul
- jsr FreePlayer(a5) ; Player von seiner Arbeit
- ; befreien !
- InitFehler:
- move.l Dosbase(PC),a6 ; Player aus System
- move.l SegmentZeiger(PC),d1 ; entfernen
- jsr UnloadSeg(a6) ; und tschüüs !
- SegFehler:
- move.l Execbase,a6 ; Doslibrary schließen
- move.l DosBase(PC),a1
- jsr CloseLibrary(a6)
- KeineDosLib:
- moveq #0,d0 ; Keine Fehler !
- rts ; zurück zum CLI
-
- ;------------------------ Programm Daten --------------------------------
-
- DosBase: dc.l 0 ; Zeiger auf Dos-Library
- MMidiBase: dc.l 0 ; Zeiger auf MPlayer
- MidiBase: dc.l 0 ; Zeiger auf MidiBase
- SegmentZeiger: dc.l 0 ; BCPL MPlayerzeiger
-
-
- DosName: dc.b "dos.library",0 ; Name der Doslibrary
- PlayerPfad: dc.b "MPlayer",0 ; MPlayer Diskettenpfad
- even
- DemoSong: dc.b "df0:Songs/Demosong",0 ; Name des Demosongs
-
- end
-
- ;----------------------- Strukturen -------------------------------------
-
- AmigaSampleList:
- $0010 16 Sizeof(AmigaSampleList)
- $0000 0 Sample_Adress
- $0004 4 Sample_Size
- $0008 8 Sample_LoopStart
- $000c 12 Sample_LoopSize
-
- Analyzer:
- $0018 24 Sizeof(Analyzer)
- $0000 0 Channel 1
- $0001 1 Channel 2
- $0002 2 Channel 3
- $0003 3 Channel 4
- $0004 4 Channel 5
- $0005 5 Channel 6
- $0006 6 Channel 7
- $0007 7 Channel 8
- $0008 8 Channel 9
- $0009 9 Channel 10
- $000a 10 Channel 11
- $000b 11 Channel 12
- $000c 12 Channel 13
- $000d 13 Channel 14
- $000e 14 Channel 15
- $000f 15 Channel 16
- $0010 16 Channel 17
- $0011 17 Channel 18
- $0012 18 Channel 19
- $0013 19 Channel 20
- $0014 20 Channel 21
- $0015 21 Channel 22
- $0016 22 Channel 23
- $0017 23 Channel 24
-
- MidiBase:
- $001e 26 Sizeof(Midi_Base)
- $0000 0 Module_Adress
- $0004 4 InstrumentChannelInfo
- $0008 8 Analyzer
- $000c 12 Amiga_SampleList
- $0010 16 SongList
- $0014 20 Pattern_count
- $001a 22 Actual_Line
-
- SongList:
- $00ff 255 Sizeof(Songlist)
- $0000 0 Pattern 1
- $0000 1 Pattern 2
- $0000 2 Pattern 3
- .. ..
- .. ..
- .. ..
- .. ..
- $00fe 254 Pattern 254
-
-
-