home *** CD-ROM | disk | FTP | other *** search
- ; ----------------------------
- ; EXEC.DEM - Demoprogramm für die Routinen aus EXEC.BIB
- ; (für den A86)
- ;
- ; (c) Bernd Schemmer 1990 - 1992
- ; Letzter Update: 15.02.1992
- ;
- ; Übersetzen:
- ; A86 EXEC.DEM DEMOS.INC TO EXEC.COM
- ;
- ; Hinweis: Die Environment-Variable 'A86' muß den Dateinamen 'MACROS.MAC'
- ; enthalten und die .LIB- und .BIB-Dateien müssen über die Datei
- ; A86.LIB erreichbar sein.
- ;
- ; ---------------------------
-
- jmp start ; Daten überspringen
-
- logo db CR,LF
- db CR,LF
- db 'EXEC.DEM - Demoprogramm für die Routinen aus EXEC.BIB'
- db CR,LF
- db '------------------------------------------------------'
- db CR,LF
- db CR,LF
- db 'Bitte geben Sie den Namen des auszuführenden Programmes an: '
- db CR,LF
- db '(Das Programm muß im akt. Directory oder in einem der in der'
- db CR,LF
- db ' Environment-Variable PATH verzeichneten Directorys zu finden'
- db CR,LF
- db ' sein.)'
- db CR,LF
- db 'Name: '
- GETLENGTH logo
-
- msg1 db CR,LF
- db 'Bitte geben Sie die Parameter für das Programm oder <RETURN> für kein'
- db CR,LF
- db 'Parameter ein: '
- db CR,LF
- GETLENGTH msg1
-
- msg10 db CR,LF
- db CR,LF
- db 'Auszuführendes Programm:'
- db CR,LF
- GETLENGTH msg10
-
- msg11 db CR,LF
- db '-----------------------------------------------------'
- db CR,LF
- db CR,LF
- GETLENGTH msg11
-
- error0 db CR,LF
- db 'Fehler: Zuwenig Speicher vorhanden!'
- db CR,LF
- GETLENGTH error0
-
- error1 db CR,LF
- db '-----------------------------------------------------'
- db CR,LF
- db 'Fehler '
- err1 db '??? bei der Programm-Ausführung!'
- db CR,LF
- GETLENGTH error1
-
- error2 db CR,LF
- db 'Angegebenes Programm nicht gefunden!'
- db CR,LF
- GETLENGTH error2
-
- msg2 db CR,LF
- db '-----------------------------------------------------'
- db CR,LF
- db 'Ausführung okay, Programm endete mit Errorlevel '
- ret1 db '??? und Returncode '
- ret2 db '???'
- db CR,LF
- GETLENGTH msg2
-
- msg3 db CR,LF
- db 'Nochmal? '
- GETLENGTH msg3
-
- db 65 ; max. Stringlänge (für Funktion 0Ah des Int 21h)
- _progname db 129 dup 0 ; Speicher für den Programm-Namen
-
- db 128 ; max. Stringlänge (für Funktion 0Ah des Int 21h)
- progparms db 129 dup 0 ; Speicher für die Parameter
-
- start:
- call ShowLogo ; Logo ausgeben und Speicherblock verkleinern
-
- start1:
- ; Programm-Namen lesen
- mov dx,offset _progname-1
- mov ah,0Ah
- int 021h
-
- ; Programm-Namen vervollständigen
- mov si,offset _progname
- call SearcHFile
- jnc >l1 ; Programm gefunden
-
- ; versuchen wir's indem wir '.COM' anhängen
- mov si,offset _progname
- mov bl,[si]
- xor bh,bh ; BX = Länge des Namens
- mov w[si+bx+1],'C.'
- mov w[si+bx+3],'MO'
- add b[si],4
-
- call SearchFile
- jnc >l1
- ; versuchen wir's indem wir '.EXE' anhängen
- mov si,offset _progname
- mov bl,[si]
- xor bh,bh ; BX = Länge des Namens
- mov w[si+bx-3],'E.'
- mov w[si+bx-1],'EX'
- call SearchFile
- jnc >l1
- ; Fehler: Programm nicht gefunden
- WRITE_STRING error2
- jmp NextTry
-
- l1:
- WRITE_STRING msg1
- ; Parameter lesen
- mov dx,offset progparms-1
- mov ah,0Ah
- int 021h
-
- WRITE_STRING msg10
- ; konvertierten Programm-Namen ausgeben
- mov dx,offset _progname+1
- mov cl,[_progname]
- xor ch,ch
- mov bx,01h
- mov ah,040h
- int 021h
-
- WRITE_STRING msg11
-
- ; Programm ausführen
- mov si,offset _progname
- mov bx,offset progparms
- call ExecProgramm
- jnc >l1
- ; Fehler bei der Ausführung!
- mov di,offset err1
- call Konvert_AL_To_Dezstring
- WRITE_STRING error1
- jmp NextTry
- l1:
- push ax
- mov di,offset ret1
- call Konvert_AL_To_Dezstring
- pop ax
- xchg ah,al
- mov di,offset ret2
- call Konvert_AL_To_Dezstring
- WRITE_STRING msg2
-
- NextTry:
-
- WRITE_STRING msg3
- mov ah,08h
- int 021h
-
- cmp al,CR
- je >l1
- cmp al,'j'
- je >l1
- cmp al,'J'
- jne Ende
-
- l1:
- WRITE_STRING logo
- jmp Start1
-
- Ende:
- EndProcess 0
-
-