hd44780.lst 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398
  1. GAS LISTING /tmp/cc67azdq.s page 1
  2. 1 .file "hd44780.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.LcdSendNibble,"ax",@progbits
  10. 9 .type LcdSendNibble, @function
  11. 10 LcdSendNibble:
  12. 11 /* prologue: function */
  13. 12 /* frame size = 0 */
  14. 13 /* stack size = 0 */
  15. 14 .L__stack_usage = 0
  16. 15 0000 9AB1 in r25,0xa
  17. 16 0002 906F ori r25,lo8(-16)
  18. 17 0004 9AB9 out 0xa,r25
  19. 18 0006 9BB1 in r25,0xb
  20. 19 0008 9F70 andi r25,lo8(15)
  21. 20 000a 807F andi r24,lo8(-16)
  22. 21 000c 892B or r24,r25
  23. 22 000e 8BB9 out 0xb,r24
  24. 23 0010 739A sbi 0xe,3
  25. 24 /* #APP */
  26. 25 ; 332 "../../nut/arch/avr/dev/hd44780.c" 1
  27. 26 0012 0000 nop
  28. 27 ; 0 "" 2
  29. 28 ; 332 "../../nut/arch/avr/dev/hd44780.c" 1
  30. 29 0014 0000 nop
  31. 30 ; 0 "" 2
  32. 31 ; 332 "../../nut/arch/avr/dev/hd44780.c" 1
  33. 32 0016 0000 nop
  34. 33 ; 0 "" 2
  35. 34 ; 332 "../../nut/arch/avr/dev/hd44780.c" 1
  36. 35 0018 0000 nop
  37. 36 ; 0 "" 2
  38. 37 /* #NOAPP */
  39. 38 001a 7398 cbi 0xe,3
  40. 39 /* #APP */
  41. 40 ; 334 "../../nut/arch/avr/dev/hd44780.c" 1
  42. 41 001c 0000 nop
  43. 42 ; 0 "" 2
  44. 43 ; 334 "../../nut/arch/avr/dev/hd44780.c" 1
  45. 44 001e 0000 nop
  46. 45 ; 0 "" 2
  47. 46 ; 334 "../../nut/arch/avr/dev/hd44780.c" 1
  48. 47 0020 0000 nop
  49. 48 ; 0 "" 2
  50. 49 ; 334 "../../nut/arch/avr/dev/hd44780.c" 1
  51. 50 0022 0000 nop
  52. 51 ; 0 "" 2
  53. 52 /* #NOAPP */
  54. 53 0024 0895 ret
  55. 54 .size LcdSendNibble, .-LcdSendNibble
  56. 55 .section .text.LcdDelay,"ax",@progbits
  57. 56 .type LcdDelay, @function
  58. 57 LcdDelay:
  59. GAS LISTING /tmp/cc67azdq.s page 2
  60. 58 /* prologue: function */
  61. 59 /* frame size = 0 */
  62. 60 /* stack size = 0 */
  63. 61 .L__stack_usage = 0
  64. 62 0000 0C94 0000 jmp NutDelay
  65. 63 .size LcdDelay, .-LcdDelay
  66. 64 .section .text.LcdWriteCmd,"ax",@progbits
  67. 65 .type LcdWriteCmd, @function
  68. 66 LcdWriteCmd:
  69. 67 0000 CF93 push r28
  70. 68 0002 DF93 push r29
  71. 69 /* prologue: function */
  72. 70 /* frame size = 0 */
  73. 71 /* stack size = 2 */
  74. 72 .L__stack_usage = 2
  75. 73 0004 D82F mov r29,r24
  76. 74 0006 C62F mov r28,r22
  77. 75 0008 6A9A sbi 0xd,2
  78. 76 000a 7298 cbi 0xe,2
  79. 77 000c 0E94 0000 call LcdSendNibble
  80. 78 0010 CC23 tst r28
  81. 79 0012 01F0 breq .L4
  82. 80 0014 8C2F mov r24,r28
  83. 81 0016 0E94 0000 call LcdDelay
  84. 82 .L4:
  85. 83 001a 8D2F mov r24,r29
  86. 84 001c 8295 swap r24
  87. 85 001e 807F andi r24,lo8(-16)
  88. 86 0020 0E94 0000 call LcdSendNibble
  89. 87 0024 CC23 tst r28
  90. 88 0026 01F0 breq .L3
  91. 89 0028 8C2F mov r24,r28
  92. 90 /* epilogue start */
  93. 91 002a DF91 pop r29
  94. 92 002c CF91 pop r28
  95. 93 002e 0C94 0000 jmp LcdDelay
  96. 94 .L3:
  97. 95 /* epilogue start */
  98. 96 0032 DF91 pop r29
  99. 97 0034 CF91 pop r28
  100. 98 0036 0895 ret
  101. 99 .size LcdWriteCmd, .-LcdWriteCmd
  102. 100 .section .text.LcdCursorMode,"ax",@progbits
  103. 101 .type LcdCursorMode, @function
  104. 102 LcdCursorMode:
  105. 103 /* prologue: function */
  106. 104 /* frame size = 0 */
  107. 105 /* stack size = 0 */
  108. 106 .L__stack_usage = 0
  109. 107 0000 62E0 ldi r22,lo8(2)
  110. 108 0002 82E0 ldi r24,lo8(2)
  111. 109 0004 0C94 0000 jmp LcdWriteCmd
  112. 110 .size LcdCursorMode, .-LcdCursorMode
  113. 111 .section .text.LcdCursorRight,"ax",@progbits
  114. 112 .type LcdCursorRight, @function
  115. 113 LcdCursorRight:
  116. 114 /* prologue: function */
  117. GAS LISTING /tmp/cc67azdq.s page 3
  118. 115 /* frame size = 0 */
  119. 116 /* stack size = 0 */
  120. 117 .L__stack_usage = 0
  121. 118 0000 61E0 ldi r22,lo8(1)
  122. 119 0002 84E1 ldi r24,lo8(20)
  123. 120 0004 0C94 0000 jmp LcdWriteCmd
  124. 121 .size LcdCursorRight, .-LcdCursorRight
  125. 122 .section .text.LcdCursorLeft,"ax",@progbits
  126. 123 .type LcdCursorLeft, @function
  127. 124 LcdCursorLeft:
  128. 125 /* prologue: function */
  129. 126 /* frame size = 0 */
  130. 127 /* stack size = 0 */
  131. 128 .L__stack_usage = 0
  132. 129 0000 61E0 ldi r22,lo8(1)
  133. 130 0002 80E1 ldi r24,lo8(16)
  134. 131 0004 0C94 0000 jmp LcdWriteCmd
  135. 132 .size LcdCursorLeft, .-LcdCursorLeft
  136. 133 .section .text.LcdCursorHome,"ax",@progbits
  137. 134 .type LcdCursorHome, @function
  138. 135 LcdCursorHome:
  139. 136 /* prologue: function */
  140. 137 /* frame size = 0 */
  141. 138 /* stack size = 0 */
  142. 139 .L__stack_usage = 0
  143. 140 0000 62E0 ldi r22,lo8(2)
  144. 141 0002 82E0 ldi r24,lo8(2)
  145. 142 0004 0C94 0000 jmp LcdWriteCmd
  146. 143 .size LcdCursorHome, .-LcdCursorHome
  147. 144 .section .text.LcdSetCursor,"ax",@progbits
  148. 145 .type LcdSetCursor, @function
  149. 146 LcdSetCursor:
  150. 147 0000 CF93 push r28
  151. 148 0002 DF93 push r29
  152. 149 0004 00D0 rcall .
  153. 150 0006 1F92 push __zero_reg__
  154. 151 0008 CDB7 in r28,__SP_L__
  155. 152 000a DEB7 in r29,__SP_H__
  156. 153 /* prologue: function */
  157. 154 /* frame size = 4 */
  158. 155 /* stack size = 6 */
  159. 156 .L__stack_usage = 6
  160. 157 000c 1982 std Y+1,__zero_reg__
  161. 158 000e 90E4 ldi r25,lo8(64)
  162. 159 0010 9A83 std Y+2,r25
  163. 160 0012 90E1 ldi r25,lo8(16)
  164. 161 0014 9B83 std Y+3,r25
  165. 162 0016 90E5 ldi r25,lo8(80)
  166. 163 0018 9C83 std Y+4,r25
  167. 164 001a 84FB bst r24,4
  168. 165 001c 2227 clr r18
  169. 166 001e 20F9 bld r18,0
  170. 167 0020 30E0 ldi r19,0
  171. 168 0022 FE01 movw r30,r28
  172. 169 0024 E20F add r30,r18
  173. 170 0026 F31F adc r31,r19
  174. 171 0028 9181 ldd r25,Z+1
  175. GAS LISTING /tmp/cc67azdq.s page 4
  176. 172 002a 8F70 andi r24,lo8(15)
  177. 173 002c 890F add r24,r25
  178. 174 002e 61E0 ldi r22,lo8(1)
  179. 175 0030 8068 ori r24,lo8(-128)
  180. 176 /* epilogue start */
  181. 177 0032 0F90 pop __tmp_reg__
  182. 178 0034 0F90 pop __tmp_reg__
  183. 179 0036 0F90 pop __tmp_reg__
  184. 180 0038 0F90 pop __tmp_reg__
  185. 181 003a DF91 pop r29
  186. 182 003c CF91 pop r28
  187. 183 003e 0C94 0000 jmp LcdWriteCmd
  188. 184 .size LcdSetCursor, .-LcdSetCursor
  189. 185 .section .text.LcdClear,"ax",@progbits
  190. 186 .type LcdClear, @function
  191. 187 LcdClear:
  192. 188 /* prologue: function */
  193. 189 /* frame size = 0 */
  194. 190 /* stack size = 0 */
  195. 191 .L__stack_usage = 0
  196. 192 0000 62E0 ldi r22,lo8(2)
  197. 193 0002 81E0 ldi r24,lo8(1)
  198. 194 0004 0C94 0000 jmp LcdWriteCmd
  199. 195 .size LcdClear, .-LcdClear
  200. 196 .section .text.LcdInit,"ax",@progbits
  201. 197 .type LcdInit, @function
  202. 198 LcdInit:
  203. 199 0000 CF93 push r28
  204. 200 0002 DF93 push r29
  205. 201 /* prologue: function */
  206. 202 /* frame size = 0 */
  207. 203 /* stack size = 2 */
  208. 204 .L__stack_usage = 2
  209. 205 0004 EC01 movw r28,r24
  210. 206 0006 6A9A sbi 0xd,2
  211. 207 0008 6B9A sbi 0xd,3
  212. 208 000a 7298 cbi 0xe,2
  213. 209 000c 83E3 ldi r24,lo8(51)
  214. 210 000e 0E94 0000 call LcdSendNibble
  215. 211 0012 82E3 ldi r24,lo8(50)
  216. 212 0014 0E94 0000 call LcdDelay
  217. 213 0018 83E3 ldi r24,lo8(51)
  218. 214 001a 0E94 0000 call LcdSendNibble
  219. 215 001e 82E3 ldi r24,lo8(50)
  220. 216 0020 0E94 0000 call LcdDelay
  221. 217 0024 83E3 ldi r24,lo8(51)
  222. 218 0026 0E94 0000 call LcdSendNibble
  223. 219 002a 82E3 ldi r24,lo8(50)
  224. 220 002c 0E94 0000 call LcdDelay
  225. 221 0030 82E2 ldi r24,lo8(34)
  226. 222 0032 0E94 0000 call LcdSendNibble
  227. 223 0036 82E3 ldi r24,lo8(50)
  228. 224 0038 0E94 0000 call LcdDelay
  229. 225 003c E989 ldd r30,Y+17
  230. 226 003e FA89 ldd r31,Y+18
  231. 227 0040 8789 ldd r24,Z+23
  232. 228 0042 8230 cpi r24,lo8(2)
  233. GAS LISTING /tmp/cc67azdq.s page 5
  234. 229 0044 00F4 brsh .L18
  235. 230 0046 80E2 ldi r24,lo8(32)
  236. 231 0048 00C0 rjmp .L17
  237. 232 .L18:
  238. 233 004a 88E2 ldi r24,lo8(40)
  239. 234 .L17:
  240. 235 004c 61E0 ldi r22,lo8(1)
  241. 236 004e 0E94 0000 call LcdWriteCmd
  242. 237 0052 62E0 ldi r22,lo8(2)
  243. 238 0054 81E0 ldi r24,lo8(1)
  244. 239 0056 0E94 0000 call LcdWriteCmd
  245. 240 005a 62E0 ldi r22,lo8(2)
  246. 241 005c 86E0 ldi r24,lo8(6)
  247. 242 005e 0E94 0000 call LcdWriteCmd
  248. 243 0062 62E0 ldi r22,lo8(2)
  249. 244 0064 8CE0 ldi r24,lo8(12)
  250. 245 0066 0E94 0000 call LcdWriteCmd
  251. 246 006a 62E0 ldi r22,lo8(2)
  252. 247 006c 82E0 ldi r24,lo8(2)
  253. 248 006e 0E94 0000 call LcdWriteCmd
  254. 249 0072 62E0 ldi r22,lo8(2)
  255. 250 0074 80E8 ldi r24,lo8(-128)
  256. 251 0076 0E94 0000 call LcdWriteCmd
  257. 252 007a 1092 0000 sts during_init,__zero_reg__
  258. 253 007e 80E0 ldi r24,0
  259. 254 0080 90E0 ldi r25,0
  260. 255 /* epilogue start */
  261. 256 0082 DF91 pop r29
  262. 257 0084 CF91 pop r28
  263. 258 0086 0895 ret
  264. 259 .size LcdInit, .-LcdInit
  265. 260 .section .text.LcdWriteData,"ax",@progbits
  266. 261 .type LcdWriteData, @function
  267. 262 LcdWriteData:
  268. 263 0000 CF93 push r28
  269. 264 /* prologue: function */
  270. 265 /* frame size = 0 */
  271. 266 /* stack size = 1 */
  272. 267 .L__stack_usage = 1
  273. 268 0002 C82F mov r28,r24
  274. 269 0004 6A9A sbi 0xd,2
  275. 270 0006 729A sbi 0xe,2
  276. 271 0008 0E94 0000 call LcdSendNibble
  277. 272 000c 81E0 ldi r24,lo8(1)
  278. 273 000e 0E94 0000 call LcdDelay
  279. 274 0012 8C2F mov r24,r28
  280. 275 0014 8295 swap r24
  281. 276 0016 807F andi r24,lo8(-16)
  282. 277 0018 0E94 0000 call LcdSendNibble
  283. 278 001c 81E0 ldi r24,lo8(1)
  284. 279 /* epilogue start */
  285. 280 001e CF91 pop r28
  286. 281 0020 0C94 0000 jmp LcdDelay
  287. 282 .size LcdWriteData, .-LcdWriteData
  288. 283 .global devLcd
  289. 284 .data
  290. 285 .type devLcd, @object
  291. GAS LISTING /tmp/cc67azdq.s page 6
  292. 286 .size devLcd, 37
  293. 287 devLcd:
  294. 288 0000 0000 .word 0
  295. 289 0002 6C .byte 108
  296. 290 0003 63 .byte 99
  297. 291 0004 64 .byte 100
  298. 292 0005 00 .byte 0
  299. 293 0006 00 .byte 0
  300. 294 0007 00 .byte 0
  301. 295 0008 00 .byte 0
  302. 296 0009 00 .byte 0
  303. 297 000a 00 .byte 0
  304. 298 000b 02 .byte 2
  305. 299 000c 0000 .word 0
  306. 300 000e 00 .byte 0
  307. 301 000f 0000 .word 0
  308. 302 0011 0000 .word dcb_term
  309. 303 0013 0000 .word gs(TermInit)
  310. 304 0015 0000 .word gs(TermIOCtl)
  311. 305 0017 0000 .word 0
  312. 306 0019 0000 .word gs(TermWrite)
  313. 307 001b 0000 .word gs(TermWrite_P)
  314. 308 001d 0000 .word gs(TermOpen)
  315. 309 001f 0000 .word gs(TermClose)
  316. 310 0021 0000 .word 0
  317. 311 0023 0000 .word 0
  318. 312 .global dcb_term
  319. 313 .type dcb_term, @object
  320. 314 .size dcb_term, 32
  321. 315 dcb_term:
  322. 316 0025 0000 .word gs(LcdInit)
  323. 317 0027 0000 .word gs(LcdWriteData)
  324. 318 0029 0000 .word gs(LcdWriteCmd)
  325. 319 002b 0000 .word gs(LcdClear)
  326. 320 002d 0000 .word gs(LcdSetCursor)
  327. 321 002f 0000 .word gs(LcdCursorHome)
  328. 322 0031 0000 .word gs(LcdCursorLeft)
  329. 323 0033 0000 .word gs(LcdCursorRight)
  330. 324 0035 0000 .word gs(LcdCursorMode)
  331. 325 0037 00 .byte 0
  332. 326 0038 00 .byte 0
  333. 327 0039 00 .byte 0
  334. 328 003a 00 .byte 0
  335. 329 003b 00 .byte 0
  336. 330 003c 02 .byte 2
  337. 331 003d 10 .byte 16
  338. 332 003e 10 .byte 16
  339. 333 003f 00 .byte 0
  340. 334 0040 00 .byte 0
  341. 335 0041 0000 .word 0
  342. 336 0043 0000 .zero 2
  343. 337 .type during_init, @object
  344. 338 .size during_init, 1
  345. 339 during_init:
  346. 340 0045 01 .byte 1
  347. 341 .ident "GCC: (GNU) 5.3.0"
  348. 342 .global __do_copy_data
  349. GAS LISTING /tmp/cc67azdq.s page 7
  350. GAS LISTING /tmp/cc67azdq.s page 8
  351. DEFINED SYMBOLS
  352. *ABS*:0000000000000000 hd44780.c
  353. /tmp/cc67azdq.s:2 *ABS*:000000000000003e __SP_H__
  354. /tmp/cc67azdq.s:3 *ABS*:000000000000003d __SP_L__
  355. /tmp/cc67azdq.s:4 *ABS*:000000000000003f __SREG__
  356. /tmp/cc67azdq.s:5 *ABS*:000000000000003b __RAMPZ__
  357. /tmp/cc67azdq.s:6 *ABS*:0000000000000000 __tmp_reg__
  358. /tmp/cc67azdq.s:7 *ABS*:0000000000000001 __zero_reg__
  359. /tmp/cc67azdq.s:10 .text.LcdSendNibble:0000000000000000 LcdSendNibble
  360. /tmp/cc67azdq.s:57 .text.LcdDelay:0000000000000000 LcdDelay
  361. /tmp/cc67azdq.s:66 .text.LcdWriteCmd:0000000000000000 LcdWriteCmd
  362. /tmp/cc67azdq.s:102 .text.LcdCursorMode:0000000000000000 LcdCursorMode
  363. /tmp/cc67azdq.s:113 .text.LcdCursorRight:0000000000000000 LcdCursorRight
  364. /tmp/cc67azdq.s:124 .text.LcdCursorLeft:0000000000000000 LcdCursorLeft
  365. /tmp/cc67azdq.s:135 .text.LcdCursorHome:0000000000000000 LcdCursorHome
  366. /tmp/cc67azdq.s:146 .text.LcdSetCursor:0000000000000000 LcdSetCursor
  367. /tmp/cc67azdq.s:187 .text.LcdClear:0000000000000000 LcdClear
  368. /tmp/cc67azdq.s:198 .text.LcdInit:0000000000000000 LcdInit
  369. /tmp/cc67azdq.s:339 .data:0000000000000045 during_init
  370. /tmp/cc67azdq.s:262 .text.LcdWriteData:0000000000000000 LcdWriteData
  371. /tmp/cc67azdq.s:287 .data:0000000000000000 devLcd
  372. /tmp/cc67azdq.s:315 .data:0000000000000025 dcb_term
  373. UNDEFINED SYMBOLS
  374. NutDelay
  375. TermInit
  376. TermIOCtl
  377. TermWrite
  378. TermWrite_P
  379. TermOpen
  380. TermClose
  381. __do_copy_data