Automatic commit at Wed Jul 25 15:50:05 WST 2012
[matches/honours.git] / research / TCS / apparatus / source_code / LCD_Driver.lst
1    1                            .file   "LCD_Driver.c"
2    2                    __SREG__ = 0x3f
3    3                    __SP_H__ = 0x3e
4    4                    __SP_L__ = 0x3d
5    5                    __CCP__  = 0x34
6    6                    __tmp_reg__ = 0
7    7                    __zero_reg__ = 1
8   15                    .Ltext0:
9   16                            .section        .text.LCD_WriteDigit,"ax",@progbits
10   17                    .global LCD_WriteDigit
11   19                    LCD_WriteDigit:
12   20                    .LFB3:
13   21                    .LSM0:
14   22                    .LVL0:
15   23 0000 CF93                  push r28
16   24 0002 DF93                  push r29
17   25                    /* prologue: function */
18   26                    /* frame size = 0 */
19   27 0004 982F                  mov r25,r24
20   28                    .LSM1:
21   29 0006 6630                  cpi r22,lo8(6)
22   30 0008 00F4                  brsh .L10
23   31                    .LVL1:
24   32                    .LSM2:
25   33 000a 8A52                  subi r24,lo8(-(-42))
26   34 000c 8135                  cpi r24,lo8(81)
27   35 000e 00F0                  brlo .L3
28   36 0010 A0E0                  ldi r26,lo8(0)
29   37 0012 B0E0                  ldi r27,hi8(0)
30   38                    .LVL2:
31   39 0014 00C0                  rjmp .L4
32   40                    .LVL3:
33   41                    .L3:
34   42                    .LSM3:
35   43 0016 9136                  cpi r25,lo8(97)
36   44 0018 00F0                  brlo .L5
37   45                    .LSM4:
38   46 001a 9F7D                  andi r25,lo8(-33)
39   47                    .L5:
40   48                    .LBB2:
41   49                    .LSM5:
42   50 001c 9A52                  subi r25,lo8(-(-42))
43   51 001e E92F                  mov r30,r25
44   52                    .LVL4:
45   53 0020 F0E0                  ldi r31,lo8(0)
46   54                    .LVL5:
47   55 0022 EE0F                  lsl r30
48   56 0024 FF1F                  rol r31
49   57                    .LVL6:
50   58 0026 E050                  subi r30,lo8(-(LCD_character_table))
51   59 0028 F040                  sbci r31,hi8(-(LCD_character_table))
52   60                    /* #APP */
53   61                     ;  213 "LCD_Driver.c" 1
54   62 002a A591                  lpm r26, Z+
55   63 002c B491                  lpm r27, Z
56   64                            
57   65                     ;  0 "" 2
58   66                    .LVL7:
59   67                    /* #NOAPP */
60   68                    .L4:
61   69                    .LBE2:
62   70                    .LSM6:
63   71 002e 862F                  mov r24,r22
64   72 0030 90E0                  ldi r25,lo8(0)
65   73                    .LVL8:
66   74 0032 EC01                  movw r28,r24
67   75 0034 C170                  andi r28,lo8(1)
68   76 0036 D070                  andi r29,hi8(1)
69   77 0038 60FD                  sbrc r22,0
70   78 003a 00C0                  rjmp .L6
71   79 003c 90EF                  ldi r25,lo8(-16)
72   80                    .LVL9:
73   81 003e 00C0                  rjmp .L7
74   82                    .LVL10:
75   83                    .L6:
76   84 0040 9FE0                  ldi r25,lo8(15)
77   85                    .LVL11:
78   86                    .L7:
79   87                    .LSM7:
80   88 0042 6695                  lsr r22
81   89                    .LVL12:
82   90 0044 70E0                  ldi r23,lo8(0)
83   91                    .LVL13:
84   92 0046 6050                  subi r22,lo8(-(LCD_Data))
85   93 0048 7040                  sbci r23,hi8(-(LCD_Data))
86   94                    .LVL14:
87   95 004a 20E0                  ldi r18,lo8(0)
88   96 004c 30E0                  ldi r19,hi8(0)
89   97                    .LVL15:
90   98                    .L9:
91   99 004e FB01                  movw r30,r22
92  100                    .LVL16:
93  101 0050 E20F                  add r30,r18
94  102 0052 F31F                  adc r31,r19
95  103                    .LSM8:
96  104 0054 4A2F                  mov r20,r26
97  105                    .LVL17:
98  106 0056 4F70                  andi r20,lo8(15)
99  107                    .LSM9:
100  108 0058 84E0                  ldi r24,4
101  109 005a B695          1:      lsr r27
102  110 005c A795                  ror r26
103  111 005e 8A95                  dec r24
104  112 0060 01F4                  brne 1b
105  113                    .LVL18:
106  114                    .LSM10:
107  115 0062 2097                  sbiw r28,0
108  116 0064 01F0                  breq .L8
109  117                    .LSM11:
110  118 0066 4295                  swap r20
111  119 0068 407F                  andi r20,lo8(-16)
112  120                    .L8:
113  121                    .LSM12:
114  122 006a 8081                  ld r24,Z
115  123 006c 8923                  and r24,r25
116  124 006e 482B                  or r20,r24
117  125 0070 4083                  st Z,r20
118  126 0072 2B5F                  subi r18,lo8(-(5))
119  127 0074 3F4F                  sbci r19,hi8(-(5))
120  128                    .LSM13:
121  129 0076 2431                  cpi r18,20
122  130 0078 3105                  cpc r19,__zero_reg__
123  131 007a 01F4                  brne .L9
124  132                    .LVL19:
125  133                    .L10:
126  134                    /* epilogue start */
127  135                    .LSM14:
128  136 007c DF91                  pop r29
129  137 007e CF91                  pop r28
130  138 0080 0895                  ret
131  139                    .LFE3:
132  141                            .section        .text.LCD_AllSegments,"ax",@progbits
133  142                    .global LCD_AllSegments
134  144                    LCD_AllSegments:
135  145                    .LFB4:
136  146                    .LSM15:
137  147                    .LVL20:
138  148                    /* prologue: function */
139  149                    /* frame size = 0 */
140  150                    .LSM16:
141  151 0000 8111                  cpse r24,__zero_reg__
142  152 0002 8FEF                  ldi r24,lo8(-1)
143  153                    .LVL21:
144  154                    .L13:
145  155 0004 20E0                  ldi r18,lo8(0)
146  156 0006 30E0                  ldi r19,hi8(0)
147  157                    .L14:
148  158 0008 F901                  movw r30,r18
149  159 000a E050                  subi r30,lo8(-(LCD_Data))
150  160 000c F040                  sbci r31,hi8(-(LCD_Data))
151  161                    .LSM17:
152  162 000e 8083                  st Z,r24
153  163 0010 2F5F                  subi r18,lo8(-(1))
154  164 0012 3F4F                  sbci r19,hi8(-(1))
155  165                    .LSM18:
156  166 0014 2431                  cpi r18,20
157  167 0016 3105                  cpc r19,__zero_reg__
158  168 0018 01F4                  brne .L14
159  169                    /* epilogue start */
160  170                    .LSM19:
161  171 001a 0895                  ret
162  172                    .LFE4:
163  174                            .section        .text.LCD_Init,"ax",@progbits
164  175                    .global LCD_Init
165  177                    LCD_Init:
166  178                    .LFB2:
167  179                    .LSM20:
168  180                    /* prologue: function */
169  181                    /* frame size = 0 */
170  182                    .LSM21:
171  183 0000 80E0                  ldi r24,lo8(0)
172  184 0002 0E94 0000             call LCD_AllSegments
173  185                    .LSM22:
174  186 0006 A7EE                  ldi r26,lo8(231)
175  187 0008 B0E0                  ldi r27,hi8(231)
176  188 000a 8C91                  ld r24,X
177  189 000c 8F60                  ori r24,lo8(15)
178  190 000e 8C93                  st X,r24
179  191                    .LSM23:
180  192 0010 87EB                  ldi r24,lo8(-73)
181  193 0012 8093 E500             sts 229,r24
182  194                    .LSM24:
183  195 0016 87E0                  ldi r24,lo8(7)
184  196 0018 8093 E600             sts 230,r24
185  197                    .LSM25:
186  198 001c E4EE                  ldi r30,lo8(228)
187  199 001e F0E0                  ldi r31,hi8(228)
188  200 0020 80EC                  ldi r24,lo8(-64)
189  201 0022 8083                  st Z,r24
190  202                    .LSM26:
191  203 0024 8081                  ld r24,Z
192  204 0026 8860                  ori r24,lo8(8)
193  205 0028 8083                  st Z,r24
194  206                    .LSM27:
195  207 002a 8C91                  ld r24,X
196  208 002c 806E                  ori r24,lo8(-32)
197  209 002e 8C93                  st X,r24
198  210                    .LSM28:
199  211 0030 1092 0000             sts gLCD_Update_Required,__zero_reg__
200  212                    /* epilogue start */
201  213                    .LSM29:
202  214 0034 0895                  ret
203  215                    .LFE2:
204  217                            .section        .text.__vector_22,"ax",@progbits
205  218                    .global __vector_22
206  220                    __vector_22:
207  221                    .LFB5:
208  222                    .LSM30:
209  223 0000 1F92                  push __zero_reg__
210  224 0002 0F92                  push r0
211  225 0004 0FB6                  in r0,__SREG__
212  226 0006 0F92                  push r0
213  227 0008 1124                  clr __zero_reg__
214  228 000a EF92                  push r14
215  229 000c FF92                  push r15
216  230 000e 0F93                  push r16
217  231 0010 1F93                  push r17
218  232 0012 2F93                  push r18
219  233 0014 3F93                  push r19
220  234 0016 4F93                  push r20
221  235 0018 5F93                  push r21
222  236 001a 6F93                  push r22
223  237 001c 7F93                  push r23
224  238 001e 8F93                  push r24
225  239 0020 9F93                  push r25
226  240 0022 AF93                  push r26
227  241 0024 BF93                  push r27
228  242 0026 CF93                  push r28
229  243 0028 DF93                  push r29
230  244 002a EF93                  push r30
231  245 002c FF93                  push r31
232  246                    /* prologue: Signal */
233  247                    /* frame size = 0 */
234  248                    .LSM31:
235  249 002e 0091 0000             lds r16,LCD_timer.1439
236  250 0032 0150                  subi r16,lo8(-(-1))
237  251 0034 0093 0000             sts LCD_timer.1439,r16
238  252                    .LSM32:
239  253 0038 8091 0000             lds r24,gScrollMode
240  254 003c 8823                  tst r24
241  255 003e 01F0                  breq .L20
242  256                    .LSM33:
243  257 0040 0023                  tst r16
244  258 0042 01F4                  brne .L21
245  259                    .LSM34:
246  260 0044 8091 0000             lds r24,gLCD_Start_Scroll_Timer
247  261 0048 8823                  tst r24
248  262 004a 01F4                  brne .L22
249  263                    .LSM35:
250  264 004c 81E0                  ldi r24,lo8(1)
251  265 004e 8093 0000             sts gLCD_Update_Required,r24
252  266 0052 00C0                  rjmp .L21
253  267                    .L22:
254  268                    .LSM36:
255  269 0054 8091 0000             lds r24,gLCD_Start_Scroll_Timer
256  270 0058 8150                  subi r24,lo8(-(-1))
257  271 005a 8093 0000             sts gLCD_Start_Scroll_Timer,r24
258  272 005e 00C0                  rjmp .L21
259  273                    .L20:
260  274                    .LSM37:
261  275 0060 1092 0000             sts gScroll,__zero_reg__
262  276                    .L21:
263  277                    .LSM38:
264  278 0064 8091 0000             lds r24,gLCD_Update_Required
265  279 0068 8130                  cpi r24,lo8(1)
266  280 006a 01F0                  breq .+2
267  281 006c 00C0                  rjmp .L23
268  282                    .LSM39:
269  283 006e E090 0000             lds r14,gFlashTimer
270  284 0072 FF24                  clr r15
271  285                    .LVL22:
272  286 0074 10E0                  ldi r17,lo8(0)
273  287                    .LVL23:
274  288 0076 C0E0                  ldi r28,lo8(0)
275  289 0078 D0E0                  ldi r29,hi8(0)
276  290                    .L29:
277  291 007a 6C2F                  mov r22,r28
278  292                    .LVL24:
279  293                    .LSM40:
280  294 007c 8091 0000             lds r24,gScroll
281  295 0080 9927                  clr r25
282  296 0082 87FD                  sbrc r24,7
283  297 0084 9095                  com r25
284  298 0086 8C0F                  add r24,r28
285  299 0088 9D1F                  adc r25,r29
286  300 008a 97FD                  sbrc r25,7
287  301 008c 00C0                  rjmp .L24
288  302 008e 1123                  tst r17
289  303 0090 01F4                  brne .L24
290  304                    .LSM41:
291  305 0092 E091 0000             lds r30,gScroll
292  306 0096 FF27                  clr r31
293  307 0098 E7FD                  sbrc r30,7
294  308 009a F095                  com r31
295  309 009c EC0F                  add r30,r28
296  310 009e FD1F                  adc r31,r29
297  311 00a0 E050                  subi r30,lo8(-(gTextBuffer))
298  312 00a2 F040                  sbci r31,hi8(-(gTextBuffer))
299  313 00a4 8081                  ld r24,Z
300  314                    .LVL25:
301  315                    .LSM42:
302  316 00a6 F82E                  mov r15,r24
303  317 00a8 FF1C                  rol r15
304  318 00aa FF24                  clr r15
305  319 00ac FF1C                  rol r15
306  320                    .LSM43:
307  321 00ae 8F77                  andi r24,lo8(127)
308  322                    .LVL26:
309  323                    .LSM44:
310  324 00b0 01F4                  brne .L26
311  325 00b2 1C2F                  mov r17,r28
312  326 00b4 1F5F                  subi r17,lo8(-(1))
313  327 00b6 00C0                  rjmp .L26
314  328                    .LVL27:
315  329                    .L24:
316  330 00b8 80E2                  ldi r24,lo8(32)
317  331                    .LVL28:
318  332                    .L26:
319  333                    .LSM45:
320  334 00ba FF20                  tst r15
321  335 00bc 01F0                  breq .L27
322  336 00be 94E0                  ldi r25,lo8(4)
323  337 00c0 9E15                  cp r25,r14
324  338 00c2 00F4                  brsh .L27
325  339                    .LSM46:
326  340 00c4 80E2                  ldi r24,lo8(32)
327  341                    .LVL29:
328  342                    .L27:
329  343                    .LSM47:
330  344 00c6 0E94 0000             call LCD_WriteDigit
331  345                    .LVL30:
332  346 00ca 2196                  adiw r28,1
333  347                    .LVL31:
334  348                    .LSM48:
335  349 00cc C630                  cpi r28,6
336  350 00ce D105                  cpc r29,__zero_reg__
337  351 00d0 01F4                  brne .L29
338  352 00d2 ACEE                  ldi r26,lo8(236)
339  353 00d4 B0E0                  ldi r27,hi8(236)
340  354                    .L30:
341  355 00d6 FD01                  movw r30,r26
342  356 00d8 E050                  subi r30,lo8(-(LCD_Data-236))
343  357 00da F040                  sbci r31,hi8(-(LCD_Data-236))
344  358                    .LSM49:
345  359 00dc 8081                  ld r24,Z
346  360 00de 8D93                  st X+,r24
347  361                    .LSM50:
348  362 00e0 81E0                  ldi r24,hi8(256)
349  363 00e2 A030                  cpi r26,lo8(256)
350  364 00e4 B807                  cpc r27,r24
351  365 00e6 01F4                  brne .L30
352  366                    .LSM51:
353  367 00e8 8091 0000             lds r24,gColon
354  368 00ec 8823                  tst r24
355  369 00ee 01F0                  breq .L31
356  370                    .LSM52:
357  371 00f0 81E0                  ldi r24,lo8(1)
358  372 00f2 8093 F400             sts 244,r24
359  373 00f6 00C0                  rjmp .L32
360  374                    .L31:
361  375                    .LSM53:
362  376 00f8 1092 F400             sts 244,__zero_reg__
363  377                    .L32:
364  378                    .LSM54:
365  379 00fc 1130                  cpi r17,lo8(1)
366  380 00fe 01F4                  brne .L33
367  381                    .LSM55:
368  382 0100 8AEF                  ldi r24,lo8(-6)
369  383 0102 00C0                  rjmp .L41
370  384                    .L33:
371  385                    .LSM56:
372  386 0104 8091 0000             lds r24,gScroll
373  387 0108 8F5F                  subi r24,lo8(-(1))
374  388                    .L41:
375  389 010a 8093 0000             sts gScroll,r24
376  390                    .LSM57:
377  391 010e 1092 0000             sts gLCD_Update_Required,__zero_reg__
378  392                    .L23:
379  393                    .LSM58:
380  394 0112 0023                  tst r16
381  395 0114 01F4                  brne .L35
382  396                    .LSM59:
383  397 0116 83E0                  ldi r24,lo8(3)
384  398 0118 8093 0000             sts LCD_timer.1439,r24
385  399                    .L35:
386  400                    .LSM60:
387  401 011c 8091 0000             lds r24,gFlashTimer
388  402 0120 8A30                  cpi r24,lo8(10)
389  403 0122 01F4                  brne .L36
390  404                    .LSM61:
391  405 0124 1092 0000             sts gFlashTimer,__zero_reg__
392  406 0128 00C0                  rjmp .L38
393  407                    .L36:
394  408                    .LSM62:
395  409 012a 8091 0000             lds r24,gFlashTimer
396  410 012e 8F5F                  subi r24,lo8(-(1))
397  411 0130 8093 0000             sts gFlashTimer,r24
398  412                    .L38:
399  413                    /* epilogue start */
400  414                    .LSM63:
401  415 0134 FF91                  pop r31
402  416 0136 EF91                  pop r30
403  417 0138 DF91                  pop r29
404  418 013a CF91                  pop r28
405  419 013c BF91                  pop r27
406  420 013e AF91                  pop r26
407  421 0140 9F91                  pop r25
408  422 0142 8F91                  pop r24
409  423 0144 7F91                  pop r23
410  424 0146 6F91                  pop r22
411  425 0148 5F91                  pop r21
412  426 014a 4F91                  pop r20
413  427 014c 3F91                  pop r19
414  428 014e 2F91                  pop r18
415  429 0150 1F91                  pop r17
416  430                    .LVL32:
417  431 0152 0F91                  pop r16
418  432 0154 FF90                  pop r15
419  433                    .LVL33:
420  434 0156 EF90                  pop r14
421  435 0158 0F90                  pop r0
422  436 015a 0FBE                  out __SREG__,r0
423  437 015c 0F90                  pop r0
424  438 015e 1F90                  pop __zero_reg__
425  439 0160 1895                  reti
426  440                    .LFE5:
427  442                    .global gLCD_Update_Required
428  443                            .section        .bss.gLCD_Update_Required,"aw",@nobits
429  446                    gLCD_Update_Required:
430  447 0000 00                    .skip 1,0
431  448                    .global gLCD_Start_Scroll_Timer
432  449                            .section        .bss.gLCD_Start_Scroll_Timer,"aw",@nobits
433  452                    gLCD_Start_Scroll_Timer:
434  453 0000 00                    .skip 1,0
435  454                    .global gFlashTimer
436  455                            .section        .bss.gFlashTimer,"aw",@nobits
437  458                    gFlashTimer:
438  459 0000 00                    .skip 1,0
439  460                    .global gColon
440  461                            .section        .bss.gColon,"aw",@nobits
441  464                    gColon:
442  465 0000 00                    .skip 1,0
443  466                    .global LCD_character_table
444  467                            .section        .progmem.data,"a",@progbits
445  470                    LCD_character_table:
446  471 0000 510A                  .word   2641
447  472 0002 802A                  .word   10880
448  473 0004 0000                  .word   0
449  474 0006 000A                  .word   2560
450  475 0008 00FF                  .word   -256
451  476 000a 0000                  .word   0
452  477 000c 5955                  .word   21849
453  478 000e 1801                  .word   280
454  479 0010 111E                  .word   7697
455  480 0012 111B                  .word   6929
456  481 0014 500B                  .word   2896
457  482 0016 411B                  .word   6977
458  483 0018 411F                  .word   8001
459  484 001a 1101                  .word   273
460  485 001c 511F                  .word   8017
461  486 001e 511B                  .word   6993
462  487 0020 0000                  .word   0
463  488 0022 0000                  .word   0
464  489 0024 0000                  .word   0
465  490 0026 0000                  .word   0
466  491 0028 0000                  .word   0
467  492 002a 0000                  .word   0
468  493 002c 0000                  .word   0
469  494 002e 510F                  .word   3921
470  495 0030 9139                  .word   14737
471  496 0032 4114                  .word   5185
472  497 0034 9131                  .word   12689
473  498 0036 411E                  .word   7745
474  499 0038 410E                  .word   3649
475  500 003a 411D                  .word   7489
476  501 003c 500F                  .word   3920
477  502 003e 8020                  .word   8320
478  503 0040 1015                  .word   5392
479  504 0042 4886                  .word   -31160
480  505 0044 4014                  .word   5184
481  506 0046 7805                  .word   1400
482  507 0048 7085                  .word   -31376
483  508 004a 5115                  .word   5457
484  509 004c 510E                  .word   3665
485  510 004e 5195                  .word   -27311
486  511 0050 518E                  .word   -29103
487  512 0052 2190                  .word   -28639
488  513 0054 8120                  .word   8321
489  514 0056 5015                  .word   5456
490  515 0058 4844                  .word   17480
491  516 005a 50C5                  .word   -15024
492  517 005c 28C0                  .word   -16344
493  518 005e 2820                  .word   8232
494  519 0060 0950                  .word   20489
495  520 0062 0000                  .word   0
496  521 0064 0000                  .word   0
497  522 0066 0000                  .word   0
498  523 0068 0000                  .word   0
499  524 006a 0000                  .word   0
500  525                            .section        .data.LCD_timer.1439,"aw",@progbits
501  528                    LCD_timer.1439:
502  529 0000 03                    .byte   3
503  530                            .comm gTextBuffer,25,1
504  531                            .comm gScrollMode,1,1
505  532                            .comm gScroll,1,1
506  533                            .comm LCD_Data,20,1
507  582                    .Letext0:
508 DEFINED SYMBOLS
509                             *ABS*:0000000000000000 LCD_Driver.c
510      /tmp/ccJXwAbc.s:2      *ABS*:000000000000003f __SREG__
511      /tmp/ccJXwAbc.s:3      *ABS*:000000000000003e __SP_H__
512      /tmp/ccJXwAbc.s:4      *ABS*:000000000000003d __SP_L__
513      /tmp/ccJXwAbc.s:5      *ABS*:0000000000000034 __CCP__
514      /tmp/ccJXwAbc.s:6      *ABS*:0000000000000000 __tmp_reg__
515      /tmp/ccJXwAbc.s:7      *ABS*:0000000000000001 __zero_reg__
516      /tmp/ccJXwAbc.s:19     .text.LCD_WriteDigit:0000000000000000 LCD_WriteDigit
517      /tmp/ccJXwAbc.s:470    .progmem.data:0000000000000000 LCD_character_table
518                             *COM*:0000000000000014 LCD_Data
519      /tmp/ccJXwAbc.s:144    .text.LCD_AllSegments:0000000000000000 LCD_AllSegments
520      /tmp/ccJXwAbc.s:177    .text.LCD_Init:0000000000000000 LCD_Init
521      /tmp/ccJXwAbc.s:446    .bss.gLCD_Update_Required:0000000000000000 gLCD_Update_Required
522      /tmp/ccJXwAbc.s:220    .text.__vector_22:0000000000000000 __vector_22
523      /tmp/ccJXwAbc.s:528    .data.LCD_timer.1439:0000000000000000 LCD_timer.1439
524                             *COM*:0000000000000001 gScrollMode
525      /tmp/ccJXwAbc.s:452    .bss.gLCD_Start_Scroll_Timer:0000000000000000 gLCD_Start_Scroll_Timer
526                             *COM*:0000000000000001 gScroll
527      /tmp/ccJXwAbc.s:458    .bss.gFlashTimer:0000000000000000 gFlashTimer
528                             *COM*:0000000000000019 gTextBuffer
529      /tmp/ccJXwAbc.s:464    .bss.gColon:0000000000000000 gColon
530
531 UNDEFINED SYMBOLS
532 __do_copy_data
533 __do_clear_bss

UCC git Repository :: git.ucc.asn.au