home *** CD-ROM | disk | FTP | other *** search
- \ DOS EXECUTE LIBRARY
- \ Contents Copyright (C) 1991 by Thomas Almy
-
- \ Permission is granted to registered users of ForthCMP to sell or distribute
- \ computer programs incorporating the compiled contents of this file.
-
- \ This file should be loaded at the start of the program. The
- \ STRINGS library must be loaded, and loaded before this file.
-
- .( Loading EXEC) CR
- 10 HEX
- DSEG
- CREATE xpb 0E ALLOT
- 0 xpb ! -1 xpb 6 + ! -1 xpb 8 + ! -1 xpb 0A + ! -1 xpb 0C + !
- CSEG
- CREATE ssav 0 , 0 ,
- DSEG
-
- \ the code for exec could be optimized based on SEPSSEG? and SEPDSEG?
- \ either or both being off, but it would not make that much difference
- \ in code size.
-
- \ code 9C is PUSHF, 9D is POPF
-
- 1 0 IN/OUT
- CODE exec
- BP PUSH CSEG 9C C, DS PUSHSEG
- AX DX MOV
- CS: ssav 2+ [] SS <SEG SP CS: ssav [] MOV
- AX DS <SEG AX ES >SEG
- 4B00 # AX MOV
- xpb # BX MOV
- 21 INT
- CS: ssav 2+ [] SS >SEG
- CS: ssav [] SP MOV
- DS POPSEG 9D C, BP POP RET
- END-CODE
-
- 1 0 IN/OUT
- SEPDSEG? #IF
- : EXEC
- " COMSPEC" STR>DSEG getenv ?DUP IF
- ASCIIZ
- SWAP DUP C@ IF \ program to run
- " /C " STR>DSEG COUNT ROT COUNT STRCAT STRPCK
- ELSE STR>DSEG THEN
- ASCIIZ xpb 2+ ! ?DS: xpb 4 + !
- exec
- ELSE ." No COMSPEC" BYE THEN ;
- #ELSE
- : EXEC
- " COMSPEC" getenv ?DUP IF
- ASCIIZ
- SWAP DUP C@ IF \ program to run
- " /C " COUNT ROT COUNT STRCAT STRPCK
- ELSE DROP " " THEN
- ASCIIZ xpb 2+ ! ?DS: xpb 4 + !
- exec
- ELSE ." No COMSPEC" BYE THEN ;
- #THEN
- 0A = #IF DECIMAL #THEN
-