From bb6e1bbaecffaad45663c6333e000e60dc476830 Mon Sep 17 00:00:00 2001
From: Stefan Rueger <stefan.rueger@urclocks.com>
Date: Tue, 19 Jul 2022 15:01:51 +0100
Subject: [PATCH] Add avrdude.conf new syntax: readback = 0x80 0x7f;

---
 src/config_gram.y | 9 +++++++++
 src/lexer.l       | 1 +
 2 files changed, 10 insertions(+)

diff --git a/src/config_gram.y b/src/config_gram.y
index 71553aaa..e2dd669a 100644
--- a/src/config_gram.y
+++ b/src/config_gram.y
@@ -112,6 +112,7 @@ static int pin_name;
 %token K_PSEUDO
 %token K_PWROFF_AFTER_WRITE
 %token K_RDYLED
+%token K_READBACK
 %token K_READBACK_P1
 %token K_READBACK_P2
 %token K_READMEM
@@ -1399,6 +1400,14 @@ mem_spec :
       free_token($3);
     } |
 
+  K_READBACK        TKN_EQUAL TKN_NUMBER TKN_NUMBER
+    {
+      current_mem->readback[0] = $3->value.number;
+      current_mem->readback[1] = $4->value.number;
+      free_token($3);
+      free_token($4);
+    } |
+
   K_READBACK_P1     TKN_EQUAL TKN_NUMBER
     {
       current_mem->readback[0] = $3->value.number;
diff --git a/src/lexer.l b/src/lexer.l
index 4db95f6d..e392324a 100644
--- a/src/lexer.l
+++ b/src/lexer.l
@@ -213,6 +213,7 @@ rdyled           { yylval=NULL; return K_RDYLED; }
 read             { yylval=new_token(K_READ); return K_READ; }
 read_hi          { yylval=new_token(K_READ_HI); return K_READ_HI; }
 read_lo          { yylval=new_token(K_READ_LO); return K_READ_LO; }
+readback         { yylval=NULL; return K_READBACK; }
 readback_p1      { yylval=NULL; return K_READBACK_P1; }
 readback_p2      { yylval=NULL; return K_READBACK_P2; }
 readsize        { yylval=NULL; return K_READSIZE; }