--- avr910.c.old 2003-05-16 19:59:28.000000000 +0200 +++ avr910.c 2003-05-16 20:35:47.000000000 +0200 @@ -324,13 +324,26 @@ static int avr910_cmd(PROGRAMMER * pgm, unsigned char cmd[4], unsigned char res[4]) { + static unsigned char last_spi_byte = 0xff; + unsigned char buf[5]; int i; no_show_func_info(); - for (i=0; i<4; i++) { - fprintf(stderr, "cmd[%d] = 0x%02x\n", i, cmd[i]); - } + buf[0] = '.'; /* New Universal Command */ + buf[1] = cmd[0]; + buf[2] = cmd[1]; + buf[3] = cmd[2]; + buf[4] = cmd[3]; + + avr910_send (pgm, buf, 5); + avr910_recv (pgm, buf, 2); + + res[0] = last_spi_byte; + res[1] = cmd[0]; + res[2] = cmd[1]; + res[3] = buf[0]; + last_spi_byte = cmd[3]; return 0; } @@ -416,7 +429,7 @@ cmd[0] = 'D'; } else { - return -1; + return avr_write_byte_default(pgm, p, m, addr, value); } cmd[1] = value; @@ -490,7 +503,7 @@ return avr910_read_byte_eeprom(pgm, p, m, addr, value); } - return -1; + return avr_read_byte_default(pgm, p, m, addr, value); }