home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PROG_BAS / PRO98SRC.ZIP / EXEC.BAS < prev    next >
BASIC Source File  |  1994-01-29  |  3KB  |  116 lines

  1. SUB EXEC (BYVAL Prg$)
  2. shared AnswerFlag%, CommonVarFile$, Commandline$, OLMPath$
  3.  
  4. RPRG$=PRG$
  5.  
  6. DO UNTIL RPRG$=""
  7. RINSTR RPrg$," ",Split% ' find last parser
  8. IF Split%=0 THEN
  9.     PRG$=RPRG$
  10.         RPRG$=""
  11. ELSE
  12.     PRG$=MID$(RPRG$,Split%+1) ' get last item
  13.     Rprg$=LEFT$(RPRG$,Split%-1) ' remove last item
  14. END IF
  15.  
  16. IF IIfState% THEN
  17. IF Tracer% THEN PROZOPRINT "{"+Prg$+"}"
  18. 'SELECT CASE Prg$
  19. if left$(Prg$,1)=chr$(2) then
  20.     i=val(mid$(Prg$,2))
  21. else
  22.     i=0
  23. end if
  24. x??=fixup(i).offset
  25. !       mov    ax,x??
  26. !    push    ax
  27. !    retn
  28.         $INCLUDE "VIDEO_IO.CMD"  ' Print, Input, TAB, CR, etc.
  29.         $INCLUDE "VARIABLE.CMD"  ' LET, SET, etc.
  30.         $INCLUDE "LOGIC.CMD"     ' IF, WHILE, UNTIL, etc.
  31.         $INCLUDE "FUNCTION.CMD"  ' functions (ucase, lcase, chr, etc)
  32.         $INCLUDE "FLOW.CMD"      ' GOTO, GOSUB, other flow control commands
  33.         $INCLUDE "FILE.CMD"      ' file i/o commands and functions
  34.         $INCLUDE "CALC.CMD"      ' CALC, arithmetic processing commands.
  35.         $INCLUDE "CUSTOM.CMD"    ' custom commands and functions
  36.     $INCLUDE "DATABASE.CMD"  ' database interface commands and functions
  37.         $INCLUDE "OBASE.CMD"     ' fixed length index file functions
  38.         $INCLUDE "INDEX.CMD"     ' high performance index file functions
  39.         $INCLUDE "LOADRUN.CMD"   ' Run, Load, Quit, List, etc.
  40.         $INCLUDE "RIP.CMD"     ' RIPScript commands
  41. PtrNotKey:
  42.  
  43.                 IF VERIFY(Prg$," 0123456789()<>?+-*/&=")=0 THEN
  44.                         INCR ArgPtr%
  45.                         ARG$(ArgPtr%)=Prg$
  46.                     'PUSHARG Prg$
  47.                 ELSE
  48.                         INCR ArgPtr%
  49.                         ARG$(ArgPtr%)=GETVAR$(PRG$)
  50.                         'PUSHARG GETVAR$(PRG$)
  51.                 LITERAL$(ArgPtr%)=Prg$ '....... save the literal name
  52.             '.......We may need to remember the name of the var for later
  53.                 END IF
  54. EXITSELECT:
  55. ELSE ' if IifState% is false
  56. IF UCASE$(Prg$)="ELSE" or Prg$=SymElse$ THEN IIfState%=%True
  57. IF UCASE$(Prg$)="ENDIF" or Prg$=SymEndIf$ THEN IIfState%=%True
  58. END IF
  59.  
  60. LOOP ' This LOOP is for the new method
  61.  
  62. END SUB
  63.  
  64.  
  65. SUB PUSHARG(BYVAL X$)
  66.     INCR ArgPtr%
  67.     ARG$(ArgPtr%)=X$
  68. END SUB
  69.  
  70. FUNCTION POPARG$
  71.     IF ArgPtr%>0 THEN
  72.     P$=ARG$(ArgPtr%)
  73.     DECR ArgPtr%
  74. Concate:
  75.     IF ArgPtr%>0 AND ARG$(ArgPtr%)="&" THEN
  76.             DECR ArgPtr%
  77.             P$=P$+Arg$(ArgPtr%)
  78.                 IF ArgPtr%>0 THEN DECR ArgPtr%
  79.             GOTO Concate
  80.         END IF
  81. 'AndOr:
  82. '    IF ArgPtr%>0 AND ARG$(ArgPtr%)="&&" THEN
  83. '            DECR ArgPtr%
  84. '                P$=STR$(ISTRUE(VAL(P$)) AND ISTRUE(VAL(Arg$(ArgPtr%))) )
  85. '        IF ArgPtr%>0 THEN DECR ArgPtr%
  86. '            GOTO AndOr:
  87. '        END IF
  88.  
  89. '    IF ArgPtr%>0 AND ARG$(ArgPtr%)="||" THEN
  90. '            DECR ArgPtr%
  91. '                P$=STR$(ISTRUE(VAL(P$)) OR ISTRUE(VAL(Arg$(ArgPtr%))))
  92. '        IF ArgPtr%>0 THEN DECR ArgPtr%
  93. '                GOTO AndOr:
  94. '        END IF
  95.  
  96.     END IF
  97.         IF LEFT$(P$,1)=CHR$(2) THEN
  98.             PROZOL P$
  99.         ELSE
  100.             POPARG$=P$
  101.     END IF
  102. END FUNCTION
  103.  
  104.  
  105. SUB PUSHON (which%,P$)
  106.     incr genpointer%(which%)
  107.         if genpointer%(which%)>32 then error 105
  108.         genstack$(which%,genpointer%(which%)) = P$
  109. END SUB
  110.  
  111. FUNCTION POPOFF$ (which%)
  112.     popoff$=genstack$(which%,genpointer%(which%))
  113.         if genpointer%(which%)>0 then decr genpointer(which%)
  114. END FUNCTION
  115.  
  116.