add string and token helpers

This commit is contained in:
optixx 2009-09-20 14:53:41 +02:00 committed by Jannis (jix) Harder
parent 6c702b9a68
commit e7e5cfd126
5 changed files with 409 additions and 743 deletions

View File

@ -33,13 +33,13 @@ ifeq ($(DEBUG),1)
OBJECTS = usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o \ OBJECTS = usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o \
main.o usb_bulk.o uart.o fifo.o sram.o crc.o debug.o \ main.o usb_bulk.o uart.o fifo.o sram.o crc.o debug.o \
dump.o timer.o watchdog.o rle.c loader.o info.o shared_memory.o \ dump.o timer.o watchdog.o rle.c loader.o info.o shared_memory.o \
pwm.o shell.o irq.o command.o testing.o pwm.o util.o shell.o irq.o command.o testing.o
else else
LDFLAGS =-Wl,-u LDFLAGS =-Wl,-u
CFLAGS =-Iusbdrv -I. -DDEBUG_LEVEL=0 -DNO_DEBUG -DNO_INFO CFLAGS =-Iusbdrv -I. -DDEBUG_LEVEL=0 -DNO_DEBUG -DNO_INFO
OBJECTS = usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o usb_bulk.o \ OBJECTS = usbdrv/usbdrv.o usbdrv/usbdrvasm.o usbdrv/oddebug.o main.o usb_bulk.o \
uart.o fifo.o sram.o crc.o debug.o dump.o timer.o watchdog.o rle.c loader.o \ uart.o fifo.o sram.o crc.o debug.o dump.o timer.o watchdog.o rle.c loader.o \
pwm.o shell.o info.o shared_memory.o command.o irq.o pwm.o uril.o shell.o info.o shared_memory.o command.o irq.o
endif endif
COMPILE = avr-gcc -Wall -Os -DF_CPU=$(F_CPU) $(CFLAGS) -mmcu=$(DEVICE) COMPILE = avr-gcc -Wall -Os -DF_CPU=$(F_CPU) $(CFLAGS) -mmcu=$(DEVICE)

View File

