keyboard.lst 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266
  1. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/ccw9Ogth.s page 1
  2. 1 .file "keyboard.c"
  3. 2 .arch atmega2561
  4. 3 __SREG__ = 0x3f
  5. 4 __SP_H__ = 0x3e
  6. 5 __SP_L__ = 0x3d
  7. 6 __tmp_reg__ = 0
  8. 7 __zero_reg__ = 1
  9. 8 .global __do_copy_data
  10. 9 .global __do_clear_bss
  11. 10 .text
  12. 11 .global KbScan
  13. 12 .type KbScan, @function
  14. 13 KbScan:
  15. 14 /* prologue: frame size=0 */
  16. 15 /* prologue end (size=0) */
  17. 16 0000 A398 cbi 52-0x20,3
  18. 17 /* #APP */
  19. 18 0002 0000 nop
  20. 19 0004 0000 nop
  21. 20 /* #NOAPP */
  22. 21 0006 8FB1 in r24,47-0x20
  23. 22 0008 A39A sbi 52-0x20,3
  24. 23 000a A498 cbi 52-0x20,4
  25. 24 /* #APP */
  26. 25 000c 0000 nop
  27. 26 000e 0000 nop
  28. 27 /* #NOAPP */
  29. 28 0010 6FB1 in r22,47-0x20
  30. 29 0012 A49A sbi 52-0x20,4
  31. 30 0014 5B98 cbi 43-0x20,3
  32. 31 /* #APP */
  33. 32 0016 0000 nop
  34. 33 0018 0000 nop
  35. 34 /* #NOAPP */
  36. 35 001a 2FB1 in r18,47-0x20
  37. 36 001c 5B9A sbi 43-0x20,3
  38. 37 001e 5A98 cbi 43-0x20,2
  39. 38 /* #APP */
  40. 39 0020 0000 nop
  41. 40 0022 0000 nop
  42. 41 /* #NOAPP */
  43. 42 0024 4FB1 in r20,47-0x20
  44. 43 0026 5A9A sbi 43-0x20,2
  45. 44 0028 8295 swap r24
  46. 45 002a 8F70 andi r24,0x0f
  47. 46 002c 9927 clr r25
  48. 47 002e 607F andi r22,lo8(-16)
  49. 48 0030 7727 clr r23
  50. 49 0032 862B or r24,r22
  51. 50 0034 972B or r25,r23
  52. 51 0036 207F andi r18,lo8(-16)
  53. 52 0038 3327 clr r19
  54. 53 003a 54E0 ldi r21,4
  55. 54 003c 220F 1: lsl r18
  56. 55 003e 331F rol r19
  57. 56 0040 5A95 dec r21
  58. 57 0042 01F4 brne 1b
  59. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/ccw9Ogth.s page 2
  60. 58 0044 822B or r24,r18
  61. 59 0046 932B or r25,r19
  62. 60 0048 407F andi r20,lo8(-16)
  63. 61 004a 5527 clr r21
  64. 62 004c 542F mov r21,r20
  65. 63 004e 4427 clr r20
  66. 64 0050 842B or r24,r20
  67. 65 0052 952B or r25,r21
  68. 66 0054 9093 0000 sts (KeyFound)+1,r25
  69. 67 0058 8093 0000 sts KeyFound,r24
  70. 68 /* epilogue: frame size=0 */
  71. 69 005c 0895 ret
  72. 70 /* epilogue end (size=1) */
  73. 71 /* function KbScan size 55 (54) */
  74. 72 .size KbScan, .-KbScan
  75. 73 .global KbSetKeyRepeating
  76. 74 .type KbSetKeyRepeating, @function
  77. 75 KbSetKeyRepeating:
  78. 76 /* prologue: frame size=0 */
  79. 77 /* prologue end (size=0) */
  80. 78 005e E82F mov r30,r24
  81. 79 0060 862F mov r24,r22
  82. 80 0062 8150 subi r24,lo8(-(-1))
  83. 81 0064 8230 cpi r24,lo8(2)
  84. 82 0066 00F4 brsh .L7
  85. 83 0068 E031 cpi r30,lo8(16)
  86. 84 006a 00F4 brsh .L7
  87. 85 006c FF27 clr r31
  88. 86 006e E050 subi r30,lo8(-(KeyRepeatArray))
  89. 87 0070 F040 sbci r31,hi8(-(KeyRepeatArray))
  90. 88 0072 6083 st Z,r22
  91. 89 .L7:
  92. 90 0074 0895 ret
  93. 91 /* epilogue: frame size=0 */
  94. 92 /* epilogue: noreturn */
  95. 93 /* epilogue end (size=0) */
  96. 94 /* function KbSetKeyRepeating size 12 (12) */
  97. 95 .size KbSetKeyRepeating, .-KbSetKeyRepeating
  98. 96 .global KbGetKey
  99. 97 .type KbGetKey, @function
  100. 98 KbGetKey:
  101. 99 /* prologue: frame size=0 */
  102. 100 /* prologue end (size=0) */
  103. 101 0076 8091 0000 lds r24,KeyBuffer
  104. 102 007a 9927 clr r25
  105. 103 /* epilogue: frame size=0 */
  106. 104 007c 0895 ret
  107. 105 /* epilogue end (size=1) */
  108. 106 /* function KbGetKey size 4 (3) */
  109. 107 .size KbGetKey, .-KbGetKey
  110. 108 .global KbInjectKey
  111. 109 .type KbInjectKey, @function
  112. 110 KbInjectKey:
  113. 111 /* prologue: frame size=0 */
  114. 112 /* prologue end (size=0) */
  115. 113 007e 8093 0000 sts KeyBuffer,r24
  116. 114 0082 E091 0000 lds r30,hKBEvent
  117. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/ccw9Ogth.s page 3
  118. 115 0086 F091 0000 lds r31,(hKBEvent)+1
  119. 116 008a 3097 sbiw r30,0
  120. 117 008c 01F4 brne .L11
  121. 118 008e 8FEF ldi r24,lo8(-1)
  122. 119 0090 9FEF ldi r25,hi8(-1)
  123. 120 0092 9093 0000 sts (hKBEvent)+1,r25
  124. 121 0096 8093 0000 sts hKBEvent,r24
  125. 122 009a 0895 ret
  126. 123 .L11:
  127. 124 009c 8FEF ldi r24,hi8(-1)
  128. 125 009e EF3F cpi r30,lo8(-1)
  129. 126 00a0 F807 cpc r31,r24
  130. 127 00a2 01F0 breq .L15
  131. 128 00a4 8481 ldd r24,Z+4
  132. 129 00a6 9581 ldd r25,Z+5
  133. 130 00a8 0196 adiw r24,1
  134. 131 00aa 9583 std Z+5,r25
  135. 132 00ac 8483 std Z+4,r24
  136. 133 .L15:
  137. 134 00ae 0895 ret
  138. 135 /* epilogue: frame size=0 */
  139. 136 /* epilogue: noreturn */
  140. 137 /* epilogue end (size=0) */
  141. 138 /* function KbInjectKey size 25 (25) */
  142. 139 .size KbInjectKey, .-KbInjectKey
  143. 140 .global KbInit
  144. 141 .type KbInit, @function
  145. 142 KbInit:
  146. 143 /* prologue: frame size=0 */
  147. 144 /* prologue end (size=0) */
  148. 145 00b0 A39A sbi 52-0x20,3
  149. 146 00b2 A49A sbi 52-0x20,4
  150. 147 00b4 5B9A sbi 43-0x20,3
  151. 148 00b6 5A9A sbi 43-0x20,2
  152. 149 00b8 1092 0000 sts KbState,__zero_reg__
  153. 150 00bc 8FEF ldi r24,lo8(-1)
  154. 151 00be 9FEF ldi r25,hi8(-1)
  155. 152 00c0 9093 0000 sts (KeyFound)+1,r25
  156. 153 00c4 8093 0000 sts KeyFound,r24
  157. 154 /* #APP */
  158. 155 00c8 0FB6 in __tmp_reg__, __SREG__
  159. 156 00ca F894 cli
  160. 157 00cc 0F92 push __tmp_reg__
  161. 158
  162. 159 /* #NOAPP */
  163. 160 00ce 1092 0000 sts (hKBEvent)+1,__zero_reg__
  164. 161 00d2 1092 0000 sts hKBEvent,__zero_reg__
  165. 162 /* #APP */
  166. 163 00d6 0F90 pop __tmp_reg__
  167. 164 00d8 0FBE out __SREG__, __tmp_reg__
  168. 165
  169. 166 /* #NOAPP */
  170. 167 00da 8FEF ldi r24,lo8(-1)
  171. 168 00dc 8093 0000 sts KeyBuffer,r24
  172. 169 00e0 E0E0 ldi r30,lo8(KeyRepeatArray)
  173. 170 00e2 F0E0 ldi r31,hi8(KeyRepeatArray)
  174. 171 00e4 82E0 ldi r24,lo8(2)
  175. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/ccw9Ogth.s page 4
  176. 172 .L17:
  177. 173 00e6 8193 st Z+,r24
  178. 174 00e8 90E0 ldi r25,hi8(KeyRepeatArray+16)
  179. 175 00ea E030 cpi r30,lo8(KeyRepeatArray+16)
  180. 176 00ec F907 cpc r31,r25
  181. 177 00ee 01F4 brne .L17
  182. 178 00f0 1092 0000 sts (HoldCounter)+1,__zero_reg__
  183. 179 00f4 1092 0000 sts HoldCounter,__zero_reg__
  184. 180 00f8 61E0 ldi r22,lo8(1)
  185. 181 00fa 88E0 ldi r24,lo8(8)
  186. 182 00fc 0E94 0000 call KbSetKeyRepeating
  187. 183 0100 61E0 ldi r22,lo8(1)
  188. 184 0102 8BE0 ldi r24,lo8(11)
  189. 185 0104 0E94 0000 call KbSetKeyRepeating
  190. 186 0108 61E0 ldi r22,lo8(1)
  191. 187 010a 8AE0 ldi r24,lo8(10)
  192. 188 010c 0E94 0000 call KbSetKeyRepeating
  193. 189 0110 61E0 ldi r22,lo8(1)
  194. 190 0112 8CE0 ldi r24,lo8(12)
  195. 191 0114 0E94 0000 call KbSetKeyRepeating
  196. 192 /* epilogue: frame size=0 */
  197. 193 0118 0895 ret
  198. 194 /* epilogue end (size=1) */
  199. 195 /* function KbInit size 62 (61) */
  200. 196 .size KbInit, .-KbInit
  201. 197 .global KbWaitForKeyEvent
  202. 198 .type KbWaitForKeyEvent, @function
  203. 199 KbWaitForKeyEvent:
  204. 200 /* prologue: frame size=0 */
  205. 201 /* prologue end (size=0) */
  206. 202 011a AB01 movw r20,r22
  207. 203 011c BC01 movw r22,r24
  208. 204 011e 80E0 ldi r24,lo8(hKBEvent)
  209. 205 0120 90E0 ldi r25,hi8(hKBEvent)
  210. 206 0122 0E94 0000 call NutEventWait
  211. 207 0126 20E0 ldi r18,lo8(0)
  212. 208 0128 30E0 ldi r19,hi8(0)
  213. 209 012a 8F5F subi r24,lo8(-1)
  214. 210 012c 9F4F sbci r25,hi8(-1)
  215. 211 012e 01F4 brne .L23
  216. 212 0130 21E0 ldi r18,lo8(1)
  217. 213 0132 30E0 ldi r19,hi8(1)
  218. 214 .L23:
  219. 215 0134 C901 movw r24,r18
  220. 216 /* epilogue: frame size=0 */
  221. 217 0136 0895 ret
  222. 218 /* epilogue end (size=1) */
  223. 219 /* function KbWaitForKeyEvent size 16 (15) */
  224. 220 .size KbWaitForKeyEvent, .-KbWaitForKeyEvent
  225. 221 .lcomm hKBEvent,2
  226. 222 .lcomm KeyFound,2
  227. 223 .lcomm KeyBuffer,1
  228. 224 .lcomm HoldCounter,2
  229. 225 .lcomm KbState,1
  230. 226 .lcomm KeyRepeatArray,16
  231. 227 /* File "source/keyboard.c": code 174 = 0x00ae ( 170), prologues 0, epilogues 4 */
  232. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/ccw9Ogth.s page 5
  233. DEFINED SYMBOLS
  234. *ABS*:00000000 keyboard.c
  235. C:\Users\GUUSV_~1\AppData\Local\Temp/ccw9Ogth.s:3 *ABS*:0000003f __SREG__
  236. C:\Users\GUUSV_~1\AppData\Local\Temp/ccw9Ogth.s:4 *ABS*:0000003e __SP_H__
  237. C:\Users\GUUSV_~1\AppData\Local\Temp/ccw9Ogth.s:5 *ABS*:0000003d __SP_L__
  238. C:\Users\GUUSV_~1\AppData\Local\Temp/ccw9Ogth.s:6 *ABS*:00000000 __tmp_reg__
  239. C:\Users\GUUSV_~1\AppData\Local\Temp/ccw9Ogth.s:7 *ABS*:00000001 __zero_reg__
  240. C:\Users\GUUSV_~1\AppData\Local\Temp/ccw9Ogth.s:13 .text:00000000 KbScan
  241. C:\Users\GUUSV_~1\AppData\Local\Temp/ccw9Ogth.s:221 .bss:00000002 KeyFound
  242. C:\Users\GUUSV_~1\AppData\Local\Temp/ccw9Ogth.s:75 .text:0000005e KbSetKeyRepeating
  243. C:\Users\GUUSV_~1\AppData\Local\Temp/ccw9Ogth.s:225 .bss:00000008 KeyRepeatArray
  244. C:\Users\GUUSV_~1\AppData\Local\Temp/ccw9Ogth.s:98 .text:00000076 KbGetKey
  245. C:\Users\GUUSV_~1\AppData\Local\Temp/ccw9Ogth.s:222 .bss:00000004 KeyBuffer
  246. C:\Users\GUUSV_~1\AppData\Local\Temp/ccw9Ogth.s:110 .text:0000007e KbInjectKey
  247. .bss:00000000 hKBEvent
  248. C:\Users\GUUSV_~1\AppData\Local\Temp/ccw9Ogth.s:142 .text:000000b0 KbInit
  249. C:\Users\GUUSV_~1\AppData\Local\Temp/ccw9Ogth.s:224 .bss:00000007 KbState
  250. C:\Users\GUUSV_~1\AppData\Local\Temp/ccw9Ogth.s:223 .bss:00000005 HoldCounter
  251. C:\Users\GUUSV_~1\AppData\Local\Temp/ccw9Ogth.s:199 .text:0000011a KbWaitForKeyEvent
  252. UNDEFINED SYMBOLS
  253. __do_copy_data
  254. __do_clear_bss
  255. NutEventWait