home *** CD-ROM | disk | FTP | other *** search
/ The Equalizer BBS / equalizer-bbs-collection_2004.zip / equalizer-bbs-collection / DEMOSCENE-STUFF / BYTE-SRC.ZIP / LOADER / EXECUTE.INC < prev    next >
Text File  |  1993-12-12  |  2KB  |  48 lines

  1. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  2. STRUC ParmBlock
  3.         EnvSgmt     DW  0
  4.         CmdTail     DD  0
  5.         FCB_1       DD  0
  6.         FCB_2       DD  0
  7.         ExecAddr    DD  0
  8.         PgmStack    DD  0
  9. ENDS ParmBlock
  10. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  11. STRUC FCB
  12.         Filename    DB  11 DUP (' ')
  13.         Reserved    DB  5 DUP (0)
  14. ENDS FCB
  15. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  16. MyParmBlock ParmBlock <>
  17. CommandTail db 0,0Dh
  18. MyFCB_1     FCB <>
  19. MyFCB_2     FCB <>
  20. StackPTR    dd ?
  21. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  22. ;           DS:DX ==> ASCIIZ filename of program to run
  23. ;returns:   CARRY set on error
  24. ;           AX = error code (on error)
  25. proc        ExecuteProgram
  26.             push es ds
  27.             mov [word cs:StackPTR+0],sp     ;\ save the stack for later
  28.             mov [word cs:StackPTR+2],ss     ;/
  29.             mov ax,4B00h                    ;load and execute program
  30.             mov bx,seg MyParmBlock          ;\
  31.             mov es,bx                       ; > ES:BX ==> parameter block
  32.             mov bx,offset MyParmBlock       ;/
  33.             mov [word MyParmBlock+offset (ParmBlock).EnvSgmt],0
  34.             mov [word MyParmBlock+0+offset (ParmBlock).CmdTail],offset CommandTail
  35.             mov [word MyParmBlock+2+offset (ParmBlock).CmdTail],seg CommandTail
  36.             mov [word MyParmBlock+0+offset (ParmBlock).FCB_1],offset MyFCB_1
  37.             mov [word MyParmBlock+2+offset (ParmBlock).FCB_1],seg MyFCB_1
  38.             mov [word MyParmBlock+0+offset (ParmBlock).FCB_2],offset MyFCB_2
  39.             mov [word MyParmBlock+2+offset (ParmBlock).FCB_2],seg MyFCB_2
  40.             int 21h                         ;call DOS
  41.             mov sp,[word cs:StackPTR+0]     ;\ recover of our
  42.             mov ss,[word cs:StackPTR+2]     ;/ stack pointer
  43.             pop ds es
  44.  
  45.             ret
  46. endp        ExecuteProgram
  47. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  48.