set c [read $p 1]
binary scan $c c* d
if {![llength $d]} { error "comms eof" }
- lappend l $d
+ lappend l [expr {$d & 0x0ff}]
incr n -1
}
return $l
selectslave_slave $slave
}
-proc xmit_s {b} {
+proc xmit_slave {slave b} {
xmit "$b | 0x80"
- selectslave_s
+ selectslave_slave $slave
recv 1
}
+proc xmit_s {b} {
+ global slave
+ xmit_slave $slave $b
+}
+
proc pause {t} {
global pause_var
catch { unset pause_var }
proc p {s} { puts -nonewline $s }
-proc ms_reset {arg} {
+proc reset_s {val min max} {
+ for {set slave $min} {$slave < $max} {incr slave} {
+ xmit_slave $slave $val
+ }
+}
+
+proc reset_m {arg} {
if {[regexp {^(\d+)\.(\d+)} $arg min max]} {
} elseif {[regexp {^(\d+)} $arg max]} {
set min 1
error "--reset arg $arg wrong"
}
setup_m
- xmit 0x89
- for {set slave $min} {$slave < $max} {incr slave} {
- selectslave_slave $slave
- recv 1
- }
+ reset_s 0x00 $min $max
+ reset_s 0x00 $min $max
+ reset_s 0x09 $min $max
xmit 0x09
}
fconfigure stdout -buffering none
if {![string compare reset $map]} {
- ms_reset $picno
+ reset_m $slave
+ exit 0
}
set m [open $map]
set sv symbolsbylockind($lockind)
} else {
set sv symbols
+ set smap($sym) $addr
}
lappend $sv [list $addr $sym]
} elseif {$inblk==3} {
#lappend sections {0x00000f60 {==========SFRs,ACS===========} 0}
lappend sections [list 0x1000 =END= 0]
-foreach tosort {sections symbols symbolsbylockind(program)} {
- set $tosort [lsort [set $tosort]]
-}
-
-addendlast symbolsbylockind(program) 0x8000 (end)
+proc sortthings {} {
+ foreach tosort {sections symbols symbolsbylockind(program)} {
+ upvar #0 $tosort ts
+ set ts [lsort [set ts]]
+ }
+}
set readcursor -1
set ms [expr {
}
}
+if {[info exists smap(misc:\ debugp)] && [info exists smap(misc:\ debug)]} {
+ set debugpval [readbytes $smap(misc:\ debugp) 1]
+# puts y1-$debugpval
+# puts y2-$smap(misc:\ debug)
+ set debugpaddr [format 0x%08x [expr {$debugpval+$smap(misc:\ debug)}]]
+# puts y3-$debugpaddr
+ lappend symbols [list $debugpaddr [list "" (debugp)]]
+}
+
+sortthings
+addendlast symbolsbylockind(program) 0x8000 (end)
+
set stkptr {panic: psave_stkptr}
set stack {panic: panic_stack}