-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Testing macros and found a systemic issue around how memories are used internally vs displayed externally.
In the serial terminal you can only enter a single digit 0-9 to play a memory. Memories are listed in \S command as 1-10 but stored as 0-9 internally. Play memory 0 is accepted but plays nothing (converted to 255 internally and fails). You can however program 1-10 correctly. The Keyboard and Touch displays are all correct.
The inconsistences accepting 1 or 2 digits to play might be fixed by raising the memory number limit from 10 to 12.
There are 2 methods to display the stored memory. Other is to add +1 to each shifting 0-9 to 1-10. Another is to add +10 to 0 and leave 1-9 alone gettong 1-10 . Cannot mix the 2 methods! Both methods are in use causing issues that show up when linking memories with macros (\Ixx command). In other spots there is a byte value (ie unsigned) calculation 'memory-1' which when memory=0 results in unsigned 255 (or -1 signed) which is an invalid EEPROM memory location value.
Seems like the best course is to allow 2 digits on serial play menu, and not use 0, always using the memory number directly. Some parts of the program only work with a single digit 0-9 so this is significant rework to make it all the same. The serial parser accepts 0-19. The USB and PS2 keyboard allow F1-F12 for 12 memories. The K380 BT keyboards can also do this.