hd44780_bus.lst 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449
  1. GAS LISTING /tmp/ccH4CVSw.s page 1
  2. 1 .file "hd44780_bus.c"
  3. 2 __SP_H__ = 0x3e
  4. 3 __SP_L__ = 0x3d
  5. 4 __SREG__ = 0x3f
  6. 5 __RAMPZ__ = 0x3b
  7. 6 __tmp_reg__ = 0
  8. 7 __zero_reg__ = 1
  9. 8 .section .text.LcdBusyWait,"ax",@progbits
  10. 9 .type LcdBusyWait, @function
  11. 10 LcdBusyWait:
  12. 11 /* prologue: function */
  13. 12 /* frame size = 0 */
  14. 13 /* stack size = 0 */
  15. 14 .L__stack_usage = 0
  16. 15 0000 E091 0000 lds r30,lcd_base
  17. 16 0004 F091 0000 lds r31,lcd_base+1
  18. 17 0008 3296 adiw r30,2
  19. 18 .L2:
  20. 19 000a 8081 ld r24,Z
  21. 20 000c 87FF sbrs r24,7
  22. 21 000e 00C0 rjmp .L5
  23. 22 /* #APP */
  24. 23 ; 109 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  25. 24 0010 0000 nop
  26. 25 ; 0 "" 2
  27. 26 /* #NOAPP */
  28. 27 0012 00C0 rjmp .L2
  29. 28 .L5:
  30. 29 /* #APP */
  31. 30 ; 109 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  32. 31 0014 0000 nop
  33. 32 ; 0 "" 2
  34. 33 ; 110 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  35. 34 0016 0000 nop
  36. 35 ; 0 "" 2
  37. 36 ; 110 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  38. 37 0018 0000 nop
  39. 38 ; 0 "" 2
  40. 39 ; 111 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  41. 40 001a 0000 nop
  42. 41 ; 0 "" 2
  43. 42 ; 111 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  44. 43 001c 0000 nop
  45. 44 ; 0 "" 2
  46. 45 ; 112 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  47. 46 001e 0000 nop
  48. 47 ; 0 "" 2
  49. 48 ; 112 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  50. 49 0020 0000 nop
  51. 50 ; 0 "" 2
  52. 51 ; 113 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  53. 52 0022 0000 nop
  54. 53 ; 0 "" 2
  55. 54 ; 113 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  56. 55 0024 0000 nop
  57. 56 ; 0 "" 2
  58. 57 ; 114 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  59. GAS LISTING /tmp/ccH4CVSw.s page 2
  60. 58 0026 0000 nop
  61. 59 ; 0 "" 2
  62. 60 ; 114 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  63. 61 0028 0000 nop
  64. 62 ; 0 "" 2
  65. 63 ; 115 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  66. 64 002a 0000 nop
  67. 65 ; 0 "" 2
  68. 66 ; 115 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  69. 67 002c 0000 nop
  70. 68 ; 0 "" 2
  71. 69 ; 116 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  72. 70 002e 0000 nop
  73. 71 ; 0 "" 2
  74. 72 ; 116 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  75. 73 0030 0000 nop
  76. 74 ; 0 "" 2
  77. 75 ; 117 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  78. 76 0032 0000 nop
  79. 77 ; 0 "" 2
  80. 78 ; 117 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  81. 79 0034 0000 nop
  82. 80 ; 0 "" 2
  83. 81 ; 118 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  84. 82 0036 0000 nop
  85. 83 ; 0 "" 2
  86. 84 ; 118 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  87. 85 0038 0000 nop
  88. 86 ; 0 "" 2
  89. 87 ; 119 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  90. 88 003a 0000 nop
  91. 89 ; 0 "" 2
  92. 90 ; 119 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  93. 91 003c 0000 nop
  94. 92 ; 0 "" 2
  95. 93 ; 120 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  96. 94 003e 0000 nop
  97. 95 ; 0 "" 2
  98. 96 ; 120 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  99. 97 0040 0000 nop
  100. 98 ; 0 "" 2
  101. 99 ; 121 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  102. 100 0042 0000 nop
  103. 101 ; 0 "" 2
  104. 102 ; 121 "../../nut/arch/avr/dev/hd44780_bus.c" 1
  105. 103 0044 0000 nop
  106. 104 ; 0 "" 2
  107. 105 /* #NOAPP */
  108. 106 0046 0895 ret
  109. 107 .size LcdBusyWait, .-LcdBusyWait
  110. 108 .section .text.LcdWriteData,"ax",@progbits
  111. 109 .type LcdWriteData, @function
  112. 110 LcdWriteData:
  113. 111 0000 CF93 push r28
  114. 112 0002 DF93 push r29
  115. 113 0004 1F92 push __zero_reg__
  116. 114 0006 CDB7 in r28,__SP_L__
  117. GAS LISTING /tmp/ccH4CVSw.s page 3
  118. 115 0008 DEB7 in r29,__SP_H__
  119. 116 /* prologue: function */
  120. 117 /* frame size = 1 */
  121. 118 /* stack size = 3 */
  122. 119 .L__stack_usage = 3
  123. 120 000a 8983 std Y+1,r24
  124. 121 000c 0E94 0000 call LcdBusyWait
  125. 122 0010 E091 0000 lds r30,lcd_base
  126. 123 0014 F091 0000 lds r31,lcd_base+1
  127. 124 0018 8981 ldd r24,Y+1
  128. 125 001a 8183 std Z+1,r24
  129. 126 /* epilogue start */
  130. 127 001c 0F90 pop __tmp_reg__
  131. 128 001e DF91 pop r29
  132. 129 0020 CF91 pop r28
  133. 130 0022 0895 ret
  134. 131 .size LcdWriteData, .-LcdWriteData
  135. 132 .section .text.LcdWriteCmd,"ax",@progbits
  136. 133 .type LcdWriteCmd, @function
  137. 134 LcdWriteCmd:
  138. 135 0000 CF93 push r28
  139. 136 0002 DF93 push r29
  140. 137 0004 1F92 push __zero_reg__
  141. 138 0006 CDB7 in r28,__SP_L__
  142. 139 0008 DEB7 in r29,__SP_H__
  143. 140 /* prologue: function */
  144. 141 /* frame size = 1 */
  145. 142 /* stack size = 3 */
  146. 143 .L__stack_usage = 3
  147. 144 000a 8983 std Y+1,r24
  148. 145 000c 0E94 0000 call LcdBusyWait
  149. 146 0010 E091 0000 lds r30,lcd_base
  150. 147 0014 F091 0000 lds r31,lcd_base+1
  151. 148 0018 8981 ldd r24,Y+1
  152. 149 001a 8083 st Z,r24
  153. 150 /* epilogue start */
  154. 151 001c 0F90 pop __tmp_reg__
  155. 152 001e DF91 pop r29
  156. 153 0020 CF91 pop r28
  157. 154 0022 0895 ret
  158. 155 .size LcdWriteCmd, .-LcdWriteCmd
  159. 156 .section .text.LcdSetCursor,"ax",@progbits
  160. 157 .type LcdSetCursor, @function
  161. 158 LcdSetCursor:
  162. 159 0000 1F93 push r17
  163. 160 0002 CF93 push r28
  164. 161 0004 DF93 push r29
  165. 162 0006 00D0 rcall .
  166. 163 0008 1F92 push __zero_reg__
  167. 164 000a CDB7 in r28,__SP_L__
  168. 165 000c DEB7 in r29,__SP_H__
  169. 166 /* prologue: function */
  170. 167 /* frame size = 4 */
  171. 168 /* stack size = 7 */
  172. 169 .L__stack_usage = 7
  173. 170 000e 1982 std Y+1,__zero_reg__
  174. 171 0010 90E4 ldi r25,lo8(64)
  175. GAS LISTING /tmp/ccH4CVSw.s page 4
  176. 172 0012 9A83 std Y+2,r25
  177. 173 0014 90E1 ldi r25,lo8(16)
  178. 174 0016 9B83 std Y+3,r25
  179. 175 0018 90E5 ldi r25,lo8(80)
  180. 176 001a 9C83 std Y+4,r25
  181. 177 001c 182F mov r17,r24
  182. 178 001e 1F70 andi r17,lo8(15)
  183. 179 0020 8295 swap r24
  184. 180 0022 8F70 andi r24,lo8(15)
  185. 181 0024 8430 cpi r24,lo8(4)
  186. 182 0026 00F0 brlo .L9
  187. 183 0028 83E0 ldi r24,lo8(3)
  188. 184 .L9:
  189. 185 002a FE01 movw r30,r28
  190. 186 002c E80F add r30,r24
  191. 187 002e F11D adc r31,__zero_reg__
  192. 188 0030 8181 ldd r24,Z+1
  193. 189 0032 180F add r17,r24
  194. 190 0034 1068 ori r17,lo8(-128)
  195. 191 0036 0E94 0000 call LcdBusyWait
  196. 192 003a E091 0000 lds r30,lcd_base
  197. 193 003e F091 0000 lds r31,lcd_base+1
  198. 194 0042 1083 st Z,r17
  199. 195 /* epilogue start */
  200. 196 0044 0F90 pop __tmp_reg__
  201. 197 0046 0F90 pop __tmp_reg__
  202. 198 0048 0F90 pop __tmp_reg__
  203. 199 004a 0F90 pop __tmp_reg__
  204. 200 004c DF91 pop r29
  205. 201 004e CF91 pop r28
  206. 202 0050 1F91 pop r17
  207. 203 0052 0895 ret
  208. 204 .size LcdSetCursor, .-LcdSetCursor
  209. 205 .section .text.LcdCursorHome,"ax",@progbits
  210. 206 .type LcdCursorHome, @function
  211. 207 LcdCursorHome:
  212. 208 /* prologue: function */
  213. 209 /* frame size = 0 */
  214. 210 /* stack size = 0 */
  215. 211 .L__stack_usage = 0
  216. 212 0000 0E94 0000 call LcdBusyWait
  217. 213 0004 E091 0000 lds r30,lcd_base
  218. 214 0008 F091 0000 lds r31,lcd_base+1
  219. 215 000c 82E0 ldi r24,lo8(2)
  220. 216 000e 8083 st Z,r24
  221. 217 0010 0895 ret
  222. 218 .size LcdCursorHome, .-LcdCursorHome
  223. 219 .section .text.LcdCursorLeft,"ax",@progbits
  224. 220 .type LcdCursorLeft, @function
  225. 221 LcdCursorLeft:
  226. 222 /* prologue: function */
  227. 223 /* frame size = 0 */
  228. 224 /* stack size = 0 */
  229. 225 .L__stack_usage = 0
  230. 226 0000 0E94 0000 call LcdBusyWait
  231. 227 0004 E091 0000 lds r30,lcd_base
  232. 228 0008 F091 0000 lds r31,lcd_base+1
  233. GAS LISTING /tmp/ccH4CVSw.s page 5
  234. 229 000c 80E1 ldi r24,lo8(16)
  235. 230 000e 8083 st Z,r24
  236. 231 0010 0895 ret
  237. 232 .size LcdCursorLeft, .-LcdCursorLeft
  238. 233 .section .text.LcdCursorRight,"ax",@progbits
  239. 234 .type LcdCursorRight, @function
  240. 235 LcdCursorRight:
  241. 236 /* prologue: function */
  242. 237 /* frame size = 0 */
  243. 238 /* stack size = 0 */
  244. 239 .L__stack_usage = 0
  245. 240 0000 0E94 0000 call LcdBusyWait
  246. 241 0004 E091 0000 lds r30,lcd_base
  247. 242 0008 F091 0000 lds r31,lcd_base+1
  248. 243 000c 84E1 ldi r24,lo8(20)
  249. 244 000e 8083 st Z,r24
  250. 245 0010 0895 ret
  251. 246 .size LcdCursorRight, .-LcdCursorRight
  252. 247 .section .text.LcdClear,"ax",@progbits
  253. 248 .type LcdClear, @function
  254. 249 LcdClear:
  255. 250 /* prologue: function */
  256. 251 /* frame size = 0 */
  257. 252 /* stack size = 0 */
  258. 253 .L__stack_usage = 0
  259. 254 0000 0E94 0000 call LcdBusyWait
  260. 255 0004 E091 0000 lds r30,lcd_base
  261. 256 0008 F091 0000 lds r31,lcd_base+1
  262. 257 000c 81E0 ldi r24,lo8(1)
  263. 258 000e 8083 st Z,r24
  264. 259 0010 0895 ret
  265. 260 .size LcdClear, .-LcdClear
  266. 261 .section .text.LcdCursorMode,"ax",@progbits
  267. 262 .type LcdCursorMode, @function
  268. 263 LcdCursorMode:
  269. 264 /* prologue: function */
  270. 265 /* frame size = 0 */
  271. 266 /* stack size = 0 */
  272. 267 .L__stack_usage = 0
  273. 268 0000 0E94 0000 call LcdBusyWait
  274. 269 0004 E091 0000 lds r30,lcd_base
  275. 270 0008 F091 0000 lds r31,lcd_base+1
  276. 271 000c 82E0 ldi r24,lo8(2)
  277. 272 000e 8083 st Z,r24
  278. 273 0010 0895 ret
  279. 274 .size LcdCursorMode, .-LcdCursorMode
  280. 275 .section .text.LcdInit,"ax",@progbits
  281. 276 .type LcdInit, @function
  282. 277 LcdInit:
  283. 278 0000 0F93 push r16
  284. 279 0002 1F93 push r17
  285. 280 0004 CF93 push r28
  286. 281 0006 DF93 push r29
  287. 282 /* prologue: function */
  288. 283 /* frame size = 0 */
  289. 284 /* stack size = 4 */
  290. 285 .L__stack_usage = 4
  291. GAS LISTING /tmp/ccH4CVSw.s page 6
  292. 286 0008 FC01 movw r30,r24
  293. 287 000a 0485 ldd r16,Z+12
  294. 288 000c 1585 ldd r17,Z+13
  295. 289 000e 1093 0000 sts lcd_base+1,r17
  296. 290 0012 0093 0000 sts lcd_base,r16
  297. 291 0016 0E94 0000 call LcdBusyWait
  298. 292 001a C8E3 ldi r28,lo8(56)
  299. 293 001c F801 movw r30,r16
  300. 294 001e C083 st Z,r28
  301. 295 0020 82E3 ldi r24,lo8(50)
  302. 296 0022 0E94 0000 call NutDelay
  303. 297 0026 0E94 0000 call LcdBusyWait
  304. 298 002a E091 0000 lds r30,lcd_base
  305. 299 002e F091 0000 lds r31,lcd_base+1
  306. 300 0032 C083 st Z,r28
  307. 301 0034 82E3 ldi r24,lo8(50)
  308. 302 0036 0E94 0000 call NutDelay
  309. 303 003a 0E94 0000 call LcdBusyWait
  310. 304 003e E091 0000 lds r30,lcd_base
  311. 305 0042 F091 0000 lds r31,lcd_base+1
  312. 306 0046 C083 st Z,r28
  313. 307 0048 82E3 ldi r24,lo8(50)
  314. 308 004a 0E94 0000 call NutDelay
  315. 309 004e 0E94 0000 call LcdBusyWait
  316. 310 0052 C091 0000 lds r28,lcd_base
  317. 311 0056 D091 0000 lds r29,lcd_base+1
  318. 312 005a 81E0 ldi r24,lo8(1)
  319. 313 005c 8883 st Y,r24
  320. 314 005e 0E94 0000 call LcdBusyWait
  321. 315 0062 86E0 ldi r24,lo8(6)
  322. 316 0064 8883 st Y,r24
  323. 317 0066 0E94 0000 call LcdBusyWait
  324. 318 006a 8CE0 ldi r24,lo8(12)
  325. 319 006c 8883 st Y,r24
  326. 320 006e 0E94 0000 call LcdBusyWait
  327. 321 0072 82E0 ldi r24,lo8(2)
  328. 322 0074 8883 st Y,r24
  329. 323 0076 0E94 0000 call LcdBusyWait
  330. 324 007a 80E8 ldi r24,lo8(-128)
  331. 325 007c 8883 st Y,r24
  332. 326 007e 80E0 ldi r24,0
  333. 327 0080 90E0 ldi r25,0
  334. 328 /* epilogue start */
  335. 329 0082 DF91 pop r29
  336. 330 0084 CF91 pop r28
  337. 331 0086 1F91 pop r17
  338. 332 0088 0F91 pop r16
  339. 333 008a 0895 ret
  340. 334 .size LcdInit, .-LcdInit
  341. 335 .global devLcdBus
  342. 336 .data
  343. 337 .type devLcdBus, @object
  344. 338 .size devLcdBus, 37
  345. 339 devLcdBus:
  346. 340 0000 0000 .word 0
  347. 341 0002 6C .byte 108
  348. 342 0003 63 .byte 99
  349. GAS LISTING /tmp/ccH4CVSw.s page 7
  350. 343 0004 64 .byte 100
  351. 344 0005 62 .byte 98
  352. 345 0006 75 .byte 117
  353. 346 0007 73 .byte 115
  354. 347 0008 00 .byte 0
  355. 348 0009 00 .byte 0
  356. 349 000a 00 .byte 0
  357. 350 000b 02 .byte 2
  358. 351 000c 0000 .word 0
  359. 352 000e 00 .byte 0
  360. 353 000f 0000 .word 0
  361. 354 0011 0000 .word dcb_term
  362. 355 0013 0000 .word gs(TermInit)
  363. 356 0015 0000 .word gs(TermIOCtl)
  364. 357 0017 0000 .word 0
  365. 358 0019 0000 .word gs(TermWrite)
  366. 359 001b 0000 .word gs(TermWrite_P)
  367. 360 001d 0000 .word gs(TermOpen)
  368. 361 001f 0000 .word gs(TermClose)
  369. 362 0021 0000 .word 0
  370. 363 0023 0000 .word 0
  371. 364 .global dcb_term
  372. 365 .type dcb_term, @object
  373. 366 .size dcb_term, 32
  374. 367 dcb_term:
  375. 368 0025 0000 .word gs(LcdInit)
  376. 369 0027 0000 .word gs(LcdWriteData)
  377. 370 0029 0000 .word gs(LcdWriteCmd)
  378. 371 002b 0000 .word gs(LcdClear)
  379. 372 002d 0000 .word gs(LcdSetCursor)
  380. 373 002f 0000 .word gs(LcdCursorHome)
  381. 374 0031 0000 .word gs(LcdCursorLeft)
  382. 375 0033 0000 .word gs(LcdCursorRight)
  383. 376 0035 0000 .word gs(LcdCursorMode)
  384. 377 0037 00 .byte 0
  385. 378 0038 00 .byte 0
  386. 379 0039 00 .byte 0
  387. 380 003a 00 .byte 0
  388. 381 003b 00 .byte 0
  389. 382 003c 02 .byte 2
  390. 383 003d 10 .byte 16
  391. 384 003e 10 .byte 16
  392. 385 003f 00 .byte 0
  393. 386 0040 00 .byte 0
  394. 387 0041 0000 .word 0
  395. 388 0043 0000 .zero 2
  396. 389 .local lcd_base
  397. 390 .comm lcd_base,2,1
  398. 391 .ident "GCC: (GNU) 5.3.0"
  399. 392 .global __do_copy_data
  400. 393 .global __do_clear_bss
  401. GAS LISTING /tmp/ccH4CVSw.s page 8
  402. DEFINED SYMBOLS
  403. *ABS*:0000000000000000 hd44780_bus.c
  404. /tmp/ccH4CVSw.s:2 *ABS*:000000000000003e __SP_H__
  405. /tmp/ccH4CVSw.s:3 *ABS*:000000000000003d __SP_L__
  406. /tmp/ccH4CVSw.s:4 *ABS*:000000000000003f __SREG__
  407. /tmp/ccH4CVSw.s:5 *ABS*:000000000000003b __RAMPZ__
  408. /tmp/ccH4CVSw.s:6 *ABS*:0000000000000000 __tmp_reg__
  409. /tmp/ccH4CVSw.s:7 *ABS*:0000000000000001 __zero_reg__
  410. /tmp/ccH4CVSw.s:10 .text.LcdBusyWait:0000000000000000 LcdBusyWait
  411. .bss:0000000000000000 lcd_base
  412. /tmp/ccH4CVSw.s:110 .text.LcdWriteData:0000000000000000 LcdWriteData
  413. /tmp/ccH4CVSw.s:134 .text.LcdWriteCmd:0000000000000000 LcdWriteCmd
  414. /tmp/ccH4CVSw.s:158 .text.LcdSetCursor:0000000000000000 LcdSetCursor
  415. /tmp/ccH4CVSw.s:207 .text.LcdCursorHome:0000000000000000 LcdCursorHome
  416. /tmp/ccH4CVSw.s:221 .text.LcdCursorLeft:0000000000000000 LcdCursorLeft
  417. /tmp/ccH4CVSw.s:235 .text.LcdCursorRight:0000000000000000 LcdCursorRight
  418. /tmp/ccH4CVSw.s:249 .text.LcdClear:0000000000000000 LcdClear
  419. /tmp/ccH4CVSw.s:263 .text.LcdCursorMode:0000000000000000 LcdCursorMode
  420. /tmp/ccH4CVSw.s:277 .text.LcdInit:0000000000000000 LcdInit
  421. /tmp/ccH4CVSw.s:339 .data:0000000000000000 devLcdBus
  422. /tmp/ccH4CVSw.s:367 .data:0000000000000025 dcb_term
  423. UNDEFINED SYMBOLS
  424. NutDelay
  425. TermInit
  426. TermIOCtl
  427. TermWrite
  428. TermWrite_P
  429. TermOpen
  430. TermClose
  431. __do_copy_data
  432. __do_clear_bss