diff options
Diffstat (limited to 'apps/plugins/lib/gray_scroll.c')
-rw-r--r-- | apps/plugins/lib/gray_scroll.c | 83 |
1 files changed, 41 insertions, 42 deletions
diff --git a/apps/plugins/lib/gray_scroll.c b/apps/plugins/lib/gray_scroll.c index df5dc57044..8f60e7cef1 100644 --- a/apps/plugins/lib/gray_scroll.c +++ b/apps/plugins/lib/gray_scroll.c | |||
@@ -283,32 +283,32 @@ void gray_ub_scroll_left(int count) | |||
283 | if (count) | 283 | if (count) |
284 | { | 284 | { |
285 | asm ( | 285 | asm ( |
286 | "mov r4, %[high] \n" | 286 | "mov r4, %[high] \n" /* rows = height */ |
287 | 287 | ||
288 | ".sl_rloop: \n" | 288 | ".sl_rloop: \n" /* repeat for every row */ |
289 | "mov r5, %[addr] \n" | 289 | "mov r5, %[addr] \n" /* get start address */ |
290 | "mov r2, %[dpth] \n" | 290 | "mov r2, %[dpth] \n" /* planes = depth */ |
291 | 291 | ||
292 | ".sl_oloop: \n" | 292 | ".sl_oloop: \n" /* repeat for every bitplane */ |
293 | "mov r6, r5 \n" | 293 | "mov r6, r5 \n" /* get start address */ |
294 | "mov r3, %[cols] \n" | 294 | "mov r3, %[cols] \n" /* cols = col_count */ |
295 | "mov r1, #0 \n" | 295 | "mov r1, #0 \n" /* fill with zero */ |
296 | 296 | ||
297 | ".sl_iloop: \n" | 297 | ".sl_iloop: \n" /* repeat for all cols */ |
298 | "mov r1, r1, lsr #8 \n" | 298 | "mov r1, r1, lsr #8 \n" /* shift right to get residue */ |
299 | "ldrb r0, [r6, #-1]! \n" | 299 | "ldrb r0, [r6, #-1]! \n" /* decrement addr & get data byte */ |
300 | "orr r1, r1, r0, lsl %[cnt] \n" | 300 | "orr r1, r1, r0, lsl %[cnt] \n" /* combine with last residue */ |
301 | "strb r1, [r6] \n" | 301 | "strb r1, [r6] \n" /* store data */ |
302 | 302 | ||
303 | "subs r3, r3, #1 \n" | 303 | "subs r3, r3, #1 \n" /* cols-- */ |
304 | "bne .sl_iloop \n" | 304 | "bne .sl_iloop \n" |
305 | 305 | ||
306 | "add r5, r5, %[psiz] \n" | 306 | "add r5, r5, %[psiz] \n" /* start_address += plane_size */ |
307 | "subs r2, r2, #1 \n" | 307 | "subs r2, r2, #1 \n" /* planes-- */ |
308 | "bne .sl_oloop \n" | 308 | "bne .sl_oloop \n" |
309 | 309 | ||
310 | "add %[addr],%[addr],%[bwid] \n" | 310 | "add %[addr],%[addr],%[bwid] \n" /* start_address += bwidth */ |
311 | "subs r4, r4, #1 \n" | 311 | "subs r4, r4, #1 \n" /* rows-- */ |
312 | "bne .sl_rloop \n" | 312 | "bne .sl_rloop \n" |
313 | : /* outputs */ | 313 | : /* outputs */ |
314 | : /* inputs */ | 314 | : /* inputs */ |
@@ -364,32 +364,32 @@ void gray_ub_scroll_right(int count) | |||
364 | if (count) | 364 | if (count) |
365 | { | 365 | { |
366 | asm ( | 366 | asm ( |
367 | "mov r4, %[high] \n" | 367 | "mov r4, %[high] \n" /* rows = height */ |
368 | 368 | ||
369 | ".sr_rloop: \n" | 369 | ".sr_rloop: \n" /* repeat for every row */ |
370 | "mov r5, %[addr] \n" | 370 | "mov r5, %[addr] \n" /* get start address */ |
371 | "mov r2, %[dpth] \n" | 371 | "mov r2, %[dpth] \n" /* planes = depth */ |
372 | 372 | ||
373 | ".sr_oloop: \n" | 373 | ".sr_oloop: \n" /* repeat for every bitplane */ |
374 | "mov r6, r5 \n" | 374 | "mov r6, r5 \n" /* get start address */ |
375 | "mov r3, %[cols] \n" | 375 | "mov r3, %[cols] \n" /* cols = col_count */ |
376 | "mov r1, #0 \n" | 376 | "mov r1, #0 \n" /* fill with zero */ |
377 | 377 | ||
378 | ".sr_iloop: \n" | 378 | ".sr_iloop: \n" /* repeat for all cols */ |
379 | "ldrb r0, [r6] \n" | 379 | "ldrb r0, [r6] \n" /* get data byte */ |
380 | "orr r1, r0, r1, lsl #8 \n" | 380 | "orr r1, r0, r1, lsl #8 \n" /* combine w/ old data shifted to 2nd byte */ |
381 | "mov r0, r1, lsr %[cnt] \n" | 381 | "mov r0, r1, lsr %[cnt] \n" /* shift right */ |
382 | "strb r0, [r6], #1 \n" | 382 | "strb r0, [r6], #1 \n" /* store data, increment addr */ |
383 | 383 | ||
384 | "subs r3, r3, #1 \n" | 384 | "subs r3, r3, #1 \n" /* cols-- */ |
385 | "bne .sr_iloop \n" | 385 | "bne .sr_iloop \n" |
386 | 386 | ||
387 | "add r5, r5, %[psiz] \n" | 387 | "add r5, r5, %[psiz] \n" /* start_address += plane_size */ |
388 | "subs r2, r2, #1 \n" | 388 | "subs r2, r2, #1 \n" /* planes-- */ |
389 | "bne .sr_oloop \n" | 389 | "bne .sr_oloop \n" |
390 | 390 | ||
391 | "add %[addr],%[addr],%[bwid] \n" | 391 | "add %[addr],%[addr],%[bwid] \n" /* start_address += bwidth */ |
392 | "subs r4, r4, #1 \n" | 392 | "subs r4, r4, #1 \n" /* rows-- */ |
393 | "bne .sr_rloop \n" | 393 | "bne .sr_rloop \n" |
394 | : /* outputs */ | 394 | : /* outputs */ |
395 | : /* inputs */ | 395 | : /* inputs */ |
@@ -714,8 +714,7 @@ void gray_ub_scroll_up(int count) | |||
714 | "move.b (%%a1),%%d0 \n" /* get data byte */ | 714 | "move.b (%%a1),%%d0 \n" /* get data byte */ |
715 | "lsl.l #8,%%d1 \n" /* old data to 2nd byte */ | 715 | "lsl.l #8,%%d1 \n" /* old data to 2nd byte */ |
716 | "or.l %%d1,%%d0 \n" /* combine old data */ | 716 | "or.l %%d1,%%d0 \n" /* combine old data */ |
717 | "clr.l %%d1 \n" | 717 | "move.l %%d0,%%d1 \n" /* keep data for next round */ |
718 | "move.b %%d0,%%d1 \n" /* keep data for next round */ | ||
719 | "lsr.l %[cnt],%%d0 \n" /* shift right */ | 718 | "lsr.l %[cnt],%%d0 \n" /* shift right */ |
720 | "move.b %%d0,(%%a1) \n" /* store data */ | 719 | "move.b %%d0,(%%a1) \n" /* store data */ |
721 | 720 | ||