hallo leute

ich programmiere gerade tetris für ein 4x20 zeilen display. das funktioniert auch so lange ganz gut, wie ich für jede zeile 16 spalten habe also ein short. jetzt möchte ich jedoch die vollen 20 stellen ausnutzen. da stoße ich das problem, das das display immer nur die ersten 16 stellen anzeigt. das der compiler "long" nicht kennt kann ja wohl absolut nicht sein(?), und ich weiß nicht was falsch läuft.

das ist die alte funktion(funktioniert bestens):
void disp_line(unsigned short s){
int bit;
for(bit=16;bit!=0;bit--){
if(s&(1<<bit)) lcd_putc('#');
else lcd_putc(' ');
}
}
(es sollen immer nur die letzten 16 bits dargestellt werden, außer das 0. bit - funktioniert auch)

für 20 stellen nutze ich:
void disp_line(unsigned long l){
int bit;
for(bit=20;bit!=0;bit--){
if(l&(1<<bit)) lcd_putc('#');
else lcd_putc(' ');
}
}
(es sollen immer nur die letzten 20 bits dargestellt werden, genauer die ersten 21 mit ausnahme des 0. bits)

die funktion stellt aber auch immer nur 16 zeichen dar-
woher kann das kommen.

mfg maddin