Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # switch to a read interface
- set ::doingRefresh 1 ;# set to 1 while refreshing variables
- serialevent readable {}
- dprintf "\nVariable values loading (could take a while if many vars/big arrays exist - standby)..." ;# tweak
- .symbols.text delete 1.0 end
- set count 0
- set textcolor ""
- foreach varEntry $variableList {
- if {[lsearch {CODE SFUNCT FFUNCT WFUNCT SUB} [lindex $varEntry 1]] >= 0} continue
- set varAddr [lindex $varEntry 0]
- #preformatting with spaces was a cute idea, but this is a little endian so have to reverse it anyway
- set varName [lindex $varEntry 2]
- # set varName [string range $varName 0 15]
- set varName [format "%-$nameWidth" $varName]
- set varSize [lindex $varEntry 3]
- set varType [lindex $varEntry 1]
- if {$varType == "WORD"} {
- set memData [refGetWord $varAddr]
- .symbols.text insert end [format "$varName &H%s %d\n" $memData [expr 0x$memData]] $textcolor
- } elseif {$varType == "SINGLE"} {
- set memData [refGetWord $varAddr]
- .symbols.text insert end [format "$varName %f\n" [calcSingle [expr 0x$memData]]] $textcolor
- } elseif {($varType == "INTPTR") || ($varType == "SNGLPTR")} {
- set memData [refGetWord $varAddr]
- .symbols.text insert end "$varName &H$memData\n" $textcolor
- } elseif {$varType == "PARRAY"} {
- set numElem [expr 0x[refGetWord [expr $varAddr + 60]]]
- .symbols.text insert end "$varName \[$numElem\] " $textcolor
- for {set i 0} {$i <= $numElem} {incr i} {
- set mmData [expr 0x[refGetWord [expr $varAddr + ($i * 4)]]]
- # puts "[expr $varAddr + ($i * 4)] $mmData"
- .symbols.text insert end "$mmData " $textcolor
- }
- .symbols.text insert end "\n" $textcolor
- } elseif {$varType == "STRING"} {
- .symbols.text insert end "$varName \"" $textcolor
- for {set i 0} {$i < $varSize} {incr i} {
- set word [refGetWord [expr $varAddr + ($i * 4)]]
- set byte0 0x[string range $word 6 7]
- set byte1 0x[string range $word 4 5]
- set byte2 0x[string range $word 2 3]
- set byte3 0x[string range $word 0 1]
- if {$byte0 == 0} {
- break
- }
- if {$byte1 == 0} {
- .symbols.text insert end [format "%c" $byte0] $textcolor
- break
- }
- if {$byte2 == 0} {
- .symbols.text insert end [format "%c%c" $byte0 $byte1] $textcolor
- break
- }
- if {$byte3 == 0} {
- .symbols.text insert end [format "%c%c%c" $byte0 $byte1 $byte2] $textcolor
- break
- }
- .symbols.text insert end [format "%c%c%c%c" $byte0 $byte1 $byte2 $byte3] $textcolor
- }
- # set varSize $i
- .symbols.text insert end "\" " $textcolor
- for {set i 0} {$i < $varSize} {incr i} {
- set word [refGetWord [expr $varAddr + ($i * 4)]]
- .symbols.text insert end [string range $word 6 7] $textcolor
- .symbols.text insert end [string range $word 4 5] $textcolor
- .symbols.text insert end [string range $word 2 3] $textcolor
- .symbols.text insert end "[string range $word 0 1] " $textcolor
- if {$i > 8} break
- }
- .symbols.text insert end "\n" $textcolor
- } elseif {$varType == "ARRAY"} {
- .symbols.text insert end "$varName " $textcolor
- for {set i 0} {$i < $varSize} {incr i} {
- set memData [refGetWord [expr $varAddr + ($i * 4)]]
- .symbols.text insert end [format "%10d" [expr 0x$memData]] $textcolor
- if {$i % 8 == 7} { .symbols.text insert end "\n" $textcolor }
- }
- .symbols.text insert end "\n" $textcolor
- } elseif {$varType == "FARRAY"} {
- .symbols.text insert end "$varName " $textcolor
- for {set i 0} {$i < $varSize} {incr i} {
- set memData [refGetWord [expr $varAddr + ($i * 4)]]
- .symbols.text insert end [format "%f " [calcSingle [expr 0x$memData]]] $textcolor
- if {$i % 8 == 7} { .symbols.text insert end "\n" $textcolor }
- }
- .symbols.text insert end "\n" $textcolor
- # other values skipped -- like FUNCTION
- } else {
- continue
- }
- incr count
- if {$count >3} {
- if {$textcolor == "" } {set textcolor "colorGRAY"
- } else {set textcolor ""}
- set count 0
- }
- }
- serialevent readable getUSB_SER
- set ::doingRefresh 0 ;# set to 1 while refreshing variables
- dprintf "Variable values finished loading. :)\n" ;# tweak
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement