mmcdrv.lst 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104
  1. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s page 1
  2. 1 .file "mmcdrv.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 MMCIsCDROMDevice
  13. 12 .type MMCIsCDROMDevice, @function
  14. 13 MMCIsCDROMDevice:
  15. 14 /* prologue: frame size=0 */
  16. 15 /* prologue end (size=0) */
  17. 16 0000 80E0 ldi r24,lo8(0)
  18. 17 0002 90E0 ldi r25,hi8(0)
  19. 18 /* epilogue: frame size=0 */
  20. 19 0004 0895 ret
  21. 20 /* epilogue end (size=1) */
  22. 21 /* function MMCIsCDROMDevice size 3 (2) */
  23. 22 .size MMCIsCDROMDevice, .-MMCIsCDROMDevice
  24. 23 .global MMCIsZIPDevice
  25. 24 .type MMCIsZIPDevice, @function
  26. 25 MMCIsZIPDevice:
  27. 26 /* prologue: frame size=0 */
  28. 27 /* prologue end (size=0) */
  29. 28 0006 80E0 ldi r24,lo8(0)
  30. 29 0008 90E0 ldi r25,hi8(0)
  31. 30 /* epilogue: frame size=0 */
  32. 31 000a 0895 ret
  33. 32 /* epilogue end (size=1) */
  34. 33 /* function MMCIsZIPDevice size 3 (2) */
  35. 34 .size MMCIsZIPDevice, .-MMCIsZIPDevice
  36. 35 .global MMCUnMountDevice
  37. 36 .type MMCUnMountDevice, @function
  38. 37 MMCUnMountDevice:
  39. 38 /* prologue: frame size=0 */
  40. 39 /* prologue end (size=0) */
  41. 40 000c 80E0 ldi r24,lo8(0)
  42. 41 000e 90E0 ldi r25,hi8(0)
  43. 42 /* epilogue: frame size=0 */
  44. 43 0010 0895 ret
  45. 44 /* epilogue end (size=1) */
  46. 45 /* function MMCUnMountDevice size 3 (2) */
  47. 46 .size MMCUnMountDevice, .-MMCUnMountDevice
  48. 47 .type MMCLock, @function
  49. 48 MMCLock:
  50. 49 /* prologue: frame size=0 */
  51. 50 /* prologue end (size=0) */
  52. 51 0012 40E0 ldi r20,lo8(0)
  53. 52 0014 50E0 ldi r21,hi8(0)
  54. 53 0016 60E0 ldi r22,hlo8(0)
  55. 54 0018 70E0 ldi r23,hhi8(0)
  56. 55 001a 80E0 ldi r24,lo8(hMMCSemaphore)
  57. 56 001c 90E0 ldi r25,hi8(hMMCSemaphore)
  58. 57 001e 0E94 0000 call NutEventWait
  59. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s page 2
  60. 58 /* epilogue: frame size=0 */
  61. 59 0022 0895 ret
  62. 60 /* epilogue end (size=1) */
  63. 61 /* function MMCLock size 9 (8) */
  64. 62 .size MMCLock, .-MMCLock
  65. 63 .type MMCGet, @function
  66. 64 MMCGet:
  67. 65 /* prologue: frame size=0 */
  68. 66 0024 CF93 push r28
  69. 67 0026 DF93 push r29
  70. 68 /* prologue end (size=2) */
  71. 69 0028 CEEF ldi r28,lo8(-2)
  72. 70 002a DFEF ldi r29,hi8(-2)
  73. 71 .L10:
  74. 72 002c 0E94 0000 call SPIgetByte
  75. 73 0030 8F3F cpi r24,lo8(-1)
  76. 74 0032 01F4 brne .L11
  77. 75 0034 2197 sbiw r28,1
  78. 76 0036 01F4 brne .L10
  79. 77 .L11:
  80. 78 0038 9927 clr r25
  81. 79 /* epilogue: frame size=0 */
  82. 80 003a DF91 pop r29
  83. 81 003c CF91 pop r28
  84. 82 003e 0895 ret
  85. 83 /* epilogue end (size=3) */
  86. 84 /* function MMCGet size 15 (10) */
  87. 85 .size MMCGet, .-MMCGet
  88. 86 .type MMCDataToken, @function
  89. 87 MMCDataToken:
  90. 88 /* prologue: frame size=0 */
  91. 89 0040 CF93 push r28
  92. 90 0042 DF93 push r29
  93. 91 /* prologue end (size=2) */
  94. 92 0044 CEEF ldi r28,lo8(-2)
  95. 93 0046 DFEF ldi r29,hi8(-2)
  96. 94 .L16:
  97. 95 0048 0E94 0000 call SPIgetByte
  98. 96 004c 8E3F cpi r24,lo8(-2)
  99. 97 004e 01F0 breq .L17
  100. 98 0050 2197 sbiw r28,1
  101. 99 0052 01F4 brne .L16
  102. 100 .L17:
  103. 101 0054 9927 clr r25
  104. 102 /* epilogue: frame size=0 */
  105. 103 0056 DF91 pop r29
  106. 104 0058 CF91 pop r28
  107. 105 005a 0895 ret
  108. 106 /* epilogue end (size=3) */
  109. 107 /* function MMCDataToken size 15 (10) */
  110. 108 .size MMCDataToken, .-MMCDataToken
  111. 109 .type MMCCommand, @function
  112. 110 MMCCommand:
  113. 111 /* prologue: frame size=0 */
  114. 112 005c DF92 push r13
  115. 113 005e EF92 push r14
  116. 114 0060 FF92 push r15
  117. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s page 3
  118. 115 0062 0F93 push r16
  119. 116 0064 1F93 push r17
  120. 117 /* prologue end (size=5) */
  121. 118 0066 D82E mov r13,r24
  122. 119 0068 8B01 movw r16,r22
  123. 120 006a 7A01 movw r14,r20
  124. 121 006c 82E0 ldi r24,lo8(2)
  125. 122 006e 90E0 ldi r25,hi8(2)
  126. 123 0070 0E94 0000 call SPIselect
  127. 124 0074 8FEF ldi r24,lo8(-1)
  128. 125 0076 0E94 0000 call SPIputByte
  129. 126 007a 8D2D mov r24,r13
  130. 127 007c 8064 ori r24,lo8(64)
  131. 128 007e 0E94 0000 call SPIputByte
  132. 129 0082 812F mov r24,r17
  133. 130 0084 9927 clr r25
  134. 131 0086 0E94 0000 call SPIputByte
  135. 132 008a 802F mov r24,r16
  136. 133 008c 0E94 0000 call SPIputByte
  137. 134 0090 8F2D mov r24,r15
  138. 135 0092 9927 clr r25
  139. 136 0094 0E94 0000 call SPIputByte
  140. 137 0098 8E2D mov r24,r14
  141. 138 009a 0E94 0000 call SPIputByte
  142. 139 009e 85E9 ldi r24,lo8(-107)
  143. 140 00a0 0E94 0000 call SPIputByte
  144. 141 00a4 8FEF ldi r24,lo8(-1)
  145. 142 00a6 0E94 0000 call SPIputByte
  146. 143 /* epilogue: frame size=0 */
  147. 144 00aa 1F91 pop r17
  148. 145 00ac 0F91 pop r16
  149. 146 00ae FF90 pop r15
  150. 147 00b0 EF90 pop r14
  151. 148 00b2 DF90 pop r13
  152. 149 00b4 0895 ret
  153. 150 /* epilogue end (size=6) */
  154. 151 /* function MMCCommand size 45 (34) */
  155. 152 .size MMCCommand, .-MMCCommand
  156. 153 .type ReadSectors, @function
  157. 154 ReadSectors:
  158. 155 /* prologue: frame size=0 */
  159. 156 00b6 6F92 push r6
  160. 157 00b8 7F92 push r7
  161. 158 00ba 8F92 push r8
  162. 159 00bc 9F92 push r9
  163. 160 00be AF92 push r10
  164. 161 00c0 BF92 push r11
  165. 162 00c2 CF92 push r12
  166. 163 00c4 DF92 push r13
  167. 164 00c6 EF92 push r14
  168. 165 00c8 FF92 push r15
  169. 166 00ca 0F93 push r16
  170. 167 00cc 1F93 push r17
  171. 168 00ce CF93 push r28
  172. 169 00d0 DF93 push r29
  173. 170 /* prologue end (size=14) */
  174. 171 00d2 5B01 movw r10,r22
  175. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s page 4
  176. 172 00d4 6901 movw r12,r18
  177. 173 00d6 7A01 movw r14,r20
  178. 174 00d8 3801 movw r6,r16
  179. 175 00da 8824 clr r8
  180. 176 00dc 9924 clr r9
  181. 177 00de 00C0 rjmp .L24
  182. 178 .L25:
  183. 179 00e0 A601 movw r20,r12
  184. 180 00e2 542F mov r21,r20
  185. 181 00e4 4427 clr r20
  186. 182 00e6 550F lsl r21
  187. 183 00e8 C701 movw r24,r14
  188. 184 00ea B601 movw r22,r12
  189. 185 00ec 27E0 ldi r18,7
  190. 186 00ee 9695 1: lsr r25
  191. 187 00f0 8795 ror r24
  192. 188 00f2 7795 ror r23
  193. 189 00f4 6795 ror r22
  194. 190 00f6 2A95 dec r18
  195. 191 00f8 01F4 brne 1b
  196. 192 00fa 81E1 ldi r24,lo8(17)
  197. 193 00fc 0E94 0000 call MMCCommand
  198. 194 0100 0E94 0000 call MMCDataToken
  199. 195 0104 8E3F cpi r24,lo8(-2)
  200. 196 0106 01F0 breq .L26
  201. 197 0108 0E94 0000 call SPIdeselect
  202. 198 010c 81E0 ldi r24,lo8(1)
  203. 199 010e 90E0 ldi r25,hi8(1)
  204. 200 0110 00C0 rjmp .L28
  205. 201 .L26:
  206. 202 0112 8501 movw r16,r10
  207. 203 0114 C0E0 ldi r28,lo8(0)
  208. 204 0116 D0E0 ldi r29,hi8(0)
  209. 205 .L29:
  210. 206 0118 0E94 0000 call SPIgetByte
  211. 207 011c F801 movw r30,r16
  212. 208 011e 8193 st Z+,r24
  213. 209 0120 8F01 movw r16,r30
  214. 210 0122 2196 adiw r28,1
  215. 211 0124 F2E0 ldi r31,hi8(512)
  216. 212 0126 C030 cpi r28,lo8(512)
  217. 213 0128 DF07 cpc r29,r31
  218. 214 012a 01F4 brne .L29
  219. 215 012c 80E0 ldi r24,lo8(512)
  220. 216 012e 92E0 ldi r25,hi8(512)
  221. 217 0130 A80E add r10,r24
  222. 218 0132 B91E adc r11,r25
  223. 219 0134 8FEF ldi r24,lo8(-1)
  224. 220 0136 0E94 0000 call SPIputByte
  225. 221 013a 8FEF ldi r24,lo8(-1)
  226. 222 013c 0E94 0000 call SPIputByte
  227. 223 0140 0E94 0000 call SPIdeselect
  228. 224 0144 0894 sec
  229. 225 0146 811C adc r8,__zero_reg__
  230. 226 0148 911C adc r9,__zero_reg__
  231. 227 014a 0894 sec
  232. 228 014c C11C adc r12,__zero_reg__
  233. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s page 5
  234. 229 014e D11C adc r13,__zero_reg__
  235. 230 0150 E11C adc r14,__zero_reg__
  236. 231 0152 F11C adc r15,__zero_reg__
  237. 232 .L24:
  238. 233 0154 8614 cp r8,r6
  239. 234 0156 9704 cpc r9,r7
  240. 235 0158 01F4 brne .L25
  241. 236 015a 80E0 ldi r24,lo8(0)
  242. 237 015c 90E0 ldi r25,hi8(0)
  243. 238 .L28:
  244. 239 /* epilogue: frame size=0 */
  245. 240 015e DF91 pop r29
  246. 241 0160 CF91 pop r28
  247. 242 0162 1F91 pop r17
  248. 243 0164 0F91 pop r16
  249. 244 0166 FF90 pop r15
  250. 245 0168 EF90 pop r14
  251. 246 016a DF90 pop r13
  252. 247 016c CF90 pop r12
  253. 248 016e BF90 pop r11
  254. 249 0170 AF90 pop r10
  255. 250 0172 9F90 pop r9
  256. 251 0174 8F90 pop r8
  257. 252 0176 7F90 pop r7
  258. 253 0178 6F90 pop r6
  259. 254 017a 0895 ret
  260. 255 /* epilogue end (size=15) */
  261. 256 /* function ReadSectors size 99 (70) */
  262. 257 .size ReadSectors, .-ReadSectors
  263. 258 .type MMCFree, @function
  264. 259 MMCFree:
  265. 260 /* prologue: frame size=0 */
  266. 261 /* prologue end (size=0) */
  267. 262 017c 80E0 ldi r24,lo8(hMMCSemaphore)
  268. 263 017e 90E0 ldi r25,hi8(hMMCSemaphore)
  269. 264 0180 0E94 0000 call NutEventPost
  270. 265 /* epilogue: frame size=0 */
  271. 266 0184 0895 ret
  272. 267 /* epilogue end (size=1) */
  273. 268 /* function MMCFree size 5 (4) */
  274. 269 .size MMCFree, .-MMCFree
  275. 270 .global MMCWriteSectors
  276. 271 .type MMCWriteSectors, @function
  277. 272 MMCWriteSectors:
  278. 273 /* prologue: frame size=8 */
  279. 274 0186 2F92 push r2
  280. 275 0188 3F92 push r3
  281. 276 018a 4F92 push r4
  282. 277 018c 5F92 push r5
  283. 278 018e 6F92 push r6
  284. 279 0190 7F92 push r7
  285. 280 0192 8F92 push r8
  286. 281 0194 9F92 push r9
  287. 282 0196 AF92 push r10
  288. 283 0198 BF92 push r11
  289. 284 019a CF92 push r12
  290. 285 019c DF92 push r13
  291. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s page 6
  292. 286 019e EF92 push r14
  293. 287 01a0 FF92 push r15
  294. 288 01a2 0F93 push r16
  295. 289 01a4 1F93 push r17
  296. 290 01a6 CF93 push r28
  297. 291 01a8 DF93 push r29
  298. 292 01aa CDB7 in r28,__SP_L__
  299. 293 01ac DEB7 in r29,__SP_H__
  300. 294 01ae 2897 sbiw r28,8
  301. 295 01b0 0FB6 in __tmp_reg__,__SREG__
  302. 296 01b2 F894 cli
  303. 297 01b4 DEBF out __SP_H__,r29
  304. 298 01b6 0FBE out __SREG__,__tmp_reg__
  305. 299 01b8 CDBF out __SP_L__,r28
  306. 300 /* prologue end (size=26) */
  307. 301 01ba F82E mov r15,r24
  308. 302 01bc 6B01 movw r12,r22
  309. 303 01be 3901 movw r6,r18
  310. 304 01c0 4A01 movw r8,r20
  311. 305 01c2 1801 movw r2,r16
  312. 306 01c4 0E94 0000 call MMCLock
  313. 307 01c8 FF20 tst r15
  314. 308 01ca 01F0 breq .L38
  315. 309 01cc 22E0 ldi r18,lo8(2)
  316. 310 01ce 30E0 ldi r19,hi8(2)
  317. 311 01d0 00C0 rjmp .L73
  318. 312 .L38:
  319. 313 01d2 C801 movw r24,r16
  320. 314 01d4 AA27 clr r26
  321. 315 01d6 BB27 clr r27
  322. 316 01d8 860D add r24,r6
  323. 317 01da 971D adc r25,r7
  324. 318 01dc A81D adc r26,r8
  325. 319 01de B91D adc r27,r9
  326. 320 01e0 2091 0000 lds r18,sDrive+3
  327. 321 01e4 3091 0000 lds r19,(sDrive+3)+1
  328. 322 01e8 4091 0000 lds r20,(sDrive+3)+2
  329. 323 01ec 5091 0000 lds r21,(sDrive+3)+3
  330. 324 01f0 2817 cp r18,r24
  331. 325 01f2 3907 cpc r19,r25
  332. 326 01f4 4A07 cpc r20,r26
  333. 327 01f6 5B07 cpc r21,r27
  334. 328 01f8 00F4 brsh .L41
  335. 329 01fa 83E0 ldi r24,lo8(3)
  336. 330 01fc 90E0 ldi r25,hi8(3)
  337. 331 01fe 9E83 std Y+6,r25
  338. 332 0200 8D83 std Y+5,r24
  339. 333 0202 00C0 rjmp .L43
  340. 334 .L41:
  341. 335 0204 1E82 std Y+6,__zero_reg__
  342. 336 0206 1D82 std Y+5,__zero_reg__
  343. 337 .L43:
  344. 338 0208 8091 0000 lds r24,sDrive
  345. 339 020c 9091 0000 lds r25,(sDrive)+1
  346. 340 0210 97FD sbrc r25,7
  347. 341 0212 00C0 rjmp .L44
  348. 342 0214 E2E0 ldi r30,lo8(2)
  349. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s page 7
  350. 343 0216 F0E0 ldi r31,hi8(2)
  351. 344 0218 FE83 std Y+6,r31
  352. 345 021a ED83 std Y+5,r30
  353. 346 .L44:
  354. 347 021c 96FD sbrc r25,6
  355. 348 021e 00C0 rjmp .L46
  356. 349 0220 2D81 ldd r18,Y+5
  357. 350 0222 3E81 ldd r19,Y+6
  358. 351 0224 232B or r18,r19
  359. 352 0226 01F0 breq .+2
  360. 353 0228 00C0 rjmp .L40
  361. 354 022a DC82 std Y+4,r13
  362. 355 022c CB82 std Y+3,r12
  363. 356 022e 00C0 rjmp .L49
  364. 357 .L50:
  365. 358 0230 3FEF ldi r19,lo8(255)
  366. 359 0232 2316 cp r2,r19
  367. 360 0234 3104 cpc r3,__zero_reg__
  368. 361 0236 01F0 breq .+2
  369. 362 0238 00F4 brsh .L51
  370. 363 023a 6101 movw r12,r2
  371. 364 023c 00C0 rjmp .L53
  372. 365 .L51:
  373. 366 023e C12C mov r12,__zero_reg__
  374. 367 0240 A1E0 ldi r26,hi8(256)
  375. 368 0242 DA2E mov r13,r26
  376. 369 .L53:
  377. 370 0244 4B80 ldd r4,Y+3
  378. 371 0246 5C80 ldd r5,Y+4
  379. 372 0248 8401 movw r16,r8
  380. 373 024a 7301 movw r14,r6
  381. 374 024c 1A82 std Y+2,__zero_reg__
  382. 375 024e 1982 std Y+1,__zero_reg__
  383. 376 0250 00C0 rjmp .L54
  384. 377 .L55:
  385. 378 0252 A701 movw r20,r14
  386. 379 0254 542F mov r21,r20
  387. 380 0256 4427 clr r20
  388. 381 0258 550F lsl r21
  389. 382 025a C801 movw r24,r16
  390. 383 025c B701 movw r22,r14
  391. 384 025e E7E0 ldi r30,7
  392. 385 0260 9695 1: lsr r25
  393. 386 0262 8795 ror r24
  394. 387 0264 7795 ror r23
  395. 388 0266 6795 ror r22
  396. 389 0268 EA95 dec r30
  397. 390 026a 01F4 brne 1b
  398. 391 026c 88E1 ldi r24,lo8(24)
  399. 392 026e 0E94 0000 call MMCCommand
  400. 393 0272 0E94 0000 call MMCGet
  401. 394 0276 8F3F cpi r24,lo8(-1)
  402. 395 0278 01F4 brne .+2
  403. 396 027a 00C0 rjmp .L68
  404. 397 027c 8EEF ldi r24,lo8(-2)
  405. 398 027e 0E94 0000 call SPIputByte
  406. 399 0282 5201 movw r10,r4
  407. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s page 8
  408. 400 0284 1886 std Y+8,__zero_reg__
  409. 401 0286 1F82 std Y+7,__zero_reg__
  410. 402 .L59:
  411. 403 0288 F501 movw r30,r10
  412. 404 028a 8191 ld r24,Z+
  413. 405 028c 5F01 movw r10,r30
  414. 406 028e 0E94 0000 call SPIputByte
  415. 407 0292 2F81 ldd r18,Y+7
  416. 408 0294 3885 ldd r19,Y+8
  417. 409 0296 2F5F subi r18,lo8(-(1))
  418. 410 0298 3F4F sbci r19,hi8(-(1))
  419. 411 029a 3887 std Y+8,r19
  420. 412 029c 2F83 std Y+7,r18
  421. 413 029e 2050 subi r18,lo8(512)
  422. 414 02a0 3240 sbci r19,hi8(512)
  423. 415 02a2 01F4 brne .L59
  424. 416 02a4 E0E0 ldi r30,lo8(512)
  425. 417 02a6 F2E0 ldi r31,hi8(512)
  426. 418 02a8 4E0E add r4,r30
  427. 419 02aa 5F1E adc r5,r31
  428. 420 02ac 8FEF ldi r24,lo8(-1)
  429. 421 02ae 0E94 0000 call SPIputByte
  430. 422 02b2 8FEF ldi r24,lo8(-1)
  431. 423 02b4 0E94 0000 call SPIputByte
  432. 424 02b8 8FEF ldi r24,lo8(-1)
  433. 425 02ba 0E94 0000 call SPIputByte
  434. 426 02be 5FEF ldi r21,lo8(-1)
  435. 427 02c0 A52E mov r10,r21
  436. 428 02c2 B52E mov r11,r21
  437. 429 .L61:
  438. 430 02c4 0E94 0000 call SPIgetByte
  439. 431 02c8 8823 tst r24
  440. 432 02ca 01F4 brne .L62
  441. 433 02cc 0894 sec
  442. 434 02ce A108 sbc r10,__zero_reg__
  443. 435 02d0 B108 sbc r11,__zero_reg__
  444. 436 02d2 A114 cp r10,__zero_reg__
  445. 437 02d4 B104 cpc r11,__zero_reg__
  446. 438 02d6 01F0 breq .L68
  447. 439 02d8 00C0 rjmp .L61
  448. 440 .L62:
  449. 441 02da 0894 sec
  450. 442 02dc E11C adc r14,__zero_reg__
  451. 443 02de F11C adc r15,__zero_reg__
  452. 444 02e0 011D adc r16,__zero_reg__
  453. 445 02e2 111D adc r17,__zero_reg__
  454. 446 02e4 AB28 or r10,r11
  455. 447 02e6 01F0 breq .L68
  456. 448 02e8 0E94 0000 call SPIdeselect
  457. 449 02ec 2981 ldd r18,Y+1
  458. 450 02ee 3A81 ldd r19,Y+2
  459. 451 02f0 2F5F subi r18,lo8(-(1))
  460. 452 02f2 3F4F sbci r19,hi8(-(1))
  461. 453 02f4 3A83 std Y+2,r19
  462. 454 02f6 2983 std Y+1,r18
  463. 455 .L54:
  464. 456 02f8 8981 ldd r24,Y+1
  465. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s page 9
  466. 457 02fa 9A81 ldd r25,Y+2
  467. 458 02fc 8C15 cp r24,r12
  468. 459 02fe 9D05 cpc r25,r13
  469. 460 0300 01F0 breq .+2
  470. 461 0302 00C0 rjmp .L55
  471. 462 0304 00C0 rjmp .L72
  472. 463 .L68:
  473. 464 0306 0E94 0000 call SPIdeselect
  474. 465 030a E1E0 ldi r30,lo8(1)
  475. 466 030c F0E0 ldi r31,hi8(1)
  476. 467 030e FE83 std Y+6,r31
  477. 468 0310 ED83 std Y+5,r30
  478. 469 0312 00C0 rjmp .L40
  479. 470 .L49:
  480. 471 0314 2114 cp r2,__zero_reg__
  481. 472 0316 3104 cpc r3,__zero_reg__
  482. 473 0318 01F0 breq .+2
  483. 474 031a 00C0 rjmp .L50
  484. 475 031c 00C0 rjmp .L40
  485. 476 .L46:
  486. 477 031e 28E0 ldi r18,lo8(8)
  487. 478 0320 30E0 ldi r19,hi8(8)
  488. 479 .L73:
  489. 480 0322 3E83 std Y+6,r19
  490. 481 0324 2D83 std Y+5,r18
  491. 482 0326 00C0 rjmp .L40
  492. 483 .L72:
  493. 484 0328 C601 movw r24,r12
  494. 485 032a AA27 clr r26
  495. 486 032c BB27 clr r27
  496. 487 032e 680E add r6,r24
  497. 488 0330 791E adc r7,r25
  498. 489 0332 8A1E adc r8,r26
  499. 490 0334 9B1E adc r9,r27
  500. 491 0336 2C18 sub r2,r12
  501. 492 0338 3D08 sbc r3,r13
  502. 493 033a DC2C mov r13,r12
  503. 494 033c CC24 clr r12
  504. 495 033e DD0C lsl r13
  505. 496 0340 8B81 ldd r24,Y+3
  506. 497 0342 9C81 ldd r25,Y+4
  507. 498 0344 8C0D add r24,r12
  508. 499 0346 9D1D adc r25,r13
  509. 500 0348 9C83 std Y+4,r25
  510. 501 034a 8B83 std Y+3,r24
  511. 502 034c 00C0 rjmp .L49
  512. 503 .L40:
  513. 504 034e 0E94 0000 call MMCFree
  514. 505 0352 8D81 ldd r24,Y+5
  515. 506 0354 9E81 ldd r25,Y+6
  516. 507 /* epilogue: frame size=8 */
  517. 508 0356 2896 adiw r28,8
  518. 509 0358 0FB6 in __tmp_reg__,__SREG__
  519. 510 035a F894 cli
  520. 511 035c DEBF out __SP_H__,r29
  521. 512 035e 0FBE out __SREG__,__tmp_reg__
  522. 513 0360 CDBF out __SP_L__,r28
  523. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s page 10
  524. 514 0362 DF91 pop r29
  525. 515 0364 CF91 pop r28
  526. 516 0366 1F91 pop r17
  527. 517 0368 0F91 pop r16
  528. 518 036a FF90 pop r15
  529. 519 036c EF90 pop r14
  530. 520 036e DF90 pop r13
  531. 521 0370 CF90 pop r12
  532. 522 0372 BF90 pop r11
  533. 523 0374 AF90 pop r10
  534. 524 0376 9F90 pop r9
  535. 525 0378 8F90 pop r8
  536. 526 037a 7F90 pop r7
  537. 527 037c 6F90 pop r6
  538. 528 037e 5F90 pop r5
  539. 529 0380 4F90 pop r4
  540. 530 0382 3F90 pop r3
  541. 531 0384 2F90 pop r2
  542. 532 0386 0895 ret
  543. 533 /* epilogue end (size=25) */
  544. 534 /* function MMCWriteSectors size 258 (207) */
  545. 535 .size MMCWriteSectors, .-MMCWriteSectors
  546. 536 .global MMCReadSectors
  547. 537 .type MMCReadSectors, @function
  548. 538 MMCReadSectors:
  549. 539 /* prologue: frame size=0 */
  550. 540 0388 8F92 push r8
  551. 541 038a 9F92 push r9
  552. 542 038c AF92 push r10
  553. 543 038e BF92 push r11
  554. 544 0390 CF92 push r12
  555. 545 0392 DF92 push r13
  556. 546 0394 EF92 push r14
  557. 547 0396 FF92 push r15
  558. 548 0398 0F93 push r16
  559. 549 039a 1F93 push r17
  560. 550 039c CF93 push r28
  561. 551 039e DF93 push r29
  562. 552 /* prologue end (size=12) */
  563. 553 03a0 F82E mov r15,r24
  564. 554 03a2 EB01 movw r28,r22
  565. 555 03a4 4901 movw r8,r18
  566. 556 03a6 5A01 movw r10,r20
  567. 557 03a8 6801 movw r12,r16
  568. 558 03aa 0E94 0000 call MMCLock
  569. 559 03ae FF20 tst r15
  570. 560 03b0 01F4 brne .L75
  571. 561 03b2 8091 0000 lds r24,sDrive
  572. 562 03b6 9091 0000 lds r25,(sDrive)+1
  573. 563 03ba 97FF sbrs r25,7
  574. 564 03bc 00C0 rjmp .L75
  575. 565 03be C801 movw r24,r16
  576. 566 03c0 AA27 clr r26
  577. 567 03c2 BB27 clr r27
  578. 568 03c4 880D add r24,r8
  579. 569 03c6 991D adc r25,r9
  580. 570 03c8 AA1D adc r26,r10
  581. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s page 11
  582. 571 03ca BB1D adc r27,r11
  583. 572 03cc 2091 0000 lds r18,sDrive+3
  584. 573 03d0 3091 0000 lds r19,(sDrive+3)+1
  585. 574 03d4 4091 0000 lds r20,(sDrive+3)+2
  586. 575 03d8 5091 0000 lds r21,(sDrive+3)+3
  587. 576 03dc 2817 cp r18,r24
  588. 577 03de 3907 cpc r19,r25
  589. 578 03e0 4A07 cpc r20,r26
  590. 579 03e2 5B07 cpc r21,r27
  591. 580 03e4 00F0 brlo .+2
  592. 581 03e6 00C0 rjmp .L78
  593. 582 03e8 03E0 ldi r16,lo8(3)
  594. 583 03ea 10E0 ldi r17,hi8(3)
  595. 584 03ec 00C0 rjmp .L80
  596. 585 .L75:
  597. 586 03ee 02E0 ldi r16,lo8(2)
  598. 587 03f0 10E0 ldi r17,hi8(2)
  599. 588 03f2 00C0 rjmp .L80
  600. 589 .L81:
  601. 590 03f4 2FEF ldi r18,lo8(255)
  602. 591 03f6 C216 cp r12,r18
  603. 592 03f8 D104 cpc r13,__zero_reg__
  604. 593 03fa 01F0 breq .+2
  605. 594 03fc 00F4 brsh .L82
  606. 595 03fe E601 movw r28,r12
  607. 596 0400 00C0 rjmp .L84
  608. 597 .L82:
  609. 598 0402 C0E0 ldi r28,lo8(256)
  610. 599 0404 D1E0 ldi r29,hi8(256)
  611. 600 .L84:
  612. 601 0406 8E01 movw r16,r28
  613. 602 0408 A501 movw r20,r10
  614. 603 040a 9401 movw r18,r8
  615. 604 040c B701 movw r22,r14
  616. 605 040e 80E0 ldi r24,lo8(sDrive)
  617. 606 0410 90E0 ldi r25,hi8(sDrive)
  618. 607 0412 0E94 0000 call ReadSectors
  619. 608 0416 8C01 movw r16,r24
  620. 609 0418 892B or r24,r25
  621. 610 041a 01F4 brne .L80
  622. 611 041c CE01 movw r24,r28
  623. 612 041e AA27 clr r26
  624. 613 0420 BB27 clr r27
  625. 614 0422 880E add r8,r24
  626. 615 0424 991E adc r9,r25
  627. 616 0426 AA1E adc r10,r26
  628. 617 0428 BB1E adc r11,r27
  629. 618 042a CC1A sub r12,r28
  630. 619 042c DD0A sbc r13,r29
  631. 620 042e 8091 0000 lds r24,sDrive+7
  632. 621 0432 9091 0000 lds r25,(sDrive+7)+1
  633. 622 0436 9C01 movw r18,r24
  634. 623 0438 C29F mul r28,r18
  635. 624 043a C001 movw r24,r0
  636. 625 043c C39F mul r28,r19
  637. 626 043e 900D add r25,r0
  638. 627 0440 D29F mul r29,r18
  639. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s page 12
  640. 628 0442 900D add r25,r0
  641. 629 0444 1124 clr r1
  642. 630 0446 E80E add r14,r24
  643. 631 0448 F91E adc r15,r25
  644. 632 .L90:
  645. 633 044a C114 cp r12,__zero_reg__
  646. 634 044c D104 cpc r13,__zero_reg__
  647. 635 044e 01F4 brne .L81
  648. 636 0450 00E0 ldi r16,lo8(0)
  649. 637 0452 10E0 ldi r17,hi8(0)
  650. 638 0454 00C0 rjmp .L80
  651. 639 .L91:
  652. 640 0456 01E0 ldi r16,lo8(1)
  653. 641 0458 10E0 ldi r17,hi8(1)
  654. 642 045a A501 movw r20,r10
  655. 643 045c 9401 movw r18,r8
  656. 644 045e BE01 movw r22,r28
  657. 645 0460 80E0 ldi r24,lo8(sDrive)
  658. 646 0462 90E0 ldi r25,hi8(sDrive)
  659. 647 0464 0E94 0000 call ReadSectors
  660. 648 0468 8C01 movw r16,r24
  661. 649 046a 00C0 rjmp .L80
  662. 650 .L78:
  663. 651 046c 7E01 movw r14,r28
  664. 652 046e 0130 cpi r16,1
  665. 653 0470 1105 cpc r17,__zero_reg__
  666. 654 0472 01F4 brne .L90
  667. 655 0474 00C0 rjmp .L91
  668. 656 .L80:
  669. 657 0476 0E94 0000 call MMCFree
  670. 658 047a C801 movw r24,r16
  671. 659 /* epilogue: frame size=0 */
  672. 660 047c DF91 pop r29
  673. 661 047e CF91 pop r28
  674. 662 0480 1F91 pop r17
  675. 663 0482 0F91 pop r16
  676. 664 0484 FF90 pop r15
  677. 665 0486 EF90 pop r14
  678. 666 0488 DF90 pop r13
  679. 667 048a CF90 pop r12
  680. 668 048c BF90 pop r11
  681. 669 048e AF90 pop r10
  682. 670 0490 9F90 pop r9
  683. 671 0492 8F90 pop r8
  684. 672 0494 0895 ret
  685. 673 /* epilogue end (size=13) */
  686. 674 /* function MMCReadSectors size 135 (110) */
  687. 675 .size MMCReadSectors, .-MMCReadSectors
  688. 676 .global MMCGetTotalSectors
  689. 677 .type MMCGetTotalSectors, @function
  690. 678 MMCGetTotalSectors:
  691. 679 /* prologue: frame size=0 */
  692. 680 0496 EF92 push r14
  693. 681 0498 FF92 push r15
  694. 682 049a 0F93 push r16
  695. 683 049c 1F93 push r17
  696. 684 /* prologue end (size=4) */
  697. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s page 13
  698. 685 049e 182F mov r17,r24
  699. 686 04a0 0E94 0000 call MMCLock
  700. 687 04a4 1123 tst r17
  701. 688 04a6 01F0 breq .L93
  702. 689 04a8 EE24 clr r14
  703. 690 04aa FF24 clr r15
  704. 691 04ac 8701 movw r16,r14
  705. 692 04ae 00C0 rjmp .L95
  706. 693 .L93:
  707. 694 04b0 E090 0000 lds r14,sDrive+3
  708. 695 04b4 F090 0000 lds r15,(sDrive+3)+1
  709. 696 04b8 0091 0000 lds r16,(sDrive+3)+2
  710. 697 04bc 1091 0000 lds r17,(sDrive+3)+3
  711. 698 .L95:
  712. 699 04c0 0E94 0000 call MMCFree
  713. 700 04c4 C801 movw r24,r16
  714. 701 04c6 B701 movw r22,r14
  715. 702 /* epilogue: frame size=0 */
  716. 703 04c8 1F91 pop r17
  717. 704 04ca 0F91 pop r16
  718. 705 04cc FF90 pop r15
  719. 706 04ce EF90 pop r14
  720. 707 04d0 0895 ret
  721. 708 /* epilogue end (size=5) */
  722. 709 /* function MMCGetTotalSectors size 30 (21) */
  723. 710 .size MMCGetTotalSectors, .-MMCGetTotalSectors
  724. 711 .global MMCGetSectorSize
  725. 712 .type MMCGetSectorSize, @function
  726. 713 MMCGetSectorSize:
  727. 714 /* prologue: frame size=0 */
  728. 715 04d2 1F93 push r17
  729. 716 04d4 CF93 push r28
  730. 717 04d6 DF93 push r29
  731. 718 /* prologue end (size=3) */
  732. 719 04d8 182F mov r17,r24
  733. 720 04da 0E94 0000 call MMCLock
  734. 721 04de 1123 tst r17
  735. 722 04e0 01F0 breq .L98
  736. 723 04e2 C0E0 ldi r28,lo8(0)
  737. 724 04e4 D0E0 ldi r29,hi8(0)
  738. 725 04e6 00C0 rjmp .L100
  739. 726 .L98:
  740. 727 04e8 C091 0000 lds r28,sDrive+7
  741. 728 04ec D091 0000 lds r29,(sDrive+7)+1
  742. 729 .L100:
  743. 730 04f0 0E94 0000 call MMCFree
  744. 731 04f4 CE01 movw r24,r28
  745. 732 /* epilogue: frame size=0 */
  746. 733 04f6 DF91 pop r29
  747. 734 04f8 CF91 pop r28
  748. 735 04fa 1F91 pop r17
  749. 736 04fc 0895 ret
  750. 737 /* epilogue end (size=4) */
  751. 738 /* function MMCGetSectorSize size 22 (15) */
  752. 739 .size MMCGetSectorSize, .-MMCGetSectorSize
  753. 740 .global MMCMountAllDevices
  754. 741 .type MMCMountAllDevices, @function
  755. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s page 14
  756. 742 MMCMountAllDevices:
  757. 743 /* prologue: frame size=16 */
  758. 744 04fe CF92 push r12
  759. 745 0500 DF92 push r13
  760. 746 0502 EF92 push r14
  761. 747 0504 FF92 push r15
  762. 748 0506 0F93 push r16
  763. 749 0508 1F93 push r17
  764. 750 050a CF93 push r28
  765. 751 050c DF93 push r29
  766. 752 050e CDB7 in r28,__SP_L__
  767. 753 0510 DEB7 in r29,__SP_H__
  768. 754 0512 6097 sbiw r28,16
  769. 755 0514 0FB6 in __tmp_reg__,__SREG__
  770. 756 0516 F894 cli
  771. 757 0518 DEBF out __SP_H__,r29
  772. 758 051a 0FBE out __SREG__,__tmp_reg__
  773. 759 051c CDBF out __SP_L__,r28
  774. 760 /* prologue end (size=16) */
  775. 761 051e 6B01 movw r12,r22
  776. 762 0520 0E94 0000 call MMCLock
  777. 763 0524 8091 0000 lds r24,sDrive
  778. 764 0528 9091 0000 lds r25,(sDrive)+1
  779. 765 052c 97FF sbrs r25,7
  780. 766 052e 00C0 rjmp .L103
  781. 767 0530 40E0 ldi r20,lo8(0)
  782. 768 0532 50E0 ldi r21,hi8(0)
  783. 769 0534 60E0 ldi r22,lo8(0)
  784. 770 0536 70E0 ldi r23,hi8(0)
  785. 771 0538 89E0 ldi r24,lo8(9)
  786. 772 053a 0E94 0000 call MMCCommand
  787. 773 053e 0E94 0000 call MMCDataToken
  788. 774 0542 8E3F cpi r24,lo8(-2)
  789. 775 0544 01F0 breq .L105
  790. 776 0546 80E0 ldi r24,lo8(__c.2275)
  791. 777 0548 90E0 ldi r25,hi8(__c.2275)
  792. 778 054a 9F93 push r25
  793. 779 054c 8F93 push r24
  794. 780 054e 83EF ldi r24,lo8(-13)
  795. 781 0550 8F93 push r24
  796. 782 0552 0E94 0000 call LogMsg_P
  797. 783 0556 0F90 pop __tmp_reg__
  798. 784 0558 0F90 pop __tmp_reg__
  799. 785 055a 0F90 pop __tmp_reg__
  800. 786 055c 00C0 rjmp .L103
  801. 787 .L105:
  802. 788 055e 8E01 movw r16,r28
  803. 789 0560 0F5F subi r16,lo8(-(1))
  804. 790 0562 1F4F sbci r17,hi8(-(1))
  805. 791 .L107:
  806. 792 0564 0E94 0000 call SPIgetByte
  807. 793 0568 F801 movw r30,r16
  808. 794 056a 8193 st Z+,r24
  809. 795 056c 8F01 movw r16,r30
  810. 796 056e CE01 movw r24,r28
  811. 797 0570 4196 adiw r24,17
  812. 798 0572 E817 cp r30,r24
  813. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s page 15
  814. 799 0574 F907 cpc r31,r25
  815. 800 0576 01F4 brne .L107
  816. 801 0578 8FEF ldi r24,lo8(-1)
  817. 802 057a 0E94 0000 call SPIputByte
  818. 803 057e 8FEF ldi r24,lo8(-1)
  819. 804 0580 0E94 0000 call SPIputByte
  820. 805 0584 0E94 0000 call SPIdeselect
  821. 806 0588 EE80 ldd r14,Y+6
  822. 807 058a FFE0 ldi r31,lo8(15)
  823. 808 058c EF22 and r14,r31
  824. 809 058e 21E0 ldi r18,lo8(1)
  825. 810 0590 30E0 ldi r19,hi8(1)
  826. 811 0592 C901 movw r24,r18
  827. 812 0594 00C0 rjmp 2f
  828. 813 0596 880F 1: lsl r24
  829. 814 0598 991F rol r25
  830. 815 059a EA94 2: dec r14
  831. 816 059c 02F4 brpl 1b
  832. 817 059e 7C01 movw r14,r24
  833. 818 05a0 6F81 ldd r22,Y+7
  834. 819 05a2 7727 clr r23
  835. 820 05a4 6370 andi r22,lo8(3)
  836. 821 05a6 7070 andi r23,hi8(3)
  837. 822 05a8 762F mov r23,r22
  838. 823 05aa 6627 clr r22
  839. 824 05ac 770F lsl r23
  840. 825 05ae 770F lsl r23
  841. 826 05b0 E885 ldd r30,Y+8
  842. 827 05b2 FF27 clr r31
  843. 828 05b4 EE0F lsl r30
  844. 829 05b6 FF1F rol r31
  845. 830 05b8 EE0F lsl r30
  846. 831 05ba FF1F rol r31
  847. 832 05bc 6E2B or r22,r30
  848. 833 05be 7F2B or r23,r31
  849. 834 05c0 0985 ldd r16,Y+9
  850. 835 05c2 1127 clr r17
  851. 836 05c4 EA85 ldd r30,Y+10
  852. 837 05c6 FF27 clr r31
  853. 838 05c8 E370 andi r30,lo8(3)
  854. 839 05ca F070 andi r31,hi8(3)
  855. 840 05cc DF01 movw r26,r30
  856. 841 05ce AA0F lsl r26
  857. 842 05d0 BB1F rol r27
  858. 843 05d2 EA2B or r30,r26
  859. 844 05d4 FB2B or r31,r27
  860. 845 05d6 AB85 ldd r26,Y+11
  861. 846 05d8 BB27 clr r27
  862. 847 05da 86E0 ldi r24,6
  863. 848 05dc 1695 1: lsr r17
  864. 849 05de 0795 ror r16
  865. 850 05e0 8A95 dec r24
  866. 851 05e2 01F4 brne 1b
  867. 852 05e4 602B or r22,r16
  868. 853 05e6 712B or r23,r17
  869. 854 05e8 6F5F subi r22,lo8(-(1))
  870. 855 05ea 7F4F sbci r23,hi8(-(1))
  871. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s page 16
  872. 856 05ec 8827 clr r24
  873. 857 05ee 9927 clr r25
  874. 858 05f0 AA0F lsl r26
  875. 859 05f2 AB2F mov r26,r27
  876. 860 05f4 AA1F rol r26
  877. 861 05f6 BB0B sbc r27,r27
  878. 862 05f8 B195 neg r27
  879. 863 05fa EA2B or r30,r26
  880. 864 05fc FB2B or r31,r27
  881. 865 05fe 3296 adiw r30,2
  882. 866 0600 00C0 rjmp 2f
  883. 867 0602 220F 1: lsl r18
  884. 868 0604 331F rol r19
  885. 869 0606 EA95 2: dec r30
  886. 870 0608 02F4 brpl 1b
  887. 871 060a 4427 clr r20
  888. 872 060c 5527 clr r21
  889. 873 060e 0E94 0000 call __mulsi3
  890. 874 0612 6093 0000 sts sDrive+3,r22
  891. 875 0616 7093 0000 sts (sDrive+3)+1,r23
  892. 876 061a 8093 0000 sts (sDrive+3)+2,r24
  893. 877 061e 9093 0000 sts (sDrive+3)+3,r25
  894. 878 0622 F092 0000 sts (sDrive+7)+1,r15
  895. 879 0626 E092 0000 sts sDrive+7,r14
  896. 880 062a 0E94 0000 call MMCFree
  897. 881 062e 01E0 ldi r16,lo8(1)
  898. 882 0630 10E0 ldi r17,hi8(1)
  899. 883 0632 20E0 ldi r18,lo8(0)
  900. 884 0634 30E0 ldi r19,hi8(0)
  901. 885 0636 40E0 ldi r20,hlo8(0)
  902. 886 0638 50E0 ldi r21,hhi8(0)
  903. 887 063a B601 movw r22,r12
  904. 888 063c 80E0 ldi r24,lo8(0)
  905. 889 063e 0E94 0000 call MMCReadSectors
  906. 890 0642 00C0 rjmp .L109
  907. 891 .L103:
  908. 892 0644 0E94 0000 call MMCFree
  909. 893 0648 81E0 ldi r24,lo8(1)
  910. 894 064a 90E0 ldi r25,hi8(1)
  911. 895 .L109:
  912. 896 /* epilogue: frame size=16 */
  913. 897 064c 6096 adiw r28,16
  914. 898 064e 0FB6 in __tmp_reg__,__SREG__
  915. 899 0650 F894 cli
  916. 900 0652 DEBF out __SP_H__,r29
  917. 901 0654 0FBE out __SREG__,__tmp_reg__
  918. 902 0656 CDBF out __SP_L__,r28
  919. 903 0658 DF91 pop r29
  920. 904 065a CF91 pop r28
  921. 905 065c 1F91 pop r17
  922. 906 065e 0F91 pop r16
  923. 907 0660 FF90 pop r15
  924. 908 0662 EF90 pop r14
  925. 909 0664 DF90 pop r13
  926. 910 0666 CF90 pop r12
  927. 911 0668 0895 ret
  928. 912 /* epilogue end (size=15) */
  929. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s page 17
  930. 913 /* function MMCMountAllDevices size 184 (153) */
  931. 914 .size MMCMountAllDevices, .-MMCMountAllDevices
  932. 915 .global MMCInit
  933. 916 .type MMCInit, @function
  934. 917 MMCInit:
  935. 918 /* prologue: frame size=0 */
  936. 919 066a CF93 push r28
  937. 920 066c DF93 push r29
  938. 921 /* prologue end (size=2) */
  939. 922 066e 7093 0000 sts (pUserMountFunc)+1,r23
  940. 923 0672 6093 0000 sts pUserMountFunc,r22
  941. 924 0676 5093 0000 sts (pUserUnMountFunc)+1,r21
  942. 925 067a 4093 0000 sts pUserUnMountFunc,r20
  943. 926 067e 89E0 ldi r24,lo8(9)
  944. 927 0680 E0E0 ldi r30,lo8(sDrive)
  945. 928 0682 F0E0 ldi r31,hi8(sDrive)
  946. 929 0684 1192 st Z+,__zero_reg__
  947. 930 0686 8A95 dec r24
  948. 931 0688 01F4 brne .-6
  949. 932 068a 1092 0000 sts sDrive+2,__zero_reg__
  950. 933 068e 80E0 ldi r24,lo8(hMMCSemaphore)
  951. 934 0690 90E0 ldi r25,hi8(hMMCSemaphore)
  952. 935 0692 0E94 0000 call NutEventPost
  953. 936 0696 C0E0 ldi r28,lo8(0)
  954. 937 0698 D0E0 ldi r29,hi8(0)
  955. 938 .L114:
  956. 939 069a 8FEF ldi r24,lo8(-1)
  957. 940 069c 0E94 0000 call SPIputByte
  958. 941 06a0 2196 adiw r28,1
  959. 942 06a2 CA30 cpi r28,10
  960. 943 06a4 D105 cpc r29,__zero_reg__
  961. 944 06a6 01F4 brne .L114
  962. 945 06a8 40E0 ldi r20,lo8(0)
  963. 946 06aa 50E0 ldi r21,hi8(0)
  964. 947 06ac 60E0 ldi r22,lo8(0)
  965. 948 06ae 70E0 ldi r23,hi8(0)
  966. 949 06b0 80E0 ldi r24,lo8(0)
  967. 950 06b2 0E94 0000 call MMCCommand
  968. 951 06b6 0E94 0000 call MMCGet
  969. 952 06ba 8130 cpi r24,lo8(1)
  970. 953 06bc 01F4 brne .L123
  971. 954 06be CFEF ldi r28,lo8(-1)
  972. 955 06c0 DFEF ldi r29,hi8(-1)
  973. 956 06c2 00C0 rjmp .L118
  974. 957 .L120:
  975. 958 06c4 40E0 ldi r20,lo8(0)
  976. 959 06c6 50E0 ldi r21,hi8(0)
  977. 960 06c8 60E0 ldi r22,lo8(0)
  978. 961 06ca 70E0 ldi r23,hi8(0)
  979. 962 06cc 81E0 ldi r24,lo8(1)
  980. 963 06ce 0E94 0000 call MMCCommand
  981. 964 .L118:
  982. 965 06d2 0E94 0000 call SPIgetByte
  983. 966 06d6 8823 tst r24
  984. 967 06d8 01F0 breq .L121
  985. 968 06da 2197 sbiw r28,1
  986. 969 06dc 01F4 brne .L120
  987. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s page 18
  988. 970 06de 00C0 rjmp .L123
  989. 971 .L121:
  990. 972 06e0 CD2B or r28,r29
  991. 973 06e2 01F4 brne .L124
  992. 974 .L123:
  993. 975 06e4 0E94 0000 call SPIdeselect
  994. 976 06e8 81E0 ldi r24,lo8(1)
  995. 977 06ea 90E0 ldi r25,hi8(1)
  996. 978 06ec 00C0 rjmp .L119
  997. 979 .L124:
  998. 980 06ee 0E94 0000 call SPIdeselect
  999. 981 06f2 80E0 ldi r24,lo8(-32768)
  1000. 982 06f4 90E8 ldi r25,hi8(-32768)
  1001. 983 06f6 9093 0000 sts (sDrive)+1,r25
  1002. 984 06fa 8093 0000 sts sDrive,r24
  1003. 985 06fe 80E0 ldi r24,lo8(0)
  1004. 986 0700 90E0 ldi r25,hi8(0)
  1005. 987 .L119:
  1006. 988 /* epilogue: frame size=0 */
  1007. 989 0702 DF91 pop r29
  1008. 990 0704 CF91 pop r28
  1009. 991 0706 0895 ret
  1010. 992 /* epilogue end (size=3) */
  1011. 993 /* function MMCInit size 80 (75) */
  1012. 994 .size MMCInit, .-MMCInit
  1013. 995 .section .progmem.data,"a",@progbits
  1014. 996 .type __c.2275, @object
  1015. 997 .size __c.2275, 22
  1016. 998 __c.2275:
  1017. 999 0000 6572 726F .string "error during CSD read"
  1018. 999 7220 6475
  1019. 999 7269 6E67
  1020. 999 2043 5344
  1021. 999 2072 6561
  1022. 1000 .lcomm hMMCSemaphore,2
  1023. 1001 .lcomm sDrive,9
  1024. 1002 .lcomm pUserMountFunc,2
  1025. 1003 .lcomm pUserUnMountFunc,2
  1026. 1004 /* File "source/mmcdrv.c": code 906 = 0x038a ( 723), prologues 86, epilogues 97 */
  1027. GAS LISTING C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s page 19
  1028. DEFINED SYMBOLS
  1029. *ABS*:00000000 mmcdrv.c
  1030. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:3 *ABS*:0000003f __SREG__
  1031. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:4 *ABS*:0000003e __SP_H__
  1032. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:5 *ABS*:0000003d __SP_L__
  1033. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:6 *ABS*:00000000 __tmp_reg__
  1034. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:7 *ABS*:00000001 __zero_reg__
  1035. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:13 .text:00000000 MMCIsCDROMDevice
  1036. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:25 .text:00000006 MMCIsZIPDevice
  1037. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:37 .text:0000000c MMCUnMountDevice
  1038. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:48 .text:00000012 MMCLock
  1039. .bss:00000000 hMMCSemaphore
  1040. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:64 .text:00000024 MMCGet
  1041. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:87 .text:00000040 MMCDataToken
  1042. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:110 .text:0000005c MMCCommand
  1043. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:154 .text:000000b6 ReadSectors
  1044. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:259 .text:0000017c MMCFree
  1045. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:272 .text:00000186 MMCWriteSectors
  1046. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:1000 .bss:00000002 sDrive
  1047. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:538 .text:00000388 MMCReadSectors
  1048. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:678 .text:00000496 MMCGetTotalSectors
  1049. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:713 .text:000004d2 MMCGetSectorSize
  1050. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:742 .text:000004fe MMCMountAllDevices
  1051. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:998 .progmem.data:00000000 __c.2275
  1052. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:917 .text:0000066a MMCInit
  1053. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:1001 .bss:0000000b pUserMountFunc
  1054. C:\Users\GUUSV_~1\AppData\Local\Temp/cc9ATX5U.s:1002 .bss:0000000d pUserUnMountFunc
  1055. UNDEFINED SYMBOLS
  1056. __do_copy_data
  1057. __do_clear_bss
  1058. NutEventWait
  1059. SPIgetByte
  1060. SPIselect
  1061. SPIputByte
  1062. SPIdeselect
  1063. NutEventPost
  1064. LogMsg_P
  1065. __mulsi3