mirror of
https://github.com/QB64Official/qb64.git
synced 2024-08-22 11:25:08 +00:00
Merge branch 'var-export' into development
This commit is contained in:
commit
f5d70bf105
6 changed files with 434 additions and 249 deletions
|
@ -1,14 +1,14 @@
|
||||||
$CHECKING:OFF
|
$CHECKING:OFF
|
||||||
|
|
||||||
SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
|
SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
|
||||||
STATIC AS LONG ideHost, breakpointCount, skipCount, timeout, startLevel, lastLine
|
STATIC AS LONG vw_ideHost, vw_breakpointCount, vw_skipCount, vw_timeout, vw_startLevel, vw_lastLine
|
||||||
STATIC AS LONG callStackLength, runToLine
|
STATIC AS LONG vw_runToLine
|
||||||
STATIC AS _BYTE pauseMode, stepOver, bypass, setNextLine
|
STATIC AS _BYTE vw_pauseMode, vw_stepOver, vw_bypass, vw_setNextLine
|
||||||
STATIC buffer$, endc$
|
STATIC vw_buffer$, vw_endc$
|
||||||
DIM AS LONG i, tempIndex, localIndex, varSize, sequence
|
DIM AS LONG vw_i, vw_tempIndex, vw_localIndex, vw_varSize, vw_sequence
|
||||||
DIM AS _OFFSET address
|
DIM AS _OFFSET vw_address
|
||||||
DIM AS _MEM m, m2
|
DIM AS _MEM vw_m, vw_m2
|
||||||
DIM start!, temp$, cmd$, value$, k&, buf$, scope$
|
DIM vw_start!, vw_temp$, vw_cmd$, vw_value$, vw_k&, vw_buf$, vw_scope$
|
||||||
|
|
||||||
DECLARE LIBRARY
|
DECLARE LIBRARY
|
||||||
SUB vwatch_stoptimers ALIAS stop_timers
|
SUB vwatch_stoptimers ALIAS stop_timers
|
||||||
|
@ -16,67 +16,67 @@ SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
|
||||||
SUB unlockvWatchHandle
|
SUB unlockvWatchHandle
|
||||||
END DECLARE
|
END DECLARE
|
||||||
|
|
||||||
IF bypass THEN EXIT SUB
|
IF vw_bypass THEN EXIT SUB
|
||||||
|
|
||||||
vwatch_goto = 0
|
vwatch_goto = 0
|
||||||
|
|
||||||
IF ideHost = 0 THEN
|
IF vw_ideHost = 0 THEN
|
||||||
timeout = 10
|
vw_timeout = 10
|
||||||
endc$ = "<END>"
|
vw_endc$ = "<END>"
|
||||||
|
|
||||||
'initial setup
|
'initial setup
|
||||||
GOSUB Connect
|
GOSUB Connect
|
||||||
|
|
||||||
'send this binary's path/exe name
|
'send this binary's path/exe name
|
||||||
cmd$ = "me:" + COMMAND$(0)
|
vw_cmd$ = "me:" + COMMAND$(0)
|
||||||
GOSUB SendCommand
|
GOSUB SendCommand
|
||||||
|
|
||||||
DO
|
DO
|
||||||
GOSUB GetCommand
|
GOSUB GetCommand
|
||||||
SELECT CASE cmd$
|
SELECT CASE vw_cmd$
|
||||||
CASE "vwatch"
|
CASE "vwatch"
|
||||||
IF value$ <> "ok" THEN
|
IF vw_value$ <> "ok" THEN
|
||||||
unlockvWatchHandle: CLOSE #ideHost
|
unlockvWatchHandle: CLOSE #vw_ideHost
|
||||||
bypass = -1
|
vw_bypass = -1
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
END IF
|
END IF
|
||||||
CASE "line count"
|
CASE "line count"
|
||||||
REDIM vwatch_breakpoints(CVL(value$)) AS _BYTE
|
REDIM vwatch_breakpoints(CVL(vw_value$)) AS _BYTE
|
||||||
REDIM vwatch_skiplines(CVL(value$)) AS _BYTE
|
REDIM vwatch_skiplines(CVL(vw_value$)) AS _BYTE
|
||||||
CASE "breakpoint count"
|
CASE "breakpoint count"
|
||||||
breakpointCount = CVL(value$)
|
vw_breakpointCount = CVL(vw_value$)
|
||||||
CASE "breakpoint list"
|
CASE "breakpoint list"
|
||||||
IF LEN(value$) \ 4 <> breakpointCount THEN
|
IF LEN(vw_value$) \ 4 <> vw_breakpointCount THEN
|
||||||
cmd$ = "quit:Communication error."
|
vw_cmd$ = "quit:Communication error."
|
||||||
GOSUB SendCommand
|
GOSUB SendCommand
|
||||||
unlockvWatchHandle: CLOSE #ideHost
|
unlockvWatchHandle: CLOSE #vw_ideHost
|
||||||
bypass = -1
|
vw_bypass = -1
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
END IF
|
END IF
|
||||||
FOR i = 1 TO breakpointCount
|
FOR vw_i = 1 TO vw_breakpointCount
|
||||||
temp$ = MID$(value$, i * 4 - 3, 4)
|
vw_temp$ = MID$(vw_value$, vw_i * 4 - 3, 4)
|
||||||
vwatch_breakpoints(CVL(temp$)) = -1
|
vwatch_breakpoints(CVL(vw_temp$)) = -1
|
||||||
NEXT
|
NEXT
|
||||||
CASE "skip count"
|
CASE "skip count"
|
||||||
skipCount = CVL(value$)
|
vw_skipCount = CVL(vw_value$)
|
||||||
CASE "skip list"
|
CASE "skip list"
|
||||||
IF LEN(value$) \ 4 <> skipCount THEN
|
IF LEN(vw_value$) \ 4 <> vw_skipCount THEN
|
||||||
cmd$ = "quit:Communication error."
|
vw_cmd$ = "quit:Communication error."
|
||||||
GOSUB SendCommand
|
GOSUB SendCommand
|
||||||
unlockvWatchHandle: CLOSE #ideHost
|
unlockvWatchHandle: CLOSE #vw_ideHost
|
||||||
bypass = -1
|
vw_bypass = -1
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
END IF
|
END IF
|
||||||
FOR i = 1 TO skipCount
|
FOR vw_i = 1 TO vw_skipCount
|
||||||
temp$ = MID$(value$, i * 4 - 3, 4)
|
vw_temp$ = MID$(vw_value$, vw_i * 4 - 3, 4)
|
||||||
vwatch_skiplines(CVL(temp$)) = -1
|
vwatch_skiplines(CVL(vw_temp$)) = -1
|
||||||
NEXT
|
NEXT
|
||||||
CASE "run"
|
CASE "run"
|
||||||
IF vwatch_breakpoints(vwatch_linenumber) THEN EXIT DO
|
IF vwatch_breakpoints(vwatch_linenumber) THEN EXIT DO
|
||||||
pauseMode = 0
|
vw_pauseMode = 0
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
CASE "break"
|
CASE "break"
|
||||||
pauseMode = -1
|
vw_pauseMode = -1
|
||||||
EXIT DO
|
EXIT DO
|
||||||
END SELECT
|
END SELECT
|
||||||
LOOP
|
LOOP
|
||||||
|
@ -84,60 +84,53 @@ SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
|
||||||
|
|
||||||
IF vwatch_linenumber = 0 THEN
|
IF vwatch_linenumber = 0 THEN
|
||||||
GOSUB SendCallStack
|
GOSUB SendCallStack
|
||||||
cmd$ = "quit:Program ended."
|
vw_cmd$ = "quit:Program ended."
|
||||||
GOSUB SendCommand
|
GOSUB SendCommand
|
||||||
unlockvWatchHandle: CLOSE #ideHost
|
unlockvWatchHandle: CLOSE #vw_ideHost
|
||||||
bypass = -1
|
vw_bypass = -1
|
||||||
ideHost = 0
|
vw_ideHost = 0
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
ELSEIF vwatch_linenumber = -1 THEN
|
ELSEIF vwatch_linenumber = -1 THEN
|
||||||
'report an error in the most recent line
|
'report an error in the most recent line
|
||||||
GOSUB SendCallStack
|
GOSUB SendCallStack
|
||||||
cmd$ = "error:" + MKL$(lastLine)
|
vw_cmd$ = "error:" + MKL$(vw_lastLine)
|
||||||
GOSUB SendCommand
|
GOSUB SendCommand
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
ELSEIF vwatch_linenumber = -2 THEN
|
ELSEIF vwatch_linenumber = -2 THEN
|
||||||
'report a new sub/function has been "entered"
|
'report a new sub/function has been "entered"
|
||||||
IF LEN(vwatch_callstack) > 100000 THEN
|
|
||||||
vwatch_callstack = ""
|
|
||||||
callStackLength = 0
|
|
||||||
END IF
|
|
||||||
callStackLength = callStackLength + 1
|
|
||||||
IF LEN(vwatch_callstack) THEN vwatch_callstack = vwatch_callstack + CHR$(0)
|
|
||||||
vwatch_callstack = vwatch_callstack + vwatch_subname$ + ", line" + STR$(lastLine)
|
|
||||||
IF vwatch_sublevel > UBOUND(vwatch_stack) THEN
|
IF vwatch_sublevel > UBOUND(vwatch_stack) THEN
|
||||||
REDIM _PRESERVE vwatch_stack(UBOUND(vwatch_stack) + 1000) AS STRING
|
REDIM _PRESERVE vwatch_stack(UBOUND(vwatch_stack) + 1000) AS STRING
|
||||||
END IF
|
END IF
|
||||||
vwatch_stack(vwatch_sublevel) = vwatch_internalsubname$
|
vwatch_stack(vwatch_sublevel) = vwatch_internalsubname$ + "," + vwatch_subname$ + ", line" + STR$(vw_lastLine)
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
ELSEIF vwatch_linenumber = -3 THEN
|
ELSEIF vwatch_linenumber = -3 THEN
|
||||||
'handle STOP - instead of quitting, pause execution
|
'handle STOP - instead of quitting, pause execution
|
||||||
pauseMode = -1
|
vw_pauseMode = -1
|
||||||
stepOver = 0
|
vw_stepOver = 0
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
IF vwatch_linenumber = lastLine AND setNextLine = 0 THEN EXIT SUB
|
IF vwatch_linenumber = vw_lastLine AND vw_setNextLine = 0 THEN EXIT SUB
|
||||||
setNextLine = 0
|
vw_setNextLine = 0
|
||||||
lastLine = vwatch_linenumber
|
vw_lastLine = vwatch_linenumber
|
||||||
|
|
||||||
GOSUB GetCommand
|
GOSUB GetCommand
|
||||||
SELECT CASE cmd$
|
SELECT CASE vw_cmd$
|
||||||
CASE "break"
|
CASE "break"
|
||||||
pauseMode = -1
|
vw_pauseMode = -1
|
||||||
stepOver = 0
|
vw_stepOver = 0
|
||||||
runToLine = 0
|
vw_runToLine = 0
|
||||||
cmd$ = ""
|
vw_cmd$ = ""
|
||||||
CASE "set breakpoint"
|
CASE "set breakpoint"
|
||||||
vwatch_breakpoints(CVL(value$)) = -1
|
vwatch_breakpoints(CVL(vw_value$)) = -1
|
||||||
vwatch_skiplines(CVL(value$)) = 0
|
vwatch_skiplines(CVL(vw_value$)) = 0
|
||||||
CASE "clear breakpoint"
|
CASE "clear breakpoint"
|
||||||
vwatch_breakpoints(CVL(value$)) = 0
|
vwatch_breakpoints(CVL(vw_value$)) = 0
|
||||||
CASE "set skip line"
|
CASE "set skip line"
|
||||||
vwatch_skiplines(CVL(value$)) = -1
|
vwatch_skiplines(CVL(vw_value$)) = -1
|
||||||
vwatch_breakpoints(CVL(value$)) = 0
|
vwatch_breakpoints(CVL(vw_value$)) = 0
|
||||||
CASE "clear skip line"
|
CASE "clear skip line"
|
||||||
vwatch_skiplines(CVL(value$)) = 0
|
vwatch_skiplines(CVL(vw_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
|
||||||
CASE "clear all skips"
|
CASE "clear all skips"
|
||||||
|
@ -146,72 +139,72 @@ SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
|
||||||
|
|
||||||
IF vwatch_skiplines(vwatch_linenumber) THEN vwatch_goto = -vwatch_linenumber: EXIT SUB
|
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 vw_stepOver = -1 AND vwatch_sublevel > vw_startLevel AND vwatch_breakpoints(vwatch_linenumber) = 0 THEN
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
ELSEIF stepOver = -1 AND vwatch_sublevel = startLevel THEN
|
ELSEIF vw_stepOver = -1 AND vwatch_sublevel = vw_startLevel THEN
|
||||||
stepOver = 0
|
vw_stepOver = 0
|
||||||
pauseMode = -1
|
vw_pauseMode = -1
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
IF runToLine > 0 AND runToLine <> vwatch_linenumber THEN
|
IF vw_runToLine > 0 AND vw_runToLine <> vwatch_linenumber THEN
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
ELSEIF runToLine > 0 AND runToLine = vwatch_linenumber THEN
|
ELSEIF vw_runToLine > 0 AND vw_runToLine = vwatch_linenumber THEN
|
||||||
pauseMode = -1
|
vw_pauseMode = -1
|
||||||
runToLine = 0
|
vw_runToLine = 0
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
IF vwatch_breakpoints(vwatch_linenumber) = 0 AND pauseMode = 0 THEN
|
IF vwatch_breakpoints(vwatch_linenumber) = 0 AND vw_pauseMode = 0 THEN
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
vwatch_stoptimers
|
vwatch_stoptimers
|
||||||
cmd$ = "line number:"
|
vw_cmd$ = "line number:"
|
||||||
IF vwatch_breakpoints(vwatch_linenumber) THEN cmd$ = "breakpoint:"
|
IF vwatch_breakpoints(vwatch_linenumber) THEN vw_cmd$ = "breakpoint:"
|
||||||
cmd$ = cmd$ + MKL$(vwatch_linenumber)
|
vw_cmd$ = vw_cmd$ + MKL$(vwatch_linenumber)
|
||||||
GOSUB SendCommand
|
GOSUB SendCommand
|
||||||
cmd$ = "current sub:" + vwatch_stack(vwatch_sublevel)
|
vw_cmd$ = "current sub:" + LEFT$(vwatch_stack(vwatch_sublevel), INSTR(vwatch_stack(vwatch_sublevel), ",") - 1)
|
||||||
GOSUB SendCommand
|
GOSUB SendCommand
|
||||||
|
|
||||||
DO 'main loop
|
DO 'main loop
|
||||||
SELECT CASE cmd$
|
SELECT CASE vw_cmd$
|
||||||
CASE "run"
|
CASE "run"
|
||||||
pauseMode = 0
|
vw_pauseMode = 0
|
||||||
stepOver = 0
|
vw_stepOver = 0
|
||||||
vwatch_starttimers
|
vwatch_starttimers
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
CASE "run to line"
|
CASE "run to line"
|
||||||
pauseMode = 0
|
vw_pauseMode = 0
|
||||||
stepOver = 0
|
vw_stepOver = 0
|
||||||
runToLine = CVL(value$)
|
vw_runToLine = CVL(vw_value$)
|
||||||
vwatch_starttimers
|
vwatch_starttimers
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
CASE "step"
|
CASE "step"
|
||||||
pauseMode = -1
|
vw_pauseMode = -1
|
||||||
stepOver = 0
|
vw_stepOver = 0
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
CASE "step over"
|
CASE "step over"
|
||||||
pauseMode = -1
|
vw_pauseMode = -1
|
||||||
stepOver = -1
|
vw_stepOver = -1
|
||||||
startLevel = vwatch_sublevel
|
vw_startLevel = vwatch_sublevel
|
||||||
vwatch_starttimers
|
vwatch_starttimers
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
CASE "step out"
|
CASE "step out"
|
||||||
pauseMode = -1
|
vw_pauseMode = -1
|
||||||
stepOver = -1
|
vw_stepOver = -1
|
||||||
startLevel = vwatch_sublevel - 1
|
vw_startLevel = vwatch_sublevel - 1
|
||||||
vwatch_starttimers
|
vwatch_starttimers
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
CASE "free"
|
CASE "free"
|
||||||
unlockvWatchHandle: CLOSE #ideHost
|
unlockvWatchHandle: CLOSE #vw_ideHost
|
||||||
ideHost = 0
|
vw_ideHost = 0
|
||||||
bypass = -1
|
vw_bypass = -1
|
||||||
vwatch_starttimers
|
vwatch_starttimers
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
CASE "set breakpoint"
|
CASE "set breakpoint"
|
||||||
vwatch_breakpoints(CVL(value$)) = -1
|
vwatch_breakpoints(CVL(vw_value$)) = -1
|
||||||
vwatch_skiplines(CVL(value$)) = 0
|
vwatch_skiplines(CVL(vw_value$)) = 0
|
||||||
CASE "clear breakpoint"
|
CASE "clear breakpoint"
|
||||||
vwatch_breakpoints(CVL(value$)) = 0
|
vwatch_breakpoints(CVL(vw_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
|
||||||
CASE "clear all skips"
|
CASE "clear all skips"
|
||||||
|
@ -220,49 +213,49 @@ SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
|
||||||
'send call stack history
|
'send call stack history
|
||||||
GOSUB SendCallStack
|
GOSUB SendCallStack
|
||||||
CASE "global var"
|
CASE "global var"
|
||||||
tempIndex = CVL(LEFT$(value$, 4))
|
vw_tempIndex = CVL(LEFT$(vw_value$, 4))
|
||||||
localIndex = CVL(MID$(value$, 5, 4))
|
vw_localIndex = CVL(MID$(vw_value$, 5, 4))
|
||||||
address = _OFFSET(globalVariables) + LEN(address) * localIndex
|
vw_address = _OFFSET(globalVariables) + LEN(vw_address) * vw_localIndex
|
||||||
address = _MEMGET(m, address, _OFFSET) 'first resolve pass
|
vw_address = _MEMGET(vw_m, vw_address, _OFFSET) 'first resolve pass
|
||||||
address = _MEMGET(m, address, _OFFSET) 'second resolve pass
|
vw_address = _MEMGET(vw_m, vw_address, _OFFSET) 'second resolve pass
|
||||||
cmd$ = "global var:" + MKL$(tempIndex) + STR$(address)
|
vw_cmd$ = "global var:" + MKL$(vw_tempIndex) + STR$(vw_address)
|
||||||
GOSUB SendCommand
|
GOSUB SendCommand
|
||||||
CASE "local var"
|
CASE "local var"
|
||||||
tempIndex = CVL(LEFT$(value$, 4))
|
vw_tempIndex = CVL(LEFT$(vw_value$, 4))
|
||||||
localIndex = CVL(MID$(value$, 5, 4))
|
vw_localIndex = CVL(MID$(vw_value$, 5, 4))
|
||||||
scope$ = MID$(value$, 9)
|
vw_scope$ = MID$(vw_value$, 9)
|
||||||
IF scope$ = vwatch_stack(vwatch_sublevel) THEN
|
IF vw_scope$ = LEFT$(vwatch_stack(vwatch_sublevel), INSTR(vwatch_stack(vwatch_sublevel), ",") - 1) THEN
|
||||||
address = _OFFSET(localVariables) + LEN(address) * localIndex
|
vw_address = _OFFSET(localVariables) + LEN(vw_address) * vw_localIndex
|
||||||
address = _MEMGET(m, address, _OFFSET) 'first resolve pass
|
vw_address = _MEMGET(vw_m, vw_address, _OFFSET) 'first resolve pass
|
||||||
address = _MEMGET(m, address, _OFFSET) 'second resolve pass
|
vw_address = _MEMGET(vw_m, vw_address, _OFFSET) 'second resolve pass
|
||||||
cmd$ = "local var:" + MKL$(tempIndex) + STR$(address)
|
vw_cmd$ = "local var:" + MKL$(vw_tempIndex) + STR$(vw_address)
|
||||||
GOSUB SendCommand
|
GOSUB SendCommand
|
||||||
END IF
|
END IF
|
||||||
CASE "get address"
|
CASE "get address"
|
||||||
tempIndex = CVL(LEFT$(value$, 4))
|
vw_tempIndex = CVL(LEFT$(vw_value$, 4))
|
||||||
sequence = CVI(MID$(value$, 5, 2))
|
vw_sequence = CVI(MID$(vw_value$, 5, 2))
|
||||||
varSize = CVL(MID$(value$, 7, 4))
|
vw_varSize = CVL(MID$(vw_value$, 7, 4))
|
||||||
address = VAL(MID$(value$, 11))
|
vw_address = VAL(MID$(vw_value$, 11))
|
||||||
buf$ = SPACE$(varSize)
|
vw_buf$ = SPACE$(vw_varSize)
|
||||||
m = _MEM(address, varSize)
|
vw_m = _MEM(vw_address, vw_varSize)
|
||||||
m2 = _MEM(_OFFSET(buf$), varSize)
|
vw_m2 = _MEM(_OFFSET(vw_buf$), vw_varSize)
|
||||||
_MEMCOPY m, m.OFFSET, m.SIZE TO m2, m2.OFFSET
|
_MEMCOPY vw_m, vw_m.OFFSET, vw_m.SIZE TO vw_m2, vw_m2.OFFSET
|
||||||
cmd$ = "address read:" + MKL$(tempIndex) + MKI$(sequence) + buf$
|
vw_cmd$ = "address read:" + MKL$(vw_tempIndex) + MKI$(vw_sequence) + vw_buf$
|
||||||
GOSUB SendCommand
|
GOSUB SendCommand
|
||||||
CASE "current sub"
|
CASE "current sub"
|
||||||
cmd$ = "current sub:" + vwatch_stack(vwatch_sublevel)
|
vw_cmd$ = "current sub:" + LEFT$(vwatch_stack(vwatch_sublevel), INSTR(vwatch_stack(vwatch_sublevel), ",") - 1)
|
||||||
GOSUB SendCommand
|
GOSUB SendCommand
|
||||||
CASE "set next line"
|
CASE "set next line"
|
||||||
pauseMode = -1
|
vw_pauseMode = -1
|
||||||
stepOver = 0
|
vw_stepOver = 0
|
||||||
setNextLine = -1
|
vw_setNextLine = -1
|
||||||
vwatch_goto = CVL(value$)
|
vwatch_goto = CVL(vw_value$)
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
CASE "set skip line"
|
CASE "set skip line"
|
||||||
vwatch_skiplines(CVL(value$)) = -1
|
vwatch_skiplines(CVL(vw_value$)) = -1
|
||||||
vwatch_breakpoints(CVL(value$)) = 0
|
vwatch_breakpoints(CVL(vw_value$)) = 0
|
||||||
CASE "clear skip line"
|
CASE "clear skip line"
|
||||||
vwatch_skiplines(CVL(value$)) = 0
|
vwatch_skiplines(CVL(vw_value$)) = 0
|
||||||
END SELECT
|
END SELECT
|
||||||
|
|
||||||
GOSUB GetCommand
|
GOSUB GetCommand
|
||||||
|
@ -273,49 +266,57 @@ SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
|
||||||
EXIT SUB
|
EXIT SUB
|
||||||
|
|
||||||
Connect:
|
Connect:
|
||||||
DIM ideport$
|
DIM vw_ideport$
|
||||||
ideport$ = ENVIRON$("QB64DEBUGPORT")
|
vw_ideport$ = ENVIRON$("QB64DEBUGPORT")
|
||||||
IF ideport$ = "" THEN bypass = -1: EXIT SUB
|
IF vw_ideport$ = "" THEN vw_bypass = -1: EXIT SUB
|
||||||
|
|
||||||
start! = TIMER
|
vw_start! = TIMER
|
||||||
DO
|
DO
|
||||||
k& = _KEYHIT
|
vw_k& = _KEYHIT
|
||||||
ideHost = _OPENCLIENT("QB64IDE:" + ideport$ + ":localhost")
|
vw_ideHost = _OPENCLIENT("QB64IDE:" + vw_ideport$ + ":localhost")
|
||||||
_LIMIT 30
|
_LIMIT 30
|
||||||
LOOP UNTIL k& = 27 OR ideHost <> 0 OR TIMER - start! > timeout
|
LOOP UNTIL vw_k& = 27 OR vw_ideHost <> 0 OR TIMER - vw_start! > vw_timeout
|
||||||
IF ideHost = 0 THEN bypass = -1: EXIT SUB
|
IF vw_ideHost = 0 THEN vw_bypass = -1: EXIT SUB
|
||||||
RETURN
|
RETURN
|
||||||
|
|
||||||
GetCommand:
|
GetCommand:
|
||||||
GET #ideHost, , temp$
|
GET #vw_ideHost, , vw_temp$
|
||||||
buffer$ = buffer$ + temp$
|
vw_buffer$ = vw_buffer$ + vw_temp$
|
||||||
|
|
||||||
IF INSTR(buffer$, endc$) THEN
|
IF INSTR(vw_buffer$, vw_endc$) THEN
|
||||||
cmd$ = LEFT$(buffer$, INSTR(buffer$, endc$) - 1)
|
vw_cmd$ = LEFT$(vw_buffer$, INSTR(vw_buffer$, vw_endc$) - 1)
|
||||||
buffer$ = MID$(buffer$, INSTR(buffer$, endc$) + LEN(endc$))
|
vw_buffer$ = MID$(vw_buffer$, INSTR(vw_buffer$, vw_endc$) + LEN(vw_endc$))
|
||||||
|
|
||||||
IF INSTR(cmd$, ":") THEN
|
IF INSTR(vw_cmd$, ":") THEN
|
||||||
value$ = MID$(cmd$, INSTR(cmd$, ":") + 1)
|
vw_value$ = MID$(vw_cmd$, INSTR(vw_cmd$, ":") + 1)
|
||||||
cmd$ = LEFT$(cmd$, INSTR(cmd$, ":") - 1)
|
vw_cmd$ = LEFT$(vw_cmd$, INSTR(vw_cmd$, ":") - 1)
|
||||||
ELSE
|
ELSE
|
||||||
value$ = ""
|
vw_value$ = ""
|
||||||
END IF
|
END IF
|
||||||
ELSE
|
ELSE
|
||||||
cmd$ = "": value$ = ""
|
vw_cmd$ = "": vw_value$ = ""
|
||||||
END IF
|
END IF
|
||||||
RETURN
|
RETURN
|
||||||
|
|
||||||
SendCallStack:
|
SendCallStack:
|
||||||
cmd$ = "call stack size:" + MKL$(callStackLength)
|
IF vwatch_sublevel - 1 > 0 THEN
|
||||||
|
vwatch_callstack = MID$(vwatch_stack(2), INSTR(vwatch_stack(2), ",") + 1)
|
||||||
|
FOR vw_i = 3 TO vwatch_sublevel
|
||||||
|
vwatch_callstack = vwatch_callstack + CHR$(0) + MID$(vwatch_stack(vw_i), INSTR(vwatch_stack(vw_i), ",") + 1)
|
||||||
|
NEXT
|
||||||
|
ELSE
|
||||||
|
vwatch_callstack = ""
|
||||||
|
END IF
|
||||||
|
vw_cmd$ = "call stack size:" + MKL$(vwatch_sublevel - 1)
|
||||||
GOSUB SendCommand
|
GOSUB SendCommand
|
||||||
cmd$ = "call stack:" + vwatch_callstack
|
vw_cmd$ = "call stack:" + vwatch_callstack
|
||||||
GOSUB SendCommand
|
GOSUB SendCommand
|
||||||
RETURN
|
RETURN
|
||||||
|
|
||||||
SendCommand:
|
SendCommand:
|
||||||
cmd$ = cmd$ + endc$
|
vw_cmd$ = vw_cmd$ + vw_endc$
|
||||||
PUT #ideHost, , cmd$
|
PUT #vw_ideHost, , vw_cmd$
|
||||||
cmd$ = ""
|
vw_cmd$ = ""
|
||||||
RETURN
|
RETURN
|
||||||
|
|
||||||
END SUB
|
END SUB
|
||||||
|
|
|
@ -217,8 +217,9 @@ DIM SHARED OptionsMenuShowErrorsImmediately AS INTEGER, OptionsMenuIgnoreWarning
|
||||||
DIM SHARED OptionsMenuDisableSyntax AS INTEGER ', OptionsMenuAutoComplete
|
DIM SHARED OptionsMenuDisableSyntax AS INTEGER ', OptionsMenuAutoComplete
|
||||||
DIM SHARED ViewMenuID AS INTEGER, ViewMenuShowLineNumbersSubMenuID AS INTEGER
|
DIM SHARED ViewMenuID AS INTEGER, ViewMenuShowLineNumbersSubMenuID AS INTEGER
|
||||||
DIM SHARED ViewMenuShowSeparatorID AS INTEGER, ViewMenuShowBGID AS INTEGER
|
DIM SHARED ViewMenuShowSeparatorID AS INTEGER, ViewMenuShowBGID AS INTEGER
|
||||||
DIM SHARED ViewMenuCompilerWarnings AS INTEGER, ViewMenuCallStack AS INTEGER
|
DIM SHARED ViewMenuCompilerWarnings AS INTEGER
|
||||||
DIM SHARED RunMenuID AS INTEGER, RunMenuSaveExeWithSource AS INTEGER, brackethighlight AS INTEGER
|
DIM SHARED RunMenuID AS INTEGER, RunMenuSaveExeWithSource AS INTEGER, brackethighlight AS INTEGER
|
||||||
|
DIM SHARED DebugMenuID AS INTEGER, DebugMenuCallStack AS INTEGER
|
||||||
DIM SHARED multihighlight AS INTEGER, keywordHighlight AS INTEGER
|
DIM SHARED multihighlight AS INTEGER, keywordHighlight AS INTEGER
|
||||||
DIM SHARED PresetColorSchemes AS INTEGER, TotalColorSchemes AS INTEGER, ColorSchemes$(0)
|
DIM SHARED PresetColorSchemes AS INTEGER, TotalColorSchemes AS INTEGER, ColorSchemes$(0)
|
||||||
DIM SHARED LastValidColorScheme AS INTEGER
|
DIM SHARED LastValidColorScheme AS INTEGER
|
||||||
|
|
|
@ -274,10 +274,6 @@ FUNCTION ide2 (ignore)
|
||||||
ViewMenuCompilerWarnings = i
|
ViewMenuCompilerWarnings = i
|
||||||
menu$(ViewMenuID, ViewMenuCompilerWarnings) = "Compiler #Warnings... Ctrl+W": i = i + 1
|
menu$(ViewMenuID, ViewMenuCompilerWarnings) = "Compiler #Warnings... Ctrl+W": i = i + 1
|
||||||
menuDesc$(m, i - 1) = "Displays a list of recent code warnings"
|
menuDesc$(m, i - 1) = "Displays a list of recent code warnings"
|
||||||
|
|
||||||
ViewMenuCallStack = i
|
|
||||||
menu$(ViewMenuID, ViewMenuCallStack) = "Call #Stack... F12": i = i + 1
|
|
||||||
menuDesc$(m, i - 1) = "Displays the call stack of the current program's last execution"
|
|
||||||
menusize(m) = i - 1
|
menusize(m) = i - 1
|
||||||
|
|
||||||
m = m + 1: i = 0: SearchMenuID = m
|
m = m + 1: i = 0: SearchMenuID = m
|
||||||
|
@ -336,7 +332,7 @@ FUNCTION ide2 (ignore)
|
||||||
menuDesc$(m, i - 1) = "Compiles current program without running it"
|
menuDesc$(m, i - 1) = "Compiles current program without running it"
|
||||||
menusize(m) = i - 1
|
menusize(m) = i - 1
|
||||||
|
|
||||||
m = m + 1: i = 0
|
m = m + 1: i = 0: DebugMenuID = m
|
||||||
menu$(m, i) = "Debug": i = i + 1
|
menu$(m, i) = "Debug": i = i + 1
|
||||||
menu$(m, i) = "Start #Paused F8": i = i + 1
|
menu$(m, i) = "Start #Paused F8": i = i + 1
|
||||||
menuDesc$(m, i - 1) = "Compiles current program and starts it in pause mode"
|
menuDesc$(m, i - 1) = "Compiles current program and starts it in pause mode"
|
||||||
|
@ -350,8 +346,18 @@ FUNCTION ide2 (ignore)
|
||||||
menu$(m, i) = "#Unskip All Lines Ctrl+F10": i = i + 1
|
menu$(m, i) = "#Unskip All Lines Ctrl+F10": i = i + 1
|
||||||
menuDesc$(m, i - 1) = "Removes all line skip flags"
|
menuDesc$(m, i - 1) = "Removes all line skip flags"
|
||||||
menu$(m, i) = "-": i = i + 1
|
menu$(m, i) = "-": i = i + 1
|
||||||
|
menu$(m, i) = "#Watch List... F4": i = i + 1
|
||||||
|
menuDesc$(m, i - 1) = "Adds variables to watch list"
|
||||||
|
DebugMenuCallStack = i
|
||||||
|
menu$(DebugMenuID, DebugMenuCallStack) = "Call #Stack... F12": i = i + 1
|
||||||
|
menuDesc$(m, i - 1) = "Displays the call stack of the current program's last execution"
|
||||||
|
menu$(m, i) = "-": i = i + 1
|
||||||
menu$(m, i) = "Set Base #TCP/IP Port Number...": i = i + 1
|
menu$(m, i) = "Set Base #TCP/IP Port Number...": i = i + 1
|
||||||
menuDesc$(m, i - 1) = "Sets the initial port number for TCP/IP communication with the debuggee"
|
menuDesc$(m, i - 1) = "Sets the initial port number for TCP/IP communication with the debuggee"
|
||||||
|
menu$(m, i) = "#Advanced (C++)...": i = i + 1
|
||||||
|
menuDesc$(m, i - 1) = "Enables embedding C++ debug information into compiled program"
|
||||||
|
menu$(m, i) = "Purge C++ #Libraries": i = i + 1
|
||||||
|
menuDesc$(m, i - 1) = "Purges all pre-compiled content"
|
||||||
menusize(m) = i - 1
|
menusize(m) = i - 1
|
||||||
|
|
||||||
m = m + 1: i = 0: OptionsMenuID = m
|
m = m + 1: i = 0: OptionsMenuID = m
|
||||||
|
@ -367,8 +373,6 @@ FUNCTION ide2 (ignore)
|
||||||
menuDesc$(m, i - 1) = "Changes code page to use with TTF fonts"
|
menuDesc$(m, i - 1) = "Changes code page to use with TTF fonts"
|
||||||
menu$(m, i) = "#Backup/Undo...": i = i + 1
|
menu$(m, i) = "#Backup/Undo...": i = i + 1
|
||||||
menuDesc$(m, i - 1) = "Sets size of backup/undo buffer"
|
menuDesc$(m, i - 1) = "Sets size of backup/undo buffer"
|
||||||
menu$(m, i) = "#Advanced...": i = i + 1
|
|
||||||
menuDesc$(m, i - 1) = "Enables embedding C++ debug information into compiled program"
|
|
||||||
menu$(m, i) = "-": i = i + 1
|
menu$(m, i) = "-": i = i + 1
|
||||||
|
|
||||||
OptionsMenuDisableSyntax = i
|
OptionsMenuDisableSyntax = i
|
||||||
|
@ -725,6 +729,23 @@ FUNCTION ide2 (ignore)
|
||||||
'$DEBUG mode on
|
'$DEBUG mode on
|
||||||
IdeDebugMode = 1
|
IdeDebugMode = 1
|
||||||
|
|
||||||
|
FOR x = 1 TO totalVariablesCreated
|
||||||
|
usedVariableList(x).mostRecentValue = ""
|
||||||
|
NEXT
|
||||||
|
|
||||||
|
variableWatchList$ = ""
|
||||||
|
longestVarName = 0
|
||||||
|
FOR y = 1 TO totalVariablesCreated
|
||||||
|
IF usedVariableList(y).watch THEN
|
||||||
|
IF LEN(usedVariableList(y).name) > longestVarName THEN
|
||||||
|
longestVarName = LEN(usedVariableList(y).name)
|
||||||
|
IF variableWatchList$ = "" THEN variableWatchList$ = SPACE$(4)
|
||||||
|
MID$(variableWatchList$, 1, 4) = MKL$(longestVarName)
|
||||||
|
END IF
|
||||||
|
variableWatchList$ = variableWatchList$ + MKL$(y)
|
||||||
|
END IF
|
||||||
|
NEXT
|
||||||
|
|
||||||
EnterDebugMode:
|
EnterDebugMode:
|
||||||
IF idehelp THEN
|
IF idehelp THEN
|
||||||
idewy = idewy + idesubwindow
|
idewy = idewy + idesubwindow
|
||||||
|
@ -1627,9 +1648,26 @@ FUNCTION ide2 (ignore)
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
IF KB = KEY_F4 THEN 'variable watch
|
IF KB = KEY_F4 THEN 'variable watch
|
||||||
result = idevariablewatchbox("")
|
IF vWatchOn = 0 THEN
|
||||||
PCOPY 3, 0: SCREEN , , 3, 0
|
result = idemessagebox("Watch List", "Insert $DEBUG metacommand?", "#Yes;#No")
|
||||||
GOTO ideloop
|
IF result = 1 THEN
|
||||||
|
ideselect = 0
|
||||||
|
ideinsline 1, SCase$("$Debug")
|
||||||
|
idecy = idecy + 1
|
||||||
|
idechangemade = 1
|
||||||
|
GOTO ideloop
|
||||||
|
ELSE
|
||||||
|
GOTO ideloop
|
||||||
|
END IF
|
||||||
|
ELSE
|
||||||
|
IF idecompiling = 1 THEN
|
||||||
|
result = idemessagebox("Watch List", "Variable List not yet available.\nWait for the 'OK' message in the status area.", "")
|
||||||
|
PCOPY 3, 0: SCREEN , , 3, 0
|
||||||
|
GOTO ideloop
|
||||||
|
ELSE
|
||||||
|
GOTO showWatchList
|
||||||
|
END IF
|
||||||
|
END IF
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
IF KB = KEY_F5 THEN 'Note: F5 or SHIFT+F5 accepted
|
IF KB = KEY_F5 THEN 'Note: F5 or SHIFT+F5 accepted
|
||||||
|
@ -4367,9 +4405,9 @@ FUNCTION ide2 (ignore)
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
IF callStackLength = 0 THEN
|
IF callStackLength = 0 THEN
|
||||||
menu$(ViewMenuID, ViewMenuCallStack) = "~Call #Stack... F12"
|
menu$(DebugMenuID, DebugMenuCallStack) = "~Call #Stack... F12"
|
||||||
ELSE
|
ELSE
|
||||||
menu$(ViewMenuID, ViewMenuCallStack) = "Call #Stack... F12"
|
menu$(DebugMenuID, DebugMenuCallStack) = "Call #Stack... F12"
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
oldmy = mY: oldmx = mX
|
oldmy = mY: oldmx = mX
|
||||||
|
@ -4876,7 +4914,7 @@ FUNCTION ide2 (ignore)
|
||||||
GOTO ideloop
|
GOTO ideloop
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
IF menu$(m, s) = "#Advanced..." THEN
|
IF menu$(m, s) = "#Advanced (C++)..." THEN
|
||||||
PCOPY 2, 0
|
PCOPY 2, 0
|
||||||
retval = ideadvancedbox
|
retval = ideadvancedbox
|
||||||
'retval is ignored
|
'retval is ignored
|
||||||
|
@ -4884,6 +4922,13 @@ FUNCTION ide2 (ignore)
|
||||||
GOTO ideloop
|
GOTO ideloop
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
|
IF menu$(m, s) = "Purge C++ #Libraries" THEN
|
||||||
|
PCOPY 2, 0
|
||||||
|
purgeprecompiledcontent
|
||||||
|
PCOPY 3, 0: SCREEN , , 3, 0
|
||||||
|
GOTO ideloop
|
||||||
|
END IF
|
||||||
|
|
||||||
|
|
||||||
IF RIGHT$(menu$(m, s), 19) = "#Swap Mouse Buttons" THEN
|
IF RIGHT$(menu$(m, s), 19) = "#Swap Mouse Buttons" THEN
|
||||||
PCOPY 2, 0
|
PCOPY 2, 0
|
||||||
|
@ -5719,6 +5764,14 @@ FUNCTION ide2 (ignore)
|
||||||
END IF
|
END IF
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
|
IF menu$(m, s) = "#Watch List... F4" THEN
|
||||||
|
PCOPY 2, 0
|
||||||
|
showWatchList:
|
||||||
|
result = idevariablewatchbox("")
|
||||||
|
PCOPY 3, 0: SCREEN , , 3, 0
|
||||||
|
GOTO ideloop
|
||||||
|
END IF
|
||||||
|
|
||||||
IF menu$(m, s) = "Call #Stack... F12" OR menu$(m, s) = "Call Stack... F12" THEN
|
IF menu$(m, s) = "Call #Stack... F12" OR menu$(m, s) = "Call Stack... F12" THEN
|
||||||
IF IdeDebugMode = 2 THEN
|
IF IdeDebugMode = 2 THEN
|
||||||
IdeDebugMode = 3
|
IdeDebugMode = 3
|
||||||
|
@ -6321,6 +6374,11 @@ SUB DebugMode
|
||||||
END TYPE
|
END TYPE
|
||||||
STATIC vWatchPanel AS vWatchPanelType
|
STATIC vWatchPanel AS vWatchPanelType
|
||||||
|
|
||||||
|
TYPE ui
|
||||||
|
AS INTEGER x, y, w, h
|
||||||
|
AS STRING caption
|
||||||
|
END TYPE
|
||||||
|
|
||||||
SELECT EVERYCASE IdeDebugMode
|
SELECT EVERYCASE IdeDebugMode
|
||||||
CASE 1
|
CASE 1
|
||||||
PauseMode = 0
|
PauseMode = 0
|
||||||
|
@ -6343,6 +6401,32 @@ SUB DebugMode
|
||||||
vWatchPanel.x = idewx - vWatchPanel.w - 6
|
vWatchPanel.x = idewx - vWatchPanel.w - 6
|
||||||
vWatchPanel.y = 4
|
vWatchPanel.y = 4
|
||||||
vWatchPanel.firstVisible = 1
|
vWatchPanel.firstVisible = 1
|
||||||
|
|
||||||
|
STATIC Button(1 TO 8) AS ui
|
||||||
|
i = 0
|
||||||
|
i = i + 1: Button(i).Caption = "<F4 = Add Watch>"
|
||||||
|
i = i + 1: Button(i).Caption = "<F5 = Run>"
|
||||||
|
i = i + 1: Button(i).Caption = "<F6 = Step Out>"
|
||||||
|
i = i + 1: Button(i).Caption = "<F7 = Step Over>"
|
||||||
|
i = i + 1: Button(i).Caption = "<F8 = Step Into>"
|
||||||
|
i = i + 1: Button(i).Caption = "<F9 = Toggle Breakpoint>"
|
||||||
|
i = i + 1: Button(i).Caption = "<F10 = Clear all breakpoints>"
|
||||||
|
i = i + 1: Button(i).Caption = "<F12 = Call Stack>"
|
||||||
|
y = (idewy - 4) + 2
|
||||||
|
x = 2
|
||||||
|
FOR i = 1 TO UBOUND(Button)
|
||||||
|
Button(i).x = x
|
||||||
|
Button(i).y = y
|
||||||
|
Button(i).w = LEN(Button(i).Caption)
|
||||||
|
IF i < UBOUND(Button) THEN
|
||||||
|
x = x + Button(i).w + 1
|
||||||
|
IF x + LEN(Button(i + 1).Caption) > idewx - 1 THEN
|
||||||
|
y = y + 1
|
||||||
|
x = 2
|
||||||
|
END IF
|
||||||
|
END IF
|
||||||
|
NEXT
|
||||||
|
|
||||||
CASE IS > 1
|
CASE IS > 1
|
||||||
noFocusMessage = NOT noFocusMessage
|
noFocusMessage = NOT noFocusMessage
|
||||||
GOSUB UpdateStatusArea
|
GOSUB UpdateStatusArea
|
||||||
|
@ -6646,6 +6730,15 @@ SUB DebugMode
|
||||||
ELSE
|
ELSE
|
||||||
draggingHThumb = 0
|
draggingHThumb = 0
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
|
mouseDownOnButton = 0
|
||||||
|
FOR i = 1 TO UBOUND(Button)
|
||||||
|
IF mY = Button(i).y AND mX >= Button(i).x AND mX <= Button(i).x + Button(i).w AND _
|
||||||
|
vWatchPanel.draggingPanel = 0 AND vWatchPanel.resizingPanel = 0 THEN
|
||||||
|
mouseDownOnButton = i
|
||||||
|
EXIT FOR
|
||||||
|
END IF
|
||||||
|
NEXT
|
||||||
ELSE
|
ELSE
|
||||||
'drag
|
'drag
|
||||||
IF draggingVThumb = -1 THEN
|
IF draggingVThumb = -1 THEN
|
||||||
|
@ -6736,7 +6829,7 @@ SUB DebugMode
|
||||||
GOSUB UpdateDisplay
|
GOSUB UpdateDisplay
|
||||||
END IF
|
END IF
|
||||||
END IF
|
END IF
|
||||||
ELSE
|
ELSE 'mouse button released
|
||||||
IF vWatchPanel.draggingPanel THEN vWatchPanel.draggingPanel = 0: mouseDown = 0
|
IF vWatchPanel.draggingPanel THEN vWatchPanel.draggingPanel = 0: mouseDown = 0
|
||||||
IF vWatchPanel.resizingPanel THEN vWatchPanel.resizingPanel = 0: mouseDown = 0
|
IF vWatchPanel.resizingPanel THEN vWatchPanel.resizingPanel = 0: mouseDown = 0
|
||||||
IF vWatchPanel.closingPanel AND (mX = mouseDownOnX AND mY = mouseDownOnY) THEN
|
IF vWatchPanel.closingPanel AND (mX = mouseDownOnX AND mY = mouseDownOnY) THEN
|
||||||
|
@ -6780,6 +6873,20 @@ SUB DebugMode
|
||||||
mouseDown = 0
|
mouseDown = 0
|
||||||
draggingVThumb = 0
|
draggingVThumb = 0
|
||||||
draggingHThumb = 0
|
draggingHThumb = 0
|
||||||
|
|
||||||
|
IF mouseDownOnButton > 0 AND mX = mouseDownOnX AND mY = mouseDownOnY THEN
|
||||||
|
SELECT CASE mouseDownOnButton
|
||||||
|
CASE 1: mouseDownOnButton = 0: mouseDown = 0: GOTO F4
|
||||||
|
CASE 2: mouseDownOnButton = 0: mouseDown = 0: GOTO F5
|
||||||
|
CASE 3: mouseDownOnButton = 0: mouseDown = 0: GOTO F6
|
||||||
|
CASE 4: mouseDownOnButton = 0: mouseDown = 0: GOTO F7
|
||||||
|
CASE 5: mouseDownOnButton = 0: mouseDown = 0: GOTO F8
|
||||||
|
CASE 6: mouseDownOnButton = 0: mouseDown = 0: GOTO F9
|
||||||
|
CASE 7: mouseDownOnButton = 0: mouseDown = 0: GOTO F10
|
||||||
|
CASE 8: mouseDownOnButton = 0: mouseDown = 0: GOTO F12
|
||||||
|
END SELECT
|
||||||
|
END IF
|
||||||
|
|
||||||
IF (mX > 1 AND mX <= 1 + maxLineNumberLength AND mY > 2 AND mY < (idewy - 5) AND ShowLineNumbers) OR _
|
IF (mX > 1 AND mX <= 1 + maxLineNumberLength AND mY > 2 AND mY < (idewy - 5) AND ShowLineNumbers) OR _
|
||||||
(mX = 1 AND mY > 2 AND mY < (idewy - 5) AND ShowLineNumbers = 0) THEN
|
(mX = 1 AND mY > 2 AND mY < (idewy - 5) AND ShowLineNumbers = 0) THEN
|
||||||
'Inside the editor/line numbers
|
'Inside the editor/line numbers
|
||||||
|
@ -6856,11 +6963,8 @@ SUB DebugMode
|
||||||
UpdateStatusArea:
|
UpdateStatusArea:
|
||||||
IF _WINDOWHASFOCUS THEN
|
IF _WINDOWHASFOCUS THEN
|
||||||
IF noFocusMessage THEN
|
IF noFocusMessage THEN
|
||||||
clearStatusWindow 2
|
|
||||||
clearStatusWindow 3
|
|
||||||
setStatusMessage 2, "<F4 = Add Watch> <F5 = Run> <F6 = Step Out> <F7 = Step Over> <F8 = Step Into>", 15
|
|
||||||
setStatusMessage 3, "<F9 = Toggle Breakpoint> <F10 = Clear all breakpoints> <F12 = Call Stack>", 15
|
|
||||||
UpdateMenuHelpLine "Right-click the code for more options; hit ESC to abort."
|
UpdateMenuHelpLine "Right-click the code for more options; hit ESC to abort."
|
||||||
|
GOSUB UpdateButtons
|
||||||
noFocusMessage = 0
|
noFocusMessage = 0
|
||||||
END IF
|
END IF
|
||||||
ELSE
|
ELSE
|
||||||
|
@ -6963,6 +7067,7 @@ SUB DebugMode
|
||||||
END IF
|
END IF
|
||||||
GOSUB UpdateDisplay
|
GOSUB UpdateDisplay
|
||||||
CASE 15872 'F4
|
CASE 15872 'F4
|
||||||
|
F4:
|
||||||
IF PauseMode = 0 THEN
|
IF PauseMode = 0 THEN
|
||||||
cmd$ = "break"
|
cmd$ = "break"
|
||||||
PauseMode = -1
|
PauseMode = -1
|
||||||
|
@ -6976,12 +7081,14 @@ SUB DebugMode
|
||||||
vWatchPanel.h = totalVisibleVariables + 2
|
vWatchPanel.h = totalVisibleVariables + 2
|
||||||
IF vWatchPanel.h > idewy - 10 THEN vWatchPanel.h = idewy - 10
|
IF vWatchPanel.h > idewy - 10 THEN vWatchPanel.h = idewy - 10
|
||||||
IF vWatchPanel.h < 5 THEN vWatchPanel.h = 5
|
IF vWatchPanel.h < 5 THEN vWatchPanel.h = 5
|
||||||
|
GOTO requestVariableValues
|
||||||
END IF
|
END IF
|
||||||
PCOPY 3, 0: SCREEN , , 3, 0
|
PCOPY 3, 0: SCREEN , , 3, 0
|
||||||
WHILE _MOUSEINPUT: WEND
|
WHILE _MOUSEINPUT: WEND
|
||||||
GOSUB UpdateDisplay
|
GOSUB UpdateDisplay
|
||||||
END IF
|
END IF
|
||||||
CASE 16128 'F5
|
CASE 16128 'F5
|
||||||
|
F5:
|
||||||
requestContinue:
|
requestContinue:
|
||||||
PauseMode = 0
|
PauseMode = 0
|
||||||
debugnextline = 0
|
debugnextline = 0
|
||||||
|
@ -6992,6 +7099,7 @@ SUB DebugMode
|
||||||
GOSUB UpdateDisplay
|
GOSUB UpdateDisplay
|
||||||
dummy = DarkenFGBG(1)
|
dummy = DarkenFGBG(1)
|
||||||
CASE 16384 'F6
|
CASE 16384 'F6
|
||||||
|
F6:
|
||||||
requestStepOut:
|
requestStepOut:
|
||||||
IF PauseMode THEN
|
IF PauseMode THEN
|
||||||
PauseMode = 0
|
PauseMode = 0
|
||||||
|
@ -7002,6 +7110,7 @@ SUB DebugMode
|
||||||
dummy = DarkenFGBG(1)
|
dummy = DarkenFGBG(1)
|
||||||
END IF
|
END IF
|
||||||
CASE 16640 'F7
|
CASE 16640 'F7
|
||||||
|
F7:
|
||||||
requestStepOver:
|
requestStepOver:
|
||||||
IF PauseMode THEN
|
IF PauseMode THEN
|
||||||
cmd$ = "step over"
|
cmd$ = "step over"
|
||||||
|
@ -7012,6 +7121,7 @@ SUB DebugMode
|
||||||
dummy = DarkenFGBG(1)
|
dummy = DarkenFGBG(1)
|
||||||
END IF
|
END IF
|
||||||
CASE 16896 'F8
|
CASE 16896 'F8
|
||||||
|
F8:
|
||||||
IF PauseMode = 0 THEN
|
IF PauseMode = 0 THEN
|
||||||
requestPause:
|
requestPause:
|
||||||
cmd$ = "break"
|
cmd$ = "break"
|
||||||
|
@ -7026,6 +7136,7 @@ SUB DebugMode
|
||||||
setStatusMessage 1, "Paused.", 2
|
setStatusMessage 1, "Paused.", 2
|
||||||
IF IdeDebugMode = 2 THEN RETURN
|
IF IdeDebugMode = 2 THEN RETURN
|
||||||
CASE 17152 'F9
|
CASE 17152 'F9
|
||||||
|
F9:
|
||||||
requestToggleBreakpoint:
|
requestToggleBreakpoint:
|
||||||
IF PauseMode THEN
|
IF PauseMode THEN
|
||||||
IdeBreakpoints(idecy) = NOT IdeBreakpoints(idecy)
|
IdeBreakpoints(idecy) = NOT IdeBreakpoints(idecy)
|
||||||
|
@ -7040,6 +7151,7 @@ SUB DebugMode
|
||||||
GOSUB UpdateDisplay
|
GOSUB UpdateDisplay
|
||||||
END IF
|
END IF
|
||||||
CASE 17408 'F10
|
CASE 17408 'F10
|
||||||
|
F10:
|
||||||
IF _KEYDOWN(100306) OR _KEYDOWN(100305) THEN
|
IF _KEYDOWN(100306) OR _KEYDOWN(100305) THEN
|
||||||
requestUnskipAllLines:
|
requestUnskipAllLines:
|
||||||
REDIM IdeSkipLines(iden) AS _BYTE
|
REDIM IdeSkipLines(iden) AS _BYTE
|
||||||
|
@ -7053,6 +7165,7 @@ SUB DebugMode
|
||||||
END IF
|
END IF
|
||||||
GOSUB UpdateDisplay
|
GOSUB UpdateDisplay
|
||||||
CASE 34304 'F12
|
CASE 34304 'F12
|
||||||
|
F12:
|
||||||
IF PauseMode THEN
|
IF PauseMode THEN
|
||||||
requestCallStack:
|
requestCallStack:
|
||||||
cmd$ = "call stack"
|
cmd$ = "call stack"
|
||||||
|
@ -7087,10 +7200,10 @@ SUB DebugMode
|
||||||
IF callStackLength = -1 THEN
|
IF callStackLength = -1 THEN
|
||||||
callStackLength = 0
|
callStackLength = 0
|
||||||
clearStatusWindow 0
|
clearStatusWindow 0
|
||||||
setStatusMessage 1, "Error retrieving call stack.", 2
|
setStatusMessage 1, "Error retrieving call stack.", 4
|
||||||
ELSEIF callStackLength = 0 THEN
|
ELSEIF callStackLength = 0 THEN
|
||||||
clearStatusWindow 0
|
clearStatusWindow 0
|
||||||
setStatusMessage 1, "No call stack log available.", 2
|
setStatusMessage 1, "No call stack log available.", 4
|
||||||
END IF
|
END IF
|
||||||
END IF
|
END IF
|
||||||
noFocusMessage = NOT noFocusMessage
|
noFocusMessage = NOT noFocusMessage
|
||||||
|
@ -7162,6 +7275,7 @@ SUB DebugMode
|
||||||
|
|
||||||
'request variables
|
'request variables
|
||||||
IF LEN(variableWatchList$) THEN
|
IF LEN(variableWatchList$) THEN
|
||||||
|
requestVariableValues:
|
||||||
temp$ = MID$(variableWatchList$, 5)
|
temp$ = MID$(variableWatchList$, 5)
|
||||||
DO WHILE LEN(temp$)
|
DO WHILE LEN(temp$)
|
||||||
tempIndex& = CVL(LEFT$(temp$, 4))
|
tempIndex& = CVL(LEFT$(temp$, 4))
|
||||||
|
@ -7216,8 +7330,8 @@ SUB DebugMode
|
||||||
CASE "SINGLE": recvData$ = STR$(_CV(SINGLE, recvData$))
|
CASE "SINGLE": recvData$ = STR$(_CV(SINGLE, recvData$))
|
||||||
CASE "DOUBLE": recvData$ = STR$(_CV(DOUBLE, recvData$))
|
CASE "DOUBLE": recvData$ = STR$(_CV(DOUBLE, recvData$))
|
||||||
CASE "_FLOAT": recvData$ = STR$(_CV(_FLOAT, recvData$))
|
CASE "_FLOAT": recvData$ = STR$(_CV(_FLOAT, recvData$))
|
||||||
CASE "_OFFSET": 'TODO
|
CASE "_OFFSET": recvData$ = STR$(_CV(_OFFSET, recvData$))
|
||||||
CASE "_UNSIGNED _OFFSET": 'TODO
|
CASE "_UNSIGNED _OFFSET": recvData$ = STR$(_CV(_UNSIGNED _OFFSET, recvData$))
|
||||||
CASE "STRING"
|
CASE "STRING"
|
||||||
IF sequence% = 1 THEN
|
IF sequence% = 1 THEN
|
||||||
IF LEN(dummy%&) = 8 THEN
|
IF LEN(dummy%&) = 8 THEN
|
||||||
|
@ -7262,7 +7376,7 @@ SUB DebugMode
|
||||||
GOSUB UpdateDisplay
|
GOSUB UpdateDisplay
|
||||||
clearStatusWindow 1
|
clearStatusWindow 1
|
||||||
COLOR , 4
|
COLOR , 4
|
||||||
setStatusMessage 1, "Error occurred on line" + STR$(l), 13
|
setStatusMessage 1, "Error occurred on line" + STR$(l), 15
|
||||||
BypassRequestCallStack = -1
|
BypassRequestCallStack = -1
|
||||||
PauseMode = -1
|
PauseMode = -1
|
||||||
CASE "call stack size"
|
CASE "call stack size"
|
||||||
|
@ -7286,6 +7400,7 @@ SUB DebugMode
|
||||||
END IF
|
END IF
|
||||||
END SELECT
|
END SELECT
|
||||||
|
|
||||||
|
IF _WINDOWHASFOCUS THEN GOSUB UpdateButtons
|
||||||
_LIMIT 100
|
_LIMIT 100
|
||||||
LOOP
|
LOOP
|
||||||
|
|
||||||
|
@ -7326,6 +7441,22 @@ SUB DebugMode
|
||||||
|
|
||||||
PCOPY 3, 0
|
PCOPY 3, 0
|
||||||
RETURN
|
RETURN
|
||||||
|
|
||||||
|
UpdateButtons:
|
||||||
|
FOR i = 1 TO UBOUND(Button)
|
||||||
|
IF mY = Button(i).y AND mX >= Button(i).x AND mX <= Button(i).x + Button(i).w AND _
|
||||||
|
vWatchPanel.draggingPanel = 0 AND vWatchPanel.resizingPanel = 0 THEN
|
||||||
|
COLOR 0, 7
|
||||||
|
temp$ = ""
|
||||||
|
ELSE
|
||||||
|
COLOR 13, 1
|
||||||
|
temp$ = " "
|
||||||
|
END IF
|
||||||
|
_PRINTSTRING (Button(i).x, Button(i).y), Button(i).Caption + temp$
|
||||||
|
NEXT
|
||||||
|
PCOPY 3, 0
|
||||||
|
RETURN
|
||||||
|
|
||||||
END SUB
|
END SUB
|
||||||
|
|
||||||
Function map! (value!, minRange!, maxRange!, newMinRange!, newMaxRange!)
|
Function map! (value!, minRange!, maxRange!, newMinRange!, newMaxRange!)
|
||||||
|
@ -7451,8 +7582,7 @@ FUNCTION idevariablewatchbox(currentScope$)
|
||||||
l$ = l$ + CHR$(16) + " "
|
l$ = l$ + CHR$(16) + " "
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
text$ = usedVariableList(x).name + CHR$(16) + CHR$(2)
|
text$ = usedVariableList(x).name + CHR$(16) + CHR$(2) + " "
|
||||||
IF usedVariableList(x).used = 0 THEN someUnusedVars = -1: text$ = text$ + "*" ELSE text$ = text$ + " "
|
|
||||||
text$ = text$ + SPACE$(maxVarLen - LEN(usedVariableList(x).name))
|
text$ = text$ + SPACE$(maxVarLen - LEN(usedVariableList(x).name))
|
||||||
text$ = text$ + " " + usedVariableList(x).varType + SPACE$(maxTypeLen - LEN(usedVariableList(x).varType))
|
text$ = text$ + " " + usedVariableList(x).varType + SPACE$(maxTypeLen - LEN(usedVariableList(x).varType))
|
||||||
|
|
||||||
|
@ -7481,20 +7611,24 @@ FUNCTION idevariablewatchbox(currentScope$)
|
||||||
IF dialogHeight > idewy + idesubwindow - 6 THEN
|
IF dialogHeight > idewy + idesubwindow - 6 THEN
|
||||||
dialogHeight = idewy + idesubwindow - 6
|
dialogHeight = idewy + idesubwindow - 6
|
||||||
END IF
|
END IF
|
||||||
|
IF dialogHeight < 6 THEN dialogHeight = 6
|
||||||
|
|
||||||
idepar p, idewx - 8, dialogHeight, "Watch List"
|
dialogWidth = 6 + maxModuleNameLen + maxVarLen + maxTypeLen + 20
|
||||||
|
IF dialogWidth < 60 THEN dialogWidth = 60
|
||||||
|
IF dialogWidth > idewx - 8 THEN dialogWidth = idewx - 8
|
||||||
|
|
||||||
|
idepar p, dialogWidth, dialogHeight, "Watch List"
|
||||||
|
|
||||||
i = i + 1: varListBox = i
|
i = i + 1: varListBox = i
|
||||||
o(varListBox).typ = 2
|
o(varListBox).typ = 2
|
||||||
o(varListBox).y = 2
|
o(varListBox).y = 2
|
||||||
o(varListBox).w = idewx - 12: o(i).h = dialogHeight - 4
|
o(varListBox).w = dialogWidth - 4: o(i).h = dialogHeight - 4
|
||||||
o(varListBox).txt = idenewtxt(l$)
|
o(varListBox).txt = idenewtxt(l$)
|
||||||
o(varListBox).sel = 1
|
o(varListBox).sel = 1
|
||||||
o(varListBox).nam = idenewtxt("Variable List (" + LTRIM$(STR$(totalVisibleVariables)) + ")")
|
o(varListBox).nam = idenewtxt("Variable List (" + LTRIM$(STR$(totalVisibleVariables)) + ")")
|
||||||
|
|
||||||
i = i + 1: buttonSet = i
|
i = i + 1: buttonSet = i
|
||||||
o(buttonSet).typ = 3
|
o(buttonSet).typ = 3
|
||||||
o(i).x = p.x + p.w - 45
|
|
||||||
o(buttonSet).y = dialogHeight
|
o(buttonSet).y = dialogHeight
|
||||||
o(buttonSet).txt = idenewtxt("#Add All" + sep + "#Remove All" + sep + "#Close")
|
o(buttonSet).txt = idenewtxt("#Add All" + sep + "#Remove All" + sep + "#Close")
|
||||||
|
|
||||||
|
@ -7526,10 +7660,6 @@ FUNCTION idevariablewatchbox(currentScope$)
|
||||||
|
|
||||||
'-------- custom display changes --------
|
'-------- custom display changes --------
|
||||||
COLOR 0, 7: _PRINTSTRING (p.x + 2, p.y + 1), "Double-click on a variable to add it to the watch list"
|
COLOR 0, 7: _PRINTSTRING (p.x + 2, p.y + 1), "Double-click on a variable to add it to the watch list"
|
||||||
IF someUnusedVars THEN
|
|
||||||
COLOR 2
|
|
||||||
_PRINTSTRING (p.x + 2, p.y + p.h), "* unused"
|
|
||||||
END IF
|
|
||||||
|
|
||||||
'-------- end of custom display changes --------
|
'-------- end of custom display changes --------
|
||||||
|
|
||||||
|
@ -7656,19 +7786,34 @@ FUNCTION idecallstackbox
|
||||||
|
|
||||||
'-------- init --------
|
'-------- init --------
|
||||||
|
|
||||||
i = 0
|
|
||||||
|
|
||||||
dialogHeight = callStackLength + 4
|
dialogHeight = callStackLength + 4
|
||||||
IF dialogHeight > idewy + idesubwindow - 6 THEN
|
IF dialogHeight > idewy + idesubwindow - 6 THEN
|
||||||
dialogHeight = idewy + idesubwindow - 6
|
dialogHeight = idewy + idesubwindow - 6
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
idepar p, idewx - 8, dialogHeight, "$DEBUG MODE"
|
dialogWidth = 52
|
||||||
|
temp$ = callstacklist$
|
||||||
|
DO
|
||||||
|
i = INSTR(temp$, sep)
|
||||||
|
IF i THEN
|
||||||
|
temp2$ = LEFT$(temp$, i - 1)
|
||||||
|
temp$ = MID$(temp$, i + 1)
|
||||||
|
IF LEN(temp2$) + 6 > dialogWidth THEN dialogWidth = LEN(temp2$) + 6
|
||||||
|
ELSE
|
||||||
|
IF LEN(temp$) + 6 > dialogWidth THEN dialogWidth = LEN(temp$) + 6
|
||||||
|
EXIT DO
|
||||||
|
END IF
|
||||||
|
LOOP
|
||||||
|
|
||||||
|
IF dialogWidth > idewx - 8 THEN dialogWidth = idewx - 8
|
||||||
|
|
||||||
|
idepar p, dialogWidth, dialogHeight, "$DEBUG MODE"
|
||||||
|
|
||||||
|
i = 0
|
||||||
i = i + 1
|
i = i + 1
|
||||||
o(i).typ = 2
|
o(i).typ = 2
|
||||||
o(i).y = 2
|
o(i).y = 2
|
||||||
o(i).w = idewx - 12: o(i).h = dialogHeight - 4
|
o(i).w = dialogWidth - 4: o(i).h = dialogHeight - 4
|
||||||
o(i).txt = idenewtxt(callstacklist$)
|
o(i).txt = idenewtxt(callstacklist$)
|
||||||
o(i).sel = callStackLength
|
o(i).sel = callStackLength
|
||||||
o(i).nam = idenewtxt("Call Stack")
|
o(i).nam = idenewtxt("Call Stack")
|
||||||
|
@ -7704,7 +7849,7 @@ FUNCTION idecallstackbox
|
||||||
'-------- end of generic display dialog box & objects --------
|
'-------- end of generic display dialog box & objects --------
|
||||||
|
|
||||||
'-------- custom display changes --------
|
'-------- custom display changes --------
|
||||||
COLOR 0, 7: _PRINTSTRING (p.x + 2, p.y + 1), "These are the most recent sub/function calls in your program:"
|
COLOR 0, 7: _PRINTSTRING (p.x + 2, p.y + 1), "Most recent sub/function calls in your program:"
|
||||||
|
|
||||||
'-------- end of custom display changes --------
|
'-------- end of custom display changes --------
|
||||||
|
|
||||||
|
@ -9035,7 +9180,7 @@ END SUB
|
||||||
|
|
||||||
SUB idegotoline (i)
|
SUB idegotoline (i)
|
||||||
IF idel = i THEN EXIT SUB
|
IF idel = i THEN EXIT SUB
|
||||||
IF i < 1 THEN ERROR 5
|
IF i < 1 THEN i = 1
|
||||||
'scan backwards
|
'scan backwards
|
||||||
IF i < idel THEN
|
IF i < idel THEN
|
||||||
DO
|
DO
|
||||||
|
@ -10619,7 +10764,6 @@ FUNCTION idesubs$
|
||||||
SortedSubsFlag = idesortsubs
|
SortedSubsFlag = idesortsubs
|
||||||
SubClosed = 0
|
SubClosed = 0
|
||||||
|
|
||||||
|
|
||||||
FOR y = 1 TO iden
|
FOR y = 1 TO iden
|
||||||
a$ = idegetline(y)
|
a$ = idegetline(y)
|
||||||
IF SubClosed = 0 THEN ModuleSize = ModuleSize + 1
|
IF SubClosed = 0 THEN ModuleSize = ModuleSize + 1
|
||||||
|
@ -10770,6 +10914,8 @@ FUNCTION idesubs$
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
'build lists
|
'build lists
|
||||||
|
dialogWidth = 50
|
||||||
|
argsLength = 2
|
||||||
FOR x = 1 TO TotalSUBs
|
FOR x = 1 TO TotalSUBs
|
||||||
n$ = SubNames(x)
|
n$ = SubNames(x)
|
||||||
IF LEN(n$) > maxModuleNameLen THEN
|
IF LEN(n$) > maxModuleNameLen THEN
|
||||||
|
@ -10779,6 +10925,7 @@ FUNCTION idesubs$
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
args$ = Args(x)
|
args$ = Args(x)
|
||||||
|
IF LEN(args$) > argsLength THEN argsLength = LEN(args$)
|
||||||
IF LEN(args$) <= (idewx - 41) THEN
|
IF LEN(args$) <= (idewx - 41) THEN
|
||||||
args$ = args$ + SPACE$((idewx - 41) - LEN(args$))
|
args$ = args$ + SPACE$((idewx - 41) - LEN(args$))
|
||||||
ELSE
|
ELSE
|
||||||
|
@ -10843,13 +10990,17 @@ FUNCTION idesubs$
|
||||||
IF dialogHeight > idewy + idesubwindow - 6 THEN
|
IF dialogHeight > idewy + idesubwindow - 6 THEN
|
||||||
dialogHeight = idewy + idesubwindow - 6
|
dialogHeight = idewy + idesubwindow - 6
|
||||||
END IF
|
END IF
|
||||||
idepar p, idewx - 8, dialogHeight, "SUBs"
|
|
||||||
|
IF argsLength + maxModuleNameLen + maxLineCountSpace + 20 > dialogWidth THEN dialogWidth = argsLength + maxModuleNameLen + maxLineCountSpace + 20
|
||||||
|
IF dialogWidth > idewx - 8 THEN dialogWidth = idewx - 8
|
||||||
|
|
||||||
|
idepar p, dialogWidth, dialogHeight, "SUBs"
|
||||||
|
|
||||||
i = i + 1
|
i = i + 1
|
||||||
o(i).typ = 2
|
o(i).typ = 2
|
||||||
o(i).y = 1
|
o(i).y = 1
|
||||||
'68
|
'68
|
||||||
o(i).w = idewx - 12: o(i).h = dialogHeight - 3
|
o(i).w = dialogWidth - 4: o(i).h = dialogHeight - 3
|
||||||
IF SortedSubsFlag = 0 THEN
|
IF SortedSubsFlag = 0 THEN
|
||||||
IF IDESubsLength THEN
|
IF IDESubsLength THEN
|
||||||
o(i).txt = idenewtxt(lSized$)
|
o(i).txt = idenewtxt(lSized$)
|
||||||
|
@ -10903,8 +11054,8 @@ FUNCTION idesubs$
|
||||||
|
|
||||||
i = i + 1
|
i = i + 1
|
||||||
o(i).typ = 3
|
o(i).typ = 3
|
||||||
o(i).x = p.x + p.w - 26
|
|
||||||
o(i).w = 26
|
o(i).w = 26
|
||||||
|
o(i).x = dialogWidth - 22
|
||||||
o(i).y = dialogHeight
|
o(i).y = dialogHeight
|
||||||
IF IdeDebugMode = 0 THEN
|
IF IdeDebugMode = 0 THEN
|
||||||
o(i).txt = idenewtxt("#Edit" + sep + "#Cancel")
|
o(i).txt = idenewtxt("#Edit" + sep + "#Cancel")
|
||||||
|
@ -11125,8 +11276,10 @@ FUNCTION idelanguagebox
|
||||||
|
|
||||||
'generate list of available code pages
|
'generate list of available code pages
|
||||||
l$ = idecpname(1)
|
l$ = idecpname(1)
|
||||||
|
dialogWidth = LEN(l$)
|
||||||
FOR x = 2 TO idecpnum
|
FOR x = 2 TO idecpnum
|
||||||
l$ = l$ + sep + idecpname(x)
|
l$ = l$ + sep + idecpname(x)
|
||||||
|
IF LEN(idecpname(x)) > dialogWidth THEN dialogWidth = LEN(idecpname(x))
|
||||||
NEXT
|
NEXT
|
||||||
l$ = UCASE$(l$)
|
l$ = UCASE$(l$)
|
||||||
|
|
||||||
|
@ -11135,12 +11288,15 @@ FUNCTION idelanguagebox
|
||||||
IF dialogHeight > idewy + idesubwindow - 6 THEN
|
IF dialogHeight > idewy + idesubwindow - 6 THEN
|
||||||
dialogHeight = idewy + idesubwindow - 6
|
dialogHeight = idewy + idesubwindow - 6
|
||||||
END IF
|
END IF
|
||||||
idepar p, idewx - 8, dialogHeight, "Language"
|
IF dialogWidth < 60 THEN dialogWidth = 60
|
||||||
|
IF dialogWidth > idewx - 8 THEN dialogWidth = idewx - 8
|
||||||
|
|
||||||
|
idepar p, dialogWidth, dialogHeight, "Language"
|
||||||
|
|
||||||
i = i + 1
|
i = i + 1
|
||||||
o(i).typ = 2
|
o(i).typ = 2
|
||||||
o(i).y = 2
|
o(i).y = 2
|
||||||
o(i).w = idewx - 12: o(i).h = dialogheight - 4
|
o(i).w = dialogWidth - 4: o(i).h = dialogheight - 4
|
||||||
o(i).txt = idenewtxt(l$)
|
o(i).txt = idenewtxt(l$)
|
||||||
o(i).sel = 1: IF idecpindex THEN o(i).sel = idecpindex
|
o(i).sel = 1: IF idecpindex THEN o(i).sel = idecpindex
|
||||||
o(i).nam = idenewtxt("Code Pages")
|
o(i).nam = idenewtxt("Code Pages")
|
||||||
|
@ -11290,6 +11446,7 @@ FUNCTION idewarningbox
|
||||||
NEXT
|
NEXT
|
||||||
|
|
||||||
'build list
|
'build list
|
||||||
|
dialogWidth = 60
|
||||||
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)
|
||||||
|
@ -11307,6 +11464,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(text$) THEN
|
IF LEN(text$) THEN
|
||||||
l$ = l$ + CHR$(195) + CHR$(196) + l3$ + ": " + text$
|
l$ = l$ + CHR$(195) + CHR$(196) + l3$ + ": " + text$
|
||||||
ELSE
|
ELSE
|
||||||
|
@ -11326,12 +11484,14 @@ FUNCTION idewarningbox
|
||||||
dialogHeight = idewy + idesubwindow - 6
|
dialogHeight = idewy + idesubwindow - 6
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
idepar p, idewx - 8, dialogHeight, "Compilation status"
|
IF dialogWidth > idewx - 8 THEN dialogWidth = idewx - 8
|
||||||
|
|
||||||
|
idepar p, dialogWidth, dialogHeight, "Compilation status"
|
||||||
|
|
||||||
i = i + 1
|
i = i + 1
|
||||||
o(i).typ = 2
|
o(i).typ = 2
|
||||||
o(i).y = 2
|
o(i).y = 2
|
||||||
o(i).w = idewx - 12: o(i).h = dialogHeight - 4
|
o(i).w = dialogWidth - 4: o(i).h = dialogHeight - 4
|
||||||
o(i).txt = idenewtxt(l$)
|
o(i).txt = idenewtxt(l$)
|
||||||
o(i).sel = 1
|
o(i).sel = 1
|
||||||
o(i).nam = idenewtxt("Warnings (" + LTRIM$(STR$(totalWarnings)) + ")")
|
o(i).nam = idenewtxt("Warnings (" + LTRIM$(STR$(totalWarnings)) + ")")
|
||||||
|
@ -12628,7 +12788,8 @@ FUNCTION ideadvancedbox
|
||||||
o(i).y = y
|
o(i).y = y
|
||||||
o(i).nam = idenewtxt("Embed C++ debug information into executable")
|
o(i).nam = idenewtxt("Embed C++ debug information into executable")
|
||||||
o(i).sel = idedebuginfo
|
o(i).sel = idedebuginfo
|
||||||
y = y + 1: Direct_Text$(y) = " " + CHR$(254) + " Investigate crashes/freezes at C++ (not QB64) code level"
|
y = y + 1: Direct_Text$(y) = " " + CHR$(254) + " This setting is not required for $DEBUG mode"
|
||||||
|
y = y + 1: Direct_Text$(y) = " " + CHR$(254) + " Use it to investigate crashes/freezes at C++ (not QB64) code level"
|
||||||
y = y + 1: Direct_Text$(y) = " " + CHR$(254) + " Use internal/temp/debug batch file to debug your executable"
|
y = y + 1: Direct_Text$(y) = " " + CHR$(254) + " Use internal/temp/debug batch file to debug your executable"
|
||||||
y = y + 1: Direct_Text$(y) = " " + CHR$(254) + " Increases executable size"
|
y = y + 1: Direct_Text$(y) = " " + CHR$(254) + " Increases executable size"
|
||||||
y = y + 1: Direct_Text$(y) = " " + CHR$(254) + " Makes public the names of variables in your program's code"
|
y = y + 1: Direct_Text$(y) = " " + CHR$(254) + " Makes public the names of variables in your program's code"
|
||||||
|
@ -12737,42 +12898,12 @@ FUNCTION ideadvancedbox
|
||||||
WriteConfigSetting generalSettingsSection$, "DebugInfo", "False" + DebugInfoIniWarning$
|
WriteConfigSetting generalSettingsSection$, "DebugInfo", "False" + DebugInfoIniWarning$
|
||||||
END IF
|
END IF
|
||||||
Include_GDB_Debugging_Info = idedebuginfo
|
Include_GDB_Debugging_Info = idedebuginfo
|
||||||
IF os$ = "WIN" THEN
|
purgeprecompiledcontent
|
||||||
CHDIR "internal\c"
|
|
||||||
SHELL _HIDE "cmd /c purge_all_precompiled_content_win.bat"
|
|
||||||
CHDIR "..\.."
|
|
||||||
END IF
|
|
||||||
IF os$ = "LNX" THEN
|
|
||||||
CHDIR "./internal/c"
|
|
||||||
|
|
||||||
IF INSTR(_OS$, "[MACOSX]") THEN
|
|
||||||
SHELL _HIDE "./purge_all_precompiled_content_osx.command"
|
|
||||||
ELSE
|
|
||||||
SHELL _HIDE "./purge_all_precompiled_content_lnx.sh"
|
|
||||||
END IF
|
|
||||||
CHDIR "../.."
|
|
||||||
END IF
|
|
||||||
idechangemade = 1 'force recompilation
|
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
'...
|
|
||||||
|
|
||||||
|
|
||||||
EXIT FUNCTION
|
EXIT FUNCTION
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
'end of custom controls
|
'end of custom controls
|
||||||
|
|
||||||
mousedown = 0
|
mousedown = 0
|
||||||
|
@ -15023,13 +15154,22 @@ FUNCTION iderecentbox$
|
||||||
|
|
||||||
|
|
||||||
l$ = ""
|
l$ = ""
|
||||||
|
dialogWidth = 72
|
||||||
|
totalRecent = 0
|
||||||
fh = FREEFILE
|
fh = FREEFILE
|
||||||
OPEN ".\internal\temp\recent.bin" FOR BINARY AS #fh: a$ = SPACE$(LOF(fh)): GET #fh, , a$
|
OPEN ".\internal\temp\recent.bin" FOR BINARY AS #fh: a$ = SPACE$(LOF(fh)): GET #fh, , a$
|
||||||
a$ = RIGHT$(a$, LEN(a$) - 2)
|
a$ = RIGHT$(a$, LEN(a$) - 2)
|
||||||
|
REDIM tempList$(100)
|
||||||
DO WHILE LEN(a$)
|
DO WHILE LEN(a$)
|
||||||
ai = INSTR(a$, CRLF)
|
ai = INSTR(a$, CRLF)
|
||||||
IF ai THEN
|
IF ai THEN
|
||||||
f$ = LEFT$(a$, ai - 1): IF ai = LEN(a$) - 1 THEN a$ = "" ELSE a$ = RIGHT$(a$, LEN(a$) - ai - 3)
|
f$ = LEFT$(a$, ai - 1): IF ai = LEN(a$) - 1 THEN a$ = "" ELSE a$ = RIGHT$(a$, LEN(a$) - ai - 3)
|
||||||
|
IF LEN(f$) + 6 > dialogWidth THEN dialogWidth = LEN(f$) + 6
|
||||||
|
totalRecent = totalRecent + 1
|
||||||
|
IF totalRecent > UBOUND(tempList$) THEN
|
||||||
|
REDIM _PRESERVE tempList$(UBOUND(tempList$) + 100)
|
||||||
|
END IF
|
||||||
|
tempList$(totalRecent) = f$
|
||||||
IF LEN(l$) THEN l$ = l$ + sep + f$ ELSE l$ = f$
|
IF LEN(l$) THEN l$ = l$ + sep + f$ ELSE l$ = f$
|
||||||
END IF
|
END IF
|
||||||
LOOP
|
LOOP
|
||||||
|
@ -15037,21 +15177,27 @@ FUNCTION iderecentbox$
|
||||||
|
|
||||||
'72,19
|
'72,19
|
||||||
i = 0
|
i = 0
|
||||||
idepar p, idewx - 8, idewy + idesubwindow - 6, "Open"
|
dialogHeight = (totalRecent) + 3
|
||||||
|
IF dialogHeight > idewy + idesubwindow - 6 THEN
|
||||||
|
dialogHeight = idewy + idesubwindow - 6
|
||||||
|
END IF
|
||||||
|
|
||||||
|
IF dialogWidth > idewx - 8 THEN dialogWidth = idewx - 8
|
||||||
|
idepar p, dialogWidth, dialogHeight, "Open"
|
||||||
|
|
||||||
i = i + 1
|
i = i + 1
|
||||||
o(i).typ = 2
|
o(i).typ = 2
|
||||||
o(i).y = 1
|
o(i).y = 1
|
||||||
'68
|
'68
|
||||||
o(i).w = idewx - 12: o(i).h = idewy + idesubwindow - 9
|
o(i).w = dialogWidth - 4: o(i).h = dialogHeight - 3
|
||||||
o(i).txt = idenewtxt(l$)
|
o(i).txt = idenewtxt(l$)
|
||||||
o(i).sel = 1
|
o(i).sel = 1
|
||||||
o(i).nam = idenewtxt("Recent Programs")
|
o(i).nam = idenewtxt("Recent Programs")
|
||||||
|
|
||||||
i = i + 1
|
i = i + 1
|
||||||
o(i).typ = 3
|
o(i).typ = 3
|
||||||
o(i).y = idewy + idesubwindow - 6
|
o(i).y = dialogHeight
|
||||||
o(i).txt = idenewtxt("#OK" + sep + "#Cancel" + sep + "Clear #list" + sep + "#Remove broken links")
|
o(i).txt = idenewtxt("#Open" + sep + "#Cancel" + sep + "Clear #list" + sep + "#Remove broken links")
|
||||||
o(i).dft = 1
|
o(i).dft = 1
|
||||||
|
|
||||||
'-------- end of init --------
|
'-------- end of init --------
|
||||||
|
@ -15133,7 +15279,7 @@ FUNCTION iderecentbox$
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
IF (K$ = CHR$(13) AND focus = 1) OR (focus = 2 AND info <> 0) OR (info = 1 AND focus = 1) THEN
|
IF (K$ = CHR$(13) AND focus = 1) OR (focus = 2 AND info <> 0) OR (info = 1 AND focus = 1) THEN
|
||||||
f$ = idetxt(o(1).stx)
|
f$ = tempList$(ABS(o(1).sel))
|
||||||
iderecentbox$ = f$
|
iderecentbox$ = f$
|
||||||
EXIT FUNCTION
|
EXIT FUNCTION
|
||||||
END IF
|
END IF
|
||||||
|
@ -15246,6 +15392,8 @@ SUB IdeMakeContextualMenu
|
||||||
menu$(m, i) = "-": i = i + 1
|
menu$(m, i) = "-": i = i + 1
|
||||||
menu$(m, i) = "SUBs... F2": i = i + 1
|
menu$(m, i) = "SUBs... F2": i = i + 1
|
||||||
menuDesc$(m, i - 1) = "Displays a list of SUB/FUNCTION procedures"
|
menuDesc$(m, i - 1) = "Displays a list of SUB/FUNCTION procedures"
|
||||||
|
menu$(m, i) = "#Watch List... F4": i = i + 1
|
||||||
|
menuDesc$(m, i - 1) = "Adds variables to watch list"
|
||||||
menu$(m, i) = "Call Stack... F12": i = i + 1
|
menu$(m, i) = "Call Stack... F12": i = i + 1
|
||||||
menuDesc$(m, i - 1) = "Displays the call stack of the current program's execution"
|
menuDesc$(m, i - 1) = "Displays the call stack of the current program's execution"
|
||||||
menu$(m, i) = "-": i = i + 1
|
menu$(m, i) = "-": i = i + 1
|
||||||
|
@ -16950,3 +17098,22 @@ FUNCTION isnumber (__a$)
|
||||||
END FUNCTION
|
END FUNCTION
|
||||||
|
|
||||||
'$INCLUDE:'wiki\wiki_methods.bas'
|
'$INCLUDE:'wiki\wiki_methods.bas'
|
||||||
|
|
||||||
|
SUB purgeprecompiledcontent
|
||||||
|
IF os$ = "WIN" THEN
|
||||||
|
CHDIR "internal\c"
|
||||||
|
SHELL _HIDE "cmd /c purge_all_precompiled_content_win.bat"
|
||||||
|
CHDIR "..\.."
|
||||||
|
END IF
|
||||||
|
IF os$ = "LNX" THEN
|
||||||
|
CHDIR "./internal/c"
|
||||||
|
|
||||||
|
IF INSTR(_OS$, "[MACOSX]") THEN
|
||||||
|
SHELL _HIDE "./purge_all_precompiled_content_osx.command"
|
||||||
|
ELSE
|
||||||
|
SHELL _HIDE "./purge_all_precompiled_content_lnx.sh"
|
||||||
|
END IF
|
||||||
|
CHDIR "../.."
|
||||||
|
END IF
|
||||||
|
idechangemade = 1 'force recompilation
|
||||||
|
END SUB
|
||||||
|
|
|
@ -348,6 +348,19 @@ SUB WikiParse (a$)
|
||||||
GOTO Special
|
GOTO Special
|
||||||
END IF
|
END IF
|
||||||
|
|
||||||
|
s$ = "<nowiki>"
|
||||||
|
IF c$(LEN(s$)) = s$ THEN
|
||||||
|
i = i + LEN(s$) - 1
|
||||||
|
GOTO Special
|
||||||
|
END IF
|
||||||
|
|
||||||
|
s$ = "</nowiki>"
|
||||||
|
IF c$(LEN(s$)) = s$ THEN
|
||||||
|
i = i + LEN(s$) - 1
|
||||||
|
GOTO Special
|
||||||
|
END IF
|
||||||
|
|
||||||
|
|
||||||
s$ = "<p style="
|
s$ = "<p style="
|
||||||
IF c$(LEN(s$)) = s$ THEN
|
IF c$(LEN(s$)) = s$ THEN
|
||||||
i = i + LEN(s$) - 1
|
i = i + LEN(s$) - 1
|
||||||
|
|
|
@ -3440,7 +3440,7 @@ DO
|
||||||
inclinenump$ = inclinenump$ + "," + CHR$(34) + thisincname$ + CHR$(34)
|
inclinenump$ = inclinenump$ + "," + CHR$(34) + thisincname$ + CHR$(34)
|
||||||
END IF
|
END IF
|
||||||
IF NoChecks = 0 THEN
|
IF NoChecks = 0 THEN
|
||||||
IF vWatchOn THEN temp$ = vWatchErrorCall$ ELSE temp$ = ""
|
IF vWatchOn AND inclinenumber(inclevel) = 0 THEN temp$ = vWatchErrorCall$ ELSE temp$ = ""
|
||||||
PRINT #12, "if(qbevent){" + temp$ + "evnt(" + str2$(linenumber) + inclinenump$ + ");r=0;}"
|
PRINT #12, "if(qbevent){" + temp$ + "evnt(" + str2$(linenumber) + inclinenump$ + ");r=0;}"
|
||||||
END IF
|
END IF
|
||||||
IF n = 1 THEN GOTO finishednonexec
|
IF n = 1 THEN GOTO finishednonexec
|
||||||
|
@ -3501,7 +3501,7 @@ DO
|
||||||
inclinenump$ = inclinenump$ + "," + CHR$(34) + thisincname$ + CHR$(34)
|
inclinenump$ = inclinenump$ + "," + CHR$(34) + thisincname$ + CHR$(34)
|
||||||
END IF
|
END IF
|
||||||
IF NoChecks = 0 THEN
|
IF NoChecks = 0 THEN
|
||||||
IF vWatchOn THEN temp$ = vWatchErrorCall$ ELSE temp$ = ""
|
IF vWatchOn AND inclinenumber(inclevel) = 0 THEN temp$ = vWatchErrorCall$ ELSE temp$ = ""
|
||||||
PRINT #12, "if(qbevent){" + temp$ + "evnt(" + str2$(linenumber) + inclinenump$ + ");r=0;}"
|
PRINT #12, "if(qbevent){" + temp$ + "evnt(" + str2$(linenumber) + inclinenump$ + ");r=0;}"
|
||||||
END IF
|
END IF
|
||||||
entireline$ = RIGHT$(entireline$, LEN(entireline$) - x3): u$ = UCASE$(entireline$)
|
entireline$ = RIGHT$(entireline$, LEN(entireline$) - x3): u$ = UCASE$(entireline$)
|
||||||
|
@ -8879,7 +8879,7 @@ DO
|
||||||
thisincname$ = MID$(incname$(inclevel), LEN(thisincname$) + 1)
|
thisincname$ = MID$(incname$(inclevel), LEN(thisincname$) + 1)
|
||||||
inclinenump$ = inclinenump$ + "," + CHR$(34) + thisincname$ + CHR$(34)
|
inclinenump$ = inclinenump$ + "," + CHR$(34) + thisincname$ + CHR$(34)
|
||||||
END IF
|
END IF
|
||||||
IF vWatchOn THEN temp$ = vWatchErrorCall$ ELSE temp$ = ""
|
IF vWatchOn AND inclinenumber(inclevel) = 0 THEN temp$ = vWatchErrorCall$ ELSE temp$ = ""
|
||||||
PRINT #12, "if(qbevent){" + temp$ + "evnt(" + str2$(linenumber) + inclinenump$ + ");}" 'non-resumable error check (cannot exit without handling errors)
|
PRINT #12, "if(qbevent){" + temp$ + "evnt(" + str2$(linenumber) + inclinenump$ + ");}" 'non-resumable error check (cannot exit without handling errors)
|
||||||
PRINT #12, "exit_code=" + e$ + ";"
|
PRINT #12, "exit_code=" + e$ + ";"
|
||||||
l$ = l$ + sp + l2$
|
l$ = l$ + sp + l2$
|
||||||
|
@ -8903,7 +8903,7 @@ DO
|
||||||
thisincname$ = MID$(incname$(inclevel), LEN(thisincname$) + 1)
|
thisincname$ = MID$(incname$(inclevel), LEN(thisincname$) + 1)
|
||||||
inclinenump$ = inclinenump$ + "," + CHR$(34) + thisincname$ + CHR$(34)
|
inclinenump$ = inclinenump$ + "," + CHR$(34) + thisincname$ + CHR$(34)
|
||||||
END IF
|
END IF
|
||||||
IF vWatchOn = 1 AND NoChecks = 0 THEN temp$ = vWatchErrorCall$ ELSE temp$ = ""
|
IF vWatchOn = 1 AND NoChecks = 0 AND inclinenumber(inclevel) = 0 THEN temp$ = vWatchErrorCall$ ELSE temp$ = ""
|
||||||
PRINT #12, "if(qbevent){" + temp$ + "evnt(" + str2$(linenumber) + inclinenump$ + ");}" 'non-resumable error check (cannot exit without handling errors)
|
PRINT #12, "if(qbevent){" + temp$ + "evnt(" + str2$(linenumber) + inclinenump$ + ");}" 'non-resumable error check (cannot exit without handling errors)
|
||||||
PRINT #12, "exit_code=" + e$ + ";"
|
PRINT #12, "exit_code=" + e$ + ";"
|
||||||
l$ = l$ + sp + l2$
|
l$ = l$ + sp + l2$
|
||||||
|
@ -8911,8 +8911,10 @@ DO
|
||||||
|
|
||||||
|
|
||||||
IF vWatchOn = 1 THEN
|
IF vWatchOn = 1 THEN
|
||||||
vWatchAddLabel linenumber, 0
|
IF inclinenumber(inclevel) = 0 THEN
|
||||||
PRINT #12, "*__LONG_VWATCH_LINENUMBER= 0; SUB_VWATCH((ptrszint*)vwatch_global_vars,(ptrszint*)vwatch_local_vars); if (*__LONG_VWATCH_GOTO>0) goto VWATCH_SETNEXTLINE; if (*__LONG_VWATCH_GOTO<0) goto VWATCH_SKIPLINE;"
|
vWatchAddLabel linenumber, 0
|
||||||
|
END IF
|
||||||
|
PRINT #12, "*__LONG_VWATCH_LINENUMBER= 0; SUB_VWATCH((ptrszint*)vwatch_global_vars,(ptrszint*)vwatch_local_vars);"
|
||||||
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;"
|
||||||
|
@ -11191,7 +11193,7 @@ DO
|
||||||
inclinenump$ = inclinenump$ + "," + CHR$(34) + thisincname$ + CHR$(34)
|
inclinenump$ = inclinenump$ + "," + CHR$(34) + thisincname$ + CHR$(34)
|
||||||
END IF
|
END IF
|
||||||
IF NoChecks = 0 THEN
|
IF NoChecks = 0 THEN
|
||||||
IF vWatchOn THEN temp$ = vWatchErrorCall$ ELSE temp$ = ""
|
IF vWatchOn AND inclinenumber(inclevel) = 0 THEN temp$ = vWatchErrorCall$ ELSE temp$ = ""
|
||||||
IF dynscope THEN
|
IF dynscope THEN
|
||||||
dynscope = 0
|
dynscope = 0
|
||||||
PRINT #12, "if(qbevent){" + temp$ + "evnt(" + str2$(linenumber) + inclinenump$ + ");if(r)goto S_" + str2$(statementn) + ";}"
|
PRINT #12, "if(qbevent){" + temp$ + "evnt(" + str2$(linenumber) + inclinenump$ + ");if(r)goto S_" + str2$(statementn) + ";}"
|
||||||
|
@ -22803,6 +22805,7 @@ END FUNCTION
|
||||||
|
|
||||||
SUB xend
|
SUB xend
|
||||||
IF vWatchOn = 1 THEN
|
IF vWatchOn = 1 THEN
|
||||||
|
'check if closedmain = 0 in case a main module ends in an include.
|
||||||
IF (inclinenumber(inclevel) = 0 OR closedmain = 0) THEN vWatchAddLabel 0, -1
|
IF (inclinenumber(inclevel) = 0 OR closedmain = 0) THEN vWatchAddLabel 0, -1
|
||||||
PRINT #12, "*__LONG_VWATCH_LINENUMBER= 0; SUB_VWATCH((ptrszint*)vwatch_global_vars,(ptrszint*)vwatch_local_vars);"
|
PRINT #12, "*__LONG_VWATCH_LINENUMBER= 0; SUB_VWATCH((ptrszint*)vwatch_global_vars,(ptrszint*)vwatch_local_vars);"
|
||||||
END IF
|
END IF
|
||||||
|
|
|
@ -404,7 +404,7 @@ id.args = 1
|
||||||
id.arg = MKL$(LONGTYPE - ISPOINTER)
|
id.arg = MKL$(LONGTYPE - ISPOINTER)
|
||||||
id.ret = STRINGTYPE - ISPOINTER
|
id.ret = STRINGTYPE - ISPOINTER
|
||||||
id.specialformat = "[?]"
|
id.specialformat = "[?]"
|
||||||
id.hr_syntax = "_DEVICE$(device_number)
|
id.hr_syntax = "_DEVICE$(device_number)"
|
||||||
regid
|
regid
|
||||||
|
|
||||||
clearid
|
clearid
|
||||||
|
@ -415,7 +415,7 @@ id.args = 1
|
||||||
id.arg = MKL$(LONGTYPE - ISPOINTER)
|
id.arg = MKL$(LONGTYPE - ISPOINTER)
|
||||||
id.ret = LONGTYPE - ISPOINTER
|
id.ret = LONGTYPE - ISPOINTER
|
||||||
id.specialformat = "[?]"
|
id.specialformat = "[?]"
|
||||||
id.hr_syntax = "_DEVICEINPUT or _DEVICEINPUT(device_number%)
|
id.hr_syntax = "_DEVICEINPUT or _DEVICEINPUT(device_number%)"
|
||||||
regid
|
regid
|
||||||
|
|
||||||
clearid
|
clearid
|
||||||
|
@ -664,7 +664,7 @@ id.args = 4
|
||||||
id.arg = MKL$(LONGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
|
id.arg = MKL$(LONGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
|
||||||
id.specialformat = "[?,?,?,?]"
|
id.specialformat = "[?,?,?,?]"
|
||||||
id.ret = LONGTYPE - ISPOINTER
|
id.ret = LONGTYPE - ISPOINTER
|
||||||
id.hr_syntax = "_SCREENIMAGE(column1, row1, column2, row2)
|
id.hr_syntax = "_SCREENIMAGE(column1, row1, column2, row2)"
|
||||||
regid
|
regid
|
||||||
|
|
||||||
|
|
||||||
|
@ -1084,7 +1084,7 @@ id.args = 2
|
||||||
id.arg = MKL$(LONGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
|
id.arg = MKL$(LONGTYPE - ISPOINTER) + MKL$(LONGTYPE - ISPOINTER)
|
||||||
id.specialformat = "?[,?]"
|
id.specialformat = "?[,?]"
|
||||||
id.ret = LONGTYPE - ISPOINTER
|
id.ret = LONGTYPE - ISPOINTER
|
||||||
id.hr_syntax = "_COPYIMAGE[(imageHandle&[, mode])]
|
id.hr_syntax = "_COPYIMAGE[(imageHandle&[, mode])]"
|
||||||
regid
|
regid
|
||||||
|
|
||||||
'IMAGE SELECTION
|
'IMAGE SELECTION
|
||||||
|
@ -2410,7 +2410,7 @@ id.args = 7
|
||||||
id.arg = MKL$(FLOATTYPE - ISPOINTER) + MKL$(FLOATTYPE - ISPOINTER) + MKL$(FLOATTYPE - ISPOINTER) + MKL$(ULONGTYPE - ISPOINTER) + MKL$(FLOATTYPE - ISPOINTER) + MKL$(FLOATTYPE - ISPOINTER) + MKL$(FLOATTYPE - ISPOINTER)
|
id.arg = MKL$(FLOATTYPE - ISPOINTER) + MKL$(FLOATTYPE - ISPOINTER) + MKL$(FLOATTYPE - ISPOINTER) + MKL$(ULONGTYPE - ISPOINTER) + MKL$(FLOATTYPE - ISPOINTER) + MKL$(FLOATTYPE - ISPOINTER) + MKL$(FLOATTYPE - ISPOINTER)
|
||||||
id.specialformat = "[{Step}](?,?),?[,[?][,[?][,[?][,?]]]]"
|
id.specialformat = "[{Step}](?,?),?[,[?][,[?][,[?][,?]]]]"
|
||||||
'CIRCLE [STEP] (x!,y!),radius![,[color&] [,[start!] [,[end!] [,aspect!]]]]
|
'CIRCLE [STEP] (x!,y!),radius![,[color&] [,[start!] [,[end!] [,aspect!]]]]
|
||||||
id.hr_syntax = "CIRCLE [STEP] (x!, y!), radius![, [color&] [, [start!] [, [end!] [, aspect!]]]]
|
id.hr_syntax = "CIRCLE [STEP] (x!, y!), radius![, [color&] [, [start!] [, [end!] [, aspect!]]]]"
|
||||||
regid
|
regid
|
||||||
|
|
||||||
clearid
|
clearid
|
||||||
|
|
Loading…
Reference in a new issue