Advertisement
MMBC

line example

Oct 24th, 2017
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ARM 1.49 KB | None | 0 0
  1.     .global main
  2. main:
  3.     stmfd sp!, {lr}
  4.     bl clrscr
  5.     mov r1, #10
  6.     mov r2, #10
  7.     mov r3, #75
  8.     mov r4, #85
  9.     mov r11, #2400
  10.     bl lineNoClip
  11.     ldr r4, .KEY_ESC
  12.     bl key_pause
  13.     ldmfd sp!, {pc}
  14.  
  15. lineNoClip:
  16.     stmfd sp!, {lr}
  17.     mov r7, #1
  18.     subs r5, r3, r1
  19.     rsbmi r5, r5, #0
  20.     rsbmi r7, r7, #0
  21.     mov r8, #1
  22.     subs r6, r4, r2
  23.     rsbpl r6, r6, #0
  24.     rsbmi r8, r8, #0
  25.     add r9, r5, r6
  26. lineloop:
  27.     bl setPixelNoClip
  28.     cmp r1, r3
  29.     cmpeq r2, r4
  30.     beq endlineloop
  31.     add r10, r9, r9
  32.     cmp r10, r6
  33.     addge r9, r9, r6
  34.     addge r1, r1, r7
  35.     cmp r10, r5
  36.     addle r9, r9, r5
  37.     addle r2, r2, r8
  38.     b lineloop
  39. endlineloop:
  40.     ldmfd sp!, {pc}
  41.    
  42. key_pause:
  43.     stmfd sp!, {lr}
  44. pauseloop:
  45.     mov r0, r4
  46.     bl isKeyPressed
  47.     cmp r0, #0
  48.     beq pauseloop
  49.     ldmfd sp!, {lr}
  50.    
  51. clrscr:
  52.     stmfd sp!, {lr}
  53.     mov r0, #0xC0000000
  54.     ldr r0, [r0, #0x10]
  55.     mov r1, #0
  56.     mov r2, #0
  57.     mov r11, #0
  58. clrscrloop:
  59.     bl setPixelNoClip
  60.     add r1, r1, #1
  61.     cmp r1, #320
  62.     blt clrscrloop
  63.     mov r1, #0
  64.     add r2, r2, #1
  65.     cmp r2, #240
  66.     blt clrscrloop
  67.     ldmfd sp!, {pc}
  68.  
  69. setPixel:
  70.     cmp r1, #0
  71.     bxlt lr
  72.     cmp r1, #320
  73.     bxge lr
  74.     cmp r2, #0
  75.     bxlt lr
  76.     cmp r2, #240
  77.     bxge lr
  78. setPixelNoClip:
  79.     stmfd sp!, {r0}
  80.     add r0, r0, r1, lsl #1
  81.     add r0, r0, r2, lsl #9
  82.     add r0, r0, r2, lsl #7
  83.     strh r11, [r0]
  84.     ldmfd sp!, {r0}
  85.     bx lr
  86.  
  87. .LK:
  88.     .align 2
  89. .KEY_ESC:
  90.     .word   .LANCHOR0
  91.     .section    .rodata
  92.     .align  2
  93.     .set    .LANCHOR0,. + 0
  94.     .type   KEY_NSPIRE_ESC, %object
  95.     .size   KEY_NSPIRE_ESC, 20
  96. KEY_NSPIRE_ESC:
  97.     .word   28
  98.     .word   128
  99.     .word   28
  100.     .word   128
  101.     .byte   0
  102.     .space  3
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement