home *** CD-ROM | disk | FTP | other *** search
- .MODEL SMALL
-
- INCLUDE equates.inc
- INCLUDE instance.inc
- INCLUDE messages.inc
- INCLUDE objects.inc
-
- IF1
- INCLUDE macros.mac
- INCLUDE objects.mac
- ENDIF
-
- EXTRN getDrive:NEAR
-
- EXTRN FileName:WORD
- EXTRN Self:WORD
- EXTRN Video:WORD
-
- .CODE
-
- StackSeg DW 0
- StackPtr DW 0
-
-
-
- COMMENT %
- ==============================================================================
- Gets the default child process name (usually C:\COMMAND.COM).
-
- =============================================================================%
- getDefaultPgm PROC NEAR
- call getDrive ;Get current drive
- lea si,PgmName ;Get addr of program name
- gdp1: lodsb ;Get a byte
- mov Bptr[di],al ;Move byte into buffer
- inc di ;Point to next byte
- notZero al,gdp1 ;Loop until zero encountered
- mov ParCmd,OFFSET PgmArgs ;Set command tail
- ret
- getDefaultPgm ENDP
-
-
-
- IF Dbug
- PUBLIC exeChild
- ENDIF
- COMMENT %
- ==============================================================================
- Loads and executes a child process.
-
- =============================================================================%
- exeChild PROC NEAR
- pushData <ds,es>
- push ds
- pop es
- mov cs:StackSeg,ss ;Save stack
- mov cs:StackPtr,sp
- lea dx,FileName ;Get addr of program name
- lea bx,ParBlk
- mov al,0 ;Load/Run program
- mov ah,4Bh ;Pass service number
- int DosInt ;DOS interrupt
- mov ss,cs:StackSeg ;Restore stack
- mov sp,cs:StackPtr
- popData <es,ds>
- ret
- exeChild ENDP
-
-
-
- .DATA
-
- PUBLIC ParCmd
- PgmName DB "COMMAND.COM",0
- PgmArgs DB 0,CR
- ParBlk EQU $
- DW 0
- ParCmd DW OFFSET PgmArgs
- DW SEG PgmArgs
- DD -1
- DD -1
-
-
- defMsg Exec,\
- Execute,\
- <getDefaultPgm,,exeChild>
-
- defObj Exec,\
- <>,\
- <>,\
- <Execute>
-
-
-
- END