typedef uint8_t  u08;

#define screenx 16
#define screeny 16

u08 volatile gdata[screeny][screenx]; //Die Daten fürs Display[y;Zeile][x;Spalte]

u08 linebuff[maxscreen+1];


static __inline__ void pixel_set(u08 posx, u08 posy, u08 color) {
#if (pixel_set_always_safe == 1)
if ((posx < screenx) && (posy < screeny)) {
  gdata[posy][posx] = color;
}
#else
  gdata[posy][posx] = color;
#endif
}


void move_line_up (u08 x) {
u08 y;
for (y = 0;y < (screeny-1);y++) {
  //pixel_set(x,y,gdata[y+1][x]);
  gdata[y][x] = gdata[y+1][x];
  if (y == (screeny-2)) {
    //pixel_set(x,y+1,linebuff[x]);
    gdata[y+1][x] = linebuff[x];
  }
}
}
void move_line_up (u08 x) {
u08 y;
for (y = 0;y < (screeny-1);y++) {
  pixel_set(x,y,gdata[y+1][x]);
  //gdata[y][x] = gdata[y+1][x];
  if (y == (screeny-2)) {
    pixel_set(x,y+1,linebuff[x]);
    //gdata[y+1][x] = linebuff[x];
  }
}
}
*/ohne Inline */

.stabs
"move_line_up:F(0,19)",36,0,0,move_line_up
.stabs
"x:P(1,1)",64,0,0,24
.global move_line_up
.type move_line_up,
@function
move_line_up:
.stabn
68,0,56,.LM26-move_line_up
/*Zeile 56: void move_line_up (u08 x) */
/*Zeile 57: u08 y; */
.LM26:
/* prologue: frame size=0 */


/* prologue end (size=0) */
.stabn 68,0,58,.LM27-move_line_up
/*Zeile 58: for (y = 0;y < (screeny-1);y++) { */
.LM27:
ldi r18,lo8(
0)
clr r25
movw r26,r24
subi r26,lo8(-(linebuff))
sbci r27,hi8(-(linebuff))



movw r30,r24
subi r30,lo8(-(gdata))
sbci r31,hi8(-(gdata))



.L47:
.stabn
68,0,60,.LM28-move_line_up
/*Zeile 60: gdata[y][x] = gdata[y+1][x]; */
.LM28:
ldd r24,Z+
16




st Z,r24




.stabn
68,0,61,.LM29-move_line_up
/* Zeile 61: if (y == (screeny-2)) { */
.LM29:
cpi r18,lo8(
14)
brne .L45



.stabn
68,0,63,.LM30-move_line_up
/* Zeile 63: gdata[y+1][x] = linebuff[x]; */
.LM30:
ld r19,X




std Z+
16,r19
.L45:




.stabn
68,0,58,.LM31-move_line_up+
/* nochmal Zeile 58: for (y = 0;y < (screeny-1);y++) { */
.LM31:
subi r18,lo8(-(
1))
adiw r30,
16
cpi r18,lo8(15)
brlo .L47
/* epilogue: frame size=0 */


ret
/* epilogue end (size=1) */
/* function move_line_up size 19 (18) */
.size move_line_up, .-move_line_up
/* mit Inline*/

.stabs "move_line_up:F(0,19)",36,0,0,move_line_up
.stabs
"x:P(1,1)",64,0,0,24
.global move_line_up
.type move_line_up,
@function
move_line_up:
.stabn
68,0,56,.LM26-move_line_up
/* Zeile 56: void move_line_up (u08 x) */
/* Zeile 57: u08 y; */
.LM26:
/* prologue: frame size=0 */
push r28
push r29
/* prologue end (size=2) */
.stabn 68,0,58,.LM27-move_line_up
/* Zeile 58: for (y = 0;y < (screeny-1);y++) { */
.LM27:
ldi r18,lo8(
0)
clr r25
movw r28,r24
subi r28,lo8(-(linebuff))
sbci r29,hi8(-(linebuff))
movw r26,r24
subi r26,lo8(-(gdata+
240))
sbci r27,hi8(-(gdata+
240))
movw r30,r24
subi r30,lo8(-(gdata))
sbci r31,hi8(-(gdata))
.L49:
.LBB4:
.stabs
"graphicfunctions.h",132,0,0,.Ltext3
.Ltext3:
.stabn
68,0,7,.LM28-move_line_up
/* static __inline__ void pixel_set(u08 posx, u08 posy, u08 color) { */
.LM28:
ldd r24,Z+
16
.LBB5:
.stabn
68,0,13,.LM29-move_line_up
/* gdata[posy][posx] = color; */
.LM29:
st Z,r24
.LBE5:
.LBE4:
.stabs
"graphicfunctions.c",132,0,0,.Ltext4
.Ltext4:
.stabn
68,0,61,.LM30-move_line_up
/*Zeile 61: if (y == (screeny-2)) { */
.LM30:
cpi r18,lo8(
14)
brne .L45
.LBB6:
.stabs
"graphicfunctions.h",132,0,0,.Ltext5
.Ltext5:
.stabn
68,0,7,.LM31-move_line_up
/* static __inline__ void pixel_set(u08 posx, u08 posy, u08 color) { */
.LM31:
ld r19,Y
.LBB7:
.stabn
68,0,13,.LM32-move_line_up
/* gdata[posy][posx] = color; */
.LM32:
st X,r19
.L45:
.LBE7:
.LBE6:
.stabs
"graphicfunctions.c",132,0,0,.Ltext6
.Ltext6:
.stabn
68,0,58,.LM33-move_line_up
/* nochmal Zeile 58: for (y = 0;y < (screeny-1);y++) { */
.LM33:
subi r18,lo8(-(
1))
adiw r30,
16
cpi r18,lo8(15)
brlo .L49
/* epilogue: frame size=0 */
pop r29
pop r28
ret
/* epilogue end (size=3) */
/* function move_line_up size 26 (21) */
.size move_line_up, .-move_line_up