Hi, das sind C-Basics (sic!)

Code:
 unsigned char* serp = serpa+SERPA_SIZE;     // 1
 unsigned char data = *--serp;       // 2
Zeile 1 ist Abkürzung für
Code:
 unsigned char* serp; // 1a
 serp = serpa+SERPA_SIZE;     // 1b, = & serpa[SERPA_SIZE]
serpa ist hier ein Array (Feld) mit SERPA_SIZE Einträgen (von 0..SERPA_SIZE-1). serp verweist nach der Zuweisung eins hinter das letzte Element von serpa[]

Zeile 2 kürzt ab:
Code:
 unsigned char data;        // 2a
 serp = serp-1; // 2b: vermindere serp um die größe von "unsigned char" (in bytes) also um 1. 
 data = *serp;       // 2c: lies das datum (ein unsigned char) an adresse 'serp' aus
data enthält also nacheinander die werte serpa[SERPA_SIZE-1]...serpa[0], und serp hält die entsprechenden adressen für den zugriff darauf