load chiark_tcl_hbytes-1.so
-
proc debug_r {m} { puts -nonewline stderr "$m\r" }
proc debug {m} { puts stderr $m }
}
proc startup {} {
- global port rwy buf last_fast_speed noise
+ global port rwy buf last_fast_speed noise funcs_msgs loco
set rwy [open $port r+]
fconfigure $rwy -blocking no -buffering none -encoding binary \
-translation binary
set last_fast_speed 0
set noise {}
for {set i 0} {$i < 256} {incr i} { append noise \\x [hbytes random 1] }
+ foreach f {funcs0to4 funcs5to8} {
+ set m [exec ./hostside-old -s/dev/stdout $f $loco 0x1fff]
+ set m [hbytes raw2h $m]
+ lappend funcs_msgs ffff$m {}
+ }
+ lappend funcs_msgs {}
}
proc readable {} {
}
proc xmit-now {} {
- global xmit_after xmit_msg
- send-now $xmit_msg
+ global xmit_after xmit_msg funcs_msgs
+ set funcs_msg [lindex $funcs_msgs 0]
+ set funcs_msgs [lreplace $funcs_msgs 0 0]
+ lappend funcs_msgs $funcs_msg
+ send-now $xmit_msg$funcs_msg
set xmit_after [after 10 xmit-now]
}
proc xmit {nmral} {
clock clicks -milliseconds
}
-proc now-ms-click {} {
+proc now-ms-click {{returnthis {}}} {
+ if {[string length $returnthis]} { return $returnthis }
global noise
set now [now-ms]
set f [open |[list sh -c {"$@" >/dev/dsp} x printf $noise]]
return $now
}
-proc record-mm-per-s {speed mm ms} {
- debug "S $speed: $mm / $ms"
+proc record-mm-per-s {how speed mm ms} {
+ debug " $how $speed: $mm / $ms"
set mmpers [expr {$mm*1.0/$ms}]
- puts [format "%3d %g" $speed $mmpers]
+ puts [format "%s %3d %g" $how $speed $mmpers]
}
-proc timing-start {} {
+proc timing-start {{now {}}} {
global start
- set start [now-ms-click]
+ set start [now-ms-click $now]
}
-proc timing-finish {} {
+proc timing-finish {{now {}}} {
global start
- set finish [now-ms-click]
+ set finish [now-ms-click $now]
return [expr {$finish-$start}]
}
run-until $speed 9804
timing-start
run-until $speed 980a
- record-mm-per-s $speed 231 [timing-finish]
+ record-mm-per-s S $speed 231 [timing-finish]
instruct-stop-for 100
}
}
set last_fast_speed $speed
set ms 0; set mm 0
+ set mslaps 0; set mmlaps 0
while {$ms < 2000} {
run-until $speed 9804
- timing-start
+ set now [now-ms-click]
+ if {$ms} {
+ incr mslaps [timing-finish $now]
+ incr mmlaps 3624
+ debug "++ $mmlaps / $mslaps"
+ }
+ timing-start $now
+
run-until $speed 980a
+
incr ms [timing-finish]
incr mm 231
- debug "+ $mm / $ms"
+ debug "+- $mm / $ms"
run-until-not $speed 980a 600
}
- record-mm-per-s $speed $mm $ms
+ record-mm-per-s F $speed $mm $ms
+ if {$mslaps} { record-mm-per-s L $speed $mmlaps $mslaps }
}
proc speed-test {speed} {