26 |
# |
# |
27 |
|
|
28 |
proc tic80_load { dest prog args } { |
proc tic80_load { dest prog args } { |
29 |
set dos_box [board_info $dest dos_host]; |
set dos_box [board_info $dest dos_host] |
30 |
|
|
31 |
remote_spawn $dos_box [board_info $dest io_program]; |
remote_spawn $dos_box [board_info $dest io_program] |
32 |
|
|
33 |
set status [remote_ld $dest $prog]; |
set status [remote_ld $dest $prog] |
34 |
|
|
35 |
if { $status != "pass" } { |
if { $status != "pass" } { |
36 |
return $status; |
return $status |
37 |
} |
} |
38 |
|
|
39 |
set result [remote_wait $dos_box 300]; |
set result [remote_wait $dos_box 300] |
40 |
set output [lindex $result 1]; |
set output [lindex $result 1] |
41 |
if { [lindex $result 0] < 0 } { |
if { [lindex $result 0] < 0 } { |
42 |
if [board_info $dos_box exists fileid] { |
if [board_info $dos_box exists fileid] { |
43 |
dos_interrupt_job $dos_box; |
dos_interrupt_job $dos_box |
44 |
} else { |
} else { |
45 |
remote_close $dos_box; |
remote_close $dos_box |
46 |
} |
} |
47 |
} |
} |
48 |
|
|
49 |
set status "fail"; |
set status "fail" |
50 |
regsub "(\\*\\*\\* EXIT code \[0-9\]+\[\r\n]+).*$" "$output" "\\1" output; |
regsub "(\\*\\*\\* EXIT code \[0-9\]+\[\r\n]+).*$" "$output" "\\1" output |
51 |
verbose "board out is $output"; |
verbose "board out is $output" |
52 |
set bstatus [check_for_board_status output]; |
set bstatus [check_for_board_status output] |
53 |
if { [lindex $result 0] >= 0 } { |
if { [lindex $result 0] >= 0 } { |
54 |
if { $bstatus == 0 } { |
if { $bstatus == 0 } { |
55 |
set status "pass"; |
set status "pass" |
56 |
} |
} |
57 |
} |
} |
58 |
remote_file build delete "a.fix"; |
remote_file build delete "a.fix" |
59 |
return [list $status $output]; |
return [list $status $output] |
60 |
} |
} |
61 |
|
|
62 |
proc tic80_ld { dest prog } { |
proc tic80_ld { dest prog } { |
63 |
set dos_box [board_info $dest dos_host]; |
set dos_box [board_info $dest dos_host] |
64 |
set dopush 0; |
set dopush 0 |
65 |
|
|
66 |
if { [remote_swap_conn $dos_box] == "fail" } { |
if { [remote_swap_conn $dos_box] == "fail" } { |
67 |
if { [remote_push_conn $dos_box] == "fail" } { |
if { [remote_push_conn $dos_box] == "fail" } { |
68 |
set dopush 1; |
set dopush 1 |
69 |
} |
} |
70 |
remote_open $dos_box; |
remote_open $dos_box |
71 |
} |
} |
72 |
set prog [remote_download $dos_box $prog "a.fix"]; |
set prog [remote_download $dos_box $prog "a.fix"] |
73 |
|
|
74 |
remote_spawn $dos_box "[board_info $dest start_program] $prog"; |
remote_spawn $dos_box "[board_info $dest start_program] $prog" |
75 |
remote_expect $dos_box 10 { |
remote_expect $dos_box 10 { |
76 |
-re "file\[(\]s\[)\] copied" {} |
-re "file\[(\]s\[)\] copied" {} |
77 |
} |
} |
78 |
sleep 3; |
sleep 3 |
79 |
dos_interrupt_job $dos_box; |
dos_interrupt_job $dos_box |
80 |
if { $dopush } { |
if { $dopush } { |
81 |
remote_push_conn $dos_box; |
remote_push_conn $dos_box |
82 |
} else { |
} else { |
83 |
remote_swap_conn $dos_box; |
remote_swap_conn $dos_box |
84 |
} |
} |
85 |
return "pass"; |
return "pass" |
86 |
} |
} |
87 |
# |
# |
88 |
# Close the connection to the DOS box. |
# Close the connection to the DOS box. |
89 |
# |
# |
90 |
proc tic80_close { host } { |
proc tic80_close { host } { |
91 |
set dos_box [board_info $host dos_host]; |
set dos_box [board_info $host dos_host] |
92 |
|
|
93 |
return [remote_close $dos_box]; |
return [remote_close $dos_box] |
94 |
} |
} |
95 |
|
|
96 |
set_board_info protocol "tic80"; |
set_board_info protocol "tic80" |
97 |
set_board_info gdb,use_standard_load 1; |
set_board_info gdb,use_standard_load 1 |
98 |
set_board_info gdb,no_push_conn 1; |
set_board_info gdb,no_push_conn 1 |
99 |
set_board_info gdb,do_reload_on_run 1; |
set_board_info gdb,do_reload_on_run 1 |
100 |
set_board_info gdb,use_breakpoint_for_stub 1 |
set_board_info gdb,use_breakpoint_for_stub 1 |