
; ***********************************************************
; *                                                         *
; *         W I Z A R D   O F   S O U N D   V 3.2           *
; *                                                         *
; *               S T A R T S O U N D  V 1.56               *
; *                                                         *
; ***********************************************************
; *                                                         *
; *     Assembler-Source-Listing / Assembler: Profimat      *
; *                                                         *
; *                   (C)Februar 1990 by                    *
; *                                                         *
; *                   Dan Dark  Software                    *
; *                     Jörg Schließer                      *
; *                   Hasenbergsteige 15                    *
; *                    7000 Stuttgart 1                     *
; *                      West-Germany                       *
; *                                                         *
; ***********************************************************

; *** Amiga-Betriebsystemroutinen-Offsets ***

OldOpenLibrary = -408          ;exec-library
CloseLibrary = -414
Open = -30                     ;dos-library
Close = -36
Write = -48
DeleteFile = -72
Execute = -222

exbase = 4

start:
       move.l  sp,startsp              ;Stapelzeiger sichern
       move.l  exbase,a6

       lea     dosname,a1              ;Dos_Library öffnen
       jsr     OldOpenLibrary(a6)
       move.l  d0,dosbase

; Startsound soll, aus einem anderen Programm heraus mittels der
; DOS_Lib_Routine EXECUTE aufgerufen, wiederum mittels EXECUTE das
; WOSPlayer_Programm aufrufen. Dieses soll allerdings über den
; CLI-Befehl RUN ausgeführt werden, damit es im Hintergrund läuft und
; damit die EXECUTE_Routine sofort ins aufrufende Programm
; zurückkehrt.
; Leider kann die EXECUTE_Routine des Betriebsystems den CLI-Befehl
; RUN nur korrekt ausführen, wenn er über die wählbare Eingabe_Datei
; kommt und nicht, wenn er direkt im Kommandostring für die Routine
; enthalten ist. ( zumindest hat's bei mir nicht geklappt )
; Deshalb muß das Programm Startsound überhaupt erst den Kommandotext
; 'run WOSPlayer Songfile' in einem File in der Ram-Disk ablegen
; und dieses File dann als Eingabe_Datei für die EXECUTE_Routine der
; Dos_Lib angeben.

       move.l  dosbase,a6              ;File mit dem Kommando-
       move.l  #comfile,d1
       move.l  #1006,d2                ;Text für den WOSPlayer
       jsr     Open(a6)
       move.l  d0,filehandle           ;in der Ram-Disk
       beq     error
       exg     d0,d1                   ;erzeugen
       move.l  #comdata,d2
       move.l  #60,d3                  ;und den Text in
       jsr     Write(a6)
       move.l  filehandle,d1           ;das File schreiben
       jsr     Close(a6)

       move.l  dosbase,a6              ;Ausgabe_Datei für Execute
       move.l  #nihil,d1
       move.l  #1005,d2                ;öffnen ( NIL: )
       jsr     Open(a6)
       move.l  d0,nihilhandle
       beq     error

       move.l  #comfile,d1
       move.l  #1005,d2                ;File mit Kommandotext
       jsr     Open(a6)
       move.l  d0,filehandle           ;in der Ram-Disk als
       beq     error
                                       ;Eingabefile für Execute

       move.l  #command,d1             ;Kommandostring ( hier leer )
       move.l  filehandle,d2           ;Eingabefile
       move.l  nihilhandle,d3          ;Ausgabefile
       jsr     Execute(a6)             ;Execute ausführen

       move.l  dosbase,a6
       move.l  nihilhandle,d1          ;Files schließen
       jsr     Close(a6)
       move.l  filehandle,d1
       jsr     Close(a6)
       move.l  #comfile,d1             ;Kommandofile löschen
       jsr     DeleteFile(a6)
error:
       move.l  exbase,a6
       move.l  dosbase,a1              ;Library schließen
       jsr     CloseLibrary(a6)

       move.l  startsp,sp              ;Fertig !!!
       rts

; *** Speicher für Variablen und Konstanten / Texte ***

startsp:       dc.l    0
dosbase:       dc.l    0
nihilhandle:   dc.l    0
filehandle:    dc.l    0

dosname:       dc.b    "dos.library",0
               align
nihil:         dc.b    "NIL:",0
               align
comfile:       dc.b    "Ram:Sound",0
               align
command:       dc.b    " ",0
               align
comdata:       dc.b    "run WOSPlayer Rondo_alla_Turca",0
               ds.b    30,0
               align

 END


