...а по 1-му пункту.. ха ха.. только сейчас увидел: Надо так:
typedef struct
{
unsigned char lbyte;
unsigned char hbyte;
}word_t;
word_t _TAPRC[2];
F вы объявляете ОДИН элемент массива, а обращаетесь уже ко второму _TAPRC[1].lbyte.
Просто массив _TAPRC и переменная _CRT лежат в памяти рядом в сегменте глобальных переменных. Вот вы на _CRT и залезаете, когда пытаетесь индексировать несуществующий элемент массива. Кстати, массив всегда индексируется с 0 ;)