mirror of
https://github.com/QB64Official/qb64.git
synced 2024-07-07 21:25:14 +00:00
Merge pull request #190 from QB64Team/debug-mode [ci-skip]
Debug mode tweaks
This commit is contained in:
commit
1788a77379
|
@ -7103,6 +7103,10 @@ SUB DebugMode
|
||||||
tempVarType$ = "_UNSIGNED _BIT"
|
tempVarType$ = "_UNSIGNED _BIT"
|
||||||
END IF
|
END IF
|
||||||
SELECT CASE tempVarType$
|
SELECT CASE tempVarType$
|
||||||
|
CASE "_BIT", "_UNSIGNED _BIT"
|
||||||
|
value$ = MKL$(VAL(value$))
|
||||||
|
varSize& = LEN(dummy&)
|
||||||
|
result$ = STR$(CVL(value$))
|
||||||
CASE "_BYTE", "_UNSIGNED _BYTE", "BYTE", "UNSIGNED BYTE"
|
CASE "_BYTE", "_UNSIGNED _BYTE", "BYTE", "UNSIGNED BYTE"
|
||||||
value$ = _MK$(_BYTE, VAL(value$))
|
value$ = _MK$(_BYTE, VAL(value$))
|
||||||
varSize& = LEN(dummy%%)
|
varSize& = LEN(dummy%%)
|
||||||
|
@ -7641,14 +7645,14 @@ SUB DebugMode
|
||||||
IF INSTR(tempVarType$, "BIT *") THEN
|
IF INSTR(tempVarType$, "BIT *") THEN
|
||||||
IF VAL(MID$(tempVarType$, _INSTRREV(tempVarType$, " ") + 1)) > 32 THEN
|
IF VAL(MID$(tempVarType$, _INSTRREV(tempVarType$, " ") + 1)) > 32 THEN
|
||||||
tempVarType$ = "_INTEGER64"
|
tempVarType$ = "_INTEGER64"
|
||||||
IF INSTR(tempVarType$, "UNSIGNED") THEN tempVarType$ = "_UNSIGNED _INTEGER64"
|
IF INSTR(varType$, "UNSIGNED") THEN tempVarType$ = "_UNSIGNED _INTEGER64"
|
||||||
ELSE
|
ELSE
|
||||||
tempVarType$ = "LONG"
|
tempVarType$ = "LONG"
|
||||||
IF INSTR(tempVarType$, "UNSIGNED") THEN tempVarType$ = "_UNSIGNED LONG"
|
IF INSTR(varType$, "UNSIGNED") THEN tempVarType$ = "_UNSIGNED LONG"
|
||||||
END IF
|
END IF
|
||||||
ELSEIF INSTR("@_BIT@BIT@_UNSIGNED _BIT@UNSIGNED BIT@", "@" + tempVarType$ + "@") THEN
|
ELSEIF INSTR("@_BIT@BIT@_UNSIGNED _BIT@UNSIGNED BIT@", "@" + tempVarType$ + "@") THEN
|
||||||
tempVarType$ = "LONG"
|
tempVarType$ = "LONG"
|
||||||
IF INSTR(tempVarType$, "UNSIGNED") THEN tempVarType$ = "_UNSIGNED LONG"
|
IF INSTR(varType$, "UNSIGNED") THEN tempVarType$ = "_UNSIGNED LONG"
|
||||||
END IF
|
END IF
|
||||||
SELECT CASE tempVarType$
|
SELECT CASE tempVarType$
|
||||||
CASE "_BYTE", "_UNSIGNED _BYTE", "BYTE", "UNSIGNED BYTE": varSize& = LEN(dummy%%)
|
CASE "_BYTE", "_UNSIGNED _BYTE", "BYTE", "UNSIGNED BYTE": varSize& = LEN(dummy%%)
|
||||||
|
@ -7941,7 +7945,7 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
|
||||||
COLOR 0, 7
|
COLOR 0, 7
|
||||||
LOCATE p.y + 4, p.x + 2
|
LOCATE p.y + 4, p.x + 2
|
||||||
PRINT "Double-click on an item to add it to the watch list:"
|
PRINT "Double-click on an item to add it to the watch list:"
|
||||||
IF doubleClickThreshold < p.w AND IdeDebugMode > 0 THEN
|
IF doubleClickThreshold > 0 AND doubleClickThreshold < p.w AND IdeDebugMode > 0 THEN
|
||||||
_PRINTSTRING (p.x + doubleClickThreshold, p.y + 5), CHR$(194)
|
_PRINTSTRING (p.x + doubleClickThreshold, p.y + 5), CHR$(194)
|
||||||
_PRINTSTRING (p.x + doubleClickThreshold, p.y + p.h - 1), CHR$(193)
|
_PRINTSTRING (p.x + doubleClickThreshold, p.y + p.h - 1), CHR$(193)
|
||||||
END IF
|
END IF
|
||||||
|
@ -8361,10 +8365,10 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
|
||||||
|
|
||||||
IF mCLICK AND focus = 2 THEN 'list click
|
IF mCLICK AND focus = 2 THEN 'list click
|
||||||
IF timeElapsedSince(lastClick!) < .3 AND clickedItem = o(varListBox).sel THEN
|
IF timeElapsedSince(lastClick!) < .3 AND clickedItem = o(varListBox).sel THEN
|
||||||
IF mX < p.x + doubleClickThreshold OR IdeDebugMode = 0 THEN
|
IF doubleClickThreshold > 0 AND mX >= p.x + doubleClickThreshold AND IdeDebugMode > 0 THEN
|
||||||
GOTO toggleWatch
|
|
||||||
ELSE
|
|
||||||
GOTO sendValue
|
GOTO sendValue
|
||||||
|
ELSE
|
||||||
|
GOTO toggleWatch
|
||||||
END IF
|
END IF
|
||||||
END IF
|
END IF
|
||||||
lastClick! = TIMER
|
lastClick! = TIMER
|
||||||
|
@ -12223,9 +12227,9 @@ SUB ideshowtext
|
||||||
|
|
||||||
IF ShowLineNumbers THEN
|
IF ShowLineNumbers THEN
|
||||||
IF ShowLineNumbersUseBG THEN COLOR , 6
|
IF ShowLineNumbersUseBG THEN COLOR , 6
|
||||||
IF searchStringFoundOn > 0 AND searchStringFoundOn = l THEN
|
IF (searchStringFoundOn > 0 AND searchStringFoundOn = l) OR (l = debugnextline AND vWatchOn = 1) THEN
|
||||||
COLOR 13, 5
|
COLOR 13, 5
|
||||||
searchStringFoundOn = 0
|
IF searchStringFoundOn > 0 AND searchStringFoundOn = l THEN searchStringFoundOn = 0
|
||||||
END IF
|
END IF
|
||||||
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
|
IF vWatchOn = 1 AND IdeSkipLines(l) <> 0 THEN COLOR 14
|
||||||
|
@ -13038,7 +13042,7 @@ FUNCTION idewarningbox
|
||||||
FOR x = 1 TO warningListItems
|
FOR x = 1 TO warningListItems
|
||||||
IF warningLines(x) = 0 THEN
|
IF warningLines(x) = 0 THEN
|
||||||
l$ = l$ + warning$(x)
|
l$ = l$ + warning$(x)
|
||||||
IF x > 1 THEN ASC(l$, treeConnection) = 192
|
IF x > 1 AND treeConnection > 0 THEN ASC(l$, treeConnection) = 192
|
||||||
ELSE
|
ELSE
|
||||||
l3$ = CHR$(16) + CHR$(2) 'dark grey
|
l3$ = CHR$(16) + CHR$(2) 'dark grey
|
||||||
IF warningIncLines(x) > 0 THEN
|
IF warningIncLines(x) > 0 THEN
|
||||||
|
@ -13052,7 +13056,7 @@ FUNCTION idewarningbox
|
||||||
END IF
|
END IF
|
||||||
treeConnection = LEN(l$) + 1
|
treeConnection = LEN(l$) + 1
|
||||||
text$ = warning$(x)
|
text$ = warning$(x)
|
||||||
IF LEN(text$) + 10 > dialogWidth THEN dialogWidth = LEN(text$) + 10
|
IF LEN(l3$ + text$) + 6 > dialogWidth THEN dialogWidth = LEN(l3$ + text$) + 6
|
||||||
IF LEN(text$) THEN
|
IF LEN(text$) THEN
|
||||||
l$ = l$ + CHR$(195) + CHR$(196) + l3$ + ": " + text$
|
l$ = l$ + CHR$(195) + CHR$(196) + l3$ + ": " + text$
|
||||||
ELSE
|
ELSE
|
||||||
|
|
|
@ -825,8 +825,8 @@ DIM SHARED uniquenumbern AS LONG
|
||||||
'CLEAR , , 16384
|
'CLEAR , , 16384
|
||||||
|
|
||||||
|
|
||||||
DIM SHARED bitmask(1 TO 56) AS _INTEGER64
|
DIM SHARED bitmask(1 TO 64) AS _INTEGER64
|
||||||
DIM SHARED bitmaskinv(1 TO 56) AS _INTEGER64
|
DIM SHARED bitmaskinv(1 TO 64) AS _INTEGER64
|
||||||
|
|
||||||
DIM SHARED defineextaz(1 TO 27) AS STRING
|
DIM SHARED defineextaz(1 TO 27) AS STRING
|
||||||
DIM SHARED defineaz(1 TO 27) AS STRING '27 is an underscore
|
DIM SHARED defineaz(1 TO 27) AS STRING '27 is an underscore
|
||||||
|
@ -903,7 +903,7 @@ DIM SHARED controlref(1000) AS LONG 'the line number the control was created on
|
||||||
ON ERROR GOTO qberror
|
ON ERROR GOTO qberror
|
||||||
|
|
||||||
i2&& = 1
|
i2&& = 1
|
||||||
FOR i&& = 1 TO 56
|
FOR i&& = 1 TO 64
|
||||||
bitmask(i&&) = i2&&
|
bitmask(i&&) = i2&&
|
||||||
bitmaskinv(i&&) = NOT i2&&
|
bitmaskinv(i&&) = NOT i2&&
|
||||||
i2&& = i2&& + 2 ^ i&&
|
i2&& = i2&& + 2 ^ i&&
|
||||||
|
@ -1683,8 +1683,6 @@ DO
|
||||||
LOOP
|
LOOP
|
||||||
InValidLine(linenumber) = 0
|
InValidLine(linenumber) = 0
|
||||||
|
|
||||||
ColorPass:
|
|
||||||
|
|
||||||
IF LEN(wholeline$) THEN
|
IF LEN(wholeline$) THEN
|
||||||
|
|
||||||
IF UCASE$(_TRIM$(wholeline$)) = "$NOPREFIX" THEN
|
IF UCASE$(_TRIM$(wholeline$)) = "$NOPREFIX" THEN
|
||||||
|
@ -3130,12 +3128,18 @@ DO
|
||||||
|
|
||||||
IF a3u$ = "$DEBUG" THEN
|
IF a3u$ = "$DEBUG" THEN
|
||||||
layout$ = SCase$("$Debug")
|
layout$ = SCase$("$Debug")
|
||||||
|
IF NoIDEMode THEN
|
||||||
|
addWarning linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), "$Debug", "$Debug features only work from the IDE"
|
||||||
|
END IF
|
||||||
GOTO finishednonexec
|
GOTO finishednonexec
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
IF a3u$ = "$CHECKING:OFF" THEN
|
IF a3u$ = "$CHECKING:OFF" THEN
|
||||||
layout$ = SCase$("$Checking:Off")
|
layout$ = SCase$("$Checking:Off")
|
||||||
NoChecks = 1
|
NoChecks = 1
|
||||||
|
IF vWatchOn <> 0 AND NoIDEMode = 0 AND inclevel = 0 THEN
|
||||||
|
addWarning linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), "$Debug", "$Debug features won't work in $Checking:Off blocks"
|
||||||
|
END IF
|
||||||
GOTO finishednonexec
|
GOTO finishednonexec
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
|
@ -8781,13 +8785,13 @@ DO
|
||||||
|
|
||||||
IF firstelement$ = "CHAIN" THEN
|
IF firstelement$ = "CHAIN" THEN
|
||||||
IF vWatchOn THEN
|
IF vWatchOn THEN
|
||||||
addWarning linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), "Feature incompatible with $DEBUG MODE", "CHAIN"
|
addWarning linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), "Feature incompatible with $Debug mode", "CHAIN"
|
||||||
END IF
|
END IF
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
IF firstelement$ = "RUN" THEN 'RUN
|
IF firstelement$ = "RUN" THEN 'RUN
|
||||||
IF vWatchOn THEN
|
IF vWatchOn THEN
|
||||||
addWarning linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), "Feature incompatible with $DEBUG MODE", "RUN"
|
addWarning linenumber, inclevel, inclinenumber(inclevel), incname$(inclevel), "Feature incompatible with $Debug mode", "RUN"
|
||||||
END IF
|
END IF
|
||||||
l$ = SCase$("Run")
|
l$ = SCase$("Run")
|
||||||
IF n = 1 THEN
|
IF n = 1 THEN
|
||||||
|
@ -14814,10 +14818,10 @@ FUNCTION dim2 (varname$, typ2$, method, elements$)
|
||||||
IF LEFT$(typ$, 7) <> "_BIT * " AND LEFT$(typ$, 6) <> "BIT * " THEN Give_Error "Expected " + qb64prefix$ + "BIT * number": EXIT FUNCTION
|
IF LEFT$(typ$, 7) <> "_BIT * " AND LEFT$(typ$, 6) <> "BIT * " THEN Give_Error "Expected " + qb64prefix$ + "BIT * number": EXIT FUNCTION
|
||||||
c$ = MID$(typ$, INSTR(typ$, " * ") + 3)
|
c$ = MID$(typ$, INSTR(typ$, " * ") + 3)
|
||||||
IF isuinteger(c$) = 0 THEN Give_Error "Number expected after *": EXIT FUNCTION
|
IF isuinteger(c$) = 0 THEN Give_Error "Number expected after *": EXIT FUNCTION
|
||||||
IF LEN(c$) > 2 THEN Give_Error "Too many characters in number after *": EXIT FUNCTION
|
IF LEN(c$) > 2 THEN Give_Error "Cannot create a bit variable of size > 64 bits": EXIT FUNCTION
|
||||||
bits = VAL(c$)
|
bits = VAL(c$)
|
||||||
IF bits = 0 THEN Give_Error "Cannot create a bit variable of size 0 bits": EXIT FUNCTION
|
IF bits = 0 THEN Give_Error "Cannot create a bit variable of size 0 bits": EXIT FUNCTION
|
||||||
IF bits > 57 THEN Give_Error "Cannot create a bit variable of size > 24 bits": EXIT FUNCTION
|
IF bits > 64 THEN Give_Error "Cannot create a bit variable of size > 64 bits": EXIT FUNCTION
|
||||||
ELSE
|
ELSE
|
||||||
bits = 1
|
bits = 1
|
||||||
END IF
|
END IF
|
||||||
|
@ -21468,7 +21472,7 @@ FUNCTION symboltype (s$) 'returns type or 0(not a valid symbol)
|
||||||
IF isuinteger(RIGHT$(s$, l - 1)) THEN
|
IF isuinteger(RIGHT$(s$, l - 1)) THEN
|
||||||
IF l > 3 THEN EXIT FUNCTION
|
IF l > 3 THEN EXIT FUNCTION
|
||||||
n = VAL(RIGHT$(s$, l - 1))
|
n = VAL(RIGHT$(s$, l - 1))
|
||||||
IF n > 56 THEN EXIT FUNCTION
|
IF n > 64 THEN EXIT FUNCTION
|
||||||
symboltype = n + ISOFFSETINBITS: EXIT FUNCTION
|
symboltype = n + ISOFFSETINBITS: EXIT FUNCTION
|
||||||
END IF
|
END IF
|
||||||
EXIT FUNCTION
|
EXIT FUNCTION
|
||||||
|
@ -21494,7 +21498,7 @@ FUNCTION symboltype (s$) 'returns type or 0(not a valid symbol)
|
||||||
IF isuinteger(RIGHT$(s$, l - 2)) THEN
|
IF isuinteger(RIGHT$(s$, l - 2)) THEN
|
||||||
IF l > 4 THEN EXIT FUNCTION
|
IF l > 4 THEN EXIT FUNCTION
|
||||||
n = VAL(RIGHT$(s$, l - 2))
|
n = VAL(RIGHT$(s$, l - 2))
|
||||||
IF n > 56 THEN EXIT FUNCTION
|
IF n > 64 THEN EXIT FUNCTION
|
||||||
symboltype = n + ISOFFSETINBITS + ISUNSIGNED: EXIT FUNCTION
|
symboltype = n + ISOFFSETINBITS + ISUNSIGNED: EXIT FUNCTION
|
||||||
END IF
|
END IF
|
||||||
EXIT FUNCTION
|
EXIT FUNCTION
|
||||||
|
@ -22468,7 +22472,7 @@ FUNCTION typ2ctyp$ (t AS LONG, tstr AS STRING)
|
||||||
IF n$ <> "" THEN
|
IF n$ <> "" THEN
|
||||||
IF isuinteger(n$) = 0 THEN Give_Error "Invalid index after _BIT type": EXIT FUNCTION
|
IF isuinteger(n$) = 0 THEN Give_Error "Invalid index after _BIT type": EXIT FUNCTION
|
||||||
b = VAL(n$)
|
b = VAL(n$)
|
||||||
IF b > 57 THEN Give_Error "Invalid index after _BIT type": EXIT FUNCTION
|
IF b > 64 THEN Give_Error "Invalid index after _BIT type": EXIT FUNCTION
|
||||||
END IF
|
END IF
|
||||||
IF b <= 32 THEN ctyp$ = "int32" ELSE ctyp$ = "int64"
|
IF b <= 32 THEN ctyp$ = "int32" ELSE ctyp$ = "int64"
|
||||||
IF unsgn THEN ctyp$ = "u" + ctyp$
|
IF unsgn THEN ctyp$ = "u" + ctyp$
|
||||||
|
@ -22543,7 +22547,7 @@ FUNCTION type2symbol$ (typ$)
|
||||||
IF isuinteger(t$) = 0 THEN Give_Error e$: EXIT FUNCTION
|
IF isuinteger(t$) = 0 THEN Give_Error e$: EXIT FUNCTION
|
||||||
v = VAL(t$)
|
v = VAL(t$)
|
||||||
IF v = 0 THEN Give_Error e$: EXIT FUNCTION
|
IF v = 0 THEN Give_Error e$: EXIT FUNCTION
|
||||||
IF s$ <> "$" AND v > 56 THEN Give_Error e$: EXIT FUNCTION
|
IF s$ <> "$" AND v > 64 THEN Give_Error e$: EXIT FUNCTION
|
||||||
IF s$ = "$" THEN
|
IF s$ = "$" THEN
|
||||||
s$ = s$ + str2$(v)
|
s$ = s$ + str2$(v)
|
||||||
ELSE
|
ELSE
|
||||||
|
@ -22593,7 +22597,7 @@ FUNCTION typname2typ& (t2$)
|
||||||
IF n$ <> "" THEN
|
IF n$ <> "" THEN
|
||||||
IF isuinteger(n$) = 0 THEN Give_Error "Invalid index after _BIT type": EXIT FUNCTION
|
IF isuinteger(n$) = 0 THEN Give_Error "Invalid index after _BIT type": EXIT FUNCTION
|
||||||
b = VAL(n$)
|
b = VAL(n$)
|
||||||
IF b > 56 THEN Give_Error "Invalid index after _BIT type": EXIT FUNCTION
|
IF b > 64 THEN Give_Error "Invalid index after _BIT type": EXIT FUNCTION
|
||||||
END IF
|
END IF
|
||||||
IF unsgn THEN typname2typ& = UBITTYPE + (b - 1) ELSE typname2typ& = BITTYPE + (b - 1)
|
IF unsgn THEN typname2typ& = UBITTYPE + (b - 1) ELSE typname2typ& = BITTYPE + (b - 1)
|
||||||
EXIT FUNCTION
|
EXIT FUNCTION
|
||||||
|
@ -22687,7 +22691,7 @@ FUNCTION typname2typ& (t2$)
|
||||||
n$ = RIGHT$(t$, LEN(t$) - 7)
|
n$ = RIGHT$(t$, LEN(t$) - 7)
|
||||||
IF isuinteger(n$) = 0 THEN Give_Error "Invalid size after " + qb64prefix$ + "BIT *": EXIT FUNCTION
|
IF isuinteger(n$) = 0 THEN Give_Error "Invalid size after " + qb64prefix$ + "BIT *": EXIT FUNCTION
|
||||||
b = VAL(n$)
|
b = VAL(n$)
|
||||||
IF b = 0 OR b > 56 THEN Give_Error "Invalid size after " + qb64prefix$ + "BIT *": EXIT FUNCTION
|
IF b = 0 OR b > 64 THEN Give_Error "Invalid size after " + qb64prefix$ + "BIT *": EXIT FUNCTION
|
||||||
t = BITTYPE - 1 + b: IF u THEN t = t + ISUNSIGNED
|
t = BITTYPE - 1 + b: IF u THEN t = t + ISUNSIGNED
|
||||||
typname2typ& = t
|
typname2typ& = t
|
||||||
EXIT FUNCTION
|
EXIT FUNCTION
|
||||||
|
|
Loading…
Reference in a new issue