summaryrefslogtreecommitdiff
path: root/apps/plugins/lib/gray_scroll.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/lib/gray_scroll.c')
-rw-r--r--apps/plugins/lib/gray_scroll.c83
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