mirror of
https://github.com/QB64Official/qb64.git
synced 2024-07-20 11:35:14 +00:00
Implements "Skip Line"
Ctrl+P to set line to skip. Ctrl+Line Click to set line to skip with mouse.
This commit is contained in:
parent
aefde3eb55
commit
5e53786255
|
@ -42,6 +42,7 @@ DIM SHARED QuickNavTotal AS LONG
|
||||||
DIM SHARED QuickNavHistory(0) AS QuickNavType
|
DIM SHARED QuickNavHistory(0) AS QuickNavType
|
||||||
|
|
||||||
REDIM SHARED IdeBreakpoints(1) AS _BYTE
|
REDIM SHARED IdeBreakpoints(1) AS _BYTE
|
||||||
|
REDIM SHARED IdeSkipLines(1) AS _BYTE
|
||||||
|
|
||||||
'GetInput global variables
|
'GetInput global variables
|
||||||
DIM SHARED iCHECKLATER 'the values will be checked later
|
DIM SHARED iCHECKLATER 'the values will be checked later
|
||||||
|
|
|
@ -474,6 +474,7 @@ FUNCTION ide2 (ignore)
|
||||||
'new blank text field
|
'new blank text field
|
||||||
idet$ = MKL$(0) + MKL$(0): idel = 1: ideli = 1: iden = 1: IdeBmkN = 0
|
idet$ = MKL$(0) + MKL$(0): idel = 1: ideli = 1: iden = 1: IdeBmkN = 0
|
||||||
REDIM IdeBreakpoints(iden) AS _BYTE
|
REDIM IdeBreakpoints(iden) AS _BYTE
|
||||||
|
REDIM IdeSkipLines(iden) AS _BYTE
|
||||||
callstacklist$ = "": callStackLength = 0
|
callstacklist$ = "": callStackLength = 0
|
||||||
ideunsaved = -1
|
ideunsaved = -1
|
||||||
idechangemade = 1
|
idechangemade = 1
|
||||||
|
@ -566,6 +567,7 @@ FUNCTION ide2 (ignore)
|
||||||
lineinput3buffer = ""
|
lineinput3buffer = ""
|
||||||
iden = n: IF n = 0 THEN idet$ = MKL$(0) + MKL$(0): iden = 1 ELSE idet$ = LEFT$(idet$, i2 - 1)
|
iden = n: IF n = 0 THEN idet$ = MKL$(0) + MKL$(0): iden = 1 ELSE idet$ = LEFT$(idet$, i2 - 1)
|
||||||
REDIM IdeBreakpoints(iden) AS _BYTE
|
REDIM IdeBreakpoints(iden) AS _BYTE
|
||||||
|
REDIM IdeSkipLines(iden) AS _BYTE
|
||||||
IF ideStartAtLine > 0 AND ideStartAtLine <= iden THEN
|
IF ideStartAtLine > 0 AND ideStartAtLine <= iden THEN
|
||||||
idecy = ideStartAtLine
|
idecy = ideStartAtLine
|
||||||
IF idecy - 10 >= 1 THEN idesy = idecy - 10
|
IF idecy - 10 >= 1 THEN idesy = idecy - 10
|
||||||
|
@ -5646,6 +5648,7 @@ FUNCTION ide2 (ignore)
|
||||||
ELSE
|
ELSE
|
||||||
IdeBreakpoints(idecy) = NOT IdeBreakpoints(idecy)
|
IdeBreakpoints(idecy) = NOT IdeBreakpoints(idecy)
|
||||||
END IF
|
END IF
|
||||||
|
IF IdeBreakpoints(idecy) THEN IdeSkipLines(idecy) = 0
|
||||||
GOTO ideloop
|
GOTO ideloop
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
|
@ -5708,6 +5711,7 @@ FUNCTION ide2 (ignore)
|
||||||
ideunsaved = -1
|
ideunsaved = -1
|
||||||
'new blank text field
|
'new blank text field
|
||||||
REDIM IdeBreakpoints(1) AS _BYTE
|
REDIM IdeBreakpoints(1) AS _BYTE
|
||||||
|
REDIM IdeSkipLines(1) AS _BYTE
|
||||||
callstacklist$ = "": callStackLength = 0
|
callstacklist$ = "": callStackLength = 0
|
||||||
idet$ = MKL$(0) + MKL$(0): idel = 1: ideli = 1: iden = 1: IdeBmkN = 0
|
idet$ = MKL$(0) + MKL$(0): idel = 1: ideli = 1: iden = 1: IdeBmkN = 0
|
||||||
idesx = 1
|
idesx = 1
|
||||||
|
@ -6211,6 +6215,21 @@ SUB DebugMode
|
||||||
GOSUB SendCommand
|
GOSUB SendCommand
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
|
skipCount = 0
|
||||||
|
skipList$ = ""
|
||||||
|
FOR i = 1 TO UBOUND(IdeSkipLines)
|
||||||
|
IF IdeSkipLines(i) THEN
|
||||||
|
skipCount = skipCount + 1
|
||||||
|
skipList$ = skipList$ + MKL$(i)
|
||||||
|
END IF
|
||||||
|
NEXT
|
||||||
|
IF skipCount THEN
|
||||||
|
cmd$ = "skip count:" + MKL$(skipCount)
|
||||||
|
GOSUB SendCommand
|
||||||
|
cmd$ = "skip list:" + skipList$
|
||||||
|
GOSUB SendCommand
|
||||||
|
END IF
|
||||||
|
|
||||||
clearStatusWindow 1
|
clearStatusWindow 1
|
||||||
IF startPaused THEN
|
IF startPaused THEN
|
||||||
cmd$ = "break"
|
cmd$ = "break"
|
||||||
|
@ -6313,9 +6332,26 @@ SUB DebugMode
|
||||||
ideselect = 0
|
ideselect = 0
|
||||||
idecytemp = mY - 2 + idesy - 1
|
idecytemp = mY - 2 + idesy - 1
|
||||||
IF idecytemp =< iden THEN
|
IF idecytemp =< iden THEN
|
||||||
IdeBreakpoints(idecytemp) = NOT IdeBreakpoints(idecytemp)
|
IF _KEYDOWN(100306) OR _KEYDOWN(100305) THEN
|
||||||
IF IdeBreakpoints(idecytemp) THEN cmd$ = "set breakpoint:" ELSE cmd$ = "clear breakpoint:"
|
IF IdeSkipLines(idecytemp) = -1 THEN
|
||||||
|
IdeSkipLines(idecytemp) = 0
|
||||||
|
cmd$ = "clear skip line:" + MKL$(idecytemp)
|
||||||
|
ELSE
|
||||||
|
IdeSkipLines(idecytemp) = -1
|
||||||
|
IdeBreakpoints(idecytemp) = 0
|
||||||
|
cmd$ = "set skip line:" + MKL$(idecytemp)
|
||||||
|
END IF
|
||||||
|
ELSE
|
||||||
|
IF IdeBreakpoints(idecytemp) THEN
|
||||||
|
IdeBreakpoints(idecytemp) = 0
|
||||||
|
cmd$ = "clear breakpoint:"
|
||||||
|
ELSE
|
||||||
|
IdeBreakpoints(idecytemp) = -1
|
||||||
|
IdeSkipLines(idecytemp) = 0
|
||||||
|
cmd$ = "set breakpoint:"
|
||||||
|
END IF
|
||||||
cmd$ = cmd$ + MKL$(idecytemp)
|
cmd$ = cmd$ + MKL$(idecytemp)
|
||||||
|
END IF
|
||||||
GOSUB SendCommand
|
GOSUB SendCommand
|
||||||
GOSUB UpdateDisplay
|
GOSUB UpdateDisplay
|
||||||
END IF
|
END IF
|
||||||
|
@ -6502,7 +6538,12 @@ SUB DebugMode
|
||||||
CASE 17152 'F9
|
CASE 17152 'F9
|
||||||
IF PauseMode THEN
|
IF PauseMode THEN
|
||||||
IdeBreakpoints(idecy) = NOT IdeBreakpoints(idecy)
|
IdeBreakpoints(idecy) = NOT IdeBreakpoints(idecy)
|
||||||
IF IdeBreakpoints(idecy) THEN cmd$ = "set breakpoint:" ELSE cmd$ = "clear breakpoint:"
|
IF IdeBreakpoints(idecy) THEN
|
||||||
|
IdeSkipLines(idecy) = 0
|
||||||
|
cmd$ = "set breakpoint:"
|
||||||
|
ELSE
|
||||||
|
cmd$ = "clear breakpoint:"
|
||||||
|
END IF
|
||||||
cmd$ = cmd$ + MKL$(idecy)
|
cmd$ = cmd$ + MKL$(idecy)
|
||||||
GOSUB SendCommand
|
GOSUB SendCommand
|
||||||
GOSUB UpdateDisplay
|
GOSUB UpdateDisplay
|
||||||
|
@ -6514,13 +6555,24 @@ SUB DebugMode
|
||||||
GOSUB UpdateDisplay
|
GOSUB UpdateDisplay
|
||||||
CASE 103, 71 'g, G
|
CASE 103, 71 'g, G
|
||||||
IF _KEYDOWN(100306) OR _KEYDOWN(100305) THEN
|
IF _KEYDOWN(100306) OR _KEYDOWN(100305) THEN
|
||||||
result = idesetnextlinebox
|
result = idegetlinenumberbox("Set Next Line")
|
||||||
PCOPY 3, 0: SCREEN , , 3, 0
|
PCOPY 3, 0: SCREEN , , 3, 0
|
||||||
IF result > 0 THEN
|
IF result > 0 AND result < iden THEN
|
||||||
cmd$ = "set next line:" + MKL$(result)
|
cmd$ = "set next line:" + MKL$(result)
|
||||||
GOSUB SendCommand
|
GOSUB SendCommand
|
||||||
END IF
|
END IF
|
||||||
END IF
|
END IF
|
||||||
|
CASE 112, 80 'p, P
|
||||||
|
IF _KEYDOWN(100306) OR _KEYDOWN(100305) THEN
|
||||||
|
result = idegetlinenumberbox("Skip Line")
|
||||||
|
PCOPY 3, 0: SCREEN , , 3, 0
|
||||||
|
IF result > 0 AND result <= iden THEN
|
||||||
|
cmd$ = "set skip line:" + MKL$(result)
|
||||||
|
GOSUB SendCommand
|
||||||
|
IdeSkipLines(result) = -1
|
||||||
|
GOSUB UpdateDisplay
|
||||||
|
END IF
|
||||||
|
END IF
|
||||||
END SELECT
|
END SELECT
|
||||||
|
|
||||||
GOSUB GetCommand
|
GOSUB GetCommand
|
||||||
|
@ -8129,6 +8181,13 @@ SUB ideinsline (i, text$)
|
||||||
NEXT
|
NEXT
|
||||||
IdeBreakpoints(i) = 0
|
IdeBreakpoints(i) = 0
|
||||||
|
|
||||||
|
REDIM _PRESERVE IdeSkipLines(iden + 1) AS _BYTE
|
||||||
|
FOR b = iden + 1 TO i STEP -1
|
||||||
|
SWAP IdeSkipLines(b), IdeSkipLines(b - 1)
|
||||||
|
NEXT
|
||||||
|
IdeSkipLines(i) = 0
|
||||||
|
|
||||||
|
|
||||||
text$ = RTRIM$(text$)
|
text$ = RTRIM$(text$)
|
||||||
|
|
||||||
IF i = -1 THEN i = idel
|
IF i = -1 THEN i = idel
|
||||||
|
@ -8696,6 +8755,7 @@ FUNCTION idefiledialog$(programname$, mode AS _BYTE)
|
||||||
lineinput3buffer = ""
|
lineinput3buffer = ""
|
||||||
iden = n: IF n = 0 THEN idet$ = MKL$(0) + MKL$(0): iden = 1 ELSE idet$ = LEFT$(idet$, i2 - 1)
|
iden = n: IF n = 0 THEN idet$ = MKL$(0) + MKL$(0): iden = 1 ELSE idet$ = LEFT$(idet$, i2 - 1)
|
||||||
REDIM IdeBreakpoints(iden) AS _BYTE
|
REDIM IdeBreakpoints(iden) AS _BYTE
|
||||||
|
REDIM IdeSkipLines(iden) AS _BYTE
|
||||||
callstacklist$ = "": callStackLength = 0
|
callstacklist$ = "": callStackLength = 0
|
||||||
|
|
||||||
ideerror = 1
|
ideerror = 1
|
||||||
|
@ -9444,14 +9504,23 @@ SUB ideshowtext
|
||||||
DO WHILE l > UBOUND(IdeBreakpoints)
|
DO WHILE l > UBOUND(IdeBreakpoints)
|
||||||
REDIM _PRESERVE IdeBreakpoints(UBOUND(IdeBreakpoints) + 100) AS _BYTE
|
REDIM _PRESERVE IdeBreakpoints(UBOUND(IdeBreakpoints) + 100) AS _BYTE
|
||||||
LOOP
|
LOOP
|
||||||
|
|
||||||
|
DO WHILE l > UBOUND(IdeSkipLines)
|
||||||
|
REDIM _PRESERVE IdeSkipLines(UBOUND(IdeSkipLines) + 100) AS _BYTE
|
||||||
|
LOOP
|
||||||
|
|
||||||
IF ShowLineNumbers THEN
|
IF ShowLineNumbers THEN
|
||||||
IF ShowLineNumbersUseBG THEN COLOR , 6
|
IF ShowLineNumbersUseBG THEN COLOR , 6
|
||||||
IF vWatchOn = 1 AND IdeBreakpoints(l) <> 0 THEN COLOR , 4
|
IF vWatchOn = 1 AND IdeBreakpoints(l) <> 0 THEN COLOR , 4
|
||||||
|
IF vWatchOn = 1 AND IdeSkipLines(l) <> 0 THEN COLOR 14
|
||||||
_PRINTSTRING (2, y + 3), SPACE$(maxLineNumberLength)
|
_PRINTSTRING (2, y + 3), SPACE$(maxLineNumberLength)
|
||||||
IF l <= iden THEN
|
IF l <= iden THEN
|
||||||
l2$ = STR$(l)
|
l2$ = STR$(l)
|
||||||
IF 2 + maxLineNumberLength - (LEN(l2$) + 1) >= 2 THEN
|
IF 2 + maxLineNumberLength - (LEN(l2$) + 1) >= 2 THEN
|
||||||
_PRINTSTRING (2 + maxLineNumberLength - (LEN(l2$) + 1), y + 3), l2$
|
_PRINTSTRING (2 + maxLineNumberLength - (LEN(l2$) + 1), y + 3), l2$
|
||||||
|
IF vWatchOn AND IdeSkipLines(l) <> 0 THEN
|
||||||
|
_PRINTSTRING (2, y + 3), "!"
|
||||||
|
END IF
|
||||||
END IF
|
END IF
|
||||||
END IF
|
END IF
|
||||||
IF ShowLineNumbersSeparator THEN
|
IF ShowLineNumbersSeparator THEN
|
||||||
|
@ -9474,6 +9543,9 @@ SUB ideshowtext
|
||||||
IF l = debugnextline THEN
|
IF l = debugnextline THEN
|
||||||
COLOR 10
|
COLOR 10
|
||||||
_PRINTSTRING (1, y + 3), CHR$(16)
|
_PRINTSTRING (1, y + 3), CHR$(16)
|
||||||
|
ELSEIF IdeSkipLines(l) <> 0 THEN
|
||||||
|
COLOR 14
|
||||||
|
_PRINTSTRING (1, y + 3), "!"
|
||||||
ELSE
|
ELSE
|
||||||
_PRINTSTRING (1, y + 3), CHR$(179)
|
_PRINTSTRING (1, y + 3), CHR$(179)
|
||||||
END IF
|
END IF
|
||||||
|
@ -11472,16 +11544,16 @@ SUB idegotobox
|
||||||
ideselect = 0
|
ideselect = 0
|
||||||
END SUB
|
END SUB
|
||||||
|
|
||||||
FUNCTION idesetnextlinebox
|
FUNCTION idegetlinenumberbox(title$)
|
||||||
a2$ = ""
|
a2$ = ""
|
||||||
v$ = ideinputbox$("Set Next Line", "#Line", a2$, "0123456789", 30, 8)
|
v$ = ideinputbox$(title$, "#Line", a2$, "0123456789", 30, 8)
|
||||||
IF v$ = "" THEN EXIT FUNCTION
|
IF v$ = "" THEN EXIT FUNCTION
|
||||||
|
|
||||||
v& = VAL(v$)
|
v& = VAL(v$)
|
||||||
IF v& < 1 THEN v& = 1
|
IF v& < 1 THEN v& = 1
|
||||||
IF v& > iden THEN v& = iden
|
IF v& > iden THEN v& = iden
|
||||||
|
|
||||||
idesetnextlinebox = v&
|
idegetlinenumberbox = v&
|
||||||
END FUNCTION
|
END FUNCTION
|
||||||
|
|
||||||
|
|
||||||
|
|
124
source/qb64.bas
124
source/qb64.bas
|
@ -5301,9 +5301,9 @@ DO
|
||||||
PRINT #12, "exit_subfunc:;"
|
PRINT #12, "exit_subfunc:;"
|
||||||
IF vWatchOn = 1 THEN
|
IF vWatchOn = 1 THEN
|
||||||
IF NoChecks = 0 THEN
|
IF NoChecks = 0 THEN
|
||||||
vWatchTagLabel linenumber: IF firstLineNumberLabelvWatch = 0 THEN firstLineNumberLabelvWatch = linenumber
|
vWatchTagLabel linenumber, 0
|
||||||
IF lastLineNumberLabelvWatch <> linenumber THEN PRINT #12, "VWATCH_LABEL_" + str2$(linenumber) + ":;": lastLineNumberLabelvWatch = linenumber
|
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE; if (*__LONG_VWATCH_GOTO<0) goto VWATCH_SKIPLINE;"
|
||||||
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE;"
|
vWatchTagLabel 0, -1
|
||||||
END IF
|
END IF
|
||||||
PRINT #12, "*__LONG_VWATCH_SUBLEVEL=*__LONG_VWATCH_SUBLEVEL- 1 ;"
|
PRINT #12, "*__LONG_VWATCH_SUBLEVEL=*__LONG_VWATCH_SUBLEVEL- 1 ;"
|
||||||
|
|
||||||
|
@ -5322,6 +5322,18 @@ DO
|
||||||
PRINT #12, " *__LONG_VWATCH_GOTO=*__LONG_VWATCH_LINENUMBER;"
|
PRINT #12, " *__LONG_VWATCH_GOTO=*__LONG_VWATCH_LINENUMBER;"
|
||||||
PRINT #12, " goto VWATCH_SETNEXTLINE;"
|
PRINT #12, " goto VWATCH_SETNEXTLINE;"
|
||||||
PRINT #12, "}"
|
PRINT #12, "}"
|
||||||
|
|
||||||
|
PRINT #12, "VWATCH_SKIPLINE:;"
|
||||||
|
PRINT #12, "switch (*__LONG_VWATCH_GOTO) {"
|
||||||
|
FOR i = firstLineNumberLabelvWatch TO lastLineNumberLabelvWatch
|
||||||
|
IF ASC(vWatchUsedLabels, i) = 1 THEN
|
||||||
|
PRINT #12, " case -" + str2$(i) + ":"
|
||||||
|
PRINT #12, " goto VWATCH_SKIPLABEL_" + str2$(i) + ";"
|
||||||
|
PRINT #12, " break;"
|
||||||
|
END IF
|
||||||
|
NEXT
|
||||||
|
PRINT #12, "}"
|
||||||
|
|
||||||
PRINT #12, "VWATCH_SKIPSETNEXTLINE:;"
|
PRINT #12, "VWATCH_SKIPSETNEXTLINE:;"
|
||||||
END IF
|
END IF
|
||||||
firstLineNumberLabelvWatch = 0
|
firstLineNumberLabelvWatch = 0
|
||||||
|
@ -5600,9 +5612,8 @@ DO
|
||||||
IF stringprocessinghappened THEN e$ = cleanupstringprocessingcall$ + e$ + ")"
|
IF stringprocessinghappened THEN e$ = cleanupstringprocessingcall$ + e$ + ")"
|
||||||
IF (typ AND ISSTRING) THEN a$ = "WHILE ERROR! Cannot accept a STRING type.": GOTO errmes
|
IF (typ AND ISSTRING) THEN a$ = "WHILE ERROR! Cannot accept a STRING type.": GOTO errmes
|
||||||
IF NoChecks = 0 AND vWatchOn = 1 THEN
|
IF NoChecks = 0 AND vWatchOn = 1 THEN
|
||||||
vWatchTagLabel linenumber: IF firstLineNumberLabelvWatch = 0 THEN firstLineNumberLabelvWatch = linenumber
|
vWatchTagLabel linenumber, 0
|
||||||
IF lastLineNumberLabelvWatch <> linenumber THEN PRINT #12, "VWATCH_LABEL_" + str2$(linenumber) + ":;": lastLineNumberLabelvWatch = linenumber
|
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE; if (*__LONG_VWATCH_GOTO<0) goto VWATCH_SKIPLINE;"
|
||||||
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE;"
|
|
||||||
END IF
|
END IF
|
||||||
PRINT #12, "while((" + e$ + ")||new_error){"
|
PRINT #12, "while((" + e$ + ")||new_error){"
|
||||||
ELSE
|
ELSE
|
||||||
|
@ -5661,17 +5672,15 @@ DO
|
||||||
IF (typ AND ISSTRING) THEN a$ = "DO ERROR! Cannot accept a STRING type.": GOTO errmes
|
IF (typ AND ISSTRING) THEN a$ = "DO ERROR! Cannot accept a STRING type.": GOTO errmes
|
||||||
IF whileuntil = 1 THEN PRINT #12, "while((" + e$ + ")||new_error){" ELSE PRINT #12, "while((!(" + e$ + "))||new_error){"
|
IF whileuntil = 1 THEN PRINT #12, "while((" + e$ + ")||new_error){" ELSE PRINT #12, "while((!(" + e$ + "))||new_error){"
|
||||||
IF NoChecks = 0 AND vWatchOn = 1 THEN
|
IF NoChecks = 0 AND vWatchOn = 1 THEN
|
||||||
vWatchTagLabel linenumber: IF firstLineNumberLabelvWatch = 0 THEN firstLineNumberLabelvWatch = linenumber
|
vWatchTagLabel linenumber, 0
|
||||||
IF lastLineNumberLabelvWatch <> linenumber THEN PRINT #12, "VWATCH_LABEL_" + str2$(linenumber) + ":;": lastLineNumberLabelvWatch = linenumber
|
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE; if (*__LONG_VWATCH_GOTO<0) goto VWATCH_SKIPLINE;"
|
||||||
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE;"
|
|
||||||
END IF
|
END IF
|
||||||
controltype(controllevel) = 4
|
controltype(controllevel) = 4
|
||||||
ELSE
|
ELSE
|
||||||
controltype(controllevel) = 3
|
controltype(controllevel) = 3
|
||||||
IF vWatchOn = 1 AND inclinenumber(inclevel) = 0 AND NoChecks = 0 THEN
|
IF vWatchOn = 1 AND inclinenumber(inclevel) = 0 AND NoChecks = 0 THEN
|
||||||
vWatchTagLabel linenumber: IF firstLineNumberLabelvWatch = 0 THEN firstLineNumberLabelvWatch = linenumber
|
vWatchTagLabel linenumber, 0
|
||||||
IF lastLineNumberLabelvWatch <> linenumber THEN PRINT #12, "VWATCH_LABEL_" + str2$(linenumber) + ":;": lastLineNumberLabelvWatch = linenumber
|
PRINT #12, "do{*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE; if (*__LONG_VWATCH_GOTO<0) goto VWATCH_SKIPLINE;"
|
||||||
PRINT #12, "do{*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE;"
|
|
||||||
ELSE
|
ELSE
|
||||||
PRINT #12, "do{"
|
PRINT #12, "do{"
|
||||||
END IF
|
END IF
|
||||||
|
@ -5705,18 +5714,16 @@ DO
|
||||||
IF (typ AND ISSTRING) THEN a$ = "LOOP ERROR! Cannot accept a STRING type.": GOTO errmes
|
IF (typ AND ISSTRING) THEN a$ = "LOOP ERROR! Cannot accept a STRING type.": GOTO errmes
|
||||||
PRINT #12, "dl_continue_" + str2$(controlid(controllevel)) + ":;"
|
PRINT #12, "dl_continue_" + str2$(controlid(controllevel)) + ":;"
|
||||||
IF NoChecks = 0 AND vWatchOn = 1 THEN
|
IF NoChecks = 0 AND vWatchOn = 1 THEN
|
||||||
vWatchTagLabel linenumber: IF firstLineNumberLabelvWatch = 0 THEN firstLineNumberLabelvWatch = linenumber
|
vWatchTagLabel linenumber, 0
|
||||||
IF lastLineNumberLabelvWatch <> linenumber THEN PRINT #12, "VWATCH_LABEL_" + str2$(linenumber) + ":;": lastLineNumberLabelvWatch = linenumber
|
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE; if (*__LONG_VWATCH_GOTO<0) goto VWATCH_SKIPLINE;"
|
||||||
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE;"
|
|
||||||
END IF
|
END IF
|
||||||
IF whileuntil = 1 THEN PRINT #12, "}while((" + e$ + ")&&(!new_error));" ELSE PRINT #12, "}while((!(" + e$ + "))&&(!new_error));"
|
IF whileuntil = 1 THEN PRINT #12, "}while((" + e$ + ")&&(!new_error));" ELSE PRINT #12, "}while((!(" + e$ + "))&&(!new_error));"
|
||||||
ELSE
|
ELSE
|
||||||
PRINT #12, "dl_continue_" + str2$(controlid(controllevel)) + ":;"
|
PRINT #12, "dl_continue_" + str2$(controlid(controllevel)) + ":;"
|
||||||
|
|
||||||
IF NoChecks = 0 AND vWatchOn = 1 THEN
|
IF NoChecks = 0 AND vWatchOn = 1 THEN
|
||||||
vWatchTagLabel linenumber: IF firstLineNumberLabelvWatch = 0 THEN firstLineNumberLabelvWatch = linenumber
|
vWatchTagLabel linenumber, 0
|
||||||
IF lastLineNumberLabelvWatch <> linenumber THEN PRINT #12, "VWATCH_LABEL_" + str2$(linenumber) + ":;": lastLineNumberLabelvWatch = linenumber
|
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE; if (*__LONG_VWATCH_GOTO<0) goto VWATCH_SKIPLINE;"
|
||||||
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE;"
|
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
IF controltype(controllevel) = 4 THEN
|
IF controltype(controllevel) = 4 THEN
|
||||||
|
@ -5869,9 +5876,8 @@ DO
|
||||||
IF Error_Happened THEN GOTO errmes
|
IF Error_Happened THEN GOTO errmes
|
||||||
|
|
||||||
IF NoChecks = 0 AND vWatchOn = 1 THEN
|
IF NoChecks = 0 AND vWatchOn = 1 THEN
|
||||||
vWatchTagLabel linenumber: IF firstLineNumberLabelvWatch = 0 THEN firstLineNumberLabelvWatch = linenumber
|
vWatchTagLabel linenumber, 0
|
||||||
IF lastLineNumberLabelvWatch <> linenumber THEN PRINT #12, "VWATCH_LABEL_" + str2$(linenumber) + ":;": lastLineNumberLabelvWatch = linenumber
|
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE; if (*__LONG_VWATCH_GOTO<0) goto VWATCH_SKIPLINE;"
|
||||||
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE;"
|
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
PRINT #12, "fornext_step" + u$ + "=" + e$ + ";"
|
PRINT #12, "fornext_step" + u$ + "=" + e$ + ";"
|
||||||
|
@ -5958,9 +5964,8 @@ DO
|
||||||
IF NoChecks = 0 THEN
|
IF NoChecks = 0 THEN
|
||||||
PRINT #12, "S_" + str2$(statementn) + ":;": dynscope = 1
|
PRINT #12, "S_" + str2$(statementn) + ":;": dynscope = 1
|
||||||
IF vWatchOn = 1 AND inclinenumber(inclevel) = 0 THEN
|
IF vWatchOn = 1 AND inclinenumber(inclevel) = 0 THEN
|
||||||
vWatchTagLabel linenumber: IF firstLineNumberLabelvWatch = 0 THEN firstLineNumberLabelvWatch = linenumber
|
vWatchTagLabel linenumber, 0
|
||||||
IF lastLineNumberLabelvWatch <> linenumber THEN PRINT #12, "VWATCH_LABEL_" + str2$(linenumber) + ":;": lastLineNumberLabelvWatch = linenumber
|
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE; if (*__LONG_VWATCH_GOTO<0) goto VWATCH_SKIPLINE;"
|
||||||
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE;"
|
|
||||||
END IF
|
END IF
|
||||||
END IF
|
END IF
|
||||||
FOR i = controllevel TO 1 STEP -1
|
FOR i = controllevel TO 1 STEP -1
|
||||||
|
@ -6001,9 +6006,8 @@ DO
|
||||||
IF NoChecks = 0 THEN
|
IF NoChecks = 0 THEN
|
||||||
PRINT #12, "S_" + str2$(statementn) + ":;": dynscope = 1
|
PRINT #12, "S_" + str2$(statementn) + ":;": dynscope = 1
|
||||||
IF vWatchOn = 1 AND inclinenumber(inclevel) = 0 THEN
|
IF vWatchOn = 1 AND inclinenumber(inclevel) = 0 THEN
|
||||||
vWatchTagLabel linenumber: IF firstLineNumberLabelvWatch = 0 THEN firstLineNumberLabelvWatch = linenumber
|
vWatchTagLabel linenumber, 0
|
||||||
IF lastLineNumberLabelvWatch <> linenumber THEN PRINT #12, "VWATCH_LABEL_" + str2$(linenumber) + ":;": lastLineNumberLabelvWatch = linenumber
|
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE; if (*__LONG_VWATCH_GOTO<0) goto VWATCH_SKIPLINE;"
|
||||||
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE;"
|
|
||||||
END IF
|
END IF
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
|
@ -6085,9 +6089,8 @@ DO
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
IF vWatchOn = 1 AND inclinenumber(inclevel) = 0 THEN
|
IF vWatchOn = 1 AND inclinenumber(inclevel) = 0 THEN
|
||||||
vWatchTagLabel linenumber: IF firstLineNumberLabelvWatch = 0 THEN firstLineNumberLabelvWatch = linenumber
|
vWatchTagLabel linenumber, 0
|
||||||
IF lastLineNumberLabelvWatch <> linenumber THEN PRINT #12, "VWATCH_LABEL_" + str2$(linenumber) + ":;": lastLineNumberLabelvWatch = linenumber
|
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE; if (*__LONG_VWATCH_GOTO<0) goto VWATCH_SKIPLINE;"
|
||||||
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE;"
|
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
PRINT #12, "}"
|
PRINT #12, "}"
|
||||||
|
@ -6107,9 +6110,8 @@ DO
|
||||||
IF NoChecks = 0 THEN
|
IF NoChecks = 0 THEN
|
||||||
PRINT #12, "S_" + str2$(statementn) + ":;": dynscope = 1
|
PRINT #12, "S_" + str2$(statementn) + ":;": dynscope = 1
|
||||||
IF vWatchOn = 1 AND inclinenumber(inclevel) = 0 THEN
|
IF vWatchOn = 1 AND inclinenumber(inclevel) = 0 THEN
|
||||||
vWatchTagLabel linenumber: IF firstLineNumberLabelvWatch = 0 THEN firstLineNumberLabelvWatch = linenumber
|
vWatchTagLabel linenumber, 0
|
||||||
IF lastLineNumberLabelvWatch <> linenumber THEN PRINT #12, "VWATCH_LABEL_" + str2$(linenumber) + ":;": lastLineNumberLabelvWatch = linenumber
|
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE; if (*__LONG_VWATCH_GOTO<0) goto VWATCH_SKIPLINE;"
|
||||||
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE;"
|
|
||||||
END IF
|
END IF
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
|
@ -6234,9 +6236,8 @@ DO
|
||||||
IF controltype(controllevel) < 10 OR controltype(controllevel) > 17 THEN a$ = "END SELECT without SELECT CASE": GOTO errmes
|
IF controltype(controllevel) < 10 OR controltype(controllevel) > 17 THEN a$ = "END SELECT without SELECT CASE": GOTO errmes
|
||||||
|
|
||||||
IF vWatchOn = 1 AND inclinenumber(inclevel) = 0 THEN
|
IF vWatchOn = 1 AND inclinenumber(inclevel) = 0 THEN
|
||||||
vWatchTagLabel linenumber: IF firstLineNumberLabelvWatch = 0 THEN firstLineNumberLabelvWatch = linenumber
|
vWatchTagLabel linenumber, 0
|
||||||
IF lastLineNumberLabelvWatch <> linenumber THEN PRINT #12, "VWATCH_LABEL_" + str2$(linenumber) + ":;": lastLineNumberLabelvWatch = linenumber
|
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE; if (*__LONG_VWATCH_GOTO<0) goto VWATCH_SKIPLINE;"
|
||||||
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE;"
|
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
IF SelectCaseCounter > 0 AND SelectCaseHasCaseBlock(SelectCaseCounter) = 0 THEN
|
IF SelectCaseCounter > 0 AND SelectCaseHasCaseBlock(SelectCaseCounter) = 0 THEN
|
||||||
|
@ -6354,9 +6355,8 @@ DO
|
||||||
IF NoChecks = 0 THEN
|
IF NoChecks = 0 THEN
|
||||||
PRINT #12, "S_" + str2$(statementn) + ":;": dynscope = 1
|
PRINT #12, "S_" + str2$(statementn) + ":;": dynscope = 1
|
||||||
IF vWatchOn = 1 AND inclinenumber(inclevel) = 0 THEN
|
IF vWatchOn = 1 AND inclinenumber(inclevel) = 0 THEN
|
||||||
vWatchTagLabel linenumber: IF firstLineNumberLabelvWatch = 0 THEN firstLineNumberLabelvWatch = linenumber
|
vWatchTagLabel linenumber, 0
|
||||||
IF lastLineNumberLabelvWatch <> linenumber THEN PRINT #12, "VWATCH_LABEL_" + str2$(linenumber) + ":;": lastLineNumberLabelvWatch = linenumber
|
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE; if (*__LONG_VWATCH_GOTO<0) goto VWATCH_SKIPLINE;"
|
||||||
PRINT #12, "*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE;"
|
|
||||||
END IF
|
END IF
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
|
@ -6544,9 +6544,8 @@ DO
|
||||||
|
|
||||||
IF NoChecks = 0 THEN
|
IF NoChecks = 0 THEN
|
||||||
IF vWatchOn = 1 AND inclinenumber(inclevel) = 0 THEN
|
IF vWatchOn = 1 AND inclinenumber(inclevel) = 0 THEN
|
||||||
vWatchTagLabel linenumber: IF firstLineNumberLabelvWatch = 0 THEN firstLineNumberLabelvWatch = linenumber
|
vWatchTagLabel linenumber, 0
|
||||||
IF lastLineNumberLabelvWatch <> linenumber THEN PRINT #12, "VWATCH_LABEL_" + str2$(linenumber) + ":;": lastLineNumberLabelvWatch = linenumber
|
PRINT #12, "do{*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE; if (*__LONG_VWATCH_GOTO<0) goto VWATCH_SKIPLINE;"
|
||||||
PRINT #12, "do{*__LONG_VWATCH_LINENUMBER= " + str2$(linenumber) + "; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE;"
|
|
||||||
ELSE
|
ELSE
|
||||||
PRINT #12, "do{"
|
PRINT #12, "do{"
|
||||||
END IF
|
END IF
|
||||||
|
@ -8893,9 +8892,8 @@ DO
|
||||||
|
|
||||||
|
|
||||||
IF vWatchOn = 1 THEN
|
IF vWatchOn = 1 THEN
|
||||||
vWatchTagLabel linenumber: IF firstLineNumberLabelvWatch = 0 THEN firstLineNumberLabelvWatch = linenumber
|
vWatchTagLabel linenumber, 0
|
||||||
IF lastLineNumberLabelvWatch <> linenumber THEN PRINT #12, "VWATCH_LABEL_" + str2$(linenumber) + ":;": lastLineNumberLabelvWatch = linenumber
|
PRINT #12, "*__LONG_VWATCH_LINENUMBER= 0; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE; if (*__LONG_VWATCH_GOTO<0) goto VWATCH_SKIPLINE;"
|
||||||
PRINT #12, "*__LONG_VWATCH_LINENUMBER= 0; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE;"
|
|
||||||
END IF
|
END IF
|
||||||
PRINT #12, "if (sub_gl_called) error(271);"
|
PRINT #12, "if (sub_gl_called) error(271);"
|
||||||
PRINT #12, "close_program=1;"
|
PRINT #12, "close_program=1;"
|
||||||
|
@ -8918,9 +8916,8 @@ DO
|
||||||
END IF
|
END IF
|
||||||
layoutdone = 1: IF LEN(layout$) THEN layout$ = layout$ + sp + l$ ELSE layout$ = l$
|
layoutdone = 1: IF LEN(layout$) THEN layout$ = layout$ + sp + l$ ELSE layout$ = l$
|
||||||
IF vWatchOn = 1 AND NoChecks = 0 THEN
|
IF vWatchOn = 1 AND NoChecks = 0 THEN
|
||||||
vWatchTagLabel linenumber: IF firstLineNumberLabelvWatch = 0 THEN firstLineNumberLabelvWatch = linenumber
|
vWatchTagLabel linenumber, 0
|
||||||
IF lastLineNumberLabelvWatch <> linenumber THEN PRINT #12, "VWATCH_LABEL_" + str2$(linenumber) + ":;": lastLineNumberLabelvWatch = linenumber
|
PRINT #12, "*__LONG_VWATCH_LINENUMBER=-3; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE; if (*__LONG_VWATCH_GOTO<0) goto VWATCH_SKIPLINE;"
|
||||||
PRINT #12, "*__LONG_VWATCH_LINENUMBER=-3; SUB_VWATCH((ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE;"
|
|
||||||
ELSE
|
ELSE
|
||||||
PRINT #12, "close_program=1;"
|
PRINT #12, "close_program=1;"
|
||||||
PRINT #12, "end();"
|
PRINT #12, "end();"
|
||||||
|
@ -14210,11 +14207,27 @@ SUB clearid
|
||||||
id = cleariddata
|
id = cleariddata
|
||||||
END SUB
|
END SUB
|
||||||
|
|
||||||
SUB vWatchTagLabel (this AS LONG)
|
SUB vWatchTagLabel (this AS LONG, lastLine AS _BYTE)
|
||||||
|
STATIC prevLabel AS LONG
|
||||||
|
|
||||||
|
IF lastLine THEN
|
||||||
|
PRINT #12, "VWATCH_SKIPLABEL_" + str2$(prevLabel) + ":;"
|
||||||
|
ELSE
|
||||||
WHILE this > LEN(vWatchUsedLabels)
|
WHILE this > LEN(vWatchUsedLabels)
|
||||||
vWatchUsedLabels = vWatchUsedLabels + SPACE$(1000)
|
vWatchUsedLabels = vWatchUsedLabels + SPACE$(1000)
|
||||||
WEND
|
WEND
|
||||||
ASC(vWatchUsedLabels, this) = 1
|
ASC(vWatchUsedLabels, this) = 1
|
||||||
|
|
||||||
|
IF firstLineNumberLabelvWatch = 0 THEN
|
||||||
|
firstLineNumberLabelvWatch = this
|
||||||
|
ELSE
|
||||||
|
IF prevLabel <> this THEN
|
||||||
|
PRINT #12, "VWATCH_SKIPLABEL_" + str2$(prevLabel) + ":;"
|
||||||
|
END IF
|
||||||
|
END IF
|
||||||
|
prevLabel = this
|
||||||
|
IF lastLineNumberLabelvWatch <> this THEN PRINT #12, "VWATCH_LABEL_" + str2$(this) + ":;": lastLineNumberLabelvWatch = this
|
||||||
|
END IF
|
||||||
END SUB
|
END SUB
|
||||||
|
|
||||||
SUB closemain
|
SUB closemain
|
||||||
|
@ -14236,6 +14249,18 @@ SUB closemain
|
||||||
PRINT #12, " *__LONG_VWATCH_GOTO=*__LONG_VWATCH_LINENUMBER;"
|
PRINT #12, " *__LONG_VWATCH_GOTO=*__LONG_VWATCH_LINENUMBER;"
|
||||||
PRINT #12, " goto VWATCH_SETNEXTLINE;"
|
PRINT #12, " goto VWATCH_SETNEXTLINE;"
|
||||||
PRINT #12, "}"
|
PRINT #12, "}"
|
||||||
|
|
||||||
|
PRINT #12, "VWATCH_SKIPLINE:;"
|
||||||
|
PRINT #12, "switch (*__LONG_VWATCH_GOTO) {"
|
||||||
|
FOR i = firstLineNumberLabelvWatch TO lastLineNumberLabelvWatch
|
||||||
|
IF ASC(vWatchUsedLabels, i) = 1 THEN
|
||||||
|
PRINT #12, " case -" + str2$(i) + ":"
|
||||||
|
PRINT #12, " goto VWATCH_SKIPLABEL_" + str2$(i) + ";"
|
||||||
|
PRINT #12, " break;"
|
||||||
|
END IF
|
||||||
|
NEXT
|
||||||
|
PRINT #12, "}"
|
||||||
|
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
PRINT #12, "}"
|
PRINT #12, "}"
|
||||||
|
@ -22704,6 +22729,7 @@ END FUNCTION
|
||||||
|
|
||||||
SUB xend
|
SUB xend
|
||||||
IF vWatchOn = 1 THEN
|
IF vWatchOn = 1 THEN
|
||||||
|
vWatchTagLabel 0, -1
|
||||||
PRINT #12, "*__LONG_VWATCH_LINENUMBER= 0; SUB_VWATCH((ptrszint*)vwatch_local_vars);"
|
PRINT #12, "*__LONG_VWATCH_LINENUMBER= 0; SUB_VWATCH((ptrszint*)vwatch_local_vars);"
|
||||||
END IF
|
END IF
|
||||||
PRINT #12, "sub_end();"
|
PRINT #12, "sub_end();"
|
||||||
|
|
|
@ -2,11 +2,13 @@ $CHECKING:OFF
|
||||||
DIM SHARED AS LONG vwatch_linenumber, vwatch_sublevel, vwatch_goto
|
DIM SHARED AS LONG vwatch_linenumber, vwatch_sublevel, vwatch_goto
|
||||||
DIM SHARED AS STRING vwatch_subname, vwatch_callstack
|
DIM SHARED AS STRING vwatch_subname, vwatch_callstack
|
||||||
REDIM SHARED vwatch_breakpoints(0) AS _BYTE
|
REDIM SHARED vwatch_breakpoints(0) AS _BYTE
|
||||||
|
REDIM SHARED vwatch_skiplines(0) AS _BYTE
|
||||||
'next lines are just to avoid "unused variable" warnings:
|
'next lines are just to avoid "unused variable" warnings:
|
||||||
vwatch_linenumber = 0
|
vwatch_linenumber = 0
|
||||||
vwatch_sublevel = 0
|
vwatch_sublevel = 0
|
||||||
vwatch_goto = 0
|
vwatch_goto = 0
|
||||||
vwatch_breakpoints(0) = 0
|
vwatch_breakpoints(0) = 0
|
||||||
|
vwatch_skiplines(0) = 0
|
||||||
vwatch_subname = ""
|
vwatch_subname = ""
|
||||||
vwatch_callstack = ""
|
vwatch_callstack = ""
|
||||||
$CHECKING:ON
|
$CHECKING:ON
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
$CHECKING:OFF
|
$CHECKING:OFF
|
||||||
|
|
||||||
SUB vwatch (localVariables AS _OFFSET)
|
SUB vwatch (localVariables AS _OFFSET)
|
||||||
STATIC AS LONG ide, breakpointCount, timeout, startLevel, lastLine
|
STATIC AS LONG ide, breakpointCount, skipCount, timeout, startLevel, lastLine
|
||||||
STATIC AS LONG callStackLength
|
STATIC AS LONG callStackLength
|
||||||
STATIC AS _BYTE pauseMode, stepOver, bypass, setNextLine
|
STATIC AS _BYTE pauseMode, stepOver, bypass, setNextLine
|
||||||
STATIC buffer$, endc$
|
STATIC buffer$, endc$
|
||||||
|
@ -41,6 +41,7 @@ SUB vwatch (localVariables AS _OFFSET)
|
||||||
END IF
|
END IF
|
||||||
CASE "line count"
|
CASE "line count"
|
||||||
REDIM vwatch_breakpoints(CVL(value$)) AS _BYTE
|
REDIM vwatch_breakpoints(CVL(value$)) AS _BYTE
|
||||||
|
REDIM vwatch_skiplines(CVL(value$)) AS _BYTE
|
||||||
CASE "breakpoint count"
|
CASE "breakpoint count"
|
||||||
breakpointCount = CVL(value$)
|
breakpointCount = CVL(value$)
|
||||||
CASE "breakpoint list"
|
CASE "breakpoint list"
|
||||||
|
@ -55,6 +56,20 @@ SUB vwatch (localVariables AS _OFFSET)
|
||||||
temp$ = MID$(value$, i * 4 - 3, 4)
|
temp$ = MID$(value$, i * 4 - 3, 4)
|
||||||
vwatch_breakpoints(CVL(temp$)) = -1
|
vwatch_breakpoints(CVL(temp$)) = -1
|
||||||
NEXT
|
NEXT
|
||||||
|
CASE "skip count"
|
||||||
|
skipCount = CVL(value$)
|
||||||
|
CASE "skip list"
|
||||||
|
IF LEN(value$) \ 4 <> skipCount THEN
|
||||||
|
cmd$ = "quit:Communication error."
|
||||||
|
GOSUB SendCommand
|
||||||
|
CLOSE #ide
|
||||||
|
bypass = -1
|
||||||
|
EXIT SUB
|
||||||
|
END IF
|
||||||
|
FOR i = 1 TO skipCount
|
||||||
|
temp$ = MID$(value$, i * 4 - 3, 4)
|
||||||
|
vwatch_skiplines(CVL(temp$)) = -1
|
||||||
|
NEXT
|
||||||
CASE "run"
|
CASE "run"
|
||||||
IF vwatch_breakpoints(vwatch_linenumber) THEN EXIT DO
|
IF vwatch_breakpoints(vwatch_linenumber) THEN EXIT DO
|
||||||
pauseMode = 0
|
pauseMode = 0
|
||||||
|
@ -109,12 +124,20 @@ SUB vwatch (localVariables AS _OFFSET)
|
||||||
cmd$ = ""
|
cmd$ = ""
|
||||||
CASE "set breakpoint"
|
CASE "set breakpoint"
|
||||||
vwatch_breakpoints(CVL(value$)) = -1
|
vwatch_breakpoints(CVL(value$)) = -1
|
||||||
|
vwatch_skiplines(CVL(value$)) = 0
|
||||||
CASE "clear breakpoint"
|
CASE "clear breakpoint"
|
||||||
vwatch_breakpoints(CVL(value$)) = 0
|
vwatch_breakpoints(CVL(value$)) = 0
|
||||||
|
CASE "set skip line"
|
||||||
|
vwatch_skiplines(CVL(value$)) = -1
|
||||||
|
vwatch_breakpoints(CVL(value$)) = 0
|
||||||
|
CASE "clear skip line"
|
||||||
|
vwatch_skiplines(CVL(value$)) = 0
|
||||||
CASE "clear all breakpoints"
|
CASE "clear all breakpoints"
|
||||||
REDIM vwatch_breakpoints(UBOUND(vwatch_breakpoints)) AS _BYTE
|
REDIM vwatch_breakpoints(UBOUND(vwatch_breakpoints)) AS _BYTE
|
||||||
END SELECT
|
END SELECT
|
||||||
|
|
||||||
|
IF vwatch_skiplines(vwatch_linenumber) THEN vwatch_goto = -vwatch_linenumber: EXIT SUB
|
||||||
|
|
||||||
IF stepOver = -1 AND vwatch_sublevel > startLevel AND vwatch_breakpoints(vwatch_linenumber) = 0 THEN
|
IF stepOver = -1 AND vwatch_sublevel > startLevel AND vwatch_breakpoints(vwatch_linenumber) = 0 THEN
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
ELSEIF stepOver = -1 AND vwatch_sublevel = startLevel THEN
|
ELSEIF stepOver = -1 AND vwatch_sublevel = startLevel THEN
|
||||||
|
@ -163,6 +186,7 @@ SUB vwatch (localVariables AS _OFFSET)
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
CASE "set breakpoint"
|
CASE "set breakpoint"
|
||||||
vwatch_breakpoints(CVL(value$)) = -1
|
vwatch_breakpoints(CVL(value$)) = -1
|
||||||
|
vwatch_skiplines(CVL(value$)) = 0
|
||||||
CASE "clear breakpoint"
|
CASE "clear breakpoint"
|
||||||
vwatch_breakpoints(CVL(value$)) = 0
|
vwatch_breakpoints(CVL(value$)) = 0
|
||||||
CASE "clear all breakpoints"
|
CASE "clear all breakpoints"
|
||||||
|
@ -180,6 +204,11 @@ SUB vwatch (localVariables AS _OFFSET)
|
||||||
setNextLine = -1
|
setNextLine = -1
|
||||||
vwatch_goto = CVL(value$)
|
vwatch_goto = CVL(value$)
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
|
CASE "set skip line"
|
||||||
|
vwatch_skiplines(CVL(value$)) = -1
|
||||||
|
vwatch_breakpoints(CVL(value$)) = 0
|
||||||
|
CASE "clear skip line"
|
||||||
|
vwatch_skiplines(CVL(value$)) = 0
|
||||||
END SELECT
|
END SELECT
|
||||||
|
|
||||||
GOSUB GetCommand
|
GOSUB GetCommand
|
||||||
|
@ -190,6 +219,7 @@ SUB vwatch (localVariables AS _OFFSET)
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
|
|
||||||
Connect:
|
Connect:
|
||||||
|
DIM ideport$
|
||||||
ideport$ = ENVIRON$("QB64DEBUGPORT")
|
ideport$ = ENVIRON$("QB64DEBUGPORT")
|
||||||
IF ideport$ = "" THEN bypass = -1: EXIT SUB
|
IF ideport$ = "" THEN bypass = -1: EXIT SUB
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue