tools: use the new "puth" BASIC command

This commit is contained in:
Virgil Dupras 2019-12-09 21:17:45 -05:00
parent fb93fcd6e6
commit fcee98ee4e
2 changed files with 11 additions and 20 deletions

View File

@ -50,17 +50,12 @@ int main(int argc, char **argv)
for (int i=0; i<bytecount; i++) {
sendcmd(fd, "peek m");
read(fd, s, 2); // read prompt
sendcmd(fd, "print a");
for (int j=0; j<3; j++) {
read(fd, s+j, 1);
s[j+1] = 0; // always null-terminate
if (s[j] < '0') {
break;
}
}
unsigned char c = strtol(s, NULL, 10);
sendcmd(fd, "puth a");
read(fd, s, 2); // read hex pair
s[2] = 0; // null terminate
unsigned char c = strtol(s, NULL, 16);
putchar(c);
read(fd, s, 3); // read \r\n + prompt - last char
read(fd, s, 2); // read prompt
sendcmd(fd, "m=m+1");
read(fd, s, 2); // read prompt
}

View File

@ -50,19 +50,15 @@ while (sysread $fh, my $char, 1) {
sendcmd("getc");
syswrite $devh, $char;
sysread $devh, $rd, 2; # read prompt
sendcmd("print a");
my $s = "";
while (1) {
sysread $devh, $rd, 1;
if ($rd !~ /\d/) { last; }
$s .= $rd;
}
sysread $devh, $rd, 3; # read prompt
if ($s == ord($char)) {
sendcmd("puth a");
sysread $devh, $rd, 2;
my $ri = hex($rd);
sysread $devh, $rd, 2; # read prompt
if ($ri == ord($char)) {
last;
} else {
if ($i < 4) {
print "Mismatch at byte ${i}! ${s} != ${ord($char)}. Retrying.\n";
print "Mismatch at byte ${i}! ${ri} != ${ord($char)}. Retrying.\n";
} else {
die "Maximum retries reached, abort.\n";
}