@ -33,6 +33,109 @@
volatile uint8_t recv_counter = 0; volatile uint8_t recv_counter = 0;
volatile uint8_t cr = 0; volatile uint8_t cr = 0;
static char *token_ptr;
static char *get_token(void)
{
char *p = token_ptr;
while (*p == ' ')
p++;
if (*p == '\0')
return NULL;
token_ptr = p;
do {
token_ptr++;
if (*token_ptr == ' ') {
*token_ptr++ = '\0';
break;
}
} while (*token_ptr != '\0');
return p;
}
static int get_dec(int *decval)
{
const char *t;
t = get_token();
if (t != NULL) {
int x = Util_sscandec(t);
if (x < 0)
return FALSE;
*decval = x;
return TRUE;
}
return FALSE;
}
static int parse_hex(const char *s, UWORD *hexval)
{
int x = Util_sscanhex(s);
#ifdef MONITOR_HINTS
int y = find_label_value(s);
if (y >= 0) {
if (x < 0 || x > 0xffff || x == y) {
*hexval = (UWORD) y;
return TRUE;
}
/* s can be a hex number or a label name */
printf("%s is ambiguous. Use 0%X or %X instead.\n", s, x, y);
return FALSE;
}
#endif
if (x < 0 || x > 0xffff)
return FALSE;
*hexval = (UWORD) x;
return TRUE;
}
static int get_hex(UWORD *hexval)
{
const char *t;
t = get_token();
if (t != NULL)
return parse_hex(t, hexval);
return FALSE;
}
static int get_hex2(UWORD *hexval1, UWORD *hexval2)
{
return get_hex(hexval1) && get_hex(hexval2);
}
static int get_hex3(UWORD *hexval1, UWORD *hexval2, UWORD *hexval3)
{
return get_hex(hexval1) && get_hex(hexval2) && get_hex(hexval3);
}
static void get_uword(UWORD *val)
{
if (!get_hex(val))
printf("Invalid argument!\n");
}
static void get_ubyte(UBYTE *val)
{
UWORD uword;
if (!get_hex(&uword) || uword > 0xff)
printf("Invalid argument!\n");
else
*val = (UBYTE) uword;
}
static int get_bool(void)
{
const char *t;
t = get_token();
if (t != NULL) {
int result = Util_sscanbool(t);
if (result >= 0)
return result;
}
printf("Invalid argument (should be 0 or 1)!\n");
return -1;
}
ISR(USART0_RX_vect) // Interrupt for UART Byte received ISR(USART0_RX_vect) // Interrupt for UART Byte received
{ {
UCSR0B &= (255 - (1<<RXCIE0));// Interrupts disable for RxD UCSR0B &= (255 - (1<<RXCIE0));// Interrupts disable for RxD
@ -41,6 +144,7 @@ ISR(USART0_RX_vect) // Interrupt for UART Byte received
cr=1; cr=1;
recv_buf[recv_counter]='\0'; recv_buf[recv_counter]='\0';
recv_counter=0; recv_counter=0;
uart_putc('\r');
uart_putc('\n'); uart_putc('\n');
uart_putc(':'); uart_putc(':');
uart_putc('>'); uart_putc('>');
@ -52,7 +156,10 @@ ISR(USART0_RX_vect) // Interrupt for UART Byte received
cr = 1; // found a CR, so the application should do something cr = 1; // found a CR, so the application should do something
recv_buf[++recv_counter]='\0'; // terminate string recv_buf[++recv_counter]='\0'; // terminate string
recv_counter = 0; recv_counter = 0;
uart_putc('\r');
uart_putc('\n'); uart_putc('\n');
uart_putc(':');
uart_putc('>');
} else { } else {
// we accept backspace or delete // we accept backspace or delete
if ((recv_buf[recv_counter] == 0x08 || recv_buf[recv_counter] == 0x7f) && recv_counter > 0) { if ((recv_buf[recv_counter] == 0x08 || recv_buf[recv_counter] == 0x7f) && recv_counter > 0) {

132
avr/usbload/util.c Normal file
View File

@ -0,0 +1,132 @@
/*
* =====================================================================================
*
* ________ .__ __ ________ ____ ________
* \_____ \ __ __|__| ____ | | __\______ \ _______ _/_ |/ _____/
* / / \ \| | \ |/ ___\| |/ / | | \_/ __ \ \/ /| / __ \
* / \_/. \ | / \ \___| < | ` \ ___/\ / | \ |__\ \
* \_____\ \_/____/|__|\___ >__|_ \/_______ /\___ >\_/ |___|\_____ /
* \__> \/ \/ \/ \/ \/
*
* www.optixx.org
*
*
* Version: 1.0
* Created: 07/21/2009 03:32:16 PM
* Author: david@optixx.org
*
* =====================================================================================
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
uint8_t *util_strupper(uint8_t *s)
{
uint8_t *p;
for (p = s; *p != '\0'; p++)
if (*p >= 'a' && *p <= 'z')
*p += 'A' - 'a';
return s;
}
uint8_t *util_strlower(uint8_t *s)
{
uint8_t *p;
for (p = s; *p != '\0'; p++)
if (*p >= 'A' && *p <= 'Z')
*p += 'a' - 'A';
return s;
}
void util_chomp(uint8_t *s)
{
uint16_t len;
len = strlen((char*)s);
if (len >= 2 && s[len - 1] == '\n' && s[len - 2] == '\r')
s[len - 2] = '\0';
else if (len >= 1 && (s[len - 1] == '\n' || s[len - 1] == '\r'))
s[len - 1] = '\0';
}
void util_trim(uint8_t *s)
{
uint8_t *p = s;
uint8_t *q;
/* skip leading whitespace */
while (*p == ' ' || *p == '\t' || *p == '\r' || *p == '\n')
p++;
/* now p points at the first non-whitespace uint8_tacter */
if (*p == '\0') {
/* only whitespace */
*s = '\0';
return;
}
q = s + strlen((char*)s);
/* skip trailing whitespace */
/* we have found p < q such that *p is non-whitespace,
so this loop terminates with q >= p */
do
q--;
while (*q == ' ' || *q == '\t' || *q == '\r' || *q == '\n');
/* now q points at the last non-whitespace uint8_tacter */
/* cut off trailing whitespace */
*++q = '\0';
/* move to string */
memmove(s, p, q + 1 - p);
}
uint32_t util_sscandec(const uint8_t *s)
{
uint32_t result;
if (*s == '\0')
return -1;
result = 0;
for (;;) {
if (*s >= '0' && *s <= '9')
result = 10 * result + *s - '0';
else if (*s == '\0')
return result;
else
return -1;
s++;
}
}
uint32_t util_sscanhex(const uint8_t *s)
{
uint32_t result;
if (*s == '\0')
return -1;
result = 0;
for (;;) {
if (*s >= '0' && *s <= '9')
result = 16 * result + *s - '0';
else if (*s >= 'A' && *s <= 'F')
result = 16 * result + *s - 'A' + 10;
else if (*s >= 'a' && *s <= 'f')
result = 16 * result + *s - 'a' + 10;
else if (*s == '\0')
return result;
else
return -1;
s++;
}
}
uint8_t util_sscanbool(const uint8_t *s)
{
if (*s == '0' && s[1] == '\0')
return 0;
if (*s == '1' && s[1] == '\0')
return 1;
return -1;
}

32
avr/usbload/util.h Normal file
View File

@ -0,0 +1,32 @@
/*
* =====================================================================================
*
* ________ .__ __ ________ ____ ________
* \_____ \ __ __|__| ____ | | __\______ \ _______ _/_ |/ _____/
* / / \ \| | \ |/ ___\| |/ / | | \_/ __ \ \/ /| / __ \
* / \_/. \ | / \ \___| < | ` \ ___/\ / | \ |__\ \
* \_____\ \_/____/|__|\___ >__|_ \/_______ /\___ >\_/ |___|\_____ /
* \__> \/ \/ \/ \/ \/
*
* www.optixx.org
*
*
* Version: 1.0
* Created: 07/21/2009 03:32:16 PM
* Author: david@optixx.org
*
* =====================================================================================
*/
#ifndef __UTIL_H__
#define __UTIL_H__
uint8_t *util_strupper(uint8_t *s);
uint8_t *util_strlower(uint8_t *s);
void util_chomp(uint8_t *s);
void util_trim(uint8_t *s);
uint32_t util_sscandec(const uint8_t *s);
uint32_t util_sscanhex(const uint8_t *s);
uint8_t util_sscanbool(const uint8_t *s);
#endif

View File

@ -3,7 +3,7 @@
<plist version="1.0"> <plist version="1.0">
<dict> <dict>
<key>currentDocument</key> <key>currentDocument</key>
<string>avr/usbload/sram.h</string> <string>avr/usbload/util.c</string>
<key>documents</key> <key>documents</key>
<array> <array>
<dict> <dict>
@ -21,451 +21,19 @@
<integer>271</integer> <integer>271</integer>
<key>metaData</key> <key>metaData</key>
<dict> <dict>
<key>README</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>49</integer>
<key>line</key>
<integer>7</integer>
</dict>
<key>columnSelection</key>
<false/>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
<key>selectFrom</key>
<dict>
<key>column</key>
<integer>1</integer>
<key>line</key>
<integer>7</integer>
</dict>
<key>selectTo</key>
<dict>
<key>column</key>
<integer>49</integer>
<key>line</key>
<integer>7</integer>
</dict>
</dict>
<key>avr/bootloader/bootloader.c</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>31</integer>
</dict>
<key>columnSelection</key>
<false/>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
<key>selectFrom</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>30</integer>
</dict>
<key>selectTo</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>31</integer>
</dict>
</dict>
<key>avr/bootloader/bootloader.hex</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>0</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
</dict>
<key>avr/bootloader/config.h</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>22</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
</dict>
<key>avr/bootloader/interrupts.S</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>0</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
</dict>
<key>avr/bootloader/usbconfig.h</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>39</integer>
<key>line</key>
<integer>50</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>144</integer>
</dict>
<key>avr/usbload/checksize</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>12</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
</dict>
<key>avr/usbload/command.c</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>22</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>14</integer>
</dict>
<key>avr/usbload/command.h</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>16</integer>
<key>line</key>
<integer>25</integer>
</dict>
<key>columnSelection</key>
<false/>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
<key>selectFrom</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>0</integer>
</dict>
<key>selectTo</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>29</integer>
</dict>
</dict>
<key>avr/usbload/config.h</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>38</integer>
<key>line</key>
<integer>46</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
</dict>
<key>avr/usbload/crc.c</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>20</integer>
<key>line</key>
<integer>81</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>41</integer>
</dict>
<key>avr/usbload/crc.h</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>26</integer>
<key>line</key>
<integer>6</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
</dict>
<key>avr/usbload/debug.c</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>31</integer>
<key>line</key>
<integer>39</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
</dict>
<key>avr/usbload/debug.h</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>33</integer>
</dict>
<key>columnSelection</key>
<false/>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
<key>selectFrom</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>31</integer>
</dict>
<key>selectTo</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>33</integer>
</dict>
</dict>
<key>avr/usbload/dump.c</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>13</integer>
<key>line</key>
<integer>67</integer>
</dict>
<key>columnSelection</key>
<false/>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>31</integer>
<key>selectFrom</key>
<dict>
<key>column</key>
<integer>5</integer>
<key>line</key>
<integer>67</integer>
</dict>
<key>selectTo</key>
<dict>
<key>column</key>
<integer>16</integer>
<key>line</key>
<integer>67</integer>
</dict>
</dict>
<key>avr/usbload/dump.h</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>0</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
</dict>
<key>avr/usbload/fifo.c</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>17</integer>
<key>line</key>
<integer>22</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
</dict>
<key>avr/usbload/fifo.h</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>19</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
</dict>
<key>avr/usbload/info.c</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>4</integer>
<key>line</key>
<integer>33</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
</dict>
<key>avr/usbload/info.h</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>22</integer>
<key>line</key>
<integer>32</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
</dict>
<key>avr/usbload/irq.c</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>28</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>21</integer>
</dict>
<key>avr/usbload/irq.h</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>13</integer>
<key>line</key>
<integer>22</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
</dict>
<key>avr/usbload/loader.c</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>0</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>443</integer>
</dict>
<key>avr/usbload/loader.h</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>9</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
</dict>
<key>avr/usbload/main.c</key> <key>avr/usbload/main.c</key>
<dict> <dict>
<key>caret</key> <key>caret</key>
<dict> <dict>
<key>column</key> <key>column</key>
<integer>0</integer> <integer>42</integer>
<key>line</key> <key>line</key>
<integer>30</integer> <integer>252</integer>
</dict> </dict>
<key>columnSelection</key>
<false/>
<key>firstVisibleColumn</key> <key>firstVisibleColumn</key>
<integer>0</integer> <integer>0</integer>
<key>firstVisibleLine</key> <key>firstVisibleLine</key>
<integer>0</integer> <integer>247</integer>
<key>selectFrom</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>29</integer>
</dict>
<key>selectTo</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>30</integer>
</dict>
</dict> </dict>
<key>avr/usbload/rle.h</key> <key>avr/usbload/rle.h</key>
<dict> <dict>
@ -476,154 +44,28 @@
<key>line</key> <key>line</key>
<integer>0</integer> <integer>0</integer>
</dict> </dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
</dict>
<key>avr/usbload/shared_memory.c</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>41</integer>
<key>line</key>
<integer>135</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>108</integer>
</dict>
<key>avr/usbload/shared_memory.h</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>50</integer>
<key>line</key>
<integer>50</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>22</integer>
</dict>
<key>avr/usbload/sram.c</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>24</integer>
<key>line</key>
<integer>34</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>141</integer>
</dict>
<key>avr/usbload/sram.h</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>66</integer>
<key>line</key>
<integer>154</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>132</integer>
</dict>
<key>avr/usbload/testing.c</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>106</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>25</integer>
</dict>
<key>avr/usbload/testing.h</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>0</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
</dict>
<key>avr/usbload/timer.c</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>41</integer>
<key>line</key>
<integer>61</integer>
</dict>
<key>columnSelection</key> <key>columnSelection</key>
<false/> <false/>
<key>firstVisibleColumn</key> <key>firstVisibleColumn</key>
<integer>0</integer> <integer>0</integer>
<key>firstVisibleLine</key> <key>firstVisibleLine</key>
<integer>28</integer> <integer>0</integer>
<key>selectFrom</key> <key>selectFrom</key>
<dict> <dict>
<key>column</key> <key>column</key>
<integer>0</integer> <integer>17</integer>
<key>line</key> <key>line</key>
<integer>0</integer> <integer>21</integer>
</dict> </dict>
<key>selectTo</key> <key>selectTo</key>
<dict> <dict>
<key>column</key> <key>column</key>
<integer>0</integer> <integer>0</integer>
<key>line</key> <key>line</key>
<integer>94</integer>
</dict>
</dict>
<key>avr/usbload/timer.h</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>0</integer> <integer>0</integer>
<key>line</key>
<integer>29</integer>
</dict> </dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
</dict> </dict>
<key>avr/usbload/uart.c</key> <key>avr/usbload/shell.c</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>34</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>44</integer>
</dict>
<key>avr/usbload/usb_bulk.c</key>
<dict> <dict>
<key>caret</key> <key>caret</key>
<dict> <dict>
@ -632,171 +74,159 @@
<key>line</key> <key>line</key>
<integer>74</integer> <integer>74</integer>
</dict> </dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>40</integer>
</dict>
<key>avr/usbload/usbconfig.h</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>80</integer>
<key>line</key>
<integer>251</integer>
</dict>
<key>columnSelection</key> <key>columnSelection</key>
<false/> <false/>
<key>firstVisibleColumn</key> <key>firstVisibleColumn</key>
<integer>0</integer> <integer>0</integer>
<key>firstVisibleLine</key> <key>firstVisibleLine</key>
<integer>231</integer> <integer>80</integer>
<key>selectFrom</key> <key>selectFrom</key>
<dict> <dict>
<key>column</key> <key>column</key>
<integer>32</integer> <integer>0</integer>
<key>line</key> <key>line</key>
<integer>251</integer> <integer>73</integer>
</dict> </dict>
<key>selectTo</key> <key>selectTo</key>
<dict> <dict>
<key>column</key> <key>column</key>
<integer>80</integer> <integer>0</integer>
<key>line</key> <key>line</key>
<integer>251</integer> <integer>74</integer>
</dict> </dict>
</dict> </dict>
<key>avr/usbload/watchdog.c</key> <key>avr/usbload/shell.h</key>
<dict> <dict>
<key>caret</key> <key>caret</key>
<dict> <dict>
<key>column</key> <key>column</key>
<integer>0</integer> <integer>0</integer>
<key>line</key> <key>line</key>
<integer>0</integer>
</dict>
<key>columnSelection</key>
<false/>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
<key>selectFrom</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>19</integer>
</dict>
<key>selectTo</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>0</integer>
</dict>
</dict>
<key>avr/usbload/sram.c</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>22</integer> <integer>22</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
</dict>
<key>avr/usbload/watchdog.h</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key> <key>line</key>
<integer>0</integer> <integer>287</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
</dict>
<key>poc/avr_sdcard/fat.c</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>38</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
</dict>
<key>poc/avr_sdcard/fat.h</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>4</integer>
<key>line</key>
<integer>63</integer>
</dict> </dict>
<key>columnSelection</key> <key>columnSelection</key>
<false/> <false/>
<key>firstVisibleColumn</key> <key>firstVisibleColumn</key>
<integer>0</integer> <integer>0</integer>
<key>firstVisibleLine</key> <key>firstVisibleLine</key>
<integer>23</integer> <integer>206</integer>
<key>selectFrom</key> <key>selectFrom</key>
<dict> <dict>
<key>column</key> <key>column</key>
<integer>1</integer>
<key>line</key>
<integer>63</integer>
</dict>
<key>selectTo</key>
<dict>
<key>column</key>
<integer>9</integer>
<key>line</key>
<integer>63</integer>
</dict>
</dict>
<key>poc/avr_sdcard/main.c</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>12</integer>
<key>line</key>
<integer>170</integer>
</dict>
<key>columnSelection</key>
<false/>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>137</integer>
<key>selectFrom</key>
<dict>
<key>column</key>
<integer>1</integer>
<key>line</key>
<integer>170</integer>
</dict>
<key>selectTo</key>
<dict>
<key>column</key>
<integer>20</integer>
<key>line</key>
<integer>170</integer>
</dict>
</dict>
<key>poc/avr_sdcard/main.lst</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>0</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
</dict>
<key>poc/avr_usbload/sram.c</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>17</integer>
<key>line</key>
<integer>5</integer> <integer>5</integer>
<key>line</key>
<integer>287</integer>
</dict>
<key>selectTo</key>
<dict>
<key>column</key>
<integer>31</integer>
<key>line</key>
<integer>287</integer>
</dict>
</dict>
<key>avr/usbload/uart.c</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>20</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>26</integer>
</dict>
<key>avr/usbload/usb_bulk.h</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>0</integer>
</dict> </dict>
<key>firstVisibleColumn</key> <key>firstVisibleColumn</key>
<integer>0</integer> <integer>0</integer>
<key>firstVisibleLine</key> <key>firstVisibleLine</key>
<integer>0</integer> <integer>0</integer>
</dict> </dict>
<key>avr/usbload/util.c</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>15</integer>
<key>line</key>
<integer>46</integer>
</dict>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>14</integer>
</dict>
<key>avr/usbload/util.h</key>
<dict>
<key>caret</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>0</integer>
</dict>
<key>columnSelection</key>
<false/>
<key>firstVisibleColumn</key>
<integer>0</integer>
<key>firstVisibleLine</key>
<integer>0</integer>
<key>selectFrom</key>
<dict>
<key>column</key>
<integer>3</integer>
<key>line</key>
<integer>18</integer>
</dict>
<key>selectTo</key>
<dict>
<key>column</key>
<integer>0</integer>
<key>line</key>
<integer>0</integer>
</dict>
</dict>
<key>snes/banktest/LoadGraphics.asm</key> <key>snes/banktest/LoadGraphics.asm</key>
<dict> <dict>
<key>caret</key> <key>caret</key>
@ -828,50 +258,15 @@
</dict> </dict>
<key>openDocuments</key> <key>openDocuments</key>
<array> <array>
<string>avr/usbload/testing.h</string>
<string>avr/usbload/testing.c</string>
<string>avr/usbload/timer.c</string>
<string>avr/usbload/irq.c</string>
<string>avr/bootloader/bootloader.hex</string>
<string>avr/usbload/irq.h</string>
<string>avr/usbload/timer.h</string>
<string>avr/usbload/uart.c</string>
<string>avr/usbload/usb_bulk.c</string>
<string>avr/usbload/watchdog.c</string>
<string>avr/usbload/watchdog.h</string>
<string>poc/avr_sdcard/fat.c</string>
<string>poc/avr_sdcard/fat.h</string>
<string>poc/avr_sdcard/main.lst</string>
<string>avr/bootloader/config.h</string>
<string>avr/bootloader/bootloader.c</string>
<string>README</string>
<string>avr/bootloader/usbconfig.h</string>
<string>avr/usbload/debug.c</string>
<string>avr/usbload/dump.h</string>
<string>avr/usbload/crc.c</string>
<string>avr/usbload/command.h</string>
<string>avr/usbload/dump.c</string>
<string>avr/usbload/loader.h</string>
<string>avr/usbload/info.h</string>
<string>avr/usbload/loader.c</string>
<string>avr/usbload/fifo.c</string>
<string>avr/usbload/command.c</string>
<string>avr/usbload/debug.h</string>
<string>avr/usbload/rle.h</string>
<string>avr/usbload/config.h</string>
<string>poc/avr_sdcard/main.c</string>
<string>poc/avr_usbload/sram.c</string>
<string>avr/usbload/sram.h</string>
<string>avr/usbload/shared_memory.h</string>
<string>avr/usbload/checksize</string>
<string>avr/usbload/shared_memory.c</string>
<string>avr/bootloader/interrupts.S</string>
<string>avr/usbload/info.c</string>
<string>avr/usbload/fifo.h</string>
<string>avr/usbload/main.c</string>
<string>avr/usbload/sram.c</string> <string>avr/usbload/sram.c</string>
<string>avr/usbload/usbconfig.h</string> <string>avr/usbload/main.c</string>
<string>avr/usbload/crc.h</string> <string>avr/usbload/shell.c</string>
<string>avr/usbload/uart.c</string>
<string>avr/usbload/util.c</string>
<string>avr/usbload/util.h</string>
<string>avr/usbload/usb_bulk.h</string>
<string>avr/usbload/rle.h</string>
<string>avr/usbload/shell.h</string>
</array> </array>
<key>showFileHierarchyDrawer</key> <key>showFileHierarchyDrawer</key>
<false/> <false/>
@ -891,13 +286,6 @@
<true/> <true/>
<key>subItems</key> <key>subItems</key>
<dict> <dict>
<key>bootloader</key>
<dict>
<key>isExpanded</key>
<true/>
<key>subItems</key>
<dict/>
</dict>
<key>usbload</key> <key>usbload</key>
<dict> <dict>
<key>isExpanded</key> <key>isExpanded</key>
@ -907,6 +295,13 @@
</dict> </dict>
</dict> </dict>
</dict> </dict>
<key>scripts</key>
<dict>
<key>isExpanded</key>
<true/>
<key>subItems</key>
<dict/>
</dict>
</dict> </dict>
</dict> </dict>
</dict> </dict>