76d TITLE EXEC.ASM ;==== executes a program and show the errorlevel afterwards ;---------------------------------------------------------------------- INCLUDE SCREEN.MAC B EQU BYTE PTR 0 W EQU WORD PTR 0 CSEG SEGMENT ASSUME CS:CSEG,DS:CSEG ORG 100h ;--------------------------------------------------------------------- Start: jmp Begin fcb1 db 40 dup (0) fcb2 db 40 dup (0) parmblk dw 0 ; Segment address of environment string dd 0 ; Pointer to command line dd 0 ; Pointer to default FCB to be passed at PSP+5CH dd 0 ; Pointer to default FCB to be passed at PSP+6CH cmdline db 50 dup (0) exec_name db 'c:\dos\FIND.EXE',0 stacksp db 32 dup ('STACK ') newstack dw 0 oldstack dw 0 Mshrink PROC NEAR mov ah,04aH ;Mshrink mov bx,5000/16 ;Bytes left for program int 21H ret Mshrink ENDP Exec PROC NEAR mov bp,OFFSET parmblk mov [bp+2],OFFSET cmdline mov [bp+4],CS mov [bp+6],OFFSET fcb1 mov [bp+8],CS mov [bp+10],OFFSET fcb2 mov [bp+12],CS mov ah,4BH ; EXEC mov al,00H ; Load and Execute mov dx,OFFSET exec_name mov bx,OFFSET parmblk int 21H ret Exec ENDP Errlvl_Chk PROC NEAR mov ah,04dh int 21h Print 'ERRORLEVEL = ' mov dl,al Wr_Byte ret Errlvl_Chk ENDP ;--------------------------------------------------------------- Begin: mov oldstack,sp mov sp,OFFSET newstack ;New stack pointer call Mshrink call Exec call Errlvl_chk mov sp,oldstack ret ;--------------------------------------------------------------- CSEG ENDS END Start . 0