Subversion Repositories Projects

Rev

Blame | Last modification | View Log | RSS feed


main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         0000266c  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000000  00800060  0000266c  00002700  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000527  00800060  00800060  00002700  2**0
                  ALLOC
  3 .noinit       00000000  00800587  00800587  00002700  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00002700  2**0
                  CONTENTS
  5 .stab         0000036c  00000000  00000000  00002700  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000084  00000000  00000000  00002a6c  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_aranges 000000c8  00000000  00000000  00002af0  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_pubnames 00000902  00000000  00000000  00002bb8  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_info   00001dfa  00000000  00000000  000034ba  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_abbrev 0000098e  00000000  00000000  000052b4  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_line   00001982  00000000  00000000  00005c42  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_str    000004dc  00000000  00000000  000075c4  2**0
                  CONTENTS, READONLY, DEBUGGING
 13 .debug_ranges 0000000c  0000266c  0000266c  00007aa0  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
       0:       0c 94 7e 06     jmp     0xcfc <__init>
       4:       0c 94 99 06     jmp     0xd32 <__bad_interrupt>
       8:       0c 94 99 06     jmp     0xd32 <__bad_interrupt>
       c:       0c 94 99 06     jmp     0xd32 <__bad_interrupt>
      10:       0c 94 99 06     jmp     0xd32 <__bad_interrupt>
      14:       0c 94 99 06     jmp     0xd32 <__bad_interrupt>
      18:       0c 94 99 06     jmp     0xd32 <__bad_interrupt>
      1c:       0c 94 99 06     jmp     0xd32 <__bad_interrupt>
      20:       0c 94 99 06     jmp     0xd32 <__bad_interrupt>
      24:       0c 94 99 06     jmp     0xd32 <__bad_interrupt>
      28:       0c 94 b5 06     jmp     0xd6a <__vector_10>
      2c:       0c 94 99 06     jmp     0xd32 <__bad_interrupt>
      30:       0c 94 99 06     jmp     0xd32 <__bad_interrupt>
      34:       0c 94 f8 0b     jmp     0x17f0 <__vector_13>
      38:       0c 94 99 06     jmp     0xd32 <__bad_interrupt>
      3c:       0c 94 99 06     jmp     0xd32 <__bad_interrupt>
      40:       0c 94 99 06     jmp     0xd32 <__bad_interrupt>
      44:       0c 94 99 06     jmp     0xd32 <__bad_interrupt>
      48:       0c 94 99 06     jmp     0xd32 <__bad_interrupt>
      4c:       0c 94 99 06     jmp     0xd32 <__bad_interrupt>
      50:       0c 94 99 06     jmp     0xd32 <__bad_interrupt>

00000054 <__ctors_end>:
      54:       00 00           nop
      56:       00 00           nop
      58:       00 00           nop
      5a:       3e 5b           subi    r19, 0xBE       ; 190
      5c:       4f 5b           subi    r20, 0xBF       ; 191
      5e:       3e 00           .word   0x003e  ; ????
      60:       3e 6b           ori     r19, 0xBE       ; 190
      62:       4f 6b           ori     r20, 0xBF       ; 191
      64:       3e 00           .word   0x003e  ; ????
      66:       1c 3e           cpi     r17, 0xEC       ; 236
      68:       7c 3e           cpi     r23, 0xEC       ; 236
      6a:       1c 00           .word   0x001c  ; ????
      6c:       18 3c           cpi     r17, 0xC8       ; 200
      6e:       7e 3c           cpi     r23, 0xCE       ; 206
      70:       18 00           .word   0x0018  ; ????
      72:       1c 57           subi    r17, 0x7C       ; 124
      74:       7d 57           subi    r23, 0x7D       ; 125
      76:       1c 00           .word   0x001c  ; ????
      78:       1c 5e           subi    r17, 0xEC       ; 236
      7a:       7f 5e           subi    r23, 0xEF       ; 239
      7c:       1c 00           .word   0x001c  ; ????
      7e:       00 18           sub     r0, r0
      80:       3c 18           sub     r3, r12
      82:       00 00           nop
      84:       ff e7           ldi     r31, 0x7F       ; 127
      86:       c3 e7           ldi     r28, 0x73       ; 115
      88:       ff 00           .word   0x00ff  ; ????
      8a:       00 18           sub     r0, r0
      8c:       24 18           sub     r2, r4
      8e:       00 00           nop
      90:       ff e7           ldi     r31, 0x7F       ; 127
      92:       db e7           ldi     r29, 0x7B       ; 123
      94:       ff 00           .word   0x00ff  ; ????
      96:       30 48           sbci    r19, 0x80       ; 128
      98:       3a 06           cpc     r3, r26
      9a:       0e 00           .word   0x000e  ; ????
      9c:       26 29           or      r18, r6
      9e:       79 29           or      r23, r9
      a0:       26 00           .word   0x0026  ; ????
      a2:       40 7f           andi    r20, 0xF0       ; 240
      a4:       05 05           cpc     r16, r5
      a6:       07 00           .word   0x0007  ; ????
      a8:       40 7f           andi    r20, 0xF0       ; 240
      aa:       05 25           eor     r16, r5
      ac:       3f 00           .word   0x003f  ; ????
      ae:       5a 3c           cpi     r21, 0xCA       ; 202
      b0:       e7 3c           cpi     r30, 0xC7       ; 199
      b2:       5a 00           .word   0x005a  ; ????
      b4:       7f 3e           cpi     r23, 0xEF       ; 239
      b6:       1c 1c           adc     r1, r12
      b8:       08 00           .word   0x0008  ; ????
      ba:       08 1c           adc     r0, r8
      bc:       1c 3e           cpi     r17, 0xEC       ; 236
      be:       7f 00           .word   0x007f  ; ????
      c0:       14 22           and     r1, r20
      c2:       7f 22           and     r7, r31
      c4:       14 00           .word   0x0014  ; ????
      c6:       5f 5f           subi    r21, 0xFF       ; 255
      c8:       00 5f           subi    r16, 0xF0       ; 240
      ca:       5f 00           .word   0x005f  ; ????
      cc:       06 09           sbc     r16, r6
      ce:       7f 01           movw    r14, r30
      d0:       7f 00           .word   0x007f  ; ????
      d2:       00 66           ori     r16, 0x60       ; 96
      d4:       89 95           .word   0x9589  ; ????
      d6:       6a 00           .word   0x006a  ; ????
      d8:       60 60           ori     r22, 0x00       ; 0
      da:       60 60           ori     r22, 0x00       ; 0
      dc:       60 60           ori     r22, 0x00       ; 0
      de:       94 a2           std     Z+36, r9        ; 0x24
      e0:       ff a2           std     Y+39, r15       ; 0x27
      e2:       94 00           .word   0x0094  ; ????
      e4:       08 04           cpc     r0, r8
      e6:       7e 04           cpc     r7, r14
      e8:       08 00           .word   0x0008  ; ????
      ea:       10 20           and     r1, r0
      ec:       7e 20           and     r7, r14
      ee:       10 00           .word   0x0010  ; ????
      f0:       08 08           sbc     r0, r8
      f2:       2a 1c           adc     r2, r10
      f4:       08 00           .word   0x0008  ; ????
      f6:       08 1c           adc     r0, r8
      f8:       2a 08           sbc     r2, r10
      fa:       08 00           .word   0x0008  ; ????
      fc:       1e 10           cpse    r1, r14
      fe:       10 10           cpse    r1, r0
     100:       10 00           .word   0x0010  ; ????
     102:       0c 1e           adc     r0, r28
     104:       0c 1e           adc     r0, r28
     106:       0c 00           .word   0x000c  ; ????
     108:       30 38           cpi     r19, 0x80       ; 128
     10a:       3e 38           cpi     r19, 0x8E       ; 142
     10c:       30 00           .word   0x0030  ; ????
     10e:       06 0e           add     r0, r22
     110:       3e 0e           add     r3, r30
     112:       06 00           .word   0x0006  ; ????
        ...
     11c:       5f 00           .word   0x005f  ; ????
     11e:       00 00           nop
     120:       00 07           cpc     r16, r16
     122:       00 07           cpc     r16, r16
     124:       00 00           nop
     126:       14 7f           andi    r17, 0xF4       ; 244
     128:       14 7f           andi    r17, 0xF4       ; 244
     12a:       14 00           .word   0x0014  ; ????
     12c:       24 2a           or      r2, r20
     12e:       7f 2a           or      r7, r31
     130:       12 00           .word   0x0012  ; ????
     132:       23 13           cpse    r18, r19
     134:       08 64           ori     r16, 0x48       ; 72
     136:       62 00           .word   0x0062  ; ????
     138:       36 49           sbci    r19, 0x96       ; 150
     13a:       56 20           and     r5, r6
     13c:       50 00           .word   0x0050  ; ????
     13e:       00 08           sbc     r0, r0
     140:       07 03           mulsu   r16, r23
     142:       00 00           nop
     144:       00 1c           adc     r0, r0
     146:       22 41           sbci    r18, 0x12       ; 18
     148:       00 00           nop
     14a:       00 41           sbci    r16, 0x10       ; 16
     14c:       22 1c           adc     r2, r2
     14e:       00 00           nop
     150:       2a 1c           adc     r2, r10
     152:       7f 1c           adc     r7, r15
     154:       2a 00           .word   0x002a  ; ????
     156:       08 08           sbc     r0, r8
     158:       3e 08           sbc     r3, r14
     15a:       08 00           .word   0x0008  ; ????
     15c:       00 80           ld      r0, Z
     15e:       70 30           cpi     r23, 0x00       ; 0
     160:       00 00           nop
     162:       08 08           sbc     r0, r8
     164:       08 08           sbc     r0, r8
     166:       08 00           .word   0x0008  ; ????
     168:       00 00           nop
     16a:       60 60           ori     r22, 0x00       ; 0
     16c:       00 00           nop
     16e:       20 10           cpse    r2, r0
     170:       08 04           cpc     r0, r8
     172:       02 00           .word   0x0002  ; ????
     174:       3e 51           subi    r19, 0x1E       ; 30
     176:       49 45           sbci    r20, 0x59       ; 89
     178:       3e 00           .word   0x003e  ; ????
     17a:       00 42           sbci    r16, 0x20       ; 32
     17c:       7f 40           sbci    r23, 0x0F       ; 15
     17e:       00 00           nop
     180:       72 49           sbci    r23, 0x92       ; 146
     182:       49 49           sbci    r20, 0x99       ; 153
     184:       46 00           .word   0x0046  ; ????
     186:       21 41           sbci    r18, 0x11       ; 17
     188:       49 4d           sbci    r20, 0xD9       ; 217
     18a:       33 00           .word   0x0033  ; ????
     18c:       18 14           cp      r1, r8
     18e:       12 7f           andi    r17, 0xF2       ; 242
     190:       10 00           .word   0x0010  ; ????
     192:       27 45           sbci    r18, 0x57       ; 87
     194:       45 45           sbci    r20, 0x55       ; 85
     196:       39 00           .word   0x0039  ; ????
     198:       3c 4a           sbci    r19, 0xAC       ; 172
     19a:       49 49           sbci    r20, 0x99       ; 153
     19c:       31 00           .word   0x0031  ; ????
     19e:       41 21           and     r20, r1
     1a0:       11 09           sbc     r17, r1
     1a2:       07 00           .word   0x0007  ; ????
     1a4:       36 49           sbci    r19, 0x96       ; 150
     1a6:       49 49           sbci    r20, 0x99       ; 153
     1a8:       36 00           .word   0x0036  ; ????
     1aa:       46 49           sbci    r20, 0x96       ; 150
     1ac:       49 29           or      r20, r9
     1ae:       1e 00           .word   0x001e  ; ????
     1b0:       00 00           nop
     1b2:       14 00           .word   0x0014  ; ????
     1b4:       00 00           nop
     1b6:       00 40           sbci    r16, 0x00       ; 0
     1b8:       34 00           .word   0x0034  ; ????
     1ba:       00 00           nop
     1bc:       00 08           sbc     r0, r0
     1be:       14 22           and     r1, r20
     1c0:       41 00           .word   0x0041  ; ????
     1c2:       14 14           cp      r1, r4
     1c4:       14 14           cp      r1, r4
     1c6:       14 00           .word   0x0014  ; ????
     1c8:       00 41           sbci    r16, 0x10       ; 16
     1ca:       22 14           cp      r2, r2
     1cc:       08 00           .word   0x0008  ; ????
     1ce:       02 01           movw    r0, r4
     1d0:       59 09           sbc     r21, r9
     1d2:       06 00           .word   0x0006  ; ????
     1d4:       3e 41           sbci    r19, 0x1E       ; 30
     1d6:       5d 59           subi    r21, 0x9D       ; 157
     1d8:       4e 00           .word   0x004e  ; ????
     1da:       7c 12           cpse    r7, r28
     1dc:       11 12           cpse    r1, r17
     1de:       7c 00           .word   0x007c  ; ????
     1e0:       7f 49           sbci    r23, 0x9F       ; 159
     1e2:       49 49           sbci    r20, 0x99       ; 153
     1e4:       36 00           .word   0x0036  ; ????
     1e6:       3e 41           sbci    r19, 0x1E       ; 30
     1e8:       41 41           sbci    r20, 0x11       ; 17
     1ea:       22 00           .word   0x0022  ; ????
     1ec:       7f 41           sbci    r23, 0x1F       ; 31
     1ee:       41 41           sbci    r20, 0x11       ; 17
     1f0:       3e 00           .word   0x003e  ; ????
     1f2:       7f 49           sbci    r23, 0x9F       ; 159
     1f4:       49 49           sbci    r20, 0x99       ; 153
     1f6:       41 00           .word   0x0041  ; ????
     1f8:       7f 09           sbc     r23, r15
     1fa:       09 09           sbc     r16, r9
     1fc:       01 00           .word   0x0001  ; ????
     1fe:       3e 41           sbci    r19, 0x1E       ; 30
     200:       41 51           subi    r20, 0x11       ; 17
     202:       73 00           .word   0x0073  ; ????
     204:       7f 08           sbc     r7, r15
     206:       08 08           sbc     r0, r8
     208:       7f 00           .word   0x007f  ; ????
     20a:       00 41           sbci    r16, 0x10       ; 16
     20c:       7f 41           sbci    r23, 0x1F       ; 31
     20e:       00 00           nop
     210:       20 40           sbci    r18, 0x00       ; 0
     212:       41 3f           cpi     r20, 0xF1       ; 241
     214:       01 00           .word   0x0001  ; ????
     216:       7f 08           sbc     r7, r15
     218:       14 22           and     r1, r20
     21a:       41 00           .word   0x0041  ; ????
     21c:       7f 40           sbci    r23, 0x0F       ; 15
     21e:       40 40           sbci    r20, 0x00       ; 0
     220:       40 00           .word   0x0040  ; ????
     222:       7f 02           muls    r23, r31
     224:       1c 02           muls    r17, r28
     226:       7f 00           .word   0x007f  ; ????
     228:       7f 04           cpc     r7, r15
     22a:       08 10           cpse    r0, r8
     22c:       7f 00           .word   0x007f  ; ????
     22e:       3e 41           sbci    r19, 0x1E       ; 30
     230:       41 41           sbci    r20, 0x11       ; 17
     232:       3e 00           .word   0x003e  ; ????
     234:       7f 09           sbc     r23, r15
     236:       09 09           sbc     r16, r9
     238:       06 00           .word   0x0006  ; ????
     23a:       3e 41           sbci    r19, 0x1E       ; 30
     23c:       51 21           and     r21, r1
     23e:       5e 00           .word   0x005e  ; ????
     240:       7f 09           sbc     r23, r15
     242:       19 29           or      r17, r9
     244:       46 00           .word   0x0046  ; ????
     246:       26 49           sbci    r18, 0x96       ; 150
     248:       49 49           sbci    r20, 0x99       ; 153
     24a:       32 00           .word   0x0032  ; ????
     24c:       03 01           movw    r0, r6
     24e:       7f 01           movw    r14, r30
     250:       03 00           .word   0x0003  ; ????
     252:       3f 40           sbci    r19, 0x0F       ; 15
     254:       40 40           sbci    r20, 0x00       ; 0
     256:       3f 00           .word   0x003f  ; ????
     258:       1f 20           and     r1, r15
     25a:       40 20           and     r4, r0
     25c:       1f 00           .word   0x001f  ; ????
     25e:       3f 40           sbci    r19, 0x0F       ; 15
     260:       38 40           sbci    r19, 0x08       ; 8
     262:       3f 00           .word   0x003f  ; ????
     264:       63 14           cp      r6, r3
     266:       08 14           cp      r0, r8
     268:       63 00           .word   0x0063  ; ????
     26a:       03 04           cpc     r0, r3
     26c:       78 04           cpc     r7, r8
     26e:       03 00           .word   0x0003  ; ????
     270:       61 59           subi    r22, 0x91       ; 145
     272:       49 4d           sbci    r20, 0xD9       ; 217
     274:       43 00           .word   0x0043  ; ????
     276:       00 7f           andi    r16, 0xF0       ; 240
     278:       41 41           sbci    r20, 0x11       ; 17
     27a:       41 00           .word   0x0041  ; ????
     27c:       02 04           cpc     r0, r2
     27e:       08 10           cpse    r0, r8
     280:       20 00           .word   0x0020  ; ????
     282:       00 41           sbci    r16, 0x10       ; 16
     284:       41 41           sbci    r20, 0x11       ; 17
     286:       7f 00           .word   0x007f  ; ????
     288:       04 02           muls    r16, r20
     28a:       01 02           muls    r16, r17
     28c:       04 00           .word   0x0004  ; ????
     28e:       40 40           sbci    r20, 0x00       ; 0
     290:       40 40           sbci    r20, 0x00       ; 0
     292:       40 00           .word   0x0040  ; ????
     294:       00 03           mulsu   r16, r16
     296:       07 08           sbc     r0, r7
     298:       00 00           nop
     29a:       20 54           subi    r18, 0x40       ; 64
     29c:       54 78           andi    r21, 0x84       ; 132
     29e:       40 00           .word   0x0040  ; ????
     2a0:       7f 28           or      r7, r15
     2a2:       44 44           sbci    r20, 0x44       ; 68
     2a4:       38 00           .word   0x0038  ; ????
     2a6:       38 44           sbci    r19, 0x48       ; 72
     2a8:       44 44           sbci    r20, 0x44       ; 68
     2aa:       28 00           .word   0x0028  ; ????
     2ac:       38 44           sbci    r19, 0x48       ; 72
     2ae:       44 28           or      r4, r4
     2b0:       7f 00           .word   0x007f  ; ????
     2b2:       38 54           subi    r19, 0x48       ; 72
     2b4:       54 54           subi    r21, 0x44       ; 68
     2b6:       18 00           .word   0x0018  ; ????
     2b8:       00 08           sbc     r0, r0
     2ba:       7e 09           sbc     r23, r14
     2bc:       02 00           .word   0x0002  ; ????
     2be:       18 a4           ldd     r1, Y+40        ; 0x28
     2c0:       a4 9c           mul     r10, r4
     2c2:       78 00           .word   0x0078  ; ????
     2c4:       7f 08           sbc     r7, r15
     2c6:       04 04           cpc     r0, r4
     2c8:       78 00           .word   0x0078  ; ????
     2ca:       00 44           sbci    r16, 0x40       ; 64
     2cc:       7d 40           sbci    r23, 0x0D       ; 13
     2ce:       00 00           nop
     2d0:       20 40           sbci    r18, 0x00       ; 0
     2d2:       40 3d           cpi     r20, 0xD0       ; 208
     2d4:       00 00           nop
     2d6:       7f 10           cpse    r7, r15
     2d8:       28 44           sbci    r18, 0x48       ; 72
     2da:       00 00           nop
     2dc:       00 41           sbci    r16, 0x10       ; 16
     2de:       7f 40           sbci    r23, 0x0F       ; 15
     2e0:       00 00           nop
     2e2:       7c 04           cpc     r7, r12
     2e4:       78 04           cpc     r7, r8
     2e6:       78 00           .word   0x0078  ; ????
     2e8:       7c 08           sbc     r7, r12
     2ea:       04 04           cpc     r0, r4
     2ec:       78 00           .word   0x0078  ; ????
     2ee:       38 44           sbci    r19, 0x48       ; 72
     2f0:       44 44           sbci    r20, 0x44       ; 68
     2f2:       38 00           .word   0x0038  ; ????
     2f4:       fc 18           sub     r15, r12
     2f6:       24 24           eor     r2, r4
     2f8:       18 00           .word   0x0018  ; ????
     2fa:       18 24           eor     r1, r8
     2fc:       24 18           sub     r2, r4
     2fe:       fc 00           .word   0x00fc  ; ????
     300:       7c 08           sbc     r7, r12
     302:       04 04           cpc     r0, r4
     304:       08 00           .word   0x0008  ; ????
     306:       48 54           subi    r20, 0x48       ; 72
     308:       54 54           subi    r21, 0x44       ; 68
     30a:       24 00           .word   0x0024  ; ????
     30c:       04 04           cpc     r0, r4
     30e:       3f 44           sbci    r19, 0x4F       ; 79
     310:       24 00           .word   0x0024  ; ????
     312:       3c 40           sbci    r19, 0x0C       ; 12
     314:       40 20           and     r4, r0
     316:       7c 00           .word   0x007c  ; ????
     318:       1c 20           and     r1, r12
     31a:       40 20           and     r4, r0
     31c:       1c 00           .word   0x001c  ; ????
     31e:       3c 40           sbci    r19, 0x0C       ; 12
     320:       30 40           sbci    r19, 0x00       ; 0
     322:       3c 00           .word   0x003c  ; ????
     324:       44 28           or      r4, r4
     326:       10 28           or      r1, r0
     328:       44 00           .word   0x0044  ; ????
     32a:       4c 90           ld      r4, X
     32c:       90 90 7c 00     lds     r9, 0x007C
     330:       44 64           ori     r20, 0x44       ; 68
     332:       54 4c           sbci    r21, 0xC4       ; 196
     334:       44 00           .word   0x0044  ; ????
     336:       00 08           sbc     r0, r0
     338:       36 41           sbci    r19, 0x16       ; 22
     33a:       00 00           nop
     33c:       00 00           nop
     33e:       77 00           .word   0x0077  ; ????
     340:       00 00           nop
     342:       00 41           sbci    r16, 0x10       ; 16
     344:       36 08           sbc     r3, r6
     346:       00 00           nop
     348:       02 01           movw    r0, r4
     34a:       02 04           cpc     r0, r2
     34c:       02 00           .word   0x0002  ; ????
     34e:       3c 26           eor     r3, r28
     350:       23 26           eor     r2, r19
     352:       3c 00           .word   0x003c  ; ????
     354:       1e a1           ldd     r17, Y+38       ; 0x26
     356:       a1 61           ori     r26, 0x11       ; 17
     358:       12 00           .word   0x0012  ; ????
     35a:       3a 40           sbci    r19, 0x0A       ; 10
     35c:       40 20           and     r4, r0
     35e:       7a 00           .word   0x007a  ; ????
     360:       38 54           subi    r19, 0x48       ; 72
     362:       54 55           subi    r21, 0x54       ; 84
     364:       59 00           .word   0x0059  ; ????
     366:       21 55           subi    r18, 0x51       ; 81
     368:       55 79           andi    r21, 0x95       ; 149
     36a:       41 00           .word   0x0041  ; ????
     36c:       21 54           subi    r18, 0x41       ; 65
     36e:       54 78           andi    r21, 0x84       ; 132
     370:       41 00           .word   0x0041  ; ????
     372:       21 55           subi    r18, 0x51       ; 81
     374:       54 78           andi    r21, 0x84       ; 132
     376:       40 00           .word   0x0040  ; ????
     378:       20 54           subi    r18, 0x40       ; 64
     37a:       55 79           andi    r21, 0x95       ; 149
     37c:       40 00           .word   0x0040  ; ????
     37e:       0c 1e           adc     r0, r28
     380:       52 72           andi    r21, 0x22       ; 34
     382:       12 00           .word   0x0012  ; ????
     384:       39 55           subi    r19, 0x59       ; 89
     386:       55 55           subi    r21, 0x55       ; 85
     388:       59 00           .word   0x0059  ; ????
     38a:       39 54           subi    r19, 0x49       ; 73
     38c:       54 54           subi    r21, 0x44       ; 68
     38e:       59 00           .word   0x0059  ; ????
     390:       39 55           subi    r19, 0x59       ; 89
     392:       54 54           subi    r21, 0x44       ; 68
     394:       58 00           .word   0x0058  ; ????
     396:       00 00           nop
     398:       45 7c           andi    r20, 0xC5       ; 197
     39a:       41 00           .word   0x0041  ; ????
     39c:       00 02           muls    r16, r16
     39e:       45 7d           andi    r20, 0xD5       ; 213
     3a0:       42 00           .word   0x0042  ; ????
     3a2:       00 01           movw    r0, r0
     3a4:       45 7c           andi    r20, 0xC5       ; 197
     3a6:       40 00           .word   0x0040  ; ????
     3a8:       79 14           cp      r7, r9
     3aa:       12 14           cp      r1, r2
     3ac:       79 00           .word   0x0079  ; ????
     3ae:       f0 28           or      r15, r0
     3b0:       25 28           or      r2, r5
     3b2:       f0 00           .word   0x00f0  ; ????
     3b4:       7c 54           subi    r23, 0x4C       ; 76
     3b6:       55 45           sbci    r21, 0x55       ; 85
     3b8:       00 00           nop
     3ba:       20 54           subi    r18, 0x40       ; 64
     3bc:       54 7c           andi    r21, 0xC4       ; 196
     3be:       54 44           sbci    r21, 0x44       ; 68
     3c0:       7c 0a           sbc     r7, r28
     3c2:       09 7f           andi    r16, 0xF9       ; 249
     3c4:       49 41           sbci    r20, 0x19       ; 25
     3c6:       32 49           sbci    r19, 0x92       ; 146
     3c8:       49 49           sbci    r20, 0x99       ; 153
     3ca:       32 00           .word   0x0032  ; ????
     3cc:       32 48           sbci    r19, 0x82       ; 130
     3ce:       48 48           sbci    r20, 0x88       ; 136
     3d0:       32 00           .word   0x0032  ; ????
     3d2:       32 4a           sbci    r19, 0xA2       ; 162
     3d4:       48 48           sbci    r20, 0x88       ; 136
     3d6:       30 00           .word   0x0030  ; ????
     3d8:       3a 41           sbci    r19, 0x1A       ; 26
     3da:       41 21           and     r20, r1
     3dc:       7a 00           .word   0x007a  ; ????
     3de:       3a 42           sbci    r19, 0x2A       ; 42
     3e0:       40 20           and     r4, r0
     3e2:       78 00           .word   0x0078  ; ????
     3e4:       00 9d           mul     r16, r0
     3e6:       a0 a0           ldd     r10, Z+32       ; 0x20
     3e8:       7d 00           .word   0x007d  ; ????
     3ea:       39 44           sbci    r19, 0x49       ; 73
     3ec:       44 44           sbci    r20, 0x44       ; 68
     3ee:       39 00           .word   0x0039  ; ????
     3f0:       3d 40           sbci    r19, 0x0D       ; 13
     3f2:       40 40           sbci    r20, 0x00       ; 0
     3f4:       3d 00           .word   0x003d  ; ????
     3f6:       3c 24           eor     r3, r12
     3f8:       ff 24           eor     r15, r15
     3fa:       24 00           .word   0x0024  ; ????
     3fc:       48 7e           andi    r20, 0xE8       ; 232
     3fe:       49 43           sbci    r20, 0x39       ; 57
     400:       66 00           .word   0x0066  ; ????
     402:       2b 2f           mov     r18, r27
     404:       fc 2f           mov     r31, r28
     406:       2b 00           .word   0x002b  ; ????
     408:       ff 09           sbc     r31, r15
     40a:       29 f6           brne    .-118           ; 0x396 <__ctors_end+0x342>
     40c:       20 00           .word   0x0020  ; ????
     40e:       c0 88           ldd     r12, Z+16       ; 0x10
     410:       7e 09           sbc     r23, r14
     412:       03 00           .word   0x0003  ; ????
     414:       20 54           subi    r18, 0x40       ; 64
     416:       54 79           andi    r21, 0x94       ; 148
     418:       41 00           .word   0x0041  ; ????
     41a:       00 00           nop
     41c:       44 7d           andi    r20, 0xD4       ; 212
     41e:       41 00           .word   0x0041  ; ????
     420:       30 48           sbci    r19, 0x80       ; 128
     422:       48 4a           sbci    r20, 0xA8       ; 168
     424:       32 00           .word   0x0032  ; ????
     426:       38 40           sbci    r19, 0x08       ; 8
     428:       40 22           and     r4, r16
     42a:       7a 00           .word   0x007a  ; ????
     42c:       00 7a           andi    r16, 0xA0       ; 160
     42e:       0a 0a           sbc     r0, r26
     430:       72 00           .word   0x0072  ; ????
     432:       7d 0d           add     r23, r13
     434:       19 31           cpi     r17, 0x19       ; 25
     436:       7d 00           .word   0x007d  ; ????
     438:       26 29           or      r18, r6
     43a:       29 2f           mov     r18, r25
     43c:       28 00           .word   0x0028  ; ????
     43e:       26 29           or      r18, r6
     440:       29 29           or      r18, r9
     442:       26 00           .word   0x0026  ; ????
     444:       30 48           sbci    r19, 0x80       ; 128
     446:       4d 40           sbci    r20, 0x0D       ; 13
     448:       20 00           .word   0x0020  ; ????
     44a:       38 08           sbc     r3, r8
     44c:       08 08           sbc     r0, r8
     44e:       08 00           .word   0x0008  ; ????
     450:       08 08           sbc     r0, r8
     452:       08 08           sbc     r0, r8
     454:       38 00           .word   0x0038  ; ????
     456:       2f 10           cpse    r2, r15
     458:       c8 ac           ldd     r12, Y+56       ; 0x38
     45a:       ba 00           .word   0x00ba  ; ????
     45c:       2f 10           cpse    r2, r15
     45e:       28 34           cpi     r18, 0x48       ; 72
     460:       fa 00           .word   0x00fa  ; ????
     462:       00 00           nop
     464:       7b 00           .word   0x007b  ; ????
     466:       00 00           nop
     468:       08 14           cp      r0, r8
     46a:       2a 14           cp      r2, r10
     46c:       22 00           .word   0x0022  ; ????
     46e:       22 14           cp      r2, r2
     470:       2a 14           cp      r2, r10
     472:       08 00           .word   0x0008  ; ????
     474:       aa 00           .word   0x00aa  ; ????
     476:       55 00           .word   0x0055  ; ????
     478:       aa 00           .word   0x00aa  ; ????
     47a:       aa 55           subi    r26, 0x5A       ; 90
     47c:       aa 55           subi    r26, 0x5A       ; 90
     47e:       aa 55           subi    r26, 0x5A       ; 90
     480:       55 aa           std     Z+53, r5        ; 0x35
     482:       55 aa           std     Z+53, r5        ; 0x35
     484:       55 aa           std     Z+53, r5        ; 0x35
     486:       00 00           nop
     488:       00 ff           sbrs    r16, 0
     48a:       00 00           nop
     48c:       10 10           cpse    r1, r0
     48e:       10 ff           sbrs    r17, 0
     490:       00 00           nop
     492:       14 14           cp      r1, r4
     494:       14 ff           sbrs    r17, 4
     496:       00 00           nop
     498:       10 10           cpse    r1, r0
     49a:       ff 00           .word   0x00ff  ; ????
     49c:       ff 00           .word   0x00ff  ; ????
     49e:       10 10           cpse    r1, r0
     4a0:       f0 10           cpse    r15, r0
     4a2:       f0 00           .word   0x00f0  ; ????
     4a4:       14 14           cp      r1, r4
     4a6:       14 fc           sbrc    r1, 4
     4a8:       00 00           nop
     4aa:       14 14           cp      r1, r4
     4ac:       f7 00           .word   0x00f7  ; ????
     4ae:       ff 00           .word   0x00ff  ; ????
     4b0:       00 00           nop
     4b2:       ff 00           .word   0x00ff  ; ????
     4b4:       ff 00           .word   0x00ff  ; ????
     4b6:       14 14           cp      r1, r4
     4b8:       f4 04           cpc     r15, r4
     4ba:       fc 00           .word   0x00fc  ; ????
     4bc:       14 14           cp      r1, r4
     4be:       17 10           cpse    r1, r7
     4c0:       1f 00           .word   0x001f  ; ????
     4c2:       10 10           cpse    r1, r0
     4c4:       1f 10           cpse    r1, r15
     4c6:       1f 00           .word   0x001f  ; ????
     4c8:       14 14           cp      r1, r4
     4ca:       14 1f           adc     r17, r20
     4cc:       00 00           nop
     4ce:       10 10           cpse    r1, r0
     4d0:       10 f0           brcs    .+4             ; 0x4d6 <__ctors_end+0x482>
     4d2:       00 00           nop
     4d4:       00 00           nop
     4d6:       00 1f           adc     r16, r16
     4d8:       10 10           cpse    r1, r0
     4da:       10 10           cpse    r1, r0
     4dc:       10 1f           adc     r17, r16
     4de:       10 10           cpse    r1, r0
     4e0:       10 10           cpse    r1, r0
     4e2:       10 f0           brcs    .+4             ; 0x4e8 <__ctors_end+0x494>
     4e4:       10 10           cpse    r1, r0
     4e6:       00 00           nop
     4e8:       00 ff           sbrs    r16, 0
     4ea:       10 10           cpse    r1, r0
     4ec:       10 10           cpse    r1, r0
     4ee:       10 10           cpse    r1, r0
     4f0:       10 10           cpse    r1, r0
     4f2:       10 10           cpse    r1, r0
     4f4:       10 ff           sbrs    r17, 0
     4f6:       10 10           cpse    r1, r0
     4f8:       00 00           nop
     4fa:       00 ff           sbrs    r16, 0
     4fc:       14 14           cp      r1, r4
     4fe:       00 00           nop
     500:       ff 00           .word   0x00ff  ; ????
     502:       ff 10           cpse    r15, r15
     504:       00 00           nop
     506:       1f 10           cpse    r1, r15
     508:       17 14           cp      r1, r7
     50a:       00 00           nop
     50c:       fc 04           cpc     r15, r12
     50e:       f4 14           cp      r15, r4
     510:       14 14           cp      r1, r4
     512:       17 10           cpse    r1, r7
     514:       17 14           cp      r1, r7
     516:       14 14           cp      r1, r4
     518:       f4 04           cpc     r15, r4
     51a:       f4 14           cp      r15, r4
     51c:       00 00           nop
     51e:       ff 00           .word   0x00ff  ; ????
     520:       f7 14           cp      r15, r7
     522:       14 14           cp      r1, r4
     524:       14 14           cp      r1, r4
     526:       14 14           cp      r1, r4
     528:       14 14           cp      r1, r4
     52a:       f7 00           .word   0x00f7  ; ????
     52c:       f7 14           cp      r15, r7
     52e:       14 14           cp      r1, r4
     530:       14 17           cp      r17, r20
     532:       14 14           cp      r1, r4
     534:       10 10           cpse    r1, r0
     536:       1f 10           cpse    r1, r15
     538:       1f 10           cpse    r1, r15
     53a:       14 14           cp      r1, r4
     53c:       14 f4           brge    .+4             ; 0x542 <__ctors_end+0x4ee>
     53e:       14 14           cp      r1, r4
     540:       10 10           cpse    r1, r0
     542:       f0 10           cpse    r15, r0
     544:       f0 10           cpse    r15, r0
     546:       00 00           nop
     548:       1f 10           cpse    r1, r15
     54a:       1f 10           cpse    r1, r15
     54c:       00 00           nop
     54e:       00 1f           adc     r16, r16
     550:       14 14           cp      r1, r4
     552:       00 00           nop
     554:       00 fc           sbrc    r0, 0
     556:       14 14           cp      r1, r4
     558:       00 00           nop
     55a:       f0 10           cpse    r15, r0
     55c:       f0 10           cpse    r15, r0
     55e:       10 10           cpse    r1, r0
     560:       ff 10           cpse    r15, r15
     562:       ff 10           cpse    r15, r15
     564:       14 14           cp      r1, r4
     566:       14 ff           sbrs    r17, 4
     568:       14 14           cp      r1, r4
     56a:       10 10           cpse    r1, r0
     56c:       10 1f           adc     r17, r16
     56e:       00 00           nop
     570:       00 00           nop
     572:       00 f0           brcs    .+0             ; 0x574 <__ctors_end+0x520>
     574:       10 10           cpse    r1, r0
     576:       ff ff           .word   0xffff  ; ????
     578:       ff ff           .word   0xffff  ; ????
     57a:       ff ff           .word   0xffff  ; ????
     57c:       f0 f0           brcs    .+60            ; 0x5ba <__ctors_end+0x566>
     57e:       f0 f0           brcs    .+60            ; 0x5bc <__ctors_end+0x568>
     580:       f0 f0           brcs    .+60            ; 0x5be <__ctors_end+0x56a>
     582:       ff ff           .word   0xffff  ; ????
     584:       ff 00           .word   0x00ff  ; ????
     586:       00 00           nop
     588:       00 00           nop
     58a:       00 ff           sbrs    r16, 0
     58c:       ff ff           .word   0xffff  ; ????
     58e:       0f 0f           add     r16, r31
     590:       0f 0f           add     r16, r31
     592:       0f 0f           add     r16, r31
     594:       38 44           sbci    r19, 0x48       ; 72
     596:       44 38           cpi     r20, 0x84       ; 132
     598:       44 00           .word   0x0044  ; ????
     59a:       7c 2a           or      r7, r28
     59c:       2a 3e           cpi     r18, 0xEA       ; 234
     59e:       14 00           .word   0x0014  ; ????
     5a0:       7e 02           muls    r23, r30
     5a2:       02 06           cpc     r0, r18
     5a4:       06 00           .word   0x0006  ; ????
     5a6:       02 7e           andi    r16, 0xE2       ; 226
     5a8:       02 7e           andi    r16, 0xE2       ; 226
     5aa:       02 00           .word   0x0002  ; ????
     5ac:       63 55           subi    r22, 0x53       ; 83
     5ae:       49 41           sbci    r20, 0x19       ; 25
     5b0:       63 00           .word   0x0063  ; ????
     5b2:       38 44           sbci    r19, 0x48       ; 72
     5b4:       44 3c           cpi     r20, 0xC4       ; 196
     5b6:       04 00           .word   0x0004  ; ????
     5b8:       40 7e           andi    r20, 0xE0       ; 224
     5ba:       20 1e           adc     r2, r16
     5bc:       20 00           .word   0x0020  ; ????
     5be:       06 02           muls    r16, r22
     5c0:       7e 02           muls    r23, r30
     5c2:       02 00           .word   0x0002  ; ????
     5c4:       99 a5           ldd     r25, Y+41       ; 0x29
     5c6:       e7 a5           ldd     r30, Z+47       ; 0x2f
     5c8:       99 00           .word   0x0099  ; ????
     5ca:       1c 2a           or      r1, r28
     5cc:       49 2a           or      r4, r25
     5ce:       1c 00           .word   0x001c  ; ????
     5d0:       4c 72           andi    r20, 0x2C       ; 44
     5d2:       01 72           andi    r16, 0x21       ; 33
     5d4:       4c 00           .word   0x004c  ; ????
     5d6:       30 4a           sbci    r19, 0xA0       ; 160
     5d8:       4d 4d           sbci    r20, 0xDD       ; 221
     5da:       30 00           .word   0x0030  ; ????
     5dc:       30 48           sbci    r19, 0x80       ; 128
     5de:       78 48           sbci    r23, 0x88       ; 136
     5e0:       30 00           .word   0x0030  ; ????
     5e2:       bc 62           ori     r27, 0x2C       ; 44
     5e4:       5a 46           sbci    r21, 0x6A       ; 106
     5e6:       3d 00           .word   0x003d  ; ????
     5e8:       3e 49           sbci    r19, 0x9E       ; 158
     5ea:       49 49           sbci    r20, 0x99       ; 153
     5ec:       00 00           nop
     5ee:       7e 01           movw    r14, r28
     5f0:       01 01           movw    r0, r2
     5f2:       7e 00           .word   0x007e  ; ????
     5f4:       2a 2a           or      r2, r26
     5f6:       2a 2a           or      r2, r26
     5f8:       2a 00           .word   0x002a  ; ????
     5fa:       44 44           sbci    r20, 0x44       ; 68
     5fc:       5f 44           sbci    r21, 0x4F       ; 79
     5fe:       44 00           .word   0x0044  ; ????
     600:       40 51           subi    r20, 0x10       ; 16
     602:       4a 44           sbci    r20, 0x4A       ; 74
     604:       40 00           .word   0x0040  ; ????
     606:       40 44           sbci    r20, 0x40       ; 64
     608:       4a 51           subi    r20, 0x1A       ; 26
     60a:       40 00           .word   0x0040  ; ????
     60c:       00 00           nop
     60e:       ff 01           movw    r30, r30
     610:       03 00           .word   0x0003  ; ????
     612:       e0 80           ld      r14, Z
     614:       ff 00           .word   0x00ff  ; ????
     616:       00 00           nop
     618:       08 08           sbc     r0, r8
     61a:       6b 6b           ori     r22, 0xBB       ; 187
     61c:       08 08           sbc     r0, r8
     61e:       36 12           cpse    r3, r22
     620:       36 24           eor     r3, r6
     622:       36 00           .word   0x0036  ; ????
     624:       06 0f           add     r16, r22
     626:       09 0f           add     r16, r25
     628:       06 00           .word   0x0006  ; ????
     62a:       00 00           nop
     62c:       18 18           sub     r1, r8
     62e:       00 00           nop
     630:       00 00           nop
     632:       10 10           cpse    r1, r0
     634:       00 00           nop
     636:       30 40           sbci    r19, 0x00       ; 0
     638:       ff 01           movw    r30, r30
     63a:       01 00           .word   0x0001  ; ????
     63c:       00 1f           adc     r16, r16
     63e:       01 01           movw    r0, r2
     640:       1e 00           .word   0x001e  ; ????
     642:       00 19           sub     r16, r0
     644:       1d 17           cp      r17, r29
     646:       12 00           .word   0x0012  ; ????
     648:       00 3c           cpi     r16, 0xC0       ; 192
     64a:       3c 3c           cpi     r19, 0xCC       ; 204
     64c:       3c 00           .word   0x003c  ; ????
     64e:       00 00           nop
     650:       00 00           nop
        ...

00000654 <__c.0>:
     654:       20 20 20 20 20 20 00                                      .

0000065b <parameter>:
     65b:       4e 69 63 6b 20 20 20 20 20 20 20 20 20 20 20 00     Nick           .
     66b:       52 6f 6c 6c 20 20 20 20 20 20 20 20 20 20 20 00     Roll           .
     67b:       47 61 73 20 20 20 20 20 20 20 20 20 20 20 20 00     Gas            .
     68b:       47 69 65 72 09 09 09 00 00 00 00 00 00 00 00 00     Gier............
     69b:       50 6f 74 69 31 09 09 09 00 00 00 00 00 00 00 00     Poti1...........
     6ab:       50 6f 74 69 32 09 09 09 00 00 00 00 00 00 00 00     Poti2...........
     6bb:       50 6f 74 69 33 09 09 09 00 00 00 00 00 00 00 00     Poti3...........
     6cb:       50 6f 74 69 34 09 09 09 00 00 00 00 00 00 00 00     Poti4...........
     6db:       43 6f 6e 66 69 67 09 09 09 00 00 00 00 00 00 00     Config..........
     6eb:       48 6f 65 68 65 5f 4d 69 6e 47 61 73 20 20 20 00     Hoehe_MinGas   .
     6fb:       4c 75 66 74 64 72 75 63 6b 5f 44 20 20 20 20 00     Luftdruck_D    .
     70b:       4d 61 78 48 6f 65 68 65 20 20 20 20 20 20 20 00     MaxHoehe       .
     71b:       48 6f 65 68 65 5f 50 20 20 20 20 20 20 20 20 00     Hoehe_P        .
     72b:       48 6f 65 68 65 5f 56 65 72 73 74 61 65 72 6b 00     Hoehe_Verstaerk.
     73b:       48 6f 65 68 65 5f 41 43 43 5f 57 69 72 6b 2e 00     Hoehe_ACC_Wirk..
     74b:       53 74 69 63 6b 5f 50 20 20 20 20 20 20 20 20 00     Stick_P        .
     75b:       53 74 69 63 6b 5f 44 20 20 20 20 20 20 20 20 00     Stick_D        .
     76b:       47 69 65 72 5f 50 20 20 20 20 20 20 20 20 20 00     Gier_P         .
     77b:       47 61 73 5f 4d 69 6e 20 20 20 20 20 20 20 20 00     Gas_Min        .
     78b:       47 61 73 5f 4d 61 78 20 20 20 20 20 20 20 20 00     Gas_Max        .
     79b:       47 79 72 6f 41 63 63 46 61 6b 74 6f 72 09 00 00     GyroAccFaktor...
     7ab:       4b 6f 6d 70 61 73 73 57 69 72 6b 75 6e 67 20 00     KompassWirkung .
     7bb:       47 79 72 6f 5f 50 20 09 09 00 00 00 00 00 00 00     Gyro_P .........
     7cb:       47 79 72 6f 5f 49 09 09 09 00 00 00 00 00 00 00     Gyro_I..........
     7db:       55 6e 74 65 72 73 70 61 6e 6e 75 6e 67 20 20 00     Unterspannung  .
     7eb:       4e 6f 74 47 61 73 09 09 09 00 00 00 00 00 00 00     NotGas..........
     7fb:       4e 6f 74 47 61 73 5a 65 69 74 20 20 20 20 20 00     NotGasZeit     .
     80b:       55 66 6f 41 75 73 72 69 63 68 74 75 6e 67 20 00     UfoAusrichtung .
     81b:       49 5f 46 61 6b 74 6f 72 20 20 20 20 20 20 20 00     I_Faktor       .
     82b:       55 73 65 72 50 61 72 61 6d 31 09 09 00 00 00 00     UserParam1......
     83b:       55 73 65 72 50 61 72 61 6d 32 09 09 00 00 00 00     UserParam2......
     84b:       55 73 65 72 50 61 72 61 6d 33 09 09 00 00 00 00     UserParam3......
     85b:       55 73 65 72 50 61 72 61 6d 34 09 09 00 00 00 00     UserParam4......
     86b:       53 65 72 76 6f 4e 69 63 6b 43 74 72 6c 09 00 00     ServoNickCtrl...
     87b:       53 65 72 76 6f 4e 69 63 6b 43 6f 6d 70 09 00 00     ServoNickComp...
     88b:       53 65 72 76 6f 4e 69 63 6b 4d 69 6e 09 00 00 00     ServoNickMin....
     89b:       53 65 72 76 6f 4e 69 63 6b 4d 61 78 09 00 00 00     ServoNickMax....
     8ab:       53 65 72 76 6f 4e 69 63 6b 52 65 66 72 73 68 00     ServoNickRefrsh.
     8bb:       4c 6f 6f 70 47 61 73 4c 69 6d 69 74 09 00 00 00     LoopGasLimit....
     8cb:       4c 6f 6f 70 54 68 72 65 73 68 6f 6c 64 09 00 00     LoopThreshold...
     8db:       4c 6f 6f 70 48 79 73 74 65 72 65 73 65 09 00 00     LoopHysterese...
     8eb:       41 63 68 73 4b 6f 70 70 6c 75 6e 67 09 00 00 00     AchsKopplung....
     8fb:       41 63 68 73 47 65 67 65 6e 4b 6f 70 70 6c 2e 00     AchsGegenKoppl..
     90b:       57 69 6e 6b 6c 55 6d 73 63 68 6c 4e 69 63 6b 00     WinklUmschlNick.
     91b:       57 69 6e 6b 6c 55 6d 73 63 68 6c 52 6f 6c 6c 00     WinklUmschlRoll.
     92b:       47 79 72 6f 41 63 63 41 62 67 6c 65 69 63 68 00     GyroAccAbgleich.
     93b:       44 72 69 66 74 6b 6f 6d 70 09 09 00 00 00 00 00     Driftkomp.......
     94b:       44 79 6e 61 6d 69 63 53 74 61 62 69 6c 69 74 00     DynamicStabilit.
     95b:       55 73 65 72 50 61 72 61 6d 35 09 09 00 00 00 00     UserParam5......
     96b:       55 73 65 72 50 61 72 61 6d 36 09 09 00 00 00 00     UserParam6......
     97b:       55 73 65 72 50 61 72 61 6d 37 09 09 00 00 00 00     UserParam7......
     98b:       55 73 65 72 50 61 72 61 6d 38 09 09 00 00 00 00     UserParam8......
     99b:       4c 6f 6f 70 43 6f 6e 66 69 67 09 09 00 00 00 00     LoopConfig......
     9ab:       53 65 72 76 6f 4e 69 63 6b 43 6f 6d 70 49 6e 00     ServoNickCompIn.

000009bb <bin_parameter>:
     9bb:       4c 6f 6f 70 20 75 70 20 20 20 20 20 20 20 20 00     Loop up        .
     9cb:       4c 6f 6f 70 20 64 6f 77 6e 09 20 20 20 20 00 00     Loop down.    ..
     9db:       4c 6f 6f 70 20 6c 65 66 74 20 20 20 20 20 20 00     Loop left      .
     9eb:       4c 6f 6f 70 20 72 69 67 68 74 20 20 20 20 20 00     Loop right     .
     9fb:       48 f6 68 65 6e 72 65 67 6c 65 72 20 20 20 20 00     H.henregler    .
     a0b:       48 f6 68 65 6e 73 63 68 61 6c 74 65 72 20 20 00     H.henschalter  .
     a1b:       48 65 61 64 68 6f 6c 64 09 09 00 00 00 00 00 00     Headhold........
     a2b:       4b 6f 6d 70 61 73 73 09 09 00 00 00 00 00 00 00     Kompass.........
     a3b:       4b 6f 6d 70 61 73 73 46 69 78 09 09 00 00 00 00     KompassFix......
     a4b:       47 50 53 09 09 09 00 00 00 00 00 00 00 00 00 00     GPS.............
     a5b:       41 63 68 73 65 6e 6b 6f 70 70 6c 75 6e 67 20 00     Achsenkopplung .
     a6b:       44 72 65 68 72 61 74 65 09 09 00 00 00 00 00 00     Drehrate........

00000a7b <p_limits>:
     a7b:       01 08 02 01 08 02 01 08 02 01 08 02 01 08 02 01     ................
     a8b:       08 02 01 08 02 01 08 02 00 00 00 00 ff 04 00 ff     ................
     a9b:       04 00 ff 04 00 ff 04 00 32 04 00 ff 04 00 06 03     ........2.......
     aab:       00 40 03 00 14 03 00 20 08 21 fa 08 00 32 08 00     .@..... .!...2..
     abb:       ff 08 00 00 05 00 00 05 00 fa 08 00 fa 08 00 fa     ................
     acb:       08 00 01 00 00 ff 05 00 ff 09 00 ff 09 00 ff 09     ................
     adb:       00 ff 09 00 ff 07 00 fa 07 00 fa 07 00 fa 07 00     ................
     aeb:       19 07 00 ff 06 00 fa 06 00 fa 06 00 ff 0a 00 ff     ................
     afb:       0a 00 fa 06 00 fa 06 00 fa 05 00 fa 05 00 ff 05     ................
     b0b:       00 ff 09 00 ff 09 00 ff 09 00 ff 09 00 00 01 00     ................
     b1b:       01 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
        ...

00000b42 <p_menu_number>:
     b42:       02 02 02 02 02 02 02 02 00 04 04 04 04 04 04 03     ................
     b52:       03 03 08 08 08 08 05 05 08 08 08 00 05 09 09 09     ................
     b62:       09 07 07 07 07 07 07 06 06 06 0a 0a 06 06 05 05     ................
     b72:       05 09 09 09 09 00 07 0b 0b 0b 0b 0c 0c 0c 0c 0c     ................
     b82:       0c 0c 0c                                            ...

00000b85 <p_menus>:
     b85:       43 6f 6e 66 69 67 20 20 20 20 00 43 68 61 6e 6e     Config    .Chann
     b95:       65 6c 73 20 20 00 53 74 69 63 6b 20 20 20 20 20     els  .Stick     
     ba5:       00 48 6f 65 68 65 20 20 20 20 20 00 47 79 72 6f     .Hoehe     .Gyro
     bb5:       20 20 20 20 20 20 00 4c 6f 6f 70 69 6e 67 20 20           .Looping  
     bc5:       20 00 43 61 6d 65 72 61 20 20 20 20 00 53 6f 6e      .Camera    .Son
     bd5:       73 74 69 67 65 73 20 00 55 73 65 72 20 20 20 20     stiges .User    
     be5:       20 20 00 43 6f 75 70 6c 69 6e 67 20 20 00 43 6f       .Coupling  .Co
     bf5:       6e 66 69 67 28 32 29 20 00 4c 6f 6f 70 69 6e 67     nfig(2) .Looping
     c05:       73 65 74 00                                         set.

00000c09 <__c.11>:
     c09:       2d 00                                               -.

00000c0b <__c.12>:
     c0b:       2d 00                                               -.

00000c0d <__c.13>:
     c0d:       2d 00                                               -.

00000c0f <__c.0>:
     c0f:       4c 61 64 65 20 50 61 72 61 6d 65 74 65 72 0d 0a     Lade Parameter..
        ...

00000c20 <__c.1>:
     c20:       20 31 3a 0d 0a 00                                    1:...

00000c26 <__c.2>:
     c26:       20 32 3a 0d 0a 00                                    2:...

00000c2c <__c.3>:
     c2c:       20 33 3a 0d 0a 00                                    3:...

00000c32 <__c.4>:
     c32:       20 34 3a 0d 0a 00                                    4:...

00000c38 <__c.5>:
     c38:       20 35 3a 0d 0a 00                                    5:...

00000c3e <__c.6>:
     c3e:       54 69 6d 65 6f 75 74 00                             Timeout.

00000c46 <__c.7>:
     c46:       50 61 72 61 6d 65 74 65 72 20 73 70 65 69 63 68     Parameter speich
     c56:       65 72 6e 3f 0d 0a 20 20 6a 61 0d 0a 20 20 6e 65     ern?..  ja..  ne
     c66:       69 6e 00                                            in.

00000c69 <__c.8>:
     c69:       0d 0a 2d 2d 2d 3e 00                                ..--->.

00000c70 <__c.9>:
     c70:       0d 0a 50 61 72 61 6d 65 74 65 72 20 67 65 73 70     ..Parameter gesp
     c80:       65 69 63 68 65 72 74 00                             eichert.

00000c88 <__c.10>:
     c88:       0d 0a 4e 69 63 68 74 20 67 65 73 70 65 69 63 68     ..Nicht gespeich
     c98:       65 72 74 00                                         ert.

00000c9c <__c.4>:
     c9c:       20 00                                                .

00000c9e <__c.5>:
     c9e:       2a 00                                               *.

00000ca0 <__c.0>:
     ca0:       48 61 75 70 74 6d 65 6e fc 28 42 45 54 41 20 56     Hauptmen.(BETA V
     cb0:       30 2e 31 29 0d 0a 00                                0.1)...

00000cb7 <__c.1>:
     cb7:       0d 0a 44 69 73 70 6c 61 79 0d 0a 00                 ..Display...

00000cc3 <__c.2>:
     cc3:       50 61 72 61 6d 65 74 65 72 0d 0a 00                 Parameter...

00000ccf <__c.3>:
     ccf:       4d 6f 74 6f 72 74 65 73 74 00                       Motortest.

00000cd9 <__c.0>:
     cd9:       44 69 73 70 6c 61 79 00                             Display.

00000ce1 <__c.1>:
     ce1:       0d 0a 54 69 6d 65 6f 75 74 21 00                    ..Timeout!.

00000cec <__c.0>:
     cec:       54 61 73 74 65 20 64 72 fc 63 6b 65 6e 0d 0a 00     Taste dr.cken...

00000cfc <__init>:
     cfc:       11 24           eor     r1, r1
     cfe:       1f be           out     0x3f, r1        ; 63
     d00:       cf e5           ldi     r28, 0x5F       ; 95
     d02:       d8 e0           ldi     r29, 0x08       ; 8
     d04:       de bf           out     0x3e, r29       ; 62
     d06:       cd bf           out     0x3d, r28       ; 61

00000d08 <__do_copy_data>:
     d08:       10 e0           ldi     r17, 0x00       ; 0
     d0a:       a0 e6           ldi     r26, 0x60       ; 96
     d0c:       b0 e0           ldi     r27, 0x00       ; 0
     d0e:       ec e6           ldi     r30, 0x6C       ; 108
     d10:       f6 e2           ldi     r31, 0x26       ; 38
     d12:       02 c0           rjmp    .+4             ; 0xd18 <.do_copy_data_start>

00000d14 <.do_copy_data_loop>:
     d14:       05 90           lpm     r0, Z+
     d16:       0d 92           st      X+, r0

00000d18 <.do_copy_data_start>:
     d18:       a0 36           cpi     r26, 0x60       ; 96
     d1a:       b1 07           cpc     r27, r17
     d1c:       d9 f7           brne    .-10            ; 0xd14 <.do_copy_data_loop>

00000d1e <__do_clear_bss>:
     d1e:       15 e0           ldi     r17, 0x05       ; 5
     d20:       a0 e6           ldi     r26, 0x60       ; 96
     d22:       b0 e0           ldi     r27, 0x00       ; 0
     d24:       01 c0           rjmp    .+2             ; 0xd28 <.do_clear_bss_start>

00000d26 <.do_clear_bss_loop>:
     d26:       1d 92           st      X+, r1

00000d28 <.do_clear_bss_start>:
     d28:       a7 38           cpi     r26, 0x87       ; 135
     d2a:       b1 07           cpc     r27, r17
     d2c:       e1 f7           brne    .-8             ; 0xd26 <.do_clear_bss_loop>
     d2e:       0c 94 9b 06     jmp     0xd36 <main>

00000d32 <__bad_interrupt>:
     d32:       0c 94 00 00     jmp     0x0 <__vectors>

00000d36 <main>:
#include "timer.h"


int main (void)
{
     d36:       cf e5           ldi     r28, 0x5F       ; 95
     d38:       d8 e0           ldi     r29, 0x08       ; 8
     d3a:       de bf           out     0x3e, r29       ; 62
     d3c:       cd bf           out     0x3d, r28       ; 61
        PORTA = 0xFF;           // unbenutzte Pins auf Pull-Up
     d3e:       8f ef           ldi     r24, 0xFF       ; 255
     d40:       8b bb           out     0x1b, r24       ; 27
        PORTB = 0x43;
     d42:       83 e4           ldi     r24, 0x43       ; 67
     d44:       88 bb           out     0x18, r24       ; 24
        PORTC = 0xFC;
     d46:       8c ef           ldi     r24, 0xFC       ; 252
     d48:       85 bb           out     0x15, r24       ; 21
        PORTD = 0x7C;
     d4a:       8c e7           ldi     r24, 0x7C       ; 124
     d4c:       82 bb           out     0x12, r24       ; 18
        
        DDRC = 0x03;            // Pins für Beleuchtung auf Ausgang
     d4e:       83 e0           ldi     r24, 0x03       ; 3
     d50:       84 bb           out     0x14, r24       ; 20
        DDRD = 0x80;
     d52:       80 e8           ldi     r24, 0x80       ; 128
     d54:       81 bb           out     0x11, r24       ; 17

        lcd_init();
     d56:       0e 94 53 07     call    0xea6 <lcd_init>
        RS232_init();
     d5a:       0e 94 1a 0c     call    0x1834 <RS232_init>
        timer_init();
     d5e:       0e 94 f4 06     call    0xde8 <timer_init>
        
        sei();
     d62:       78 94           sei

        for (;;)
                main_menu();
     d64:       0e 94 c8 11     call    0x2390 <main_menu>
     d68:       fd cf           rjmp    .-6             ; 0xd64 <main+0x2e>

00000d6a <__vector_10>:
volatile uint8_t rs232_timer;


ISR(SIG_OUTPUT_COMPARE0)                                                // Timer-Interrupt (100 Hz)
{
     d6a:       1f 92           push    r1
     d6c:       0f 92           push    r0
     d6e:       0f b6           in      r0, 0x3f        ; 63
     d70:       0f 92           push    r0
     d72:       11 24           eor     r1, r1
     d74:       8f 93           push    r24
     d76:       9f 93           push    r25
        if (counter > 0)
     d78:       80 91 e4 04     lds     r24, 0x04E4
     d7c:       88 23           and     r24, r24
     d7e:       31 f0           breq    .+12            ; 0xd8c <__vector_10+0x22>
                counter --;
     d80:       80 91 e4 04     lds     r24, 0x04E4
     d84:       81 50           subi    r24, 0x01       ; 1
     d86:       80 93 e4 04     sts     0x04E4, r24
     d8a:       15 c0           rjmp    .+42            ; 0xdb6 <__vector_10+0x4c>
        else
        {
                counter = 10;
     d8c:       8a e0           ldi     r24, 0x0A       ; 10
     d8e:       80 93 e4 04     sts     0x04E4, r24
                key = (~PINA >> 4) & 0x0F;
     d92:       89 b3           in      r24, 0x19       ; 25
     d94:       99 27           eor     r25, r25
     d96:       80 95           com     r24
     d98:       90 95           com     r25
     d9a:       68 94           set
     d9c:       13 f8           bld     r1, 3
     d9e:       95 95           asr     r25
     da0:       87 95           ror     r24
     da2:       16 94           lsr     r1
     da4:       e1 f7           brne    .-8             ; 0xd9e <__vector_10+0x34>
     da6:       8f 70           andi    r24, 0x0F       ; 15
     da8:       80 93 e6 04     sts     0x04E6, r24
                counter2 ++;
     dac:       80 91 69 05     lds     r24, 0x0569
     db0:       8f 5f           subi    r24, 0xFF       ; 255
     db2:       80 93 69 05     sts     0x0569, r24
        }
        
        if (timer > 0)
     db6:       80 91 61 00     lds     r24, 0x0061
     dba:       88 23           and     r24, r24
     dbc:       29 f0           breq    .+10            ; 0xdc8 <__vector_10+0x5e>
                timer --;
     dbe:       80 91 61 00     lds     r24, 0x0061
     dc2:       81 50           subi    r24, 0x01       ; 1
     dc4:       80 93 61 00     sts     0x0061, r24
                
        if (rs232_timer > 0)
     dc8:       80 91 e5 04     lds     r24, 0x04E5
     dcc:       88 23           and     r24, r24
     dce:       29 f0           breq    .+10            ; 0xdda <__vector_10+0x70>
                rs232_timer --;
     dd0:       80 91 e5 04     lds     r24, 0x04E5
     dd4:       81 50           subi    r24, 0x01       ; 1
     dd6:       80 93 e5 04     sts     0x04E5, r24
     dda:       9f 91           pop     r25
     ddc:       8f 91           pop     r24
     dde:       0f 90           pop     r0
     de0:       0f be           out     0x3f, r0        ; 63
     de2:       0f 90           pop     r0
     de4:       1f 90           pop     r1
     de6:       18 95           reti

00000de8 <timer_init>:
        
}

void timer_init (void)
{
        TCCR0 = (1<<CS02)|(1<<CS00)|(1<<WGM01); // Prescaler 1024
     de8:       8d e0           ldi     r24, 0x0D       ; 13
     dea:       83 bf           out     0x33, r24       ; 51
        OCR0 = 72;                                                                      // Interrupt 100Hz für 7,372800 MHz-Quarz
     dec:       88 e4           ldi     r24, 0x48       ; 72
     dee:       8c bf           out     0x3c, r24       ; 60
        TIMSK |= (1<<OCIE0);                                            // Interrupt freigeben für OCR
     df0:       89 b7           in      r24, 0x39       ; 57
     df2:       82 60           ori     r24, 0x02       ; 2
     df4:       89 bf           out     0x39, r24       ; 57
     df6:       08 95           ret

00000df8 <send_byte>:


void send_byte (uint8_t data)
{
        clr_cs();
     df8:       c4 98           cbi     0x18, 4 ; 24
        SPDR = data;
     dfa:       8f b9           out     0x0f, r24       ; 15
        while(!(SPSR & (1<<SPIF)));
     dfc:       77 9b           sbis    0x0e, 7 ; 14
     dfe:       fe cf           rjmp    .-4             ; 0xdfc <send_byte+0x4>
        SPSR = SPSR;
     e00:       8e b1           in      r24, 0x0e       ; 14
     e02:       8e b9           out     0x0e, r24       ; 14
        set_cs();
     e04:       c4 9a           sbi     0x18, 4 ; 24
     e06:       08 95           ret

00000e08 <cls>:
}

void cls (void)
{
     e08:       0f 93           push    r16
     e0a:       1f 93           push    r17
     e0c:       cf 93           push    r28
     e0e:       df 93           push    r29
     e10:       82 e6           ldi     r24, 0x62       ; 98
     e12:       90 e0           ldi     r25, 0x00       ; 0
     e14:       fc 01           movw    r30, r24
        uint16_t i,j;
        
        for (i=0;i<1024;i++)
                display_buffer[i] = 0x00;
     e16:       11 92           st      Z+, r1
     e18:       01 96           adiw    r24, 0x01       ; 1
     e1a:       24 e0           ldi     r18, 0x04       ; 4
     e1c:       81 36           cpi     r24, 0x61       ; 97
     e1e:       92 07           cpc     r25, r18
     e20:       d1 f3           breq    .-12            ; 0xe16 <cls+0xe>
     e22:       c8 f3           brcs    .-14            ; 0xe16 <cls+0xe>
        
        for (i=0;i<8;i++)
     e24:       00 e0           ldi     r16, 0x00       ; 0
     e26:       10 e0           ldi     r17, 0x00       ; 0
        {
                clr_A0();
     e28:       c3 98           cbi     0x18, 3 ; 24
                send_byte(0xB0+i);
     e2a:       80 2f           mov     r24, r16
     e2c:       80 55           subi    r24, 0x50       ; 80
     e2e:       0e 94 fc 06     call    0xdf8 <send_byte>
                send_byte(0x10);
     e32:       80 e1           ldi     r24, 0x10       ; 16
     e34:       0e 94 fc 06     call    0xdf8 <send_byte>
                send_byte(0x04);
     e38:       84 e0           ldi     r24, 0x04       ; 4
     e3a:       0e 94 fc 06     call    0xdf8 <send_byte>
        
                set_A0();
     e3e:       c3 9a           sbi     0x18, 3 ; 24
     e40:       cf e7           ldi     r28, 0x7F       ; 127
     e42:       d0 e0           ldi     r29, 0x00       ; 0
                for (j=0;j<128;j++)
                        send_byte(0x00);
     e44:       80 e0           ldi     r24, 0x00       ; 0
     e46:       0e 94 fc 06     call    0xdf8 <send_byte>
     e4a:       21 97           sbiw    r28, 0x01       ; 1
     e4c:       d7 ff           sbrs    r29, 7
     e4e:       fa cf           rjmp    .-12            ; 0xe44 <cls+0x3c>
     e50:       0f 5f           subi    r16, 0xFF       ; 255
     e52:       1f 4f           sbci    r17, 0xFF       ; 255
     e54:       08 30           cpi     r16, 0x08       ; 8
     e56:       11 05           cpc     r17, r1
     e58:       38 f3           brcs    .-50            ; 0xe28 <cls+0x20>
        }
        
        lcd_xpos = 0;
     e5a:       10 92 6a 05     sts     0x056A, r1
        lcd_ypos = 0;
     e5e:       10 92 6b 05     sts     0x056B, r1
     e62:       df 91           pop     r29
     e64:       cf 91           pop     r28
     e66:       1f 91           pop     r17
     e68:       0f 91           pop     r16
     e6a:       08 95           ret

00000e6c <lcd_cls>:
}

void lcd_cls (void)
{
        cls();
     e6c:       0e 94 04 07     call    0xe08 <cls>
     e70:       08 95           ret

00000e72 <wait_1ms>:
                __ticks = 1;
        else if (__tmp > 65535)
                __ticks = 0;    /* i.e. 65536 */
        else
                __ticks = (uint16_t)__tmp;
     e72:       83 e3           ldi     r24, 0x33       ; 51
     e74:       97 e0           ldi     r25, 0x07       ; 7
     e76:       01 97           sbiw    r24, 0x01       ; 1
     e78:       f1 f7           brne    .-4             ; 0xe76 <wait_1ms+0x4>
     e7a:       08 95           ret

00000e7c <wait_ms>:
}

void wait_1ms(void)
{
        _delay_ms (1.0);
}

void wait_ms (uint16_t time)
{
     e7c:       0f 93           push    r16
     e7e:       1f 93           push    r17
     e80:       cf 93           push    r28
     e82:       df 93           push    r29
     e84:       8c 01           movw    r16, r24
        uint16_t i;
        
        for (i=0; i<time; i++)
     e86:       c0 e0           ldi     r28, 0x00       ; 0
     e88:       d0 e0           ldi     r29, 0x00       ; 0
     e8a:       c8 17           cp      r28, r24
     e8c:       d9 07           cpc     r29, r25
     e8e:       30 f4           brcc    .+12            ; 0xe9c <wait_ms+0x20>
                wait_1ms();
     e90:       0e 94 39 07     call    0xe72 <wait_1ms>
     e94:       21 96           adiw    r28, 0x01       ; 1
     e96:       c0 17           cp      r28, r16
     e98:       d1 07           cpc     r29, r17
     e9a:       d0 f3           brcs    .-12            ; 0xe90 <wait_ms+0x14>
     e9c:       df 91           pop     r29
     e9e:       cf 91           pop     r28
     ea0:       1f 91           pop     r17
     ea2:       0f 91           pop     r16
     ea4:       08 95           ret

00000ea6 <lcd_init>:
}

void lcd_init (void)
{
        lcd_xpos = 0;
     ea6:       10 92 6a 05     sts     0x056A, r1
        lcd_ypos = 0;
     eaa:       10 92 6b 05     sts     0x056B, r1
        
                DDRB = 0xFF;
     eae:       8f ef           ldi     r24, 0xFF       ; 255
     eb0:       87 bb           out     0x17, r24       ; 23
        
        SPCR = (1<<SPE)|(1<<MSTR)|(1<<CPHA)|(1<<CPOL)|(1<<SPR1);
     eb2:       8e e5           ldi     r24, 0x5E       ; 94
     eb4:       8d b9           out     0x0d, r24       ; 13
        
        set_cs();
     eb6:       c4 9a           sbi     0x18, 4 ; 24
        clr_reset();
     eb8:       c2 98           cbi     0x18, 2 ; 24
        wait_ms(10);
     eba:       8a e0           ldi     r24, 0x0A       ; 10
     ebc:       90 e0           ldi     r25, 0x00       ; 0
     ebe:       0e 94 3e 07     call    0xe7c <wait_ms>
        set_reset();
     ec2:       c2 9a           sbi     0x18, 2 ; 24
        
        clr_cs();
     ec4:       c4 98           cbi     0x18, 4 ; 24
        clr_A0();
     ec6:       c3 98           cbi     0x18, 3 ; 24
        
        send_byte(0x40);
     ec8:       80 e4           ldi     r24, 0x40       ; 64
     eca:       0e 94 fc 06     call    0xdf8 <send_byte>
        send_byte(0xA0); // A1
     ece:       80 ea           ldi     r24, 0xA0       ; 160
     ed0:       0e 94 fc 06     call    0xdf8 <send_byte>
        send_byte(0xC8); // C0
     ed4:       88 ec           ldi     r24, 0xC8       ; 200
     ed6:       0e 94 fc 06     call    0xdf8 <send_byte>
        send_byte(0xA6);
     eda:       86 ea           ldi     r24, 0xA6       ; 166
     edc:       0e 94 fc 06     call    0xdf8 <send_byte>
        send_byte(0xA2);
     ee0:       82 ea           ldi     r24, 0xA2       ; 162
     ee2:       0e 94 fc 06     call    0xdf8 <send_byte>
        send_byte(0x2F);
     ee6:       8f e2           ldi     r24, 0x2F       ; 47
     ee8:       0e 94 fc 06     call    0xdf8 <send_byte>
        send_byte(0xF8);
     eec:       88 ef           ldi     r24, 0xF8       ; 248
     eee:       0e 94 fc 06     call    0xdf8 <send_byte>
        send_byte(0x00);
     ef2:       80 e0           ldi     r24, 0x00       ; 0
     ef4:       0e 94 fc 06     call    0xdf8 <send_byte>
        send_byte(0x27);
     ef8:       87 e2           ldi     r24, 0x27       ; 39
     efa:       0e 94 fc 06     call    0xdf8 <send_byte>
        send_byte(0x81);
     efe:       81 e8           ldi     r24, 0x81       ; 129
     f00:       0e 94 fc 06     call    0xdf8 <send_byte>
        send_byte(0x16);
     f04:       86 e1           ldi     r24, 0x16       ; 22
     f06:       0e 94 fc 06     call    0xdf8 <send_byte>
        send_byte(0xAC);
     f0a:       8c ea           ldi     r24, 0xAC       ; 172
     f0c:       0e 94 fc 06     call    0xdf8 <send_byte>
        send_byte(0x00);
     f10:       80 e0           ldi     r24, 0x00       ; 0
     f12:       0e 94 fc 06     call    0xdf8 <send_byte>
        send_byte(0xAF);
     f16:       8f ea           ldi     r24, 0xAF       ; 175
     f18:       0e 94 fc 06     call    0xdf8 <send_byte>
        
        cls();
     f1c:       0e 94 04 07     call    0xe08 <cls>
     f20:       08 95           ret

00000f22 <set_adress>:

}

void set_adress (uint16_t adress, uint8_t data)
{
     f22:       ff 92           push    r15
     f24:       0f 93           push    r16
     f26:       1f 93           push    r17
     f28:       8c 01           movw    r16, r24
     f2a:       f6 2e           mov     r15, r22
        uint8_t page;
        uint8_t column;
        
        page = adress >> 7;
     f2c:       88 0f           add     r24, r24
     f2e:       89 2f           mov     r24, r25
     f30:       88 1f           adc     r24, r24
     f32:       99 0b           sbc     r25, r25
     f34:       91 95           neg     r25
        
        clr_A0();
     f36:       c3 98           cbi     0x18, 3 ; 24
        send_byte(0xB0 + page);
     f38:       80 55           subi    r24, 0x50       ; 80
     f3a:       0e 94 fc 06     call    0xdf8 <send_byte>
        
        column = (adress & 0x7F) + 4;
     f3e:       10 2f           mov     r17, r16
     f40:       1f 77           andi    r17, 0x7F       ; 127
     f42:       1c 5f           subi    r17, 0xFC       ; 252
        
        send_byte(0x10 + (column >> 4));
     f44:       81 2f           mov     r24, r17
     f46:       82 95           swap    r24
     f48:       8f 70           andi    r24, 0x0F       ; 15
     f4a:       80 5f           subi    r24, 0xF0       ; 240
     f4c:       0e 94 fc 06     call    0xdf8 <send_byte>
        send_byte(column & 0x0F);
     f50:       81 2f           mov     r24, r17
     f52:       8f 70           andi    r24, 0x0F       ; 15
     f54:       0e 94 fc 06     call    0xdf8 <send_byte>
        
        set_A0();
     f58:       c3 9a           sbi     0x18, 3 ; 24
        send_byte(data);
     f5a:       8f 2d           mov     r24, r15
     f5c:       0e 94 fc 06     call    0xdf8 <send_byte>
     f60:       1f 91           pop     r17
     f62:       0f 91           pop     r16
     f64:       ff 90           pop     r15
     f66:       08 95           ret

00000f68 <scroll>:
}

void scroll (void)
{
     f68:       ef 92           push    r14
     f6a:       ff 92           push    r15
     f6c:       0f 93           push    r16
     f6e:       1f 93           push    r17
     f70:       cf 93           push    r28
     f72:       df 93           push    r29
        uint16_t adress;
        
        for (adress=0;adress<896;adress++)
     f74:       c0 e0           ldi     r28, 0x00       ; 0
     f76:       d0 e0           ldi     r29, 0x00       ; 0
     f78:       32 ee           ldi     r19, 0xE2       ; 226
     f7a:       e3 2e           mov     r14, r19
     f7c:       30 e0           ldi     r19, 0x00       ; 0
     f7e:       f3 2e           mov     r15, r19
     f80:       87 01           movw    r16, r14
     f82:       00 58           subi    r16, 0x80       ; 128
     f84:       10 40           sbci    r17, 0x00       ; 0
        {
                display_buffer[adress] = display_buffer[adress+128];
     f86:       f7 01           movw    r30, r14
     f88:       81 91           ld      r24, Z+
     f8a:       7f 01           movw    r14, r30
     f8c:       f8 01           movw    r30, r16
     f8e:       80 83           st      Z, r24
                set_adress(adress,display_buffer[adress]);
     f90:       61 91           ld      r22, Z+
     f92:       8f 01           movw    r16, r30
     f94:       ce 01           movw    r24, r28
     f96:       0e 94 91 07     call    0xf22 <set_adress>
     f9a:       21 96           adiw    r28, 0x01       ; 1
     f9c:       f3 e0           ldi     r31, 0x03       ; 3
     f9e:       c0 38           cpi     r28, 0x80       ; 128
     fa0:       df 07           cpc     r29, r31
     fa2:       88 f3           brcs    .-30            ; 0xf86 <scroll+0x1e>
     fa4:       c0 e8           ldi     r28, 0x80       ; 128
     fa6:       d3 e0           ldi     r29, 0x03       ; 3
     fa8:       02 ee           ldi     r16, 0xE2       ; 226
     faa:       13 e0           ldi     r17, 0x03       ; 3
        }
        for (adress=896;adress<1024;adress++)
        {
                display_buffer[adress] = 0;
     fac:       f8 01           movw    r30, r16
     fae:       11 92           st      Z+, r1
     fb0:       8f 01           movw    r16, r30
                set_adress(adress,0);
     fb2:       60 e0           ldi     r22, 0x00       ; 0
     fb4:       ce 01           movw    r24, r28
     fb6:       0e 94 91 07     call    0xf22 <set_adress>
     fba:       21 96           adiw    r28, 0x01       ; 1
     fbc:       f4 e0           ldi     r31, 0x04       ; 4
     fbe:       c0 30           cpi     r28, 0x00       ; 0
     fc0:       df 07           cpc     r29, r31
     fc2:       a0 f3           brcs    .-24            ; 0xfac <scroll+0x44>
     fc4:       df 91           pop     r29
     fc6:       cf 91           pop     r28
     fc8:       1f 91           pop     r17
     fca:       0f 91           pop     r16
     fcc:       ff 90           pop     r15
     fce:       ef 90           pop     r14
     fd0:       08 95           ret

00000fd2 <put_char>:
        }
}

//
// x,y = character-Pos. !
//
// mode: 0=Overwrite, 1 = OR, 2 = XOR, 3 = AND, 4 = Delete
void put_char (uint8_t x, uint8_t y, uint8_t c, uint8_t mode)
{
     fd2:       bf 92           push    r11
     fd4:       cf 92           push    r12
     fd6:       df 92           push    r13
     fd8:       ef 92           push    r14
     fda:       ff 92           push    r15
     fdc:       0f 93           push    r16
     fde:       1f 93           push    r17
     fe0:       cf 93           push    r28
     fe2:       df 93           push    r29
     fe4:       38 2f           mov     r19, r24
     fe6:       f4 2e           mov     r15, r20
     fe8:       b2 2e           mov     r11, r18
        uint8_t ch;
        uint8_t i;
        uint16_t adress;

        switch(c)
     fea:       84 2f           mov     r24, r20
     fec:       99 27           eor     r25, r25
     fee:       8f 3d           cpi     r24, 0xDF       ; 223
     ff0:       91 05           cpc     r25, r1
     ff2:       89 f1           breq    .+98            ; 0x1056 <put_char+0x84>
     ff4:       80 3e           cpi     r24, 0xE0       ; 224
     ff6:       91 05           cpc     r25, r1
     ff8:       74 f4           brge    .+28            ; 0x1016 <put_char+0x44>
     ffa:       86 3d           cpi     r24, 0xD6       ; 214
     ffc:       91 05           cpc     r25, r1
     ffe:       29 f1           breq    .+74            ; 0x104a <put_char+0x78>
    1000:       87 3d           cpi     r24, 0xD7       ; 215
    1002:       91 05           cpc     r25, r1
    1004:       24 f4           brge    .+8             ; 0x100e <put_char+0x3c>
    1006:       84 3c           cpi     r24, 0xC4       ; 196
    1008:       91 05           cpc     r25, r1
    100a:       e1 f0           breq    .+56            ; 0x1044 <put_char+0x72>
    100c:       26 c0           rjmp    .+76            ; 0x105a <put_char+0x88>
    100e:       8c 3d           cpi     r24, 0xDC       ; 220
    1010:       91 05           cpc     r25, r1
    1012:       f1 f0           breq    .+60            ; 0x1050 <put_char+0x7e>
    1014:       22 c0           rjmp    .+68            ; 0x105a <put_char+0x88>
    1016:       86 3f           cpi     r24, 0xF6       ; 246
    1018:       91 05           cpc     r25, r1
    101a:       71 f0           breq    .+28            ; 0x1038 <put_char+0x66>
    101c:       87 3f           cpi     r24, 0xF7       ; 247
    101e:       91 05           cpc     r25, r1
    1020:       24 f4           brge    .+8             ; 0x102a <put_char+0x58>
    1022:       84 3e           cpi     r24, 0xE4       ; 228
    1024:       91 05           cpc     r25, r1
    1026:       29 f0           breq    .+10            ; 0x1032 <put_char+0x60>
    1028:       18 c0           rjmp    .+48            ; 0x105a <put_char+0x88>
    102a:       8c 3f           cpi     r24, 0xFC       ; 252
    102c:       91 05           cpc     r25, r1
    102e:       39 f0           breq    .+14            ; 0x103e <put_char+0x6c>
    1030:       14 c0           rjmp    .+40            ; 0x105a <put_char+0x88>
        {
                case 'ä':
                        c = 0x84;
    1032:       14 e8           ldi     r17, 0x84       ; 132
    1034:       f1 2e           mov     r15, r17
                        break;
    1036:       11 c0           rjmp    .+34            ; 0x105a <put_char+0x88>
                case 'ö':
                        c = 0x94;
    1038:       c4 e9           ldi     r28, 0x94       ; 148
    103a:       fc 2e           mov     r15, r28
                        break;
    103c:       0e c0           rjmp    .+28            ; 0x105a <put_char+0x88>
                case 'ü':
                        c = 0x81;
    103e:       b1 e8           ldi     r27, 0x81       ; 129
    1040:       fb 2e           mov     r15, r27
                        break;
    1042:       0b c0           rjmp    .+22            ; 0x105a <put_char+0x88>
                case 'Ä':
                        c = 0x8E;
    1044:       ae e8           ldi     r26, 0x8E       ; 142
    1046:       fa 2e           mov     r15, r26
                        break;
    1048:       08 c0           rjmp    .+16            ; 0x105a <put_char+0x88>
                case 'Ö':
                        c = 0x99;
    104a:       f9 e9           ldi     r31, 0x99       ; 153
    104c:       ff 2e           mov     r15, r31
                        break;
    104e:       05 c0           rjmp    .+10            ; 0x105a <put_char+0x88>
                case 'Ü':
                        c = 0x9A;
    1050:       ea e9           ldi     r30, 0x9A       ; 154
    1052:       fe 2e           mov     r15, r30
                        break;
    1054:       02 c0           rjmp    .+4             ; 0x105a <put_char+0x88>
                case 'ß':
                        c = 0xE1;
    1056:       71 ee           ldi     r23, 0xE1       ; 225
    1058:       f7 2e           mov     r15, r23
                        break;
        }
        
        adress = y*128 + x*6;
    105a:       c6 2f           mov     r28, r22
    105c:       dd 27           eor     r29, r29
    105e:       d6 95           lsr     r29
    1060:       dc 2f           mov     r29, r28
    1062:       cc 27           eor     r28, r28
    1064:       d7 95           ror     r29
    1066:       c7 95           ror     r28
    1068:       86 e0           ldi     r24, 0x06       ; 6
    106a:       38 9f           mul     r19, r24
    106c:       c0 01           movw    r24, r0
    106e:       11 24           eor     r1, r1
    1070:       c8 0f           add     r28, r24
    1072:       d9 1f           adc     r29, r25
        adress &= 0x3FF;
    1074:       d3 70           andi    r29, 0x03       ; 3
    1076:       6e 01           movw    r12, r28
    1078:       00 e0           ldi     r16, 0x00       ; 0
    107a:       10 e0           ldi     r17, 0x00       ; 0
    107c:       45 e0           ldi     r20, 0x05       ; 5
    107e:       e4 2e           mov     r14, r20
                
        for (i=0;i<6;i++)
        {
                ch = pgm_read_byte (&f8x6[0][0] + i + c * 6);
    1080:       86 e0           ldi     r24, 0x06       ; 6
    1082:       f8 9e           mul     r15, r24
    1084:       f0 01           movw    r30, r0
    1086:       11 24           eor     r1, r1
    1088:       e0 0f           add     r30, r16
    108a:       f1 1f           adc     r31, r17
    108c:       ec 5a           subi    r30, 0xAC       ; 172
    108e:       ff 4f           sbci    r31, 0xFF       ; 255
    1090:       24 91           lpm     r18, Z
                
                switch (mode)
    1092:       8b 2d           mov     r24, r11
    1094:       99 27           eor     r25, r25
    1096:       82 30           cpi     r24, 0x02       ; 2
    1098:       91 05           cpc     r25, r1
    109a:       e9 f0           breq    .+58            ; 0x10d6 <put_char+0x104>
    109c:       83 30           cpi     r24, 0x03       ; 3
    109e:       91 05           cpc     r25, r1
    10a0:       2c f4           brge    .+10            ; 0x10ac <put_char+0xda>
    10a2:       00 97           sbiw    r24, 0x00       ; 0
    10a4:       49 f0           breq    .+18            ; 0x10b8 <put_char+0xe6>
    10a6:       01 97           sbiw    r24, 0x01       ; 1
    10a8:       71 f0           breq    .+28            ; 0x10c6 <put_char+0xf4>
    10aa:       2c c0           rjmp    .+88            ; 0x1104 <put_char+0x132>
    10ac:       83 30           cpi     r24, 0x03       ; 3
    10ae:       91 05           cpc     r25, r1
    10b0:       d1 f0           breq    .+52            ; 0x10e6 <put_char+0x114>
    10b2:       04 97           sbiw    r24, 0x04       ; 4
    10b4:       f1 f0           breq    .+60            ; 0x10f2 <put_char+0x120>
    10b6:       26 c0           rjmp    .+76            ; 0x1104 <put_char+0x132>
                {
                        case 0:
                                display_buffer[adress+i] = ch;
    10b8:       fe 01           movw    r30, r28
    10ba:       ee 59           subi    r30, 0x9E       ; 158
    10bc:       ff 4f           sbci    r31, 0xFF       ; 255
    10be:       e0 0f           add     r30, r16
    10c0:       f1 1f           adc     r31, r17
    10c2:       20 83           st      Z, r18
                                break;
    10c4:       1f c0           rjmp    .+62            ; 0x1104 <put_char+0x132>
                        case 1:
                                display_buffer[adress+i] |= ch;
    10c6:       fe 01           movw    r30, r28
    10c8:       ee 59           subi    r30, 0x9E       ; 158
    10ca:       ff 4f           sbci    r31, 0xFF       ; 255
    10cc:       e0 0f           add     r30, r16
    10ce:       f1 1f           adc     r31, r17
    10d0:       80 81           ld      r24, Z
    10d2:       82 2b           or      r24, r18
    10d4:       16 c0           rjmp    .+44            ; 0x1102 <put_char+0x130>
                                break;
                        case 2:
                                display_buffer[adress+i] ^= ch;
    10d6:       fe 01           movw    r30, r28
    10d8:       ee 59           subi    r30, 0x9E       ; 158
    10da:       ff 4f           sbci    r31, 0xFF       ; 255
    10dc:       e0 0f           add     r30, r16
    10de:       f1 1f           adc     r31, r17
    10e0:       80 81           ld      r24, Z
    10e2:       82 27           eor     r24, r18
    10e4:       0e c0           rjmp    .+28            ; 0x1102 <put_char+0x130>
                                break;
                        case 3:
                                display_buffer[adress+i] &= ch;
    10e6:       fe 01           movw    r30, r28
    10e8:       ee 59           subi    r30, 0x9E       ; 158
    10ea:       ff 4f           sbci    r31, 0xFF       ; 255
    10ec:       e0 0f           add     r30, r16
    10ee:       f1 1f           adc     r31, r17
    10f0:       06 c0           rjmp    .+12            ; 0x10fe <put_char+0x12c>
                                break;
                        case 4:
                                display_buffer[adress+i] &= ~ch;
    10f2:       fe 01           movw    r30, r28
    10f4:       ee 59           subi    r30, 0x9E       ; 158
    10f6:       ff 4f           sbci    r31, 0xFF       ; 255
    10f8:       e0 0f           add     r30, r16
    10fa:       f1 1f           adc     r31, r17
    10fc:       20 95           com     r18
    10fe:       80 81           ld      r24, Z
    1100:       82 23           and     r24, r18
    1102:       80 83           st      Z, r24
                                break;
                }
                
                set_adress(adress+i,display_buffer[adress+i]);
    1104:       fe 01           movw    r30, r28
    1106:       ee 59           subi    r30, 0x9E       ; 158
    1108:       ff 4f           sbci    r31, 0xFF       ; 255
    110a:       e0 0f           add     r30, r16
    110c:       f1 1f           adc     r31, r17
    110e:       60 81           ld      r22, Z
    1110:       c6 01           movw    r24, r12
    1112:       0e 94 91 07     call    0xf22 <set_adress>
    1116:       ea 94           dec     r14
    1118:       0f 5f           subi    r16, 0xFF       ; 255
    111a:       1f 4f           sbci    r17, 0xFF       ; 255
    111c:       08 94           sec
    111e:       c1 1c           adc     r12, r1
    1120:       d1 1c           adc     r13, r1
    1122:       e7 fe           sbrs    r14, 7
    1124:       ad cf           rjmp    .-166           ; 0x1080 <put_char+0xae>
    1126:       df 91           pop     r29
    1128:       cf 91           pop     r28
    112a:       1f 91           pop     r17
    112c:       0f 91           pop     r16
    112e:       ff 90           pop     r15
    1130:       ef 90           pop     r14
    1132:       df 90           pop     r13
    1134:       cf 90           pop     r12
    1136:       bf 90           pop     r11
    1138:       08 95           ret

0000113a <new_line>:
        }
}

void new_line (void)
{
        lcd_ypos++;
    113a:       80 91 6b 05     lds     r24, 0x056B
    113e:       8f 5f           subi    r24, 0xFF       ; 255
    1140:       80 93 6b 05     sts     0x056B, r24
        
        if (lcd_ypos > 7)
    1144:       88 30           cpi     r24, 0x08       ; 8
    1146:       28 f0           brcs    .+10            ; 0x1152 <new_line+0x18>
        {
                scroll();
    1148:       0e 94 b4 07     call    0xf68 <scroll>
                lcd_ypos = 7;
    114c:       87 e0           ldi     r24, 0x07       ; 7
    114e:       80 93 6b 05     sts     0x056B, r24
    1152:       08 95           ret

00001154 <lcd_printp>:
        }
}


void lcd_printp (const char *text, uint8_t mode)
{
    1154:       1f 93           push    r17
    1156:       cf 93           push    r28
    1158:       df 93           push    r29
    115a:       ec 01           movw    r28, r24
    115c:       16 2f           mov     r17, r22
        while (pgm_read_byte(text))
        {
                if (pgm_read_byte(text) > 0x1F)
                {
                        put_char(lcd_xpos,lcd_ypos,pgm_read_byte(text++),mode);
                        
                        lcd_xpos++;
                        if (lcd_xpos > 20)
                        {
                                lcd_xpos = 0;
                                new_line();
                        }
                }
                else
                {
                        switch (pgm_read_byte(text))
                        {
                                case 0x0D:
                                        lcd_xpos = 0;
                                        break;
                                case 0x0A:
                                        new_line();
                                        break;
                        }
                        text++;
    115e:       fc 01           movw    r30, r24
    1160:       84 91           lpm     r24, Z
    1162:       88 23           and     r24, r24
    1164:       51 f1           breq    .+84            ; 0x11ba <lcd_printp+0x66>
    1166:       fe 01           movw    r30, r28
    1168:       84 91           lpm     r24, Z
    116a:       80 32           cpi     r24, 0x20       ; 32
    116c:       b0 f0           brcs    .+44            ; 0x119a <lcd_printp+0x46>
    116e:       21 96           adiw    r28, 0x01       ; 1
    1170:       84 91           lpm     r24, Z
    1172:       21 2f           mov     r18, r17
    1174:       48 2f           mov     r20, r24
    1176:       60 91 6b 05     lds     r22, 0x056B
    117a:       80 91 6a 05     lds     r24, 0x056A
    117e:       0e 94 e9 07     call    0xfd2 <put_char>
    1182:       80 91 6a 05     lds     r24, 0x056A
    1186:       8f 5f           subi    r24, 0xFF       ; 255
    1188:       80 93 6a 05     sts     0x056A, r24
    118c:       85 31           cpi     r24, 0x15       ; 21
    118e:       88 f0           brcs    .+34            ; 0x11b2 <lcd_printp+0x5e>
    1190:       10 92 6a 05     sts     0x056A, r1
    1194:       0e 94 9d 08     call    0x113a <new_line>
    1198:       0c c0           rjmp    .+24            ; 0x11b2 <lcd_printp+0x5e>
    119a:       99 27           eor     r25, r25
    119c:       8a 30           cpi     r24, 0x0A       ; 10
    119e:       91 05           cpc     r25, r1
    11a0:       29 f0           breq    .+10            ; 0x11ac <lcd_printp+0x58>
    11a2:       0d 97           sbiw    r24, 0x0d       ; 13
    11a4:       29 f4           brne    .+10            ; 0x11b0 <lcd_printp+0x5c>
    11a6:       10 92 6a 05     sts     0x056A, r1
    11aa:       02 c0           rjmp    .+4             ; 0x11b0 <lcd_printp+0x5c>
    11ac:       0e 94 9d 08     call    0x113a <new_line>
    11b0:       21 96           adiw    r28, 0x01       ; 1
    11b2:       fe 01           movw    r30, r28
    11b4:       84 91           lpm     r24, Z
    11b6:       88 23           and     r24, r24
    11b8:       b1 f6           brne    .-84            ; 0x1166 <lcd_printp+0x12>
    11ba:       df 91           pop     r29
    11bc:       cf 91           pop     r28
    11be:       1f 91           pop     r17
    11c0:       08 95           ret

000011c2 <lcd_print_atp>:
                }
        }
}

void lcd_print_atp (uint8_t x, uint8_t y, const char *text, uint8_t mode)
{
        lcd_xpos = x;
    11c2:       80 93 6a 05     sts     0x056A, r24
        lcd_ypos = y;
    11c6:       60 93 6b 05     sts     0x056B, r22
        lcd_printp (text, mode);
    11ca:       62 2f           mov     r22, r18
    11cc:       ca 01           movw    r24, r20
    11ce:       0e 94 aa 08     call    0x1154 <lcd_printp>
    11d2:       08 95           ret

000011d4 <lcd_print>:
}


void lcd_print (uint8_t *text, uint8_t mode)
{
    11d4:       1f 93           push    r17
    11d6:       cf 93           push    r28
    11d8:       df 93           push    r29
    11da:       ec 01           movw    r28, r24
    11dc:       16 2f           mov     r17, r22
        while (*text)
        {
                if (*text > 0x1F)
                {
                        put_char(lcd_xpos,lcd_ypos,*text++,mode);
                        
                        lcd_xpos++;
                        if (lcd_xpos > 20)
                        {
                                lcd_xpos = 0;
                                new_line();
                        }
                }
                else
                {
                        switch (*text)
                        {
                                case 0x0D:
                                        lcd_xpos = 0;
                                        break;
                                case 0x0A:
                                        new_line();
                                        break;
                        }
                        text++;
    11de:       88 81           ld      r24, Y
    11e0:       88 23           and     r24, r24
    11e2:       39 f1           breq    .+78            ; 0x1232 <lcd_print+0x5e>
    11e4:       48 81           ld      r20, Y
    11e6:       40 32           cpi     r20, 0x20       ; 32
    11e8:       a0 f0           brcs    .+40            ; 0x1212 <lcd_print+0x3e>
    11ea:       21 96           adiw    r28, 0x01       ; 1
    11ec:       21 2f           mov     r18, r17
    11ee:       60 91 6b 05     lds     r22, 0x056B
    11f2:       80 91 6a 05     lds     r24, 0x056A
    11f6:       0e 94 e9 07     call    0xfd2 <put_char>
    11fa:       80 91 6a 05     lds     r24, 0x056A
    11fe:       8f 5f           subi    r24, 0xFF       ; 255
    1200:       80 93 6a 05     sts     0x056A, r24
    1204:       85 31           cpi     r24, 0x15       ; 21
    1206:       90 f0           brcs    .+36            ; 0x122c <lcd_print+0x58>
    1208:       10 92 6a 05     sts     0x056A, r1
    120c:       0e 94 9d 08     call    0x113a <new_line>
    1210:       0d c0           rjmp    .+26            ; 0x122c <lcd_print+0x58>
    1212:       55 27           eor     r21, r21
    1214:       4a 30           cpi     r20, 0x0A       ; 10
    1216:       51 05           cpc     r21, r1
    1218:       31 f0           breq    .+12            ; 0x1226 <lcd_print+0x52>
    121a:       4d 30           cpi     r20, 0x0D       ; 13
    121c:       51 05           cpc     r21, r1
    121e:       29 f4           brne    .+10            ; 0x122a <lcd_print+0x56>
    1220:       10 92 6a 05     sts     0x056A, r1
    1224:       02 c0           rjmp    .+4             ; 0x122a <lcd_print+0x56>
    1226:       0e 94 9d 08     call    0x113a <new_line>
    122a:       21 96           adiw    r28, 0x01       ; 1
    122c:       88 81           ld      r24, Y
    122e:       88 23           and     r24, r24
    1230:       c9 f6           brne    .-78            ; 0x11e4 <lcd_print+0x10>
    1232:       df 91           pop     r29
    1234:       cf 91           pop     r28
    1236:       1f 91           pop     r17
    1238:       08 95           ret

0000123a <lcd_print_at>:
                }
        }
}

void lcd_print_at (uint8_t x, uint8_t y, uint8_t *text, uint8_t mode)
{
        lcd_xpos = x;
    123a:       80 93 6a 05     sts     0x056A, r24
        lcd_ypos = y;
    123e:       60 93 6b 05     sts     0x056B, r22
        lcd_print(text, mode);
    1242:       62 2f           mov     r22, r18
    1244:       ca 01           movw    r24, r20
    1246:       0e 94 ea 08     call    0x11d4 <lcd_print>
    124a:       08 95           ret

0000124c <lcd_plot>:
}


// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Plot (set one Pixel)
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// mode:
// 0=Clear, 1=Set, 2=XOR
void lcd_plot (uint8_t xpos, uint8_t ypos, uint8_t mode)
{
    124c:       98 2f           mov     r25, r24
        uint16_t adress;
        uint8_t mask;
        
        if ((xpos < 128) && (ypos < 64))
    124e:       87 fd           sbrc    r24, 7
    1250:       45 c0           rjmp    .+138           ; 0x12dc <lcd_plot+0x90>
    1252:       60 34           cpi     r22, 0x40       ; 64
    1254:       08 f0           brcs    .+2             ; 0x1258 <lcd_plot+0xc>
    1256:       42 c0           rjmp    .+132           ; 0x12dc <lcd_plot+0x90>
        {
                adress = (ypos/8) * 128 + xpos;                         // adress = 0/8 * 128 + 0   = 0
    1258:       86 2f           mov     r24, r22
    125a:       86 95           lsr     r24
    125c:       86 95           lsr     r24
    125e:       86 95           lsr     r24
    1260:       a8 2f           mov     r26, r24
    1262:       bb 27           eor     r27, r27
    1264:       b6 95           lsr     r27
    1266:       ba 2f           mov     r27, r26
    1268:       aa 27           eor     r26, r26
    126a:       b7 95           ror     r27
    126c:       a7 95           ror     r26
    126e:       a9 0f           add     r26, r25
    1270:       b1 1d           adc     r27, r1
                mask = 1<<(ypos & 0x07);                                                // mask = 1<<0 = 1
    1272:       26 2f           mov     r18, r22
    1274:       33 27           eor     r19, r19
    1276:       27 70           andi    r18, 0x07       ; 7
    1278:       30 70           andi    r19, 0x00       ; 0
    127a:       81 e0           ldi     r24, 0x01       ; 1
    127c:       90 e0           ldi     r25, 0x00       ; 0
    127e:       02 c0           rjmp    .+4             ; 0x1284 <lcd_plot+0x38>
    1280:       88 0f           add     r24, r24
    1282:       99 1f           adc     r25, r25
    1284:       2a 95           dec     r18
    1286:       e2 f7           brpl    .-8             ; 0x1280 <lcd_plot+0x34>
    1288:       98 2f           mov     r25, r24
                
                adress &= 0x3FF;
    128a:       b3 70           andi    r27, 0x03       ; 3
                
                switch (mode)
    128c:       55 27           eor     r21, r21
    128e:       41 30           cpi     r20, 0x01       ; 1
    1290:       51 05           cpc     r21, r1
    1292:       89 f0           breq    .+34            ; 0x12b6 <lcd_plot+0x6a>
    1294:       42 30           cpi     r20, 0x02       ; 2
    1296:       51 05           cpc     r21, r1
    1298:       1c f4           brge    .+6             ; 0x12a0 <lcd_plot+0x54>
    129a:       45 2b           or      r20, r21
    129c:       29 f0           breq    .+10            ; 0x12a8 <lcd_plot+0x5c>
    129e:       17 c0           rjmp    .+46            ; 0x12ce <lcd_plot+0x82>
    12a0:       42 30           cpi     r20, 0x02       ; 2
    12a2:       51 05           cpc     r21, r1
    12a4:       71 f0           breq    .+28            ; 0x12c2 <lcd_plot+0x76>
    12a6:       13 c0           rjmp    .+38            ; 0x12ce <lcd_plot+0x82>
                {
                        case 0:
                                display_buffer[adress] &=~mask;
    12a8:       fd 01           movw    r30, r26
    12aa:       ee 59           subi    r30, 0x9E       ; 158
    12ac:       ff 4f           sbci    r31, 0xFF       ; 255
    12ae:       90 95           com     r25
    12b0:       80 81           ld      r24, Z
    12b2:       89 23           and     r24, r25
    12b4:       0b c0           rjmp    .+22            ; 0x12cc <lcd_plot+0x80>
                                break;
                        case 1:
                                display_buffer[adress] |= mask;
    12b6:       fd 01           movw    r30, r26
    12b8:       ee 59           subi    r30, 0x9E       ; 158
    12ba:       ff 4f           sbci    r31, 0xFF       ; 255
    12bc:       80 81           ld      r24, Z
    12be:       89 2b           or      r24, r25
    12c0:       05 c0           rjmp    .+10            ; 0x12cc <lcd_plot+0x80>
                                break;
                        case 2:
                                display_buffer[adress] ^= mask;
    12c2:       fd 01           movw    r30, r26
    12c4:       ee 59           subi    r30, 0x9E       ; 158
    12c6:       ff 4f           sbci    r31, 0xFF       ; 255
    12c8:       80 81           ld      r24, Z
    12ca:       89 27           eor     r24, r25
    12cc:       80 83           st      Z, r24
                                break;
                }
                
                set_adress(adress,display_buffer[adress]);
    12ce:       fd 01           movw    r30, r26
    12d0:       ee 59           subi    r30, 0x9E       ; 158
    12d2:       ff 4f           sbci    r31, 0xFF       ; 255
    12d4:       60 81           ld      r22, Z
    12d6:       cd 01           movw    r24, r26
    12d8:       0e 94 91 07     call    0xf22 <set_adress>
    12dc:       08 95           ret

000012de <lcd_line>:
        }
}

// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Line (draws a line from x1,y1 to x2,y2
// + Based on Bresenham line-Algorithm
// + found in the internet, modified by thkais 2007
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

void lcd_line(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, uint8_t mode)

{
    12de:       2f 92           push    r2
    12e0:       3f 92           push    r3
    12e2:       4f 92           push    r4
    12e4:       5f 92           push    r5
    12e6:       6f 92           push    r6
    12e8:       7f 92           push    r7
    12ea:       8f 92           push    r8
    12ec:       9f 92           push    r9
    12ee:       af 92           push    r10
    12f0:       bf 92           push    r11
    12f2:       cf 92           push    r12
    12f4:       df 92           push    r13
    12f6:       ef 92           push    r14
    12f8:       ff 92           push    r15
    12fa:       0f 93           push    r16
    12fc:       1f 93           push    r17
    12fe:       cf 93           push    r28
    1300:       df 93           push    r29
    1302:       cd b7           in      r28, 0x3d       ; 61
    1304:       de b7           in      r29, 0x3e       ; 62
    1306:       23 97           sbiw    r28, 0x03       ; 3
    1308:       0f b6           in      r0, 0x3f        ; 63
    130a:       f8 94           cli
    130c:       de bf           out     0x3e, r29       ; 62
    130e:       0f be           out     0x3f, r0        ; 63
    1310:       cd bf           out     0x3d, r28       ; 61
    1312:       09 83           std     Y+1, r16        ; 0x01
        int x,y,count,xs,ys,xm,ym;

        x=(int)x1;
    1314:       a8 2e           mov     r10, r24
    1316:       bb 24           eor     r11, r11
        y=(int)y1;
    1318:       c6 2e           mov     r12, r22
    131a:       dd 24           eor     r13, r13
        xs=(int)x2 - (int)x1;
    131c:       64 2e           mov     r6, r20
    131e:       77 24           eor     r7, r7
    1320:       73 01           movw    r14, r6
    1322:       ea 18           sub     r14, r10
    1324:       fb 08           sbc     r15, r11
        ys=(int)y2 - (int)y1;
    1326:       82 2e           mov     r8, r18
    1328:       99 24           eor     r9, r9
    132a:       84 01           movw    r16, r8
    132c:       0c 19           sub     r16, r12
    132e:       1d 09           sbc     r17, r13
        if(xs < 0) 
    1330:       f7 fe           sbrs    r15, 7
    1332:       04 c0           rjmp    .+8             ; 0x133c <lcd_line+0x5e>
                xm= -1;
    1334:       7f ef           ldi     r23, 0xFF       ; 255
    1336:       27 2e           mov     r2, r23
    1338:       37 2e           mov     r3, r23
    133a:       09 c0           rjmp    .+18            ; 0x134e <lcd_line+0x70>
        else
                if(xs > 0)
    133c:       1e 14           cp      r1, r14
    133e:       1f 04           cpc     r1, r15
    1340:       24 f4           brge    .+8             ; 0x134a <lcd_line+0x6c>
                        xm= 1;
    1342:       61 e0           ldi     r22, 0x01       ; 1
    1344:       26 2e           mov     r2, r22
    1346:       31 2c           mov     r3, r1
    1348:       02 c0           rjmp    .+4             ; 0x134e <lcd_line+0x70>
                else
                        xm= 0;
    134a:       22 24           eor     r2, r2
    134c:       33 24           eor     r3, r3
        if(ys < 0)
    134e:       17 ff           sbrs    r17, 7
    1350:       04 c0           rjmp    .+8             ; 0x135a <lcd_line+0x7c>
                ym= -1;
    1352:       5f ef           ldi     r21, 0xFF       ; 255
    1354:       45 2e           mov     r4, r21
    1356:       55 2e           mov     r5, r21
    1358:       09 c0           rjmp    .+18            ; 0x136c <lcd_line+0x8e>
        else
                if(ys > 0)
    135a:       10 16           cp      r1, r16
    135c:       11 06           cpc     r1, r17
    135e:       24 f4           brge    .+8             ; 0x1368 <lcd_line+0x8a>
                        ym= 1;
    1360:       41 e0           ldi     r20, 0x01       ; 1
    1362:       44 2e           mov     r4, r20
    1364:       51 2c           mov     r5, r1
    1366:       02 c0           rjmp    .+4             ; 0x136c <lcd_line+0x8e>
                else
                        ym= 0;
    1368:       44 24           eor     r4, r4
    136a:       55 24           eor     r5, r5
        if(xs < 0)
    136c:       f7 fe           sbrs    r15, 7
    136e:       04 c0           rjmp    .+8             ; 0x1378 <lcd_line+0x9a>
                xs= -xs;
    1370:       f0 94           com     r15
    1372:       e1 94           neg     r14
    1374:       f1 08           sbc     r15, r1
    1376:       f3 94           inc     r15
        if(ys < 0)
    1378:       17 ff           sbrs    r17, 7
    137a:       03 c0           rjmp    .+6             ; 0x1382 <lcd_line+0xa4>
                ys= -ys;
    137c:       10 95           com     r17
    137e:       01 95           neg     r16
    1380:       1f 4f           sbci    r17, 0xFF       ; 255

        lcd_plot((unsigned char)x, (unsigned char)y, mode);
    1382:       49 81           ldd     r20, Y+1        ; 0x01
    1384:       6c 2d           mov     r22, r12
    1386:       8a 2d           mov     r24, r10
    1388:       0e 94 26 09     call    0x124c <lcd_plot>

        if(xs > ys) // Flat Line <45 degrees
    138c:       0e 15           cp      r16, r14
    138e:       1f 05           cpc     r17, r15
    1390:       4c f5           brge    .+82            ; 0x13e4 <lcd_line+0x106>
        {
                count= -(xs / 2);
    1392:       c7 01           movw    r24, r14
    1394:       f7 fc           sbrc    r15, 7
    1396:       01 96           adiw    r24, 0x01       ; 1
    1398:       95 95           asr     r25
    139a:       87 95           ror     r24
    139c:       22 27           eor     r18, r18
    139e:       33 27           eor     r19, r19
    13a0:       28 1b           sub     r18, r24
    13a2:       39 0b           sbc     r19, r25
    13a4:       3b 83           std     Y+3, r19        ; 0x03
    13a6:       2a 83           std     Y+2, r18        ; 0x02
                while(x != x2)
                {
                        count= count + ys;
                        x= x + xm;
                        if(count > 0)
                        {
                                y= y + ym;
                                count= count - xs;
                        }
                        lcd_plot((unsigned char)x, (unsigned char)y, mode);
    13a8:       a6 14           cp      r10, r6
    13aa:       b7 04           cpc     r11, r7
    13ac:       09 f4           brne    .+2             ; 0x13b0 <lcd_line+0xd2>
    13ae:       41 c0           rjmp    .+130           ; 0x1432 <lcd_line+0x154>
    13b0:       8a 81           ldd     r24, Y+2        ; 0x02
    13b2:       9b 81           ldd     r25, Y+3        ; 0x03
    13b4:       80 0f           add     r24, r16
    13b6:       91 1f           adc     r25, r17
    13b8:       9b 83           std     Y+3, r25        ; 0x03
    13ba:       8a 83           std     Y+2, r24        ; 0x02
    13bc:       a2 0c           add     r10, r2
    13be:       b3 1c           adc     r11, r3
    13c0:       18 16           cp      r1, r24
    13c2:       19 06           cpc     r1, r25
    13c4:       34 f4           brge    .+12            ; 0x13d2 <lcd_line+0xf4>
    13c6:       c4 0c           add     r12, r4
    13c8:       d5 1c           adc     r13, r5
    13ca:       8e 19           sub     r24, r14
    13cc:       9f 09           sbc     r25, r15
    13ce:       9b 83           std     Y+3, r25        ; 0x03
    13d0:       8a 83           std     Y+2, r24        ; 0x02
    13d2:       49 81           ldd     r20, Y+1        ; 0x01
    13d4:       6c 2d           mov     r22, r12
    13d6:       8a 2d           mov     r24, r10
    13d8:       0e 94 26 09     call    0x124c <lcd_plot>
    13dc:       a6 14           cp      r10, r6
    13de:       b7 04           cpc     r11, r7
    13e0:       39 f7           brne    .-50            ; 0x13b0 <lcd_line+0xd2>
    13e2:       27 c0           rjmp    .+78            ; 0x1432 <lcd_line+0x154>
                }
        }
        else // Line >=45 degrees
        {
                count=- (ys / 2);
    13e4:       c8 01           movw    r24, r16
    13e6:       17 fd           sbrc    r17, 7
    13e8:       01 96           adiw    r24, 0x01       ; 1
    13ea:       95 95           asr     r25
    13ec:       87 95           ror     r24
    13ee:       ee 27           eor     r30, r30
    13f0:       ff 27           eor     r31, r31
    13f2:       e8 1b           sub     r30, r24
    13f4:       f9 0b           sbc     r31, r25
    13f6:       fb 83           std     Y+3, r31        ; 0x03
    13f8:       ea 83           std     Y+2, r30        ; 0x02
                while(y != y2)
                {
                        count= count + xs;
                        y= y + ym;
                        if(count > 0)
                        {
                                x= x + xm;
                                count= count - ys;
                        }
                        lcd_plot((unsigned char)x, (unsigned char)y, mode);
    13fa:       c8 14           cp      r12, r8
    13fc:       d9 04           cpc     r13, r9
    13fe:       c9 f0           breq    .+50            ; 0x1432 <lcd_line+0x154>
    1400:       2a 81           ldd     r18, Y+2        ; 0x02
    1402:       3b 81           ldd     r19, Y+3        ; 0x03
    1404:       2e 0d           add     r18, r14
    1406:       3f 1d           adc     r19, r15
    1408:       3b 83           std     Y+3, r19        ; 0x03
    140a:       2a 83           std     Y+2, r18        ; 0x02
    140c:       c4 0c           add     r12, r4
    140e:       d5 1c           adc     r13, r5
    1410:       12 16           cp      r1, r18
    1412:       13 06           cpc     r1, r19
    1414:       34 f4           brge    .+12            ; 0x1422 <lcd_line+0x144>
    1416:       a2 0c           add     r10, r2
    1418:       b3 1c           adc     r11, r3
    141a:       20 1b           sub     r18, r16
    141c:       31 0b           sbc     r19, r17
    141e:       3b 83           std     Y+3, r19        ; 0x03
    1420:       2a 83           std     Y+2, r18        ; 0x02
    1422:       49 81           ldd     r20, Y+1        ; 0x01
    1424:       6c 2d           mov     r22, r12
    1426:       8a 2d           mov     r24, r10
    1428:       0e 94 26 09     call    0x124c <lcd_plot>
    142c:       c8 14           cp      r12, r8
    142e:       d9 04           cpc     r13, r9
    1430:       39 f7           brne    .-50            ; 0x1400 <lcd_line+0x122>
    1432:       23 96           adiw    r28, 0x03       ; 3
    1434:       0f b6           in      r0, 0x3f        ; 63
    1436:       f8 94           cli
    1438:       de bf           out     0x3e, r29       ; 62
    143a:       0f be           out     0x3f, r0        ; 63
    143c:       cd bf           out     0x3d, r28       ; 61
    143e:       df 91           pop     r29
    1440:       cf 91           pop     r28
    1442:       1f 91           pop     r17
    1444:       0f 91           pop     r16
    1446:       ff 90           pop     r15
    1448:       ef 90           pop     r14
    144a:       df 90           pop     r13
    144c:       cf 90           pop     r12
    144e:       bf 90           pop     r11
    1450:       af 90           pop     r10
    1452:       9f 90           pop     r9
    1454:       8f 90           pop     r8
    1456:       7f 90           pop     r7
    1458:       6f 90           pop     r6
    145a:       5f 90           pop     r5
    145c:       4f 90           pop     r4
    145e:       3f 90           pop     r3
    1460:       2f 90           pop     r2
    1462:       08 95           ret

00001464 <lcd_frect>:
                }
        }
}


// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + Filled rectangle
// + x1, y1 = upper left corner
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

void lcd_frect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode)
{
    1464:       bf 92           push    r11
    1466:       cf 92           push    r12
    1468:       df 92           push    r13
    146a:       ef 92           push    r14
    146c:       ff 92           push    r15
    146e:       0f 93           push    r16
    1470:       1f 93           push    r17
    1472:       cf 93           push    r28
    1474:       df 93           push    r29
    1476:       18 2f           mov     r17, r24
    1478:       82 2f           mov     r24, r18
    147a:       b0 2e           mov     r11, r16
        uint16_t x2, y2;
        uint16_t i;

        if (x1 >= DISP_W)
    147c:       17 fd           sbrc    r17, 7
                x1 = DISP_W - 1;
    147e:       1f e7           ldi     r17, 0x7F       ; 127
        if (y1 >= DISP_H)
    1480:       60 34           cpi     r22, 0x40       ; 64
    1482:       08 f0           brcs    .+2             ; 0x1486 <lcd_frect+0x22>
                y1 = DISP_H - 1;
    1484:       6f e3           ldi     r22, 0x3F       ; 63
        x2 = x1 + widthx;
    1486:       21 2f           mov     r18, r17
    1488:       24 0f           add     r18, r20
    148a:       31 2d           mov     r19, r1
    148c:       31 1d           adc     r19, r1
    148e:       69 01           movw    r12, r18
        y2 = y1 + widthy;
    1490:       26 2f           mov     r18, r22
    1492:       33 27           eor     r19, r19
    1494:       79 01           movw    r14, r18
    1496:       e8 0e           add     r14, r24
    1498:       f1 1c           adc     r15, r1
        
        if (x2 > DISP_W)
    149a:       81 e8           ldi     r24, 0x81       ; 129
    149c:       c8 16           cp      r12, r24
    149e:       d1 04           cpc     r13, r1
    14a0:       18 f0           brcs    .+6             ; 0x14a8 <lcd_frect+0x44>
                x2 = DISP_W;
    14a2:       f0 e8           ldi     r31, 0x80       ; 128
    14a4:       cf 2e           mov     r12, r31
    14a6:       d1 2c           mov     r13, r1
        if (y2 > DISP_H)
    14a8:       81 e4           ldi     r24, 0x41       ; 65
    14aa:       e8 16           cp      r14, r24
    14ac:       f1 04           cpc     r15, r1
    14ae:       18 f0           brcs    .+6             ; 0x14b6 <lcd_frect+0x52>
                y2 = DISP_H;
    14b0:       e0 e4           ldi     r30, 0x40       ; 64
    14b2:       ee 2e           mov     r14, r30
    14b4:       f1 2c           mov     r15, r1
                
        for (i=y1;i<=y2;i++)
    14b6:       e9 01           movw    r28, r18
    14b8:       e2 16           cp      r14, r18
    14ba:       f3 06           cpc     r15, r19
    14bc:       58 f0           brcs    .+22            ; 0x14d4 <lcd_frect+0x70>
        {
                lcd_line(x1,i,x2,i,mode);
    14be:       0b 2d           mov     r16, r11
    14c0:       2c 2f           mov     r18, r28
    14c2:       4c 2d           mov     r20, r12
    14c4:       6c 2f           mov     r22, r28
    14c6:       81 2f           mov     r24, r17
    14c8:       0e 94 6f 09     call    0x12de <lcd_line>
    14cc:       21 96           adiw    r28, 0x01       ; 1
    14ce:       ec 16           cp      r14, r28
    14d0:       fd 06           cpc     r15, r29
    14d2:       a8 f7           brcc    .-22            ; 0x14be <lcd_frect+0x5a>
    14d4:       df 91           pop     r29
    14d6:       cf 91           pop     r28
    14d8:       1f 91           pop     r17
    14da:       0f 91           pop     r16
    14dc:       ff 90           pop     r15
    14de:       ef 90           pop     r14
    14e0:       df 90           pop     r13
    14e2:       cf 90           pop     r12
    14e4:       bf 90           pop     r11
    14e6:       08 95           ret

000014e8 <lcd_rect>:
        }
        
}

// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + outline of rectangle
// + x1, y1 = upper left corner
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

void lcd_rect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode)
{
    14e8:       cf 92           push    r12
    14ea:       df 92           push    r13
    14ec:       ef 92           push    r14
    14ee:       ff 92           push    r15
    14f0:       0f 93           push    r16
    14f2:       1f 93           push    r17
    14f4:       cf 93           push    r28
    14f6:       df 93           push    r29
    14f8:       d8 2e           mov     r13, r24
    14fa:       16 2f           mov     r17, r22
    14fc:       c0 2e           mov     r12, r16
        uint16_t x2, y2;

        if (x1 >= DISP_W)
    14fe:       87 ff           sbrs    r24, 7
    1500:       02 c0           rjmp    .+4             ; 0x1506 <lcd_rect+0x1e>
                x1 = DISP_W - 1;
    1502:       bf e7           ldi     r27, 0x7F       ; 127
    1504:       db 2e           mov     r13, r27
        if (y1 >= DISP_H)
    1506:       10 34           cpi     r17, 0x40       ; 64
    1508:       08 f0           brcs    .+2             ; 0x150c <lcd_rect+0x24>
                y1 = DISP_H - 1;
    150a:       1f e3           ldi     r17, 0x3F       ; 63
        x2 = x1 + widthx;
    150c:       8d 2d           mov     r24, r13
    150e:       84 0f           add     r24, r20
    1510:       91 2d           mov     r25, r1
    1512:       91 1d           adc     r25, r1
    1514:       ec 01           movw    r28, r24
        y2 = y1 + widthy;
    1516:       81 2f           mov     r24, r17
    1518:       82 0f           add     r24, r18
    151a:       91 2d           mov     r25, r1
    151c:       91 1d           adc     r25, r1
    151e:       7c 01           movw    r14, r24
        
        if (x2 > DISP_W)
    1520:       c1 38           cpi     r28, 0x81       ; 129
    1522:       d1 05           cpc     r29, r1
    1524:       10 f0           brcs    .+4             ; 0x152a <lcd_rect+0x42>
                x2 = DISP_W;
    1526:       c0 e8           ldi     r28, 0x80       ; 128
    1528:       d0 e0           ldi     r29, 0x00       ; 0
        if (y2 > DISP_H)
    152a:       91 e4           ldi     r25, 0x41       ; 65
    152c:       e9 16           cp      r14, r25
    152e:       f1 04           cpc     r15, r1
    1530:       18 f0           brcs    .+6             ; 0x1538 <lcd_rect+0x50>
                y2 = DISP_H;
    1532:       a0 e4           ldi     r26, 0x40       ; 64
    1534:       ea 2e           mov     r14, r26
    1536:       f1 2c           mov     r15, r1

        lcd_line (x1, y1, x2, y1, mode);
    1538:       0c 2d           mov     r16, r12
    153a:       21 2f           mov     r18, r17
    153c:       4c 2f           mov     r20, r28
    153e:       61 2f           mov     r22, r17
    1540:       8d 2d           mov     r24, r13
    1542:       0e 94 6f 09     call    0x12de <lcd_line>
        lcd_line (x2, y1, x2, y2, mode);
    1546:       2e 2d           mov     r18, r14
    1548:       4c 2f           mov     r20, r28
    154a:       61 2f           mov     r22, r17
    154c:       8c 2f           mov     r24, r28
    154e:       0e 94 6f 09     call    0x12de <lcd_line>
        lcd_line (x2, y2, x1, y2, mode);
    1552:       2e 2d           mov     r18, r14
    1554:       4d 2d           mov     r20, r13
    1556:       6e 2d           mov     r22, r14
    1558:       8c 2f           mov     r24, r28
    155a:       0e 94 6f 09     call    0x12de <lcd_line>
        lcd_line (x1, y2, x1, y1, mode);
    155e:       21 2f           mov     r18, r17
    1560:       4d 2d           mov     r20, r13
    1562:       6e 2d           mov     r22, r14
    1564:       8d 2d           mov     r24, r13
    1566:       0e 94 6f 09     call    0x12de <lcd_line>
    156a:       df 91           pop     r29
    156c:       cf 91           pop     r28
    156e:       1f 91           pop     r17
    1570:       0f 91           pop     r16
    1572:       ff 90           pop     r15
    1574:       ef 90           pop     r14
    1576:       df 90           pop     r13
    1578:       cf 90           pop     r12
    157a:       08 95           ret

0000157c <draw_circle>:
}

// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + outline of a circle
// + Based on Bresenham-algorithm found in wikipedia
// + modified by thkais (2007)
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


void draw_circle(int16_t x0, int16_t y0, int16_t radius, uint8_t mode)
{
    157c:       2f 92           push    r2
    157e:       3f 92           push    r3
    1580:       4f 92           push    r4
    1582:       5f 92           push    r5
    1584:       6f 92           push    r6
    1586:       7f 92           push    r7
    1588:       8f 92           push    r8
    158a:       9f 92           push    r9
    158c:       af 92           push    r10
    158e:       bf 92           push    r11
    1590:       cf 92           push    r12
    1592:       df 92           push    r13
    1594:       ef 92           push    r14
    1596:       ff 92           push    r15
    1598:       0f 93           push    r16
    159a:       1f 93           push    r17
    159c:       cf 93           push    r28
    159e:       df 93           push    r29
    15a0:       5c 01           movw    r10, r24
    15a2:       6b 01           movw    r12, r22
    15a4:       e2 2e           mov     r14, r18
        int16_t f = 1 - radius;
    15a6:       c1 e0           ldi     r28, 0x01       ; 1
    15a8:       8c 2e           mov     r8, r28
    15aa:       91 2c           mov     r9, r1
    15ac:       84 1a           sub     r8, r20
    15ae:       95 0a           sbc     r9, r21
        int16_t ddF_x = 0;
    15b0:       22 24           eor     r2, r2
    15b2:       33 24           eor     r3, r3
        int16_t ddF_y = -2 * radius;
    15b4:       8e ef           ldi     r24, 0xFE       ; 254
    15b6:       9f ef           ldi     r25, 0xFF       ; 255
    15b8:       48 9f           mul     r20, r24
    15ba:       20 01           movw    r4, r0
    15bc:       49 9f           mul     r20, r25
    15be:       50 0c           add     r5, r0
    15c0:       58 9f           mul     r21, r24
    15c2:       50 0c           add     r5, r0
    15c4:       11 24           eor     r1, r1
        int16_t x = 0;
    15c6:       31 01           movw    r6, r2
        int16_t y = radius;
    15c8:       ea 01           movw    r28, r20

        lcd_plot(x0, y0 + radius, mode);
    15ca:       86 2f           mov     r24, r22
    15cc:       84 0f           add     r24, r20
    15ce:       42 2f           mov     r20, r18
    15d0:       68 2f           mov     r22, r24
    15d2:       8a 2d           mov     r24, r10
    15d4:       0e 94 26 09     call    0x124c <lcd_plot>
        lcd_plot(x0, y0 - radius, mode);
    15d8:       8c 2d           mov     r24, r12
    15da:       8c 1b           sub     r24, r28
    15dc:       4e 2d           mov     r20, r14
    15de:       68 2f           mov     r22, r24
    15e0:       8a 2d           mov     r24, r10
    15e2:       0e 94 26 09     call    0x124c <lcd_plot>
        lcd_plot(x0 + radius, y0, mode);
    15e6:       4e 2d           mov     r20, r14
    15e8:       6c 2d           mov     r22, r12
    15ea:       8a 2d           mov     r24, r10
    15ec:       8c 0f           add     r24, r28
    15ee:       0e 94 26 09     call    0x124c <lcd_plot>
        lcd_plot(x0 - radius, y0, mode);
    15f2:       4e 2d           mov     r20, r14
    15f4:       6c 2d           mov     r22, r12
    15f6:       8a 2d           mov     r24, r10
    15f8:       8c 1b           sub     r24, r28
    15fa:       0e 94 26 09     call    0x124c <lcd_plot>

        while(x < y) 
        {
                if(f >= 0) 
                {
                        y --;
                        ddF_y += 2;
                        f += ddF_y;
                }
                x ++;
                ddF_x += 2;
                f += ddF_x + 1;

                lcd_plot(x0 + x, y0 + y, mode);
                lcd_plot(x0 - x, y0 + y, mode);
                 
                lcd_plot(x0 + x, y0 - y, mode);
                lcd_plot(x0 - x, y0 - y, mode);
                 
                lcd_plot(x0 + y, y0 + x, mode);
                lcd_plot(x0 - y, y0 + x, mode);
                 
                lcd_plot(x0 + y, y0 - x, mode);
                lcd_plot(x0 - y, y0 - x, mode);
    15fe:       2c 16           cp      r2, r28
    1600:       3d 06           cpc     r3, r29
    1602:       0c f0           brlt    .+2             ; 0x1606 <draw_circle+0x8a>
    1604:       51 c0           rjmp    .+162           ; 0x16a8 <draw_circle+0x12c>
    1606:       97 fc           sbrc    r9, 7
    1608:       07 c0           rjmp    .+14            ; 0x1618 <draw_circle+0x9c>
    160a:       21 97           sbiw    r28, 0x01       ; 1
    160c:       82 e0           ldi     r24, 0x02       ; 2
    160e:       90 e0           ldi     r25, 0x00       ; 0
    1610:       48 0e           add     r4, r24
    1612:       59 1e           adc     r5, r25
    1614:       84 0c           add     r8, r4
    1616:       95 1c           adc     r9, r5
    1618:       08 94           sec
    161a:       61 1c           adc     r6, r1
    161c:       71 1c           adc     r7, r1
    161e:       82 e0           ldi     r24, 0x02       ; 2
    1620:       90 e0           ldi     r25, 0x00       ; 0
    1622:       28 0e           add     r2, r24
    1624:       39 1e           adc     r3, r25
    1626:       82 0c           add     r8, r2
    1628:       93 1c           adc     r9, r3
    162a:       08 94           sec
    162c:       81 1c           adc     r8, r1
    162e:       91 1c           adc     r9, r1
    1630:       1c 2d           mov     r17, r12
    1632:       1c 0f           add     r17, r28
    1634:       fa 2c           mov     r15, r10
    1636:       f6 0c           add     r15, r6
    1638:       4e 2d           mov     r20, r14
    163a:       61 2f           mov     r22, r17
    163c:       8f 2d           mov     r24, r15
    163e:       0e 94 26 09     call    0x124c <lcd_plot>
    1642:       0a 2d           mov     r16, r10
    1644:       06 19           sub     r16, r6
    1646:       4e 2d           mov     r20, r14
    1648:       61 2f           mov     r22, r17
    164a:       80 2f           mov     r24, r16
    164c:       0e 94 26 09     call    0x124c <lcd_plot>
    1650:       1c 2d           mov     r17, r12
    1652:       1c 1b           sub     r17, r28
    1654:       4e 2d           mov     r20, r14
    1656:       61 2f           mov     r22, r17
    1658:       8f 2d           mov     r24, r15
    165a:       0e 94 26 09     call    0x124c <lcd_plot>
    165e:       4e 2d           mov     r20, r14
    1660:       61 2f           mov     r22, r17
    1662:       80 2f           mov     r24, r16
    1664:       0e 94 26 09     call    0x124c <lcd_plot>
    1668:       1c 2d           mov     r17, r12
    166a:       16 0d           add     r17, r6
    166c:       fa 2c           mov     r15, r10
    166e:       fc 0e           add     r15, r28
    1670:       4e 2d           mov     r20, r14
    1672:       61 2f           mov     r22, r17
    1674:       8f 2d           mov     r24, r15
    1676:       0e 94 26 09     call    0x124c <lcd_plot>
    167a:       0a 2d           mov     r16, r10
    167c:       0c 1b           sub     r16, r28
    167e:       4e 2d           mov     r20, r14
    1680:       61 2f           mov     r22, r17
    1682:       80 2f           mov     r24, r16
    1684:       0e 94 26 09     call    0x124c <lcd_plot>
    1688:       1c 2d           mov     r17, r12
    168a:       16 19           sub     r17, r6
    168c:       4e 2d           mov     r20, r14
    168e:       61 2f           mov     r22, r17
    1690:       8f 2d           mov     r24, r15
    1692:       0e 94 26 09     call    0x124c <lcd_plot>
    1696:       4e 2d           mov     r20, r14
    1698:       61 2f           mov     r22, r17
    169a:       80 2f           mov     r24, r16
    169c:       0e 94 26 09     call    0x124c <lcd_plot>
    16a0:       6c 16           cp      r6, r28
    16a2:       7d 06           cpc     r7, r29
    16a4:       0c f4           brge    .+2             ; 0x16a8 <draw_circle+0x12c>
    16a6:       af cf           rjmp    .-162           ; 0x1606 <draw_circle+0x8a>
    16a8:       df 91           pop     r29
    16aa:       cf 91           pop     r28
    16ac:       1f 91           pop     r17
    16ae:       0f 91           pop     r16
    16b0:       ff 90           pop     r15
    16b2:       ef 90           pop     r14
    16b4:       df 90           pop     r13
    16b6:       cf 90           pop     r12
    16b8:       bf 90           pop     r11
    16ba:       af 90           pop     r10
    16bc:       9f 90           pop     r9
    16be:       8f 90           pop     r8
    16c0:       7f 90           pop     r7
    16c2:       6f 90           pop     r6
    16c4:       5f 90           pop     r5
    16c6:       4f 90           pop     r4
    16c8:       3f 90           pop     r3
    16ca:       2f 90           pop     r2
    16cc:       08 95           ret

000016ce <draw_fcircle>:
        }
}

// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// + filled Circle
// + modified circle-algorithm thkais (2007)
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

void draw_fcircle(int16_t x0, int16_t y0, int16_t radius)
{
    16ce:       2f 92           push    r2
    16d0:       3f 92           push    r3
    16d2:       4f 92           push    r4
    16d4:       5f 92           push    r5
    16d6:       6f 92           push    r6
    16d8:       7f 92           push    r7
    16da:       8f 92           push    r8
    16dc:       9f 92           push    r9
    16de:       af 92           push    r10
    16e0:       bf 92           push    r11
    16e2:       cf 92           push    r12
    16e4:       df 92           push    r13
    16e6:       ff 92           push    r15
    16e8:       0f 93           push    r16
    16ea:       1f 93           push    r17
    16ec:       cf 93           push    r28
    16ee:       df 93           push    r29
    16f0:       5c 01           movw    r10, r24
    16f2:       6b 01           movw    r12, r22
        int16_t f = 1 - radius;
    16f4:       11 e0           ldi     r17, 0x01       ; 1
    16f6:       61 2e           mov     r6, r17
    16f8:       71 2c           mov     r7, r1
    16fa:       64 1a           sub     r6, r20
    16fc:       75 0a           sbc     r7, r21
        int16_t ddF_x = 0;
    16fe:       22 24           eor     r2, r2
    1700:       33 24           eor     r3, r3
        int16_t ddF_y = -2 * radius;
    1702:       8e ef           ldi     r24, 0xFE       ; 254
    1704:       9f ef           ldi     r25, 0xFF       ; 255
    1706:       48 9f           mul     r20, r24
    1708:       20 01           movw    r4, r0
    170a:       49 9f           mul     r20, r25
    170c:       50 0c           add     r5, r0
    170e:       58 9f           mul     r21, r24
    1710:       50 0c           add     r5, r0
    1712:       11 24           eor     r1, r1
        int16_t x = 0;
    1714:       41 01           movw    r8, r2
        int16_t y = radius;
    1716:       ea 01           movw    r28, r20
 
        lcd_line(x0, y0 + radius,x0, y0 - radius,1);
    1718:       86 2f           mov     r24, r22
    171a:       84 1b           sub     r24, r20
    171c:       96 2f           mov     r25, r22
    171e:       94 0f           add     r25, r20
    1720:       01 e0           ldi     r16, 0x01       ; 1
    1722:       28 2f           mov     r18, r24
    1724:       4a 2d           mov     r20, r10
    1726:       69 2f           mov     r22, r25
    1728:       8a 2d           mov     r24, r10
    172a:       0e 94 6f 09     call    0x12de <lcd_line>
   
        lcd_line(x0 + radius, y0,x0 - radius, y0,1);
    172e:       8a 2d           mov     r24, r10
    1730:       8c 1b           sub     r24, r28
    1732:       2c 2d           mov     r18, r12
    1734:       48 2f           mov     r20, r24
    1736:       6c 2d           mov     r22, r12
    1738:       8a 2d           mov     r24, r10
    173a:       8c 0f           add     r24, r28
    173c:       0e 94 6f 09     call    0x12de <lcd_line>
    
        while(x < y) 
        {
                if(f >= 0) 
                {
                        y--;
                        ddF_y += 2;
                        f += ddF_y;
                }
                x++;
                ddF_x += 2;
                f += ddF_x + 1;
 
                lcd_line(x0 + x, y0 + y,x0 - x, y0 + y,1);
                lcd_line(x0 + x, y0 - y,x0 - x, y0 - y,1);
                lcd_line(x0 + y, y0 + x,x0 - y, y0 + x,1);
                lcd_line(x0 + y, y0 - x,x0 - y, y0 - x,1);
    1740:       2c 16           cp      r2, r28
    1742:       3d 06           cpc     r3, r29
    1744:       0c f0           brlt    .+2             ; 0x1748 <draw_fcircle+0x7a>
    1746:       42 c0           rjmp    .+132           ; 0x17cc <draw_fcircle+0xfe>
    1748:       77 fc           sbrc    r7, 7
    174a:       07 c0           rjmp    .+14            ; 0x175a <draw_fcircle+0x8c>
    174c:       21 97           sbiw    r28, 0x01       ; 1
    174e:       82 e0           ldi     r24, 0x02       ; 2
    1750:       90 e0           ldi     r25, 0x00       ; 0
    1752:       48 0e           add     r4, r24
    1754:       59 1e           adc     r5, r25
    1756:       64 0c           add     r6, r4
    1758:       75 1c           adc     r7, r5
    175a:       08 94           sec
    175c:       81 1c           adc     r8, r1
    175e:       91 1c           adc     r9, r1
    1760:       82 e0           ldi     r24, 0x02       ; 2
    1762:       90 e0           ldi     r25, 0x00       ; 0
    1764:       28 0e           add     r2, r24
    1766:       39 1e           adc     r3, r25
    1768:       62 0c           add     r6, r2
    176a:       73 1c           adc     r7, r3
    176c:       08 94           sec
    176e:       61 1c           adc     r6, r1
    1770:       71 1c           adc     r7, r1
    1772:       8c 2d           mov     r24, r12
    1774:       8c 0f           add     r24, r28
    1776:       1a 2d           mov     r17, r10
    1778:       18 19           sub     r17, r8
    177a:       fa 2c           mov     r15, r10
    177c:       f8 0c           add     r15, r8
    177e:       01 e0           ldi     r16, 0x01       ; 1
    1780:       28 2f           mov     r18, r24
    1782:       41 2f           mov     r20, r17
    1784:       68 2f           mov     r22, r24
    1786:       8f 2d           mov     r24, r15
    1788:       0e 94 6f 09     call    0x12de <lcd_line>
    178c:       8c 2d           mov     r24, r12
    178e:       8c 1b           sub     r24, r28
    1790:       28 2f           mov     r18, r24
    1792:       41 2f           mov     r20, r17
    1794:       68 2f           mov     r22, r24
    1796:       8f 2d           mov     r24, r15
    1798:       0e 94 6f 09     call    0x12de <lcd_line>
    179c:       8c 2d           mov     r24, r12
    179e:       88 0d           add     r24, r8
    17a0:       1a 2d           mov     r17, r10
    17a2:       1c 1b           sub     r17, r28
    17a4:       fa 2c           mov     r15, r10
    17a6:       fc 0e           add     r15, r28
    17a8:       28 2f           mov     r18, r24
    17aa:       41 2f           mov     r20, r17
    17ac:       68 2f           mov     r22, r24
    17ae:       8f 2d           mov     r24, r15
    17b0:       0e 94 6f 09     call    0x12de <lcd_line>
    17b4:       8c 2d           mov     r24, r12
    17b6:       88 19           sub     r24, r8
    17b8:       28 2f           mov     r18, r24
    17ba:       41 2f           mov     r20, r17
    17bc:       68 2f           mov     r22, r24
    17be:       8f 2d           mov     r24, r15
    17c0:       0e 94 6f 09     call    0x12de <lcd_line>
    17c4:       8c 16           cp      r8, r28
    17c6:       9d 06           cpc     r9, r29
    17c8:       0c f4           brge    .+2             ; 0x17cc <draw_fcircle+0xfe>
    17ca:       be cf           rjmp    .-132           ; 0x1748 <draw_fcircle+0x7a>
    17cc:       df 91           pop     r29
    17ce:       cf 91           pop     r28
    17d0:       1f 91           pop     r17
    17d2:       0f 91           pop     r16
    17d4:       ff 90           pop     r15
    17d6:       df 90           pop     r13
    17d8:       cf 90           pop     r12
    17da:       bf 90           pop     r11
    17dc:       af 90           pop     r10
    17de:       9f 90           pop     r9
    17e0:       8f 90           pop     r8
    17e2:       7f 90           pop     r7
    17e4:       6f 90           pop     r6
    17e6:       5f 90           pop     r5
    17e8:       4f 90           pop     r4
    17ea:       3f 90           pop     r3
    17ec:       2f 90           pop     r2
    17ee:       08 95           ret

000017f0 <__vector_13>:
volatile uint8_t read_index, write_index;
volatile uint8_t rs232_buffer[16];

ISR(USART_RXC_vect)
{
    17f0:       1f 92           push    r1
    17f2:       0f 92           push    r0
    17f4:       0f b6           in      r0, 0x3f        ; 63
    17f6:       0f 92           push    r0
    17f8:       11 24           eor     r1, r1
    17fa:       8f 93           push    r24
    17fc:       9f 93           push    r25
    17fe:       ef 93           push    r30
    1800:       ff 93           push    r31
        rs232_buffer[write_index++] = UDR;
    1802:       90 91 6c 05     lds     r25, 0x056C
    1806:       ee e6           ldi     r30, 0x6E       ; 110
    1808:       f5 e0           ldi     r31, 0x05       ; 5
    180a:       e9 0f           add     r30, r25
    180c:       f1 1d           adc     r31, r1
    180e:       8c b1           in      r24, 0x0c       ; 12
    1810:       80 83           st      Z, r24
    1812:       9f 5f           subi    r25, 0xFF       ; 255
    1814:       90 93 6c 05     sts     0x056C, r25
        write_index &= 15;
    1818:       80 91 6c 05     lds     r24, 0x056C
    181c:       8f 70           andi    r24, 0x0F       ; 15
    181e:       80 93 6c 05     sts     0x056C, r24
    1822:       ff 91           pop     r31
    1824:       ef 91           pop     r30
    1826:       9f 91           pop     r25
    1828:       8f 91           pop     r24
    182a:       0f 90           pop     r0
    182c:       0f be           out     0x3f, r0        ; 63
    182e:       0f 90           pop     r0
    1830:       1f 90           pop     r1
    1832:       18 95           reti

00001834 <RS232_init>:
}

void RS232_init (void)
{
        UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
    1834:       88 e9           ldi     r24, 0x98       ; 152
    1836:       8a b9           out     0x0a, r24       ; 10
        UBRRL = 7;              // 57600 Baud @ 7,372800 MHz
    1838:       87 e0           ldi     r24, 0x07       ; 7
    183a:       89 b9           out     0x09, r24       ; 9
    183c:       08 95           ret

0000183e <RS232_get>:
}

uint8_t RS232_get (void)
{
        uint8_t c;

        rs232_timer = 10;
    183e:       8a e0           ldi     r24, 0x0A       ; 10
    1840:       80 93 e5 04     sts     0x04E5, r24
        
        while ((read_index == write_index) && (rs232_timer > 0));
    1844:       90 91 6d 05     lds     r25, 0x056D
    1848:       80 91 6c 05     lds     r24, 0x056C
    184c:       98 17           cp      r25, r24
    184e:       21 f4           brne    .+8             ; 0x1858 <RS232_get+0x1a>
    1850:       80 91 e5 04     lds     r24, 0x04E5
    1854:       88 23           and     r24, r24
    1856:       b1 f7           brne    .-20            ; 0x1844 <RS232_get+0x6>
        if (rs232_timer != 0)
    1858:       80 91 e5 04     lds     r24, 0x04E5
    185c:       88 23           and     r24, r24
    185e:       81 f0           breq    .+32            ; 0x1880 <RS232_get+0x42>
        {
        c = rs232_buffer[read_index++];
    1860:       80 91 6d 05     lds     r24, 0x056D
    1864:       e8 2f           mov     r30, r24
    1866:       ff 27           eor     r31, r31
    1868:       e2 59           subi    r30, 0x92       ; 146
    186a:       fa 4f           sbci    r31, 0xFA       ; 250
    186c:       8f 5f           subi    r24, 0xFF       ; 255
    186e:       80 93 6d 05     sts     0x056D, r24
    1872:       e0 81           ld      r30, Z
        read_index &= 15;
    1874:       80 91 6d 05     lds     r24, 0x056D
    1878:       8f 70           andi    r24, 0x0F       ; 15
    187a:       80 93 6d 05     sts     0x056D, r24
    187e:       01 c0           rjmp    .+2             ; 0x1882 <RS232_get+0x44>
        }
        else
        {
                c=0;
    1880:       e8 2f           mov     r30, r24
        }
        return c;
}
    1882:       8e 2f           mov     r24, r30
    1884:       99 27           eor     r25, r25
    1886:       08 95           ret

00001888 <RS232_send>:
void RS232_send (uint8_t data)
{
        while ((UCSRA & (1<<UDRE)) == 0);
    1888:       5d 9b           sbis    0x0b, 5 ; 11
    188a:       fe cf           rjmp    .-4             ; 0x1888 <RS232_send>
        UDR = data;
    188c:       8c b9           out     0x0c, r24       ; 12
    188e:       08 95           ret

00001890 <RS232_text>:
}
void RS232_text (uint8_t *text)
{
    1890:       cf 93           push    r28
    1892:       df 93           push    r29
    1894:       ec 01           movw    r28, r24
        while (*text)
        {
                RS232_send(*text);
                text++;
    1896:       88 81           ld      r24, Y
    1898:       88 23           and     r24, r24
    189a:       31 f0           breq    .+12            ; 0x18a8 <RS232_text+0x18>
    189c:       89 91           ld      r24, Y+
    189e:       0e 94 44 0c     call    0x1888 <RS232_send>
    18a2:       88 81           ld      r24, Y
    18a4:       88 23           and     r24, r24
    18a6:       d1 f7           brne    .-12            ; 0x189c <RS232_text+0xc>
    18a8:       df 91           pop     r29
    18aa:       cf 91           pop     r28
    18ac:       08 95           ret

000018ae <base64_decode>:
}


uint8_t base64_decode(uint8_t number)                                                           // Wandelt die base64-Rohdaten in lesbare Daten um
{
    18ae:       a8 2f           mov     r26, r24
        uint8_t p,q;
        uint8_t a,b,c,d;

        p = 2;
    18b0:       62 e0           ldi     r22, 0x02       ; 2
        q = 0;
    18b2:       70 e0           ldi     r23, 0x00       ; 0
        
        while (p < number)
        {
                a = r_buffer[p + 0] - 61;
                b = r_buffer[p + 1] - 61;
                c = r_buffer[p + 2] - 61;
                d = r_buffer[p + 3] - 61;
                
                p += 4;
                
                p_buffer[q + 0] = (a << 2) | (b >> 4);                                  // gespeichert werden die Daten in p_buffer
                p_buffer[q + 1] = ((b & 0x0F) << 4) | (c >> 2);
                p_buffer[q + 2] = ((c & 0x03) << 6) | d;
  
                q += 3;
    18b4:       6a 17           cp      r22, r26
    18b6:       b0 f5           brcc    .+108           ; 0x1924 <base64_decode+0x76>
    18b8:       e6 2f           mov     r30, r22
    18ba:       ff 27           eor     r31, r31
    18bc:       e7 51           subi    r30, 0x17       ; 23
    18be:       fb 4f           sbci    r31, 0xFB       ; 251
    18c0:       80 81           ld      r24, Z
    18c2:       8d 53           subi    r24, 0x3D       ; 61
    18c4:       31 81           ldd     r19, Z+1        ; 0x01
    18c6:       3d 53           subi    r19, 0x3D       ; 61
    18c8:       52 81           ldd     r21, Z+2        ; 0x02
    18ca:       5d 53           subi    r21, 0x3D       ; 61
    18cc:       43 81           ldd     r20, Z+3        ; 0x03
    18ce:       4d 53           subi    r20, 0x3D       ; 61
    18d0:       6c 5f           subi    r22, 0xFC       ; 252
    18d2:       e7 2f           mov     r30, r23
    18d4:       ff 27           eor     r31, r31
    18d6:       ed 59           subi    r30, 0x9D       ; 157
    18d8:       fb 4f           sbci    r31, 0xFB       ; 251
    18da:       99 27           eor     r25, r25
    18dc:       88 0f           add     r24, r24
    18de:       99 1f           adc     r25, r25
    18e0:       88 0f           add     r24, r24
    18e2:       99 1f           adc     r25, r25
    18e4:       23 2f           mov     r18, r19
    18e6:       22 95           swap    r18
    18e8:       2f 70           andi    r18, 0x0F       ; 15
    18ea:       28 2b           or      r18, r24
    18ec:       20 83           st      Z, r18
    18ee:       83 2f           mov     r24, r19
    18f0:       99 27           eor     r25, r25
    18f2:       8f 70           andi    r24, 0x0F       ; 15
    18f4:       90 70           andi    r25, 0x00       ; 0
    18f6:       34 e0           ldi     r19, 0x04       ; 4
    18f8:       88 0f           add     r24, r24
    18fa:       99 1f           adc     r25, r25
    18fc:       3a 95           dec     r19
    18fe:       e1 f7           brne    .-8             ; 0x18f8 <base64_decode+0x4a>
    1900:       25 2f           mov     r18, r21
    1902:       26 95           lsr     r18
    1904:       26 95           lsr     r18
    1906:       28 2b           or      r18, r24
    1908:       21 83           std     Z+1, r18        ; 0x01
    190a:       85 2f           mov     r24, r21
    190c:       99 27           eor     r25, r25
    190e:       83 70           andi    r24, 0x03       ; 3
    1910:       90 70           andi    r25, 0x00       ; 0
    1912:       26 e0           ldi     r18, 0x06       ; 6
    1914:       88 0f           add     r24, r24
    1916:       99 1f           adc     r25, r25
    1918:       2a 95           dec     r18
    191a:       e1 f7           brne    .-8             ; 0x1914 <base64_decode+0x66>
    191c:       48 2b           or      r20, r24
    191e:       42 83           std     Z+2, r20        ; 0x02
    1920:       7d 5f           subi    r23, 0xFD       ; 253
    1922:       c8 cf           rjmp    .-112           ; 0x18b4 <base64_decode+0x6>
        }
        return q;                                                                                                               // Rückgabe der Anzahl der Datenbytes
}
    1924:       87 2f           mov     r24, r23
    1926:       99 27           eor     r25, r25
    1928:       08 95           ret

0000192a <get_message>:
    192a:       cf 93           push    r28
    192c:       84 e1           ldi     r24, 0x14       ; 20
    192e:       80 93 61 00     sts     0x0061, r24
    1932:       0e 94 1f 0c     call    0x183e <RS232_get>
    1936:       83 32           cpi     r24, 0x23       ; 35
    1938:       21 f0           breq    .+8             ; 0x1942 <get_message+0x18>
    193a:       80 91 61 00     lds     r24, 0x0061
    193e:       88 23           and     r24, r24
    1940:       c1 f7           brne    .-16            ; 0x1932 <get_message+0x8>
    1942:       80 91 61 00     lds     r24, 0x0061
    1946:       88 23           and     r24, r24
    1948:       99 f0           breq    .+38            ; 0x1970 <get_message+0x46>
    194a:       c0 e0           ldi     r28, 0x00       ; 0
    194c:       0e 94 1f 0c     call    0x183e <RS232_get>
    1950:       ec 2f           mov     r30, r28
    1952:       ff 27           eor     r31, r31
    1954:       e7 51           subi    r30, 0x17       ; 23
    1956:       fb 4f           sbci    r31, 0xFB       ; 251
    1958:       80 83           st      Z, r24
    195a:       cf 5f           subi    r28, 0xFF       ; 255
    195c:       c7 fd           sbrc    r28, 7
    195e:       cf e7           ldi     r28, 0x7F       ; 127
    1960:       8d 30           cpi     r24, 0x0D       ; 13
    1962:       a1 f7           brne    .-24            ; 0x194c <get_message+0x22>
    1964:       8c 2f           mov     r24, r28
    1966:       0e 94 57 0c     call    0x18ae <base64_decode>
    196a:       80 e0           ldi     r24, 0x00       ; 0
    196c:       90 e0           ldi     r25, 0x00       ; 0
    196e:       02 c0           rjmp    .+4             ; 0x1974 <get_message+0x4a>
    1970:       81 e0           ldi     r24, 0x01       ; 1
    1972:       90 e0           ldi     r25, 0x00       ; 0
    1974:       cf 91           pop     r28
    1976:       08 95           ret

00001978 <base64_send>:

void base64_send(uint8_t number)                                                                        // Sendet Daten zur Flight-Control
{                                                                                                                                       // Die Daten werden in p_buffer erwartet, umcodiert und gesendet
    1978:       ff 92           push    r15
    197a:       0f 93           push    r16
    197c:       1f 93           push    r17
    197e:       cf 93           push    r28
    1980:       a8 2f           mov     r26, r24
        uint8_t bpointer,spointer;
        uint8_t x,y,z,a;
        uint16_t checksum;

        r_buffer[0] = p_buffer[0];
    1982:       80 91 63 04     lds     r24, 0x0463
    1986:       80 93 e9 04     sts     0x04E9, r24
        r_buffer[1] = p_buffer[1];
    198a:       80 91 64 04     lds     r24, 0x0464
    198e:       80 93 ea 04     sts     0x04EA, r24
        r_buffer[2] = p_buffer[2];
    1992:       80 91 65 04     lds     r24, 0x0465
    1996:       80 93 eb 04     sts     0x04EB, r24

        bpointer = 3;
    199a:       43 e0           ldi     r20, 0x03       ; 3
    199c:       f4 2e           mov     r15, r20
        spointer = 3;
    199e:       7f 2d           mov     r23, r15

        while (spointer < number)
        {
                x = p_buffer[spointer];
                y = p_buffer[spointer + 1];
                z = p_buffer[spointer + 2];
                spointer += 3;
  
                r_buffer[bpointer + 0] = (x >> 2) + 61;
                r_buffer[bpointer + 1] = (((x & 0x03) << 4) | ((y & 0xF0) >> 4)) + 61;
                r_buffer[bpointer + 2] = (((y & 0x0F) << 2) | ((z & 0xC0) >> 6)) + 61;
                r_buffer[bpointer + 3] = (z & 0x3F) + 61;
                  
                bpointer += 4;
    19a0:       fa 16           cp      r15, r26
    19a2:       e0 f5           brcc    .+120           ; 0x1a1c <base64_send+0xa4>
    19a4:       e7 2f           mov     r30, r23
    19a6:       ff 27           eor     r31, r31
    19a8:       ed 59           subi    r30, 0x9D       ; 157
    19aa:       fb 4f           sbci    r31, 0xFB       ; 251
    19ac:       90 81           ld      r25, Z
    19ae:       21 81           ldd     r18, Z+1        ; 0x01
    19b0:       62 81           ldd     r22, Z+2        ; 0x02
    19b2:       7d 5f           subi    r23, 0xFD       ; 253
    19b4:       ef 2d           mov     r30, r15
    19b6:       ff 27           eor     r31, r31
    19b8:       e7 51           subi    r30, 0x17       ; 23
    19ba:       fb 4f           sbci    r31, 0xFB       ; 251
    19bc:       89 2f           mov     r24, r25
    19be:       86 95           lsr     r24
    19c0:       86 95           lsr     r24
    19c2:       83 5c           subi    r24, 0xC3       ; 195
    19c4:       80 83           st      Z, r24
    19c6:       89 2f           mov     r24, r25
    19c8:       99 27           eor     r25, r25
    19ca:       83 70           andi    r24, 0x03       ; 3
    19cc:       90 70           andi    r25, 0x00       ; 0
    19ce:       34 e0           ldi     r19, 0x04       ; 4
    19d0:       88 0f           add     r24, r24
    19d2:       99 1f           adc     r25, r25
    19d4:       3a 95           dec     r19
    19d6:       e1 f7           brne    .-8             ; 0x19d0 <base64_send+0x58>
    19d8:       42 2f           mov     r20, r18
    19da:       55 27           eor     r21, r21
    19dc:       9a 01           movw    r18, r20
    19de:       94 e0           ldi     r25, 0x04       ; 4
    19e0:       36 95           lsr     r19
    19e2:       27 95           ror     r18
    19e4:       9a 95           dec     r25
    19e6:       e1 f7           brne    .-8             ; 0x19e0 <base64_send+0x68>
    19e8:       82 2b           or      r24, r18
    19ea:       83 5c           subi    r24, 0xC3       ; 195
    19ec:       81 83           std     Z+1, r24        ; 0x01
    19ee:       4f 70           andi    r20, 0x0F       ; 15
    19f0:       50 70           andi    r21, 0x00       ; 0
    19f2:       44 0f           add     r20, r20
    19f4:       55 1f           adc     r21, r21
    19f6:       44 0f           add     r20, r20
    19f8:       55 1f           adc     r21, r21
    19fa:       86 2f           mov     r24, r22
    19fc:       99 27           eor     r25, r25
    19fe:       16 e0           ldi     r17, 0x06       ; 6
    1a00:       96 95           lsr     r25
    1a02:       87 95           ror     r24
    1a04:       1a 95           dec     r17
    1a06:       e1 f7           brne    .-8             ; 0x1a00 <base64_send+0x88>
    1a08:       84 2b           or      r24, r20
    1a0a:       83 5c           subi    r24, 0xC3       ; 195
    1a0c:       82 83           std     Z+2, r24        ; 0x02
    1a0e:       6f 73           andi    r22, 0x3F       ; 63
    1a10:       63 5c           subi    r22, 0xC3       ; 195
    1a12:       63 83           std     Z+3, r22        ; 0x03
    1a14:       84 e0           ldi     r24, 0x04       ; 4
    1a16:       f8 0e           add     r15, r24
    1a18:       7a 17           cp      r23, r26
    1a1a:       20 f2           brcs    .-120           ; 0x19a4 <base64_send+0x2c>
        }

        checksum = 0;
    1a1c:       20 e0           ldi     r18, 0x00       ; 0
    1a1e:       30 e0           ldi     r19, 0x00       ; 0
        for(a=0;a<bpointer;a++)
    1a20:       c0 e0           ldi     r28, 0x00       ; 0
    1a22:       cf 15           cp      r28, r15
    1a24:       40 f4           brcc    .+16            ; 0x1a36 <base64_send+0xbe>
    1a26:       e9 ee           ldi     r30, 0xE9       ; 233
    1a28:       f4 e0           ldi     r31, 0x04       ; 4
          checksum += r_buffer[a];
    1a2a:       81 91           ld      r24, Z+
    1a2c:       28 0f           add     r18, r24
    1a2e:       31 1d           adc     r19, r1
    1a30:       cf 5f           subi    r28, 0xFF       ; 255
    1a32:       cf 15           cp      r28, r15
    1a34:       d0 f3           brcs    .-12            ; 0x1a2a <base64_send+0xb2>
        
        checksum %= 4096;
    1a36:       3f 70           andi    r19, 0x0F       ; 15
        
        r_buffer[bpointer] = (checksum / 64) + 61;
    1a38:       ef 2d           mov     r30, r15
    1a3a:       ff 27           eor     r31, r31
    1a3c:       e7 51           subi    r30, 0x17       ; 23
    1a3e:       fb 4f           sbci    r31, 0xFB       ; 251
    1a40:       c9 01           movw    r24, r18
    1a42:       c6 e0           ldi     r28, 0x06       ; 6
    1a44:       96 95           lsr     r25
    1a46:       87 95           ror     r24
    1a48:       ca 95           dec     r28
    1a4a:       e1 f7           brne    .-8             ; 0x1a44 <base64_send+0xcc>
    1a4c:       83 5c           subi    r24, 0xC3       ; 195
    1a4e:       80 83           st      Z, r24
        r_buffer[bpointer + 1] = (checksum % 64) + 61;
    1a50:       2f 73           andi    r18, 0x3F       ; 63
    1a52:       30 70           andi    r19, 0x00       ; 0
    1a54:       82 2f           mov     r24, r18
    1a56:       83 5c           subi    r24, 0xC3       ; 195
    1a58:       81 83           std     Z+1, r24        ; 0x01
        r_buffer[bpointer + 2] = 13;
    1a5a:       8d e0           ldi     r24, 0x0D       ; 13
    1a5c:       82 83           std     Z+2, r24        ; 0x02
        r_buffer[bpointer + 3] = 0;
    1a5e:       13 82           std     Z+3, r1 ; 0x03
        
        bpointer += 3;
    1a60:       83 e0           ldi     r24, 0x03       ; 3
    1a62:       f8 0e           add     r15, r24
        
        for(a=0;a<bpointer;a++)
    1a64:       c3 81           ldd     r28, Z+3        ; 0x03
    1a66:       cf 15           cp      r28, r15
    1a68:       50 f4           brcc    .+20            ; 0x1a7e <base64_send+0x106>
    1a6a:       09 ee           ldi     r16, 0xE9       ; 233
    1a6c:       14 e0           ldi     r17, 0x04       ; 4
          RS232_send(r_buffer[a]);
    1a6e:       f8 01           movw    r30, r16
    1a70:       81 91           ld      r24, Z+
    1a72:       8f 01           movw    r16, r30
    1a74:       0e 94 44 0c     call    0x1888 <RS232_send>
    1a78:       cf 5f           subi    r28, 0xFF       ; 255
    1a7a:       cf 15           cp      r28, r15
    1a7c:       c0 f3           brcs    .-16            ; 0x1a6e <base64_send+0xf6>
    1a7e:       cf 91           pop     r28
    1a80:       1f 91           pop     r17
    1a82:       0f 91           pop     r16
    1a84:       ff 90           pop     r15
    1a86:       08 95           ret

00001a88 <displ_get_text>:
uint8_t displ_page;


void displ_get_text(uint8_t number)
{
    1a88:       1f 93           push    r17
    1a8a:       cf 93           push    r28
    1a8c:       df 93           push    r29
    1a8e:       cd b7           in      r28, 0x3d       ; 61
    1a90:       de b7           in      r29, 0x3e       ; 62
    1a92:       61 97           sbiw    r28, 0x11       ; 17
    1a94:       0f b6           in      r0, 0x3f        ; 63
    1a96:       f8 94           cli
    1a98:       de bf           out     0x3e, r29       ; 62
    1a9a:       0f be           out     0x3f, r0        ; 63
    1a9c:       cd bf           out     0x3d, r28       ; 61
    1a9e:       18 2f           mov     r17, r24
        uint8_t text[17];
        uint8_t i;
        
        p_buffer[0] = '#';
    1aa0:       83 e2           ldi     r24, 0x23       ; 35
    1aa2:       80 93 63 04     sts     0x0463, r24
        p_buffer[1] = 'a';
    1aa6:       81 e6           ldi     r24, 0x61       ; 97
    1aa8:       80 93 64 04     sts     0x0464, r24
        p_buffer[2] = 'a';
    1aac:       80 93 65 04     sts     0x0465, r24
        p_buffer[3] = number;
    1ab0:       10 93 66 04     sts     0x0466, r17
        p_buffer[4] = 0;
    1ab4:       10 92 67 04     sts     0x0467, r1
        p_buffer[5] = 0;
    1ab8:       10 92 68 04     sts     0x0468, r1
        base64_send(6);
    1abc:       86 e0           ldi     r24, 0x06       ; 6
    1abe:       0e 94 bc 0c     call    0x1978 <base64_send>

        do
        {
                get_message();
    1ac2:       0e 94 95 0c     call    0x192a <get_message>
        }
    1ac6:       80 91 ea 04     lds     r24, 0x04EA
    1aca:       81 34           cpi     r24, 0x41       ; 65
    1acc:       d1 f7           brne    .-12            ; 0x1ac2 <displ_get_text+0x3a>
    1ace:       de 01           movw    r26, r28
    1ad0:       11 96           adiw    r26, 0x01       ; 1
    1ad2:       e3 e6           ldi     r30, 0x63       ; 99
    1ad4:       f4 e0           ldi     r31, 0x04       ; 4
    1ad6:       9f e0           ldi     r25, 0x0F       ; 15
        while (r_buffer[1] != 'A');

        for (i=0;i<16;i++)
                text[i] = p_buffer[i];
    1ad8:       81 91           ld      r24, Z+
    1ada:       8d 93           st      X+, r24
    1adc:       91 50           subi    r25, 0x01       ; 1
    1ade:       97 ff           sbrs    r25, 7
    1ae0:       fb cf           rjmp    .-10            ; 0x1ad8 <displ_get_text+0x50>
        text[16] = 0x00;
    1ae2:       19 8a           std     Y+17, r1        ; 0x11
        lcd_print_at(0,(number & 0x07),text,0);
    1ae4:       17 70           andi    r17, 0x07       ; 7
    1ae6:       29 89           ldd     r18, Y+17       ; 0x11
    1ae8:       ae 01           movw    r20, r28
    1aea:       4f 5f           subi    r20, 0xFF       ; 255
    1aec:       5f 4f           sbci    r21, 0xFF       ; 255
    1aee:       61 2f           mov     r22, r17
    1af0:       82 2f           mov     r24, r18
    1af2:       0e 94 1d 09     call    0x123a <lcd_print_at>
    1af6:       61 96           adiw    r28, 0x11       ; 17
    1af8:       0f b6           in      r0, 0x3f        ; 63
    1afa:       f8 94           cli
    1afc:       de bf           out     0x3e, r29       ; 62
    1afe:       0f be           out     0x3f, r0        ; 63
    1b00:       cd bf           out     0x3d, r28       ; 61
    1b02:       df 91           pop     r29
    1b04:       cf 91           pop     r28
    1b06:       1f 91           pop     r17
    1b08:       08 95           ret

00001b0a <displ_values>:
        
}

void displ_values(void)
{
    1b0a:       cf 92           push    r12
    1b0c:       df 92           push    r13
    1b0e:       ef 92           push    r14
    1b10:       ff 92           push    r15
    1b12:       0f 93           push    r16
    1b14:       1f 93           push    r17
    1b16:       cf 93           push    r28
    1b18:       df 93           push    r29
    1b1a:       cd b7           in      r28, 0x3d       ; 61
    1b1c:       de b7           in      r29, 0x3e       ; 62
    1b1e:       61 97           sbiw    r28, 0x11       ; 17
    1b20:       0f b6           in      r0, 0x3f        ; 63
    1b22:       f8 94           cli
    1b24:       de bf           out     0x3e, r29       ; 62
    1b26:       0f be           out     0x3f, r0        ; 63
    1b28:       cd bf           out     0x3d, r28       ; 61
        uint8_t displ_page, i;
        int16_t value;
        uint8_t text[17];

        displ_page = 0;                                                                         // Page 0..3 (4 Pages zu je 8 Werte)
    1b2a:       00 e0           ldi     r16, 0x00       ; 0
        lcd_cls();                                                                                      // LCD löschen 
    1b2c:       0e 94 36 07     call    0xe6c <lcd_cls>
        
        do
        {
                for (i=0;i<8;i++)                                                               // Texte lesen und anzeigen
    1b30:       10 e0           ldi     r17, 0x00       ; 0
                        displ_get_text(i+displ_page*8);
    1b32:       c0 2e           mov     r12, r16
    1b34:       dd 24           eor     r13, r13
    1b36:       c6 01           movw    r24, r12
    1b38:       53 e0           ldi     r21, 0x03       ; 3
    1b3a:       88 0f           add     r24, r24
    1b3c:       99 1f           adc     r25, r25
    1b3e:       5a 95           dec     r21
    1b40:       e1 f7           brne    .-8             ; 0x1b3a <displ_values+0x30>
    1b42:       81 0f           add     r24, r17
    1b44:       0e 94 44 0d     call    0x1a88 <displ_get_text>
    1b48:       1f 5f           subi    r17, 0xFF       ; 255
    1b4a:       18 30           cpi     r17, 0x08       ; 8
    1b4c:       90 f3           brcs    .-28            ; 0x1b32 <displ_values+0x28>
                
                do
                {
                        get_message();
    1b4e:       0e 94 95 0c     call    0x192a <get_message>
                        if(r_buffer[1] == 'D')
    1b52:       80 91 ea 04     lds     r24, 0x04EA
    1b56:       84 34           cpi     r24, 0x44       ; 68
    1b58:       91 f5           brne    .+100           ; 0x1bbe <displ_values+0xb4>
                        {
                                for (i=0;i<8;i++)
    1b5a:       10 e0           ldi     r17, 0x00       ; 0
    1b5c:       ee 24           eor     r14, r14
    1b5e:       ff 24           eor     r15, r15
                                {
                                        value = p_buffer[i*2+displ_page*16+2] + 256*p_buffer[i*2+displ_page*16+3];
    1b60:       f6 01           movw    r30, r12
    1b62:       43 e0           ldi     r20, 0x03       ; 3
    1b64:       ee 0f           add     r30, r30
    1b66:       ff 1f           adc     r31, r31
    1b68:       4a 95           dec     r20
    1b6a:       e1 f7           brne    .-8             ; 0x1b64 <displ_values+0x5a>
    1b6c:       ee 0d           add     r30, r14
    1b6e:       ff 1d           adc     r31, r15
    1b70:       ee 0f           add     r30, r30
    1b72:       ff 1f           adc     r31, r31
    1b74:       ed 59           subi    r30, 0x9D       ; 157
    1b76:       fb 4f           sbci    r31, 0xFB       ; 251
    1b78:       22 81           ldd     r18, Z+2        ; 0x02
    1b7a:       83 81           ldd     r24, Z+3        ; 0x03
    1b7c:       99 27           eor     r25, r25
    1b7e:       98 2f           mov     r25, r24
    1b80:       88 27           eor     r24, r24
                                        itoa(value,text,10);
    1b82:       4a e0           ldi     r20, 0x0A       ; 10
    1b84:       50 e0           ldi     r21, 0x00       ; 0
    1b86:       be 01           movw    r22, r28
    1b88:       6f 5f           subi    r22, 0xFF       ; 255
    1b8a:       7f 4f           sbci    r23, 0xFF       ; 255
    1b8c:       82 0f           add     r24, r18
    1b8e:       91 1d           adc     r25, r1
    1b90:       0e 94 cf 12     call    0x259e <itoa>
                                        lcd_print_atp(14,i,PSTR("      "),0);
    1b94:       20 e0           ldi     r18, 0x00       ; 0
    1b96:       44 e5           ldi     r20, 0x54       ; 84
    1b98:       56 e0           ldi     r21, 0x06       ; 6
    1b9a:       61 2f           mov     r22, r17
    1b9c:       8e e0           ldi     r24, 0x0E       ; 14
    1b9e:       0e 94 e1 08     call    0x11c2 <lcd_print_atp>
                                        lcd_print_at(14,i,text,0);
    1ba2:       20 e0           ldi     r18, 0x00       ; 0
    1ba4:       ae 01           movw    r20, r28
    1ba6:       4f 5f           subi    r20, 0xFF       ; 255
    1ba8:       5f 4f           sbci    r21, 0xFF       ; 255
    1baa:       61 2f           mov     r22, r17
    1bac:       8e e0           ldi     r24, 0x0E       ; 14
    1bae:       0e 94 1d 09     call    0x123a <lcd_print_at>
    1bb2:       1f 5f           subi    r17, 0xFF       ; 255
    1bb4:       08 94           sec
    1bb6:       e1 1c           adc     r14, r1
    1bb8:       f1 1c           adc     r15, r1
    1bba:       18 30           cpi     r17, 0x08       ; 8
    1bbc:       88 f2           brcs    .-94            ; 0x1b60 <displ_values+0x56>
                                }
                        }
                }
    1bbe:       80 91 e6 04     lds     r24, 0x04E6
    1bc2:       88 23           and     r24, r24
    1bc4:       21 f2           breq    .-120           ; 0x1b4e <displ_values+0x44>
                while (key == 0x00);
                if (key == 0x01)
    1bc6:       80 91 e6 04     lds     r24, 0x04E6
    1bca:       81 30           cpi     r24, 0x01       ; 1
    1bcc:       09 f4           brne    .+2             ; 0x1bd0 <displ_values+0xc6>
                        displ_page++;
    1bce:       0f 5f           subi    r16, 0xFF       ; 255
                if (key == 0x02)
    1bd0:       80 91 e6 04     lds     r24, 0x04E6
    1bd4:       82 30           cpi     r24, 0x02       ; 2
    1bd6:       09 f4           brne    .+2             ; 0x1bda <displ_values+0xd0>
                        displ_page--;
    1bd8:       01 50           subi    r16, 0x01       ; 1
                        
                displ_page &= 0x03;
    1bda:       03 70           andi    r16, 0x03       ; 3
        }
    1bdc:       80 91 e6 04     lds     r24, 0x04E6
    1be0:       88 30           cpi     r24, 0x08       ; 8
    1be2:       09 f0           breq    .+2             ; 0x1be6 <displ_values+0xdc>
    1be4:       a5 cf           rjmp    .-182           ; 0x1b30 <displ_values+0x26>
    1be6:       61 96           adiw    r28, 0x11       ; 17
    1be8:       0f b6           in      r0, 0x3f        ; 63
    1bea:       f8 94           cli
    1bec:       de bf           out     0x3e, r29       ; 62
    1bee:       0f be           out     0x3f, r0        ; 63
    1bf0:       cd bf           out     0x3d, r28       ; 61
    1bf2:       df 91           pop     r29
    1bf4:       cf 91           pop     r28
    1bf6:       1f 91           pop     r17
    1bf8:       0f 91           pop     r16
    1bfa:       ff 90           pop     r15
    1bfc:       ef 90           pop     r14
    1bfe:       df 90           pop     r13
    1c00:       cf 90           pop     r12
    1c02:       08 95           ret

00001c04 <read_parameter>:

// Parameter lesen, editieren und zurückschreiben

uint8_t read_parameter (uint8_t number)                         // Number = Parameter-Set#
{
    1c04:       cf 93           push    r28
        uint8_t timeout;
        
        timeout = 0;
    1c06:       c0 e0           ldi     r28, 0x00       ; 0
        
        p_buffer[0] = '#';                                                                      // Parameter anfordern
    1c08:       93 e2           ldi     r25, 0x23       ; 35
    1c0a:       90 93 63 04     sts     0x0463, r25
        p_buffer[1] = 'a';
    1c0e:       91 e6           ldi     r25, 0x61       ; 97
    1c10:       90 93 64 04     sts     0x0464, r25
        p_buffer[2] = 'q';
    1c14:       91 e7           ldi     r25, 0x71       ; 113
    1c16:       90 93 65 04     sts     0x0465, r25
        p_buffer[3] = number;
    1c1a:       80 93 66 04     sts     0x0466, r24
        p_buffer[4] = 0;
    1c1e:       c0 93 67 04     sts     0x0467, r28
        p_buffer[5] = 0;
    1c22:       c0 93 68 04     sts     0x0468, r28
        base64_send(6);
    1c26:       86 e0           ldi     r24, 0x06       ; 6
    1c28:       0e 94 bc 0c     call    0x1978 <base64_send>

        do                                                                                                      // warten, bis die Parameter gesendet werden
        {
                if (get_message() == 1)                                         // Fehler bei der Übertragung?
    1c2c:       0e 94 95 0c     call    0x192a <get_message>
    1c30:       81 30           cpi     r24, 0x01       ; 1
    1c32:       09 f4           brne    .+2             ; 0x1c36 <read_parameter+0x32>
                        timeout = 30;                                                           // Timeout sofort auf Endwert setzen
    1c34:       ce e1           ldi     r28, 0x1E       ; 30
                timeout ++;
    1c36:       cf 5f           subi    r28, 0xFF       ; 255
        }
    1c38:       80 91 ea 04     lds     r24, 0x04EA
    1c3c:       8c 54           subi    r24, 0x4C       ; 76
    1c3e:       85 30           cpi     r24, 0x05       ; 5
    1c40:       10 f0           brcs    .+4             ; 0x1c46 <read_parameter+0x42>
    1c42:       ce 31           cpi     r28, 0x1E       ; 30
    1c44:       98 f3           brcs    .-26            ; 0x1c2c <read_parameter+0x28>
        while (((r_buffer[1] < 'L') || (r_buffer[1] > 'P')) && (timeout < 30)); // warten, bis Parameter empfangen wurden oder ein Timeout auftrat
        
        if (timeout >= 30)                                                                      // Wenn ein Timeout (=Fehler) auftrat, eine 1 zurückgeben, ansonsten 0
    1c46:       ce 31           cpi     r28, 0x1E       ; 30
    1c48:       18 f0           brcs    .+6             ; 0x1c50 <read_parameter+0x4c>
                return 1;
    1c4a:       81 e0           ldi     r24, 0x01       ; 1
    1c4c:       90 e0           ldi     r25, 0x00       ; 0
    1c4e:       02 c0           rjmp    .+4             ; 0x1c54 <read_parameter+0x50>
        else
                return 0;
    1c50:       80 e0           ldi     r24, 0x00       ; 0
    1c52:       90 e0           ldi     r25, 0x00       ; 0
    1c54:       cf 91           pop     r28
    1c56:       08 95           ret

00001c58 <write_parameter>:
}

void write_parameter(uint8_t number)                                    // Schreibe Parameter-Satz
{
    1c58:       98 2f           mov     r25, r24
        uint8_t i;
        
        if (number <= 5)
    1c5a:       86 30           cpi     r24, 0x06       ; 6
    1c5c:       b8 f4           brcc    .+46            ; 0x1c8c <write_parameter+0x34>
    1c5e:       e9 ea           ldi     r30, 0xA9       ; 169
    1c60:       f4 e0           ldi     r31, 0x04       ; 4
    1c62:       26 e4           ldi     r18, 0x46       ; 70
        {

                for (i=0;i<71;i++)                                                              // Den gesamten Parameter-Puffer um 3 Bytes nach hinten verschieben
                        p_buffer[(70-i)+3] = p_buffer[70-i];
    1c64:       80 81           ld      r24, Z
    1c66:       83 83           std     Z+3, r24        ; 0x03
    1c68:       21 50           subi    r18, 0x01       ; 1
    1c6a:       31 97           sbiw    r30, 0x01       ; 1
    1c6c:       27 ff           sbrs    r18, 7
    1c6e:       fa cf           rjmp    .-12            ; 0x1c64 <write_parameter+0xc>
                        
                p_buffer[0] = '#';                                                              // Befehl zum Schreiben der Parameter
    1c70:       83 e2           ldi     r24, 0x23       ; 35
    1c72:       80 93 63 04     sts     0x0463, r24
                p_buffer[1] = 'a';
    1c76:       81 e6           ldi     r24, 0x61       ; 97
    1c78:       80 93 64 04     sts     0x0464, r24
                p_buffer[2] = number + 'k';                                             // Nummer des Parameters
    1c7c:       95 59           subi    r25, 0x95       ; 149
    1c7e:       90 93 65 04     sts     0x0465, r25
                p_buffer[74] = 0;
    1c82:       10 92 ad 04     sts     0x04AD, r1
                base64_send(75);                                                                // Parameter in base64 kodieren und senden, 75 Bytes
    1c86:       8b e4           ldi     r24, 0x4B       ; 75
    1c88:       0e 94 bc 0c     call    0x1978 <base64_send>
    1c8c:       08 95           ret

00001c8e <binary>:
        }
}

void binary (uint8_t data, uint8_t *feld)                       // Wandelt eine 8-Bit Zahl in eine Binärzahl um (Array mit 8 Elementen)
{                                                                                                               // Wird für die Flags (Loop + Grundkonfiguration) benötigt
    1c8e:       9b 01           movw    r18, r22
    1c90:       68 2f           mov     r22, r24
    1c92:       77 27           eor     r23, r23
    1c94:       51 e0           ldi     r21, 0x01       ; 1
    1c96:       f9 01           movw    r30, r18
    1c98:       20 e0           ldi     r18, 0x00       ; 0
    1c9a:       30 e0           ldi     r19, 0x00       ; 0
    1c9c:       47 e0           ldi     r20, 0x07       ; 7
        uint8_t i;
        
        i=0;
        for (i=0;i<8;i++)
        {
                if ((1<<i) & data)
    1c9e:       cb 01           movw    r24, r22
    1ca0:       02 2e           mov     r0, r18
    1ca2:       02 c0           rjmp    .+4             ; 0x1ca8 <binary+0x1a>
    1ca4:       95 95           asr     r25
    1ca6:       87 95           ror     r24
    1ca8:       0a 94           dec     r0
    1caa:       e2 f7           brpl    .-8             ; 0x1ca4 <binary+0x16>
    1cac:       80 ff           sbrs    r24, 0
    1cae:       02 c0           rjmp    .+4             ; 0x1cb4 <binary+0x26>
                        feld[i] = 1;
    1cb0:       50 83           st      Z, r21
    1cb2:       01 c0           rjmp    .+2             ; 0x1cb6 <binary+0x28>
                else
                        feld[i] = 0;
    1cb4:       10 82           st      Z, r1
    1cb6:       41 50           subi    r20, 0x01       ; 1
    1cb8:       2f 5f           subi    r18, 0xFF       ; 255
    1cba:       3f 4f           sbci    r19, 0xFF       ; 255
    1cbc:       31 96           adiw    r30, 0x01       ; 1
    1cbe:       47 ff           sbrs    r20, 7
    1cc0:       ee cf           rjmp    .-36            ; 0x1c9e <binary+0x10>
    1cc2:       08 95           ret

00001cc4 <bindec>:
        }
}

uint8_t bindec (uint8_t *feld)                                          // wandelt eine Binärzahl (im Array) in eine 8-Bit Zahl
{                                                                                                               // Wird für die Flags (Loop + Grundkonfiguration) benötigt
        uint8_t i;
        uint8_t result;
        
        result = 0;
    1cc4:       50 e0           ldi     r21, 0x00       ; 0
    1cc6:       61 e0           ldi     r22, 0x01       ; 1
    1cc8:       70 e0           ldi     r23, 0x00       ; 0
    1cca:       fc 01           movw    r30, r24
    1ccc:       20 e0           ldi     r18, 0x00       ; 0
    1cce:       30 e0           ldi     r19, 0x00       ; 0
    1cd0:       47 e0           ldi     r20, 0x07       ; 7
        for (i=0;i<8;i++)
        {
                if (feld[i] == 1)
    1cd2:       81 91           ld      r24, Z+
    1cd4:       81 30           cpi     r24, 0x01       ; 1
    1cd6:       41 f4           brne    .+16            ; 0x1ce8 <bindec+0x24>
                        result += 1<<i;
    1cd8:       cb 01           movw    r24, r22
    1cda:       02 2e           mov     r0, r18
    1cdc:       02 c0           rjmp    .+4             ; 0x1ce2 <bindec+0x1e>
    1cde:       88 0f           add     r24, r24
    1ce0:       99 1f           adc     r25, r25
    1ce2:       0a 94           dec     r0
    1ce4:       e2 f7           brpl    .-8             ; 0x1cde <bindec+0x1a>
    1ce6:       58 0f           add     r21, r24
    1ce8:       41 50           subi    r20, 0x01       ; 1
    1cea:       2f 5f           subi    r18, 0xFF       ; 255
    1cec:       3f 4f           sbci    r19, 0xFF       ; 255
    1cee:       47 ff           sbrs    r20, 7
    1cf0:       f0 cf           rjmp    .-32            ; 0x1cd2 <bindec+0xe>
        }
        return result;
}
    1cf2:       85 2f           mov     r24, r21
    1cf4:       99 27           eor     r25, r25
    1cf6:       08 95           ret

00001cf8 <decimal>:




void decimal (uint8_t data, uint8_t *text)                      // wandelt Wert in rechtsbündigen Text um 
{                                                                                                               // (schneller/kleiner als printf())
    1cf8:       28 2f           mov     r18, r24
    1cfa:       fb 01           movw    r30, r22
        text[0] = data/100;
    1cfc:       34 e6           ldi     r19, 0x64       ; 100
    1cfe:       63 2f           mov     r22, r19
    1d00:       0e 94 16 13     call    0x262c <__udivmodqi4>
    1d04:       58 2f           mov     r21, r24
        data -= (text[0] * 100);
    1d06:       83 9f           mul     r24, r19
    1d08:       c0 01           movw    r24, r0
    1d0a:       11 24           eor     r1, r1
    1d0c:       28 1b           sub     r18, r24
        text[1] = data/10;
    1d0e:       3a e0           ldi     r19, 0x0A       ; 10
    1d10:       82 2f           mov     r24, r18
    1d12:       63 2f           mov     r22, r19
    1d14:       0e 94 16 13     call    0x262c <__udivmodqi4>
    1d18:       48 2f           mov     r20, r24
        data -= (text[1] *10);
    1d1a:       83 9f           mul     r24, r19
    1d1c:       c0 01           movw    r24, r0
    1d1e:       11 24           eor     r1, r1
    1d20:       28 1b           sub     r18, r24
        text[2] = data + 0x30;
    1d22:       20 5d           subi    r18, 0xD0       ; 208
    1d24:       22 83           std     Z+2, r18        ; 0x02
        text[0] += 0x30;
    1d26:       85 2f           mov     r24, r21
    1d28:       80 5d           subi    r24, 0xD0       ; 208
    1d2a:       80 83           st      Z, r24
        text[1] += 0x30;
    1d2c:       40 5d           subi    r20, 0xD0       ; 208
    1d2e:       41 83           std     Z+1, r20        ; 0x01

        if (text[0] == 0x30)
    1d30:       80 33           cpi     r24, 0x30       ; 48
    1d32:       29 f4           brne    .+10            ; 0x1d3e <decimal+0x46>
        {
                text[0] = 0x20;
    1d34:       80 e2           ldi     r24, 0x20       ; 32
    1d36:       80 83           st      Z, r24
                if (text[1] == 0x30)
    1d38:       40 33           cpi     r20, 0x30       ; 48
    1d3a:       09 f4           brne    .+2             ; 0x1d3e <decimal+0x46>
                        text[1] = 0x20;
    1d3c:       81 83           std     Z+1, r24        ; 0x01
        }
        text[3] = 0x00; 
    1d3e:       13 82           std     Z+3, r1 ; 0x03
    1d40:       08 95           ret

00001d42 <show_parameter>:
}

uint8_t show_parameter (uint8_t number)                                                 // Zeigt eine Parameter-Seite an und gibt die ausgewählte Zeile zurück
{
    1d42:       9f 92           push    r9
    1d44:       af 92           push    r10
    1d46:       bf 92           push    r11
    1d48:       cf 92           push    r12
    1d4a:       df 92           push    r13
    1d4c:       ef 92           push    r14
    1d4e:       ff 92           push    r15
    1d50:       0f 93           push    r16
    1d52:       1f 93           push    r17
    1d54:       cf 93           push    r28
    1d56:       df 93           push    r29
    1d58:       cd b7           in      r28, 0x3d       ; 61
    1d5a:       de b7           in      r29, 0x3e       ; 62
    1d5c:       a1 97           sbiw    r28, 0x21       ; 33
    1d5e:       0f b6           in      r0, 0x3f        ; 63
    1d60:       f8 94           cli
    1d62:       de bf           out     0x3e, r29       ; 62
    1d64:       0f be           out     0x3f, r0        ; 63
    1d66:       cd bf           out     0x3d, r28       ; 61
    1d68:       08 2f           mov     r16, r24
        uint8_t i;
        uint8_t line;
        uint8_t text[25];
        uint8_t bin[8];
                
        line = 0;
    1d6a:       99 24           eor     r9, r9
        
        if (number > 1)
    1d6c:       82 30           cpi     r24, 0x02       ; 2
    1d6e:       08 f4           brcc    .+2             ; 0x1d72 <show_parameter+0x30>
    1d70:       3e c0           rjmp    .+124           ; 0x1dee <show_parameter+0xac>
        {
                for (i = 0; i<66; i++)
    1d72:       19 2d           mov     r17, r9
    1d74:       4b e5           ldi     r20, 0x5B       ; 91
    1d76:       a4 2e           mov     r10, r20
    1d78:       46 e0           ldi     r20, 0x06       ; 6
    1d7a:       b4 2e           mov     r11, r20
    1d7c:       33 e6           ldi     r19, 0x63       ; 99
    1d7e:       c3 2e           mov     r12, r19
    1d80:       34 e0           ldi     r19, 0x04       ; 4
    1d82:       d3 2e           mov     r13, r19
    1d84:       2d e7           ldi     r18, 0x7D       ; 125
    1d86:       e2 2e           mov     r14, r18
    1d88:       2a e0           ldi     r18, 0x0A       ; 10
    1d8a:       f2 2e           mov     r15, r18
                {
                        if (pgm_read_byte(p_limits+i*3+2) == number)
    1d8c:       f7 01           movw    r30, r14
    1d8e:       84 91           lpm     r24, Z
    1d90:       80 17           cp      r24, r16
    1d92:       f1 f4           brne    .+60            ; 0x1dd0 <show_parameter+0x8e>
                        {
                                array[line] = i;
    1d94:       e9 2d           mov     r30, r9
    1d96:       ff 27           eor     r31, r31
    1d98:       e1 58           subi    r30, 0x81       ; 129
    1d9a:       fa 4f           sbci    r31, 0xFA       ; 250
    1d9c:       10 83           st      Z, r17
                                decimal(p_buffer[i],text);
    1d9e:       be 01           movw    r22, r28
    1da0:       6f 5f           subi    r22, 0xFF       ; 255
    1da2:       7f 4f           sbci    r23, 0xFF       ; 255
    1da4:       f6 01           movw    r30, r12
    1da6:       80 81           ld      r24, Z
    1da8:       0e 94 7c 0e     call    0x1cf8 <decimal>
                                lcd_print_at(0,line,text,0);
    1dac:       20 e0           ldi     r18, 0x00       ; 0
    1dae:       ae 01           movw    r20, r28
    1db0:       4f 5f           subi    r20, 0xFF       ; 255
    1db2:       5f 4f           sbci    r21, 0xFF       ; 255
    1db4:       69 2d           mov     r22, r9
    1db6:       82 2f           mov     r24, r18
    1db8:       0e 94 1d 09     call    0x123a <lcd_print_at>
                                lcd_print_atp(5,line,parameter[i],0);
    1dbc:       20 e0           ldi     r18, 0x00       ; 0
    1dbe:       a5 01           movw    r20, r10
    1dc0:       69 2d           mov     r22, r9
    1dc2:       85 e0           ldi     r24, 0x05       ; 5
    1dc4:       0e 94 e1 08     call    0x11c2 <lcd_print_atp>
                                if (line <= 7)
    1dc8:       f7 e0           ldi     r31, 0x07       ; 7
    1dca:       f9 15           cp      r31, r9
    1dcc:       08 f0           brcs    .+2             ; 0x1dd0 <show_parameter+0x8e>
                                        line++;
    1dce:       93 94           inc     r9
    1dd0:       1f 5f           subi    r17, 0xFF       ; 255
    1dd2:       83 e0           ldi     r24, 0x03       ; 3
    1dd4:       90 e0           ldi     r25, 0x00       ; 0
    1dd6:       e8 0e           add     r14, r24
    1dd8:       f9 1e           adc     r15, r25
    1dda:       08 94           sec
    1ddc:       c1 1c           adc     r12, r1
    1dde:       d1 1c           adc     r13, r1
    1de0:       e0 e1           ldi     r30, 0x10       ; 16
    1de2:       f0 e0           ldi     r31, 0x00       ; 0
    1de4:       ae 0e           add     r10, r30
    1de6:       bf 1e           adc     r11, r31
    1de8:       12 34           cpi     r17, 0x42       ; 66
    1dea:       80 f2           brcs    .-96            ; 0x1d8c <show_parameter+0x4a>
    1dec:       5f c0           rjmp    .+190           ; 0x1eac <show_parameter+0x16a>
                        }
                }
        }
        else
        {                                                                                                                               // Sonderfälle: Binäre Eingabe
                if (number == 1)
    1dee:       81 30           cpi     r24, 0x01       ; 1
    1df0:       71 f5           brne    .+92            ; 0x1e4e <show_parameter+0x10c>
                {
                        binary(p_buffer[52],bin);                                                               // Loop-Config
    1df2:       be 01           movw    r22, r28
    1df4:       66 5e           subi    r22, 0xE6       ; 230
    1df6:       7f 4f           sbci    r23, 0xFF       ; 255
    1df8:       80 91 97 04     lds     r24, 0x0497
    1dfc:       0e 94 47 0e     call    0x1c8e <binary>
                        text[1] = 0x00;
    1e00:       9a 82           std     Y+2, r9 ; 0x02
                        for (i=0;i<4;i++)
    1e02:       19 2d           mov     r17, r9
    1e04:       9b eb           ldi     r25, 0xBB       ; 187
    1e06:       c9 2e           mov     r12, r25
    1e08:       99 e0           ldi     r25, 0x09       ; 9
    1e0a:       d9 2e           mov     r13, r25
    1e0c:       ee 24           eor     r14, r14
    1e0e:       ff 24           eor     r15, r15
                        {
                                text[0] = bin[i] + 0x30;
    1e10:       ce 01           movw    r24, r28
    1e12:       01 96           adiw    r24, 0x01       ; 1
    1e14:       f7 01           movw    r30, r14
    1e16:       e8 0f           add     r30, r24
    1e18:       f9 1f           adc     r31, r25
    1e1a:       21 8d           ldd     r18, Z+25       ; 0x19
    1e1c:       20 5d           subi    r18, 0xD0       ; 208
    1e1e:       29 83           std     Y+1, r18        ; 0x01
                                lcd_print_at(0,i,text,0);
    1e20:       20 e0           ldi     r18, 0x00       ; 0
    1e22:       ac 01           movw    r20, r24
    1e24:       61 2f           mov     r22, r17
    1e26:       82 2f           mov     r24, r18
    1e28:       0e 94 1d 09     call    0x123a <lcd_print_at>
                                lcd_print_atp(5,i,bin_parameter[i],0);
    1e2c:       20 e0           ldi     r18, 0x00       ; 0
    1e2e:       a6 01           movw    r20, r12
    1e30:       61 2f           mov     r22, r17
    1e32:       85 e0           ldi     r24, 0x05       ; 5
    1e34:       0e 94 e1 08     call    0x11c2 <lcd_print_atp>
    1e38:       1f 5f           subi    r17, 0xFF       ; 255
    1e3a:       08 94           sec
    1e3c:       e1 1c           adc     r14, r1
    1e3e:       f1 1c           adc     r15, r1
    1e40:       80 e1           ldi     r24, 0x10       ; 16
    1e42:       90 e0           ldi     r25, 0x00       ; 0
    1e44:       c8 0e           add     r12, r24
    1e46:       d9 1e           adc     r13, r25
    1e48:       14 30           cpi     r17, 0x04       ; 4
    1e4a:       10 f3           brcs    .-60            ; 0x1e10 <show_parameter+0xce>
    1e4c:       2f c0           rjmp    .+94            ; 0x1eac <show_parameter+0x16a>
                        }
                        
                }
                if (number == 0)
    1e4e:       88 23           and     r24, r24
    1e50:       69 f5           brne    .+90            ; 0x1eac <show_parameter+0x16a>
                {
                        binary(p_buffer[8],bin);                                                                // Config
    1e52:       be 01           movw    r22, r28
    1e54:       66 5e           subi    r22, 0xE6       ; 230
    1e56:       7f 4f           sbci    r23, 0xFF       ; 255
    1e58:       80 91 6b 04     lds     r24, 0x046B
    1e5c:       0e 94 47 0e     call    0x1c8e <binary>
                        text[1] = 0x00;
    1e60:       9a 82           std     Y+2, r9 ; 0x02
                        for (i=0;i<8;i++)
    1e62:       19 2d           mov     r17, r9
    1e64:       8b ef           ldi     r24, 0xFB       ; 251
    1e66:       c8 2e           mov     r12, r24
    1e68:       89 e0           ldi     r24, 0x09       ; 9
    1e6a:       d8 2e           mov     r13, r24
    1e6c:       ee 24           eor     r14, r14
    1e6e:       ff 24           eor     r15, r15
                        {
                                text[0] = bin[i] + 0x30;
    1e70:       ce 01           movw    r24, r28
    1e72:       01 96           adiw    r24, 0x01       ; 1
    1e74:       f7 01           movw    r30, r14
    1e76:       e8 0f           add     r30, r24
    1e78:       f9 1f           adc     r31, r25
    1e7a:       21 8d           ldd     r18, Z+25       ; 0x19
    1e7c:       20 5d           subi    r18, 0xD0       ; 208
    1e7e:       29 83           std     Y+1, r18        ; 0x01
                                lcd_print_at(0,i,text,0);
    1e80:       20 e0           ldi     r18, 0x00       ; 0
    1e82:       ac 01           movw    r20, r24
    1e84:       61 2f           mov     r22, r17
    1e86:       82 2f           mov     r24, r18
    1e88:       0e 94 1d 09     call    0x123a <lcd_print_at>
                                lcd_print_atp(5,i,bin_parameter[i+4],0);
    1e8c:       20 e0           ldi     r18, 0x00       ; 0
    1e8e:       a6 01           movw    r20, r12
    1e90:       61 2f           mov     r22, r17
    1e92:       85 e0           ldi     r24, 0x05       ; 5
    1e94:       0e 94 e1 08     call    0x11c2 <lcd_print_atp>
    1e98:       1f 5f           subi    r17, 0xFF       ; 255
    1e9a:       08 94           sec
    1e9c:       e1 1c           adc     r14, r1
    1e9e:       f1 1c           adc     r15, r1
    1ea0:       e0 e1           ldi     r30, 0x10       ; 16
    1ea2:       f0 e0           ldi     r31, 0x00       ; 0
    1ea4:       ce 0e           add     r12, r30
    1ea6:       df 1e           adc     r13, r31
    1ea8:       18 30           cpi     r17, 0x08       ; 8
    1eaa:       10 f3           brcs    .-60            ; 0x1e70 <show_parameter+0x12e>
                        }
                }
                

        }
        return line;
}
    1eac:       89 2d           mov     r24, r9
    1eae:       99 27           eor     r25, r25
    1eb0:       a1 96           adiw    r28, 0x21       ; 33
    1eb2:       0f b6           in      r0, 0x3f        ; 63
    1eb4:       f8 94           cli
    1eb6:       de bf           out     0x3e, r29       ; 62
    1eb8:       0f be           out     0x3f, r0        ; 63
    1eba:       cd bf           out     0x3d, r28       ; 61
    1ebc:       df 91           pop     r29
    1ebe:       cf 91           pop     r28
    1ec0:       1f 91           pop     r17
    1ec2:       0f 91           pop     r16
    1ec4:       ff 90           pop     r15
    1ec6:       ef 90           pop     r14
    1ec8:       df 90           pop     r13
    1eca:       cf 90           pop     r12
    1ecc:       bf 90           pop     r11
    1ece:       af 90           pop     r10
    1ed0:       9f 90           pop     r9
    1ed2:       08 95           ret

00001ed4 <edit_parameter2>:

void edit_parameter2 (uint8_t page, uint8_t lines)                              // Ändern der Parameter einer Seite
{
    1ed4:       8f 92           push    r8
    1ed6:       9f 92           push    r9
    1ed8:       af 92           push    r10
    1eda:       bf 92           push    r11
    1edc:       df 92           push    r13
    1ede:       ef 92           push    r14
    1ee0:       ff 92           push    r15
    1ee2:       0f 93           push    r16
    1ee4:       1f 93           push    r17
    1ee6:       cf 93           push    r28
    1ee8:       df 93           push    r29
    1eea:       cd b7           in      r28, 0x3d       ; 61
    1eec:       de b7           in      r29, 0x3e       ; 62
    1eee:       62 97           sbiw    r28, 0x12       ; 18
    1ef0:       0f b6           in      r0, 0x3f        ; 63
    1ef2:       f8 94           cli
    1ef4:       de bf           out     0x3e, r29       ; 62
    1ef6:       0f be           out     0x3f, r0        ; 63
    1ef8:       cd bf           out     0x3d, r28       ; 61
    1efa:       d8 2e           mov     r13, r24
        uint8_t line;
        uint8_t par;
        uint8_t min;
        uint8_t max;
        uint8_t text[10];
        uint8_t bin[8];
        
        if (page > 1)                                                                                                   // "normale" Parameter-Seiten
    1efc:       81 e0           ldi     r24, 0x01       ; 1
    1efe:       8d 15           cp      r24, r13
    1f00:       08 f0           brcs    .+2             ; 0x1f04 <edit_parameter2+0x30>
    1f02:       55 c0           rjmp    .+170           ; 0x1fae <edit_parameter2+0xda>
        {
                line = menu_choose(0,lines-1,4);
    1f04:       61 50           subi    r22, 0x01       ; 1
    1f06:       44 e0           ldi     r20, 0x04       ; 4
    1f08:       80 e0           ldi     r24, 0x00       ; 0
    1f0a:       0e 94 86 11     call    0x230c <menu_choose>
    1f0e:       08 2f           mov     r16, r24
                if (line != 255)                                                                                // Wenn line == 255, wurde Escape gedrückt
    1f10:       8f 3f           cpi     r24, 0xFF       ; 255
    1f12:       09 f4           brne    .+2             ; 0x1f16 <edit_parameter2+0x42>
    1f14:       4c c0           rjmp    .+152           ; 0x1fae <edit_parameter2+0xda>
                {
                        par = p_buffer[array[line]];
    1f16:       e8 2e           mov     r14, r24
    1f18:       ff 24           eor     r15, r15
    1f1a:       f7 01           movw    r30, r14
    1f1c:       e1 58           subi    r30, 0x81       ; 129
    1f1e:       fa 4f           sbci    r31, 0xFA       ; 250
    1f20:       80 81           ld      r24, Z
    1f22:       e8 2f           mov     r30, r24
    1f24:       ff 27           eor     r31, r31
    1f26:       ed 59           subi    r30, 0x9D       ; 157
    1f28:       fb 4f           sbci    r31, 0xFB       ; 251
    1f2a:       10 81           ld      r17, Z
                        min = pgm_read_byte(p_limits + par * 3);
                        max = pgm_read_byte(p_limits + par * 3 + 1);
                        
                        lcd_print_atp(4,line,PSTR("-"),0);
    1f2c:       20 e0           ldi     r18, 0x00       ; 0
    1f2e:       49 e0           ldi     r20, 0x09       ; 9
    1f30:       5c e0           ldi     r21, 0x0C       ; 12
    1f32:       60 2f           mov     r22, r16
    1f34:       84 e0           ldi     r24, 0x04       ; 4
    1f36:       0e 94 e1 08     call    0x11c2 <lcd_print_atp>
                        
                        while (key != key_nokey);
    1f3a:       80 91 e6 04     lds     r24, 0x04E6
    1f3e:       88 23           and     r24, r24
    1f40:       e1 f7           brne    .-8             ; 0x1f3a <edit_parameter2+0x66>
                        
                        do
                        {
                                if (key == key_minus)
    1f42:       80 91 e6 04     lds     r24, 0x04E6
    1f46:       81 30           cpi     r24, 0x01       ; 1
    1f48:       09 f4           brne    .+2             ; 0x1f4c <edit_parameter2+0x78>
                                {
                                        //if (par > min)                                                        // Überprüfung der Parameter auf Bereichsüberschreitung derzeit deaktiviert
                                                par --;
    1f4a:       11 50           subi    r17, 0x01       ; 1
                                }
                                if (key == key_plus)
    1f4c:       80 91 e6 04     lds     r24, 0x04E6
    1f50:       82 30           cpi     r24, 0x02       ; 2
    1f52:       09 f4           brne    .+2             ; 0x1f56 <edit_parameter2+0x82>
                                {
                                        //if (par < max)
                                                par ++;
    1f54:       1f 5f           subi    r17, 0xFF       ; 255
                                }
                                
                                decimal(par,text);
    1f56:       be 01           movw    r22, r28
    1f58:       6f 5f           subi    r22, 0xFF       ; 255
    1f5a:       7f 4f           sbci    r23, 0xFF       ; 255
    1f5c:       81 2f           mov     r24, r17
    1f5e:       0e 94 7c 0e     call    0x1cf8 <decimal>
                                lcd_print_at(0,line,text,0);
    1f62:       20 e0           ldi     r18, 0x00       ; 0
    1f64:       ae 01           movw    r20, r28
    1f66:       4f 5f           subi    r20, 0xFF       ; 255
    1f68:       5f 4f           sbci    r21, 0xFF       ; 255
    1f6a:       60 2f           mov     r22, r16
    1f6c:       82 2f           mov     r24, r18
    1f6e:       0e 94 1d 09     call    0x123a <lcd_print_at>
                                
                                timer = 20;
    1f72:       84 e1           ldi     r24, 0x14       ; 20
    1f74:       80 93 61 00     sts     0x0061, r24
                                while (timer > 0);
    1f78:       80 91 61 00     lds     r24, 0x0061
    1f7c:       88 23           and     r24, r24
    1f7e:       e1 f7           brne    .-8             ; 0x1f78 <edit_parameter2+0xa4>
                        }
    1f80:       80 91 e6 04     lds     r24, 0x04E6
    1f84:       84 30           cpi     r24, 0x04       ; 4
    1f86:       21 f0           breq    .+8             ; 0x1f90 <edit_parameter2+0xbc>
    1f88:       80 91 e6 04     lds     r24, 0x04E6
    1f8c:       88 30           cpi     r24, 0x08       ; 8
    1f8e:       c9 f6           brne    .-78            ; 0x1f42 <edit_parameter2+0x6e>
                        while ((key != 0x04) && (key != 0x08));
                        
                        if (key == 0x08)
    1f90:       80 91 e6 04     lds     r24, 0x04E6
    1f94:       88 30           cpi     r24, 0x08       ; 8
    1f96:       59 f4           brne    .+22            ; 0x1fae <edit_parameter2+0xda>
                                p_buffer[array[line]] = par;
    1f98:       ef e7           ldi     r30, 0x7F       ; 127
    1f9a:       f5 e0           ldi     r31, 0x05       ; 5
    1f9c:       ee 0e           add     r14, r30
    1f9e:       ff 1e           adc     r15, r31
    1fa0:       f7 01           movw    r30, r14
    1fa2:       80 81           ld      r24, Z
    1fa4:       e8 2f           mov     r30, r24
    1fa6:       ff 27           eor     r31, r31
    1fa8:       ed 59           subi    r30, 0x9D       ; 157
    1faa:       fb 4f           sbci    r31, 0xFB       ; 251
    1fac:       10 83           st      Z, r17
                }
        }
        
        if (page == 1)                                                                                  // Spezialfall:  Loop-Config (einzelne Bits setzen / löschen)
    1fae:       f1 e0           ldi     r31, 0x01       ; 1
    1fb0:       df 16           cp      r13, r31
    1fb2:       09 f0           breq    .+2             ; 0x1fb6 <edit_parameter2+0xe2>
    1fb4:       6c c0           rjmp    .+216           ; 0x208e <edit_parameter2+0x1ba>
        {
                binary(p_buffer[52],bin);                                       
    1fb6:       6b e0           ldi     r22, 0x0B       ; 11
    1fb8:       86 2e           mov     r8, r22
    1fba:       91 2c           mov     r9, r1
    1fbc:       8c 0e           add     r8, r28
    1fbe:       9d 1e           adc     r9, r29
    1fc0:       b4 01           movw    r22, r8
    1fc2:       80 91 97 04     lds     r24, 0x0497
    1fc6:       0e 94 47 0e     call    0x1c8e <binary>
                text[1] = 0x00;
    1fca:       1a 82           std     Y+2, r1 ; 0x02

                line = menu_choose(0,3,4);
    1fcc:       44 e0           ldi     r20, 0x04       ; 4
    1fce:       63 e0           ldi     r22, 0x03       ; 3
    1fd0:       8a 81           ldd     r24, Y+2        ; 0x02
    1fd2:       0e 94 86 11     call    0x230c <menu_choose>
    1fd6:       08 2f           mov     r16, r24
                if (line != 255)                                                                        // Wenn line == 255, wurde Escape gedrückt
    1fd8:       8f 3f           cpi     r24, 0xFF       ; 255
    1fda:       09 f4           brne    .+2             ; 0x1fde <edit_parameter2+0x10a>
    1fdc:       c6 c0           rjmp    .+396           ; 0x216a <edit_parameter2+0x296>
                {
                        par = bin[line];
    1fde:       e8 2e           mov     r14, r24
    1fe0:       ff 24           eor     r15, r15
    1fe2:       5e 01           movw    r10, r28
    1fe4:       08 94           sec
    1fe6:       a1 1c           adc     r10, r1
    1fe8:       b1 1c           adc     r11, r1
    1fea:       f7 01           movw    r30, r14
    1fec:       ea 0d           add     r30, r10
    1fee:       fb 1d           adc     r31, r11
    1ff0:       12 85           ldd     r17, Z+10       ; 0x0a
        
                        lcd_print_atp(4,line,PSTR("-"),0);
    1ff2:       20 e0           ldi     r18, 0x00       ; 0
    1ff4:       4b e0           ldi     r20, 0x0B       ; 11
    1ff6:       5c e0           ldi     r21, 0x0C       ; 12
    1ff8:       68 2f           mov     r22, r24
    1ffa:       84 e0           ldi     r24, 0x04       ; 4
    1ffc:       0e 94 e1 08     call    0x11c2 <lcd_print_atp>
                        
                        do
                        {
                        
                                if (key == key_minus)
    2000:       80 91 e6 04     lds     r24, 0x04E6
    2004:       81 30           cpi     r24, 0x01       ; 1
    2006:       09 f4           brne    .+2             ; 0x200a <edit_parameter2+0x136>
                                {
                                        par = 0x00;
    2008:       10 e0           ldi     r17, 0x00       ; 0
                                }
                                if (key == key_plus)
    200a:       80 91 e6 04     lds     r24, 0x04E6
    200e:       82 30           cpi     r24, 0x02       ; 2
    2010:       09 f4           brne    .+2             ; 0x2014 <edit_parameter2+0x140>
                                {
                                        par = 0x01;
    2012:       11 e0           ldi     r17, 0x01       ; 1
                                }
                                
                                text[0] = par+0x30;
    2014:       10 5d           subi    r17, 0xD0       ; 208
    2016:       19 83           std     Y+1, r17        ; 0x01
    2018:       10 53           subi    r17, 0x30       ; 48
                                lcd_print_at(0,line,text,0);
    201a:       20 e0           ldi     r18, 0x00       ; 0
    201c:       ae 01           movw    r20, r28
    201e:       4f 5f           subi    r20, 0xFF       ; 255
    2020:       5f 4f           sbci    r21, 0xFF       ; 255
    2022:       60 2f           mov     r22, r16
    2024:       82 2f           mov     r24, r18
    2026:       0e 94 1d 09     call    0x123a <lcd_print_at>
                                timer = 20;
    202a:       84 e1           ldi     r24, 0x14       ; 20
    202c:       80 93 61 00     sts     0x0061, r24
                                while (timer > 0);
    2030:       d0 90 61 00     lds     r13, 0x0061
    2034:       dd 20           and     r13, r13
    2036:       e1 f7           brne    .-8             ; 0x2030 <edit_parameter2+0x15c>
        
                        
                        }
    2038:       80 91 e6 04     lds     r24, 0x04E6
    203c:       88 30           cpi     r24, 0x08       ; 8
    203e:       21 f0           breq    .+8             ; 0x2048 <edit_parameter2+0x174>
    2040:       80 91 e6 04     lds     r24, 0x04E6
    2044:       84 30           cpi     r24, 0x04       ; 4
    2046:       e1 f6           brne    .-72            ; 0x2000 <edit_parameter2+0x12c>
                        while ((key != key_enter) && (key != key_esc));
        
                        if (key == key_enter)
    2048:       80 91 e6 04     lds     r24, 0x04E6
    204c:       88 30           cpi     r24, 0x08       ; 8
    204e:       49 f4           brne    .+18            ; 0x2062 <edit_parameter2+0x18e>
                        {
                                bin[line] = par;
    2050:       ea 0c           add     r14, r10
    2052:       fb 1c           adc     r15, r11
    2054:       f7 01           movw    r30, r14
    2056:       12 87           std     Z+10, r17       ; 0x0a
                                p_buffer[52] = bindec(bin);
    2058:       c4 01           movw    r24, r8
    205a:       0e 94 62 0e     call    0x1cc4 <bindec>
    205e:       80 93 97 04     sts     0x0497, r24
                        }
        
                        lcd_cls();
    2062:       0e 94 36 07     call    0xe6c <lcd_cls>
                        decimal(p_buffer[52],text);
    2066:       be 01           movw    r22, r28
    2068:       6f 5f           subi    r22, 0xFF       ; 255
    206a:       7f 4f           sbci    r23, 0xFF       ; 255
    206c:       80 91 97 04     lds     r24, 0x0497
    2070:       0e 94 7c 0e     call    0x1cf8 <decimal>
                        lcd_print(text,0);
    2074:       6d 2d           mov     r22, r13
    2076:       ce 01           movw    r24, r28
    2078:       01 96           adiw    r24, 0x01       ; 1
    207a:       0e 94 ea 08     call    0x11d4 <lcd_print>
                        timer = 200;
    207e:       88 ec           ldi     r24, 0xC8       ; 200
    2080:       80 93 61 00     sts     0x0061, r24
                        while(timer > 0);
    2084:       80 91 61 00     lds     r24, 0x0061
    2088:       88 23           and     r24, r24
    208a:       e1 f7           brne    .-8             ; 0x2084 <edit_parameter2+0x1b0>
    208c:       6e c0           rjmp    .+220           ; 0x216a <edit_parameter2+0x296>
                }
        }
        if (page == 0)                                                                                                  // Spezialfall: Allgemeine Konfiguration (einzelne Bits setzen/löschen)
    208e:       dd 20           and     r13, r13
    2090:       09 f0           breq    .+2             ; 0x2094 <edit_parameter2+0x1c0>
    2092:       6b c0           rjmp    .+214           ; 0x216a <edit_parameter2+0x296>
        {
                binary(p_buffer[8],bin);                                        
    2094:       5b e0           ldi     r21, 0x0B       ; 11
    2096:       85 2e           mov     r8, r21
    2098:       91 2c           mov     r9, r1
    209a:       8c 0e           add     r8, r28
    209c:       9d 1e           adc     r9, r29
    209e:       b4 01           movw    r22, r8
    20a0:       80 91 6b 04     lds     r24, 0x046B
    20a4:       0e 94 47 0e     call    0x1c8e <binary>
                text[1] = 0x00;
    20a8:       da 82           std     Y+2, r13        ; 0x02

                line = menu_choose(0,7,4);
    20aa:       44 e0           ldi     r20, 0x04       ; 4
    20ac:       67 e0           ldi     r22, 0x07       ; 7
    20ae:       8d 2d           mov     r24, r13
    20b0:       0e 94 86 11     call    0x230c <menu_choose>
    20b4:       08 2f           mov     r16, r24
                if (line != 255)                                                                                        // Wenn line == 255, wurde Escape gedrückt
    20b6:       8f 3f           cpi     r24, 0xFF       ; 255
    20b8:       09 f4           brne    .+2             ; 0x20bc <edit_parameter2+0x1e8>
    20ba:       57 c0           rjmp    .+174           ; 0x216a <edit_parameter2+0x296>
                {
                        par = bin[line];
    20bc:       e8 2e           mov     r14, r24
    20be:       ff 24           eor     r15, r15
    20c0:       5e 01           movw    r10, r28
    20c2:       08 94           sec
    20c4:       a1 1c           adc     r10, r1
    20c6:       b1 1c           adc     r11, r1
    20c8:       f7 01           movw    r30, r14
    20ca:       ea 0d           add     r30, r10
    20cc:       fb 1d           adc     r31, r11
    20ce:       12 85           ldd     r17, Z+10       ; 0x0a
        
                        lcd_print_atp(4,line,PSTR("-"),0);
    20d0:       2d 2d           mov     r18, r13
    20d2:       4d e0           ldi     r20, 0x0D       ; 13
    20d4:       5c e0           ldi     r21, 0x0C       ; 12
    20d6:       68 2f           mov     r22, r24
    20d8:       84 e0           ldi     r24, 0x04       ; 4
    20da:       0e 94 e1 08     call    0x11c2 <lcd_print_atp>
                        
                        do
                        {
                        
                                if (key == key_minus)
    20de:       80 91 e6 04     lds     r24, 0x04E6
    20e2:       81 30           cpi     r24, 0x01       ; 1
    20e4:       09 f4           brne    .+2             ; 0x20e8 <edit_parameter2+0x214>
                                {
                                        par = 0x00;
    20e6:       10 e0           ldi     r17, 0x00       ; 0
                                }
                                if (key == key_plus)
    20e8:       80 91 e6 04     lds     r24, 0x04E6
    20ec:       82 30           cpi     r24, 0x02       ; 2
    20ee:       09 f4           brne    .+2             ; 0x20f2 <edit_parameter2+0x21e>
                                {
                                        par = 0x01;
    20f0:       11 e0           ldi     r17, 0x01       ; 1
                                }
                                
                                text[0] = par+0x30;
    20f2:       10 5d           subi    r17, 0xD0       ; 208
    20f4:       19 83           std     Y+1, r17        ; 0x01
    20f6:       10 53           subi    r17, 0x30       ; 48
                                lcd_print_at(0,line,text,0);
    20f8:       20 e0           ldi     r18, 0x00       ; 0
    20fa:       ae 01           movw    r20, r28
    20fc:       4f 5f           subi    r20, 0xFF       ; 255
    20fe:       5f 4f           sbci    r21, 0xFF       ; 255
    2100:       60 2f           mov     r22, r16
    2102:       82 2f           mov     r24, r18
    2104:       0e 94 1d 09     call    0x123a <lcd_print_at>
                                timer = 20;
    2108:       84 e1           ldi     r24, 0x14       ; 20
    210a:       80 93 61 00     sts     0x0061, r24
                                while (timer > 0);
    210e:       d0 90 61 00     lds     r13, 0x0061
    2112:       dd 20           and     r13, r13
    2114:       e1 f7           brne    .-8             ; 0x210e <edit_parameter2+0x23a>
        
                        
                        }
    2116:       80 91 e6 04     lds     r24, 0x04E6
    211a:       88 30           cpi     r24, 0x08       ; 8
    211c:       21 f0           breq    .+8             ; 0x2126 <edit_parameter2+0x252>
    211e:       80 91 e6 04     lds     r24, 0x04E6
    2122:       84 30           cpi     r24, 0x04       ; 4
    2124:       e1 f6           brne    .-72            ; 0x20de <edit_parameter2+0x20a>
                        while ((key != key_enter) && (key != key_esc));
        
                        if (key == key_enter)
    2126:       80 91 e6 04     lds     r24, 0x04E6
    212a:       88 30           cpi     r24, 0x08       ; 8
    212c:       49 f4           brne    .+18            ; 0x2140 <edit_parameter2+0x26c>
                        {
                                bin[line] = par;
    212e:       ea 0c           add     r14, r10
    2130:       fb 1c           adc     r15, r11
    2132:       f7 01           movw    r30, r14
    2134:       12 87           std     Z+10, r17       ; 0x0a
                                p_buffer[8] = bindec(bin);
    2136:       c4 01           movw    r24, r8
    2138:       0e 94 62 0e     call    0x1cc4 <bindec>
    213c:       80 93 6b 04     sts     0x046B, r24
                        }
                        
                        lcd_cls();
    2140:       0e 94 36 07     call    0xe6c <lcd_cls>
                        decimal(p_buffer[8],text);
    2144:       be 01           movw    r22, r28
    2146:       6f 5f           subi    r22, 0xFF       ; 255
    2148:       7f 4f           sbci    r23, 0xFF       ; 255
    214a:       80 91 6b 04     lds     r24, 0x046B
    214e:       0e 94 7c 0e     call    0x1cf8 <decimal>
                        lcd_print(text,0);
    2152:       6d 2d           mov     r22, r13
    2154:       ce 01           movw    r24, r28
    2156:       01 96           adiw    r24, 0x01       ; 1
    2158:       0e 94 ea 08     call    0x11d4 <lcd_print>
                        timer = 200;
    215c:       88 ec           ldi     r24, 0xC8       ; 200
    215e:       80 93 61 00     sts     0x0061, r24
                        while(timer > 0);
    2162:       80 91 61 00     lds     r24, 0x0061
    2166:       88 23           and     r24, r24
    2168:       e1 f7           brne    .-8             ; 0x2162 <edit_parameter2+0x28e>
    216a:       62 96           adiw    r28, 0x12       ; 18
    216c:       0f b6           in      r0, 0x3f        ; 63
    216e:       f8 94           cli
    2170:       de bf           out     0x3e, r29       ; 62
    2172:       0f be           out     0x3f, r0        ; 63
    2174:       cd bf           out     0x3d, r28       ; 61
    2176:       df 91           pop     r29
    2178:       cf 91           pop     r28
    217a:       1f 91           pop     r17
    217c:       0f 91           pop     r16
    217e:       ff 90           pop     r15
    2180:       ef 90           pop     r14
    2182:       df 90           pop     r13
    2184:       bf 90           pop     r11
    2186:       af 90           pop     r10
    2188:       9f 90           pop     r9
    218a:       8f 90           pop     r8
    218c:       08 95           ret

0000218e <edit_parameter>:
                }
        }
}


void edit_parameter (void)                                              // Blättert die Parameter seitenweise durch, Einsprung vom Hauptmenü
{
    218e:       1f 93           push    r17
    2190:       cf 93           push    r28
    2192:       df 93           push    r29
    2194:       cd b7           in      r28, 0x3d       ; 61
    2196:       de b7           in      r29, 0x3e       ; 62
    2198:       2f 97           sbiw    r28, 0x0f       ; 15
    219a:       0f b6           in      r0, 0x3f        ; 63
    219c:       f8 94           cli
    219e:       de bf           out     0x3e, r29       ; 62
    21a0:       0f be           out     0x3f, r0        ; 63
    21a2:       cd bf           out     0x3d, r28       ; 61
        uint8_t page;                                                           // 12 Pages
        uint8_t text[15];
        uint8_t lines;
        uint8_t parameter;
        
        lcd_cls();
    21a4:       0e 94 36 07     call    0xe6c <lcd_cls>
        
        lcd_printp(PSTR("Lade Parameter\r\n"),0);
    21a8:       60 e0           ldi     r22, 0x00       ; 0
    21aa:       8f e0           ldi     r24, 0x0F       ; 15
    21ac:       9c e0           ldi     r25, 0x0C       ; 12
    21ae:       0e 94 aa 08     call    0x1154 <lcd_printp>
        lcd_printp(PSTR(" 1:\r\n"),0);
    21b2:       60 e0           ldi     r22, 0x00       ; 0
    21b4:       80 e2           ldi     r24, 0x20       ; 32
    21b6:       9c e0           ldi     r25, 0x0C       ; 12
    21b8:       0e 94 aa 08     call    0x1154 <lcd_printp>
        lcd_printp(PSTR(" 2:\r\n"),0);
    21bc:       60 e0           ldi     r22, 0x00       ; 0
    21be:       86 e2           ldi     r24, 0x26       ; 38
    21c0:       9c e0           ldi     r25, 0x0C       ; 12
    21c2:       0e 94 aa 08     call    0x1154 <lcd_printp>
        lcd_printp(PSTR(" 3:\r\n"),0);
    21c6:       60 e0           ldi     r22, 0x00       ; 0
    21c8:       8c e2           ldi     r24, 0x2C       ; 44
    21ca:       9c e0           ldi     r25, 0x0C       ; 12
    21cc:       0e 94 aa 08     call    0x1154 <lcd_printp>
        lcd_printp(PSTR(" 4:\r\n"),0);
    21d0:       60 e0           ldi     r22, 0x00       ; 0
    21d2:       82 e3           ldi     r24, 0x32       ; 50
    21d4:       9c e0           ldi     r25, 0x0C       ; 12
    21d6:       0e 94 aa 08     call    0x1154 <lcd_printp>
        lcd_printp(PSTR(" 5:\r\n"),0);
    21da:       60 e0           ldi     r22, 0x00       ; 0
    21dc:       88 e3           ldi     r24, 0x38       ; 56
    21de:       9c e0           ldi     r25, 0x0C       ; 12
    21e0:       0e 94 aa 08     call    0x1154 <lcd_printp>
        
        parameter = menu_choose(1,5,0);
    21e4:       40 e0           ldi     r20, 0x00       ; 0
    21e6:       65 e0           ldi     r22, 0x05       ; 5
    21e8:       81 e0           ldi     r24, 0x01       ; 1
    21ea:       0e 94 86 11     call    0x230c <menu_choose>

        page = 2;
    21ee:       12 e0           ldi     r17, 0x02       ; 2
        if (read_parameter(parameter) == 1)
    21f0:       0e 94 02 0e     call    0x1c04 <read_parameter>
    21f4:       81 30           cpi     r24, 0x01       ; 1
    21f6:       41 f4           brne    .+16            ; 0x2208 <edit_parameter+0x7a>
        {
                lcd_print_atp(0,6,PSTR("Timeout"),0);
    21f8:       20 e0           ldi     r18, 0x00       ; 0
    21fa:       4e e3           ldi     r20, 0x3E       ; 62
    21fc:       5c e0           ldi     r21, 0x0C       ; 12
    21fe:       66 e0           ldi     r22, 0x06       ; 6
    2200:       82 2f           mov     r24, r18
    2202:       0e 94 e1 08     call    0x11c2 <lcd_print_atp>
    2206:       5c c0           rjmp    .+184           ; 0x22c0 <edit_parameter+0x132>
        }
        else
        {
                do
                {
                        lcd_cls();
    2208:       0e 94 36 07     call    0xe6c <lcd_cls>
                        utoa(page,text,10);
    220c:       4a e0           ldi     r20, 0x0A       ; 10
    220e:       50 e0           ldi     r21, 0x00       ; 0
    2210:       be 01           movw    r22, r28
    2212:       6f 5f           subi    r22, 0xFF       ; 255
    2214:       7f 4f           sbci    r23, 0xFF       ; 255
    2216:       81 2f           mov     r24, r17
    2218:       99 27           eor     r25, r25
    221a:       0e 94 f0 12     call    0x25e0 <utoa>
                        lcd_print(text,0);
    221e:       60 e0           ldi     r22, 0x00       ; 0
    2220:       ce 01           movw    r24, r28
    2222:       01 96           adiw    r24, 0x01       ; 1
    2224:       0e 94 ea 08     call    0x11d4 <lcd_print>
                        timer = 50;
    2228:       82 e3           ldi     r24, 0x32       ; 50
    222a:       80 93 61 00     sts     0x0061, r24
                        
                        while (timer > 0);
    222e:       80 91 61 00     lds     r24, 0x0061
    2232:       88 23           and     r24, r24
    2234:       e1 f7           brne    .-8             ; 0x222e <edit_parameter+0xa0>
                        
                        lcd_cls();
    2236:       0e 94 36 07     call    0xe6c <lcd_cls>
                        
                        lines = show_parameter(page);
    223a:       81 2f           mov     r24, r17
    223c:       0e 94 a1 0e     call    0x1d42 <show_parameter>
    2240:       68 2f           mov     r22, r24
                        
                        while (key == key_nokey);
    2242:       80 91 e6 04     lds     r24, 0x04E6
    2246:       88 23           and     r24, r24
    2248:       e1 f3           breq    .-8             ; 0x2242 <edit_parameter+0xb4>
                        if (key == key_plus)
    224a:       80 91 e6 04     lds     r24, 0x04E6
    224e:       82 30           cpi     r24, 0x02       ; 2
    2250:       09 f4           brne    .+2             ; 0x2254 <edit_parameter+0xc6>
                                page++;
    2252:       1f 5f           subi    r17, 0xFF       ; 255
                        if (key == key_minus)
    2254:       80 91 e6 04     lds     r24, 0x04E6
    2258:       81 30           cpi     r24, 0x01       ; 1
    225a:       09 f4           brne    .+2             ; 0x225e <edit_parameter+0xd0>
                                page--;
    225c:       11 50           subi    r17, 0x01       ; 1
                                
                        if (page == 255)
    225e:       1f 3f           cpi     r17, 0xFF       ; 255
    2260:       11 f4           brne    .+4             ; 0x2266 <edit_parameter+0xd8>
                                page = 12;
    2262:       1c e0           ldi     r17, 0x0C       ; 12
    2264:       03 c0           rjmp    .+6             ; 0x226c <edit_parameter+0xde>
                                
                        if (page > 12)
    2266:       1d 30           cpi     r17, 0x0D       ; 13
    2268:       08 f0           brcs    .+2             ; 0x226c <edit_parameter+0xde>
                                page = 0;
    226a:       10 e0           ldi     r17, 0x00       ; 0
                        
                        if (key == key_enter)
    226c:       80 91 e6 04     lds     r24, 0x04E6
    2270:       88 30           cpi     r24, 0x08       ; 8
    2272:       19 f4           brne    .+6             ; 0x227a <edit_parameter+0xec>
                                edit_parameter2(page,lines);
    2274:       81 2f           mov     r24, r17
    2276:       0e 94 6a 0f     call    0x1ed4 <edit_parameter2>
                
                }
    227a:       80 91 e6 04     lds     r24, 0x04E6
    227e:       84 30           cpi     r24, 0x04       ; 4
    2280:       19 f6           brne    .-122           ; 0x2208 <edit_parameter+0x7a>
                while (key != key_esc);
                
                lcd_cls();
    2282:       0e 94 36 07     call    0xe6c <lcd_cls>
                lcd_printp(PSTR("Parameter speichern?\r\n  ja\r\n  nein"),0);
    2286:       60 e0           ldi     r22, 0x00       ; 0
    2288:       86 e4           ldi     r24, 0x46       ; 70
    228a:       9c e0           ldi     r25, 0x0C       ; 12
    228c:       0e 94 aa 08     call    0x1154 <lcd_printp>
                
                lines = menu_choose(1,2,0);
    2290:       40 e0           ldi     r20, 0x00       ; 0
    2292:       62 e0           ldi     r22, 0x02       ; 2
    2294:       81 e0           ldi     r24, 0x01       ; 1
    2296:       0e 94 86 11     call    0x230c <menu_choose>
                
                if (lines == 1 )
    229a:       81 30           cpi     r24, 0x01       ; 1
    229c:       61 f4           brne    .+24            ; 0x22b6 <edit_parameter+0x128>
                {
                        lcd_printp(PSTR("\r\n--->"),0);
    229e:       60 e0           ldi     r22, 0x00       ; 0
    22a0:       89 e6           ldi     r24, 0x69       ; 105
    22a2:       9c e0           ldi     r25, 0x0C       ; 12
    22a4:       0e 94 aa 08     call    0x1154 <lcd_printp>
                        write_parameter(5);                                                                     // Sicherheitshalber wird derzeit ausschließlich auf Parametersatz 5 gesichert.
    22a8:       85 e0           ldi     r24, 0x05       ; 5
    22aa:       0e 94 2c 0e     call    0x1c58 <write_parameter>
                        lcd_printp(PSTR("\r\nParameter gespeichert"),0);
    22ae:       60 e0           ldi     r22, 0x00       ; 0
    22b0:       80 e7           ldi     r24, 0x70       ; 112
    22b2:       9c e0           ldi     r25, 0x0C       ; 12
    22b4:       03 c0           rjmp    .+6             ; 0x22bc <edit_parameter+0x12e>
                }
                else
                {
                        lcd_printp(PSTR("\r\nNicht gespeichert"),0);
    22b6:       60 e0           ldi     r22, 0x00       ; 0
    22b8:       88 e8           ldi     r24, 0x88       ; 136
    22ba:       9c e0           ldi     r25, 0x0C       ; 12
    22bc:       0e 94 aa 08     call    0x1154 <lcd_printp>
                }
        }
        timer = 100;
    22c0:       84 e6           ldi     r24, 0x64       ; 100
    22c2:       80 93 61 00     sts     0x0061, r24
        while(timer > 0);
    22c6:       80 91 61 00     lds     r24, 0x0061
    22ca:       88 23           and     r24, r24
    22cc:       e1 f7           brne    .-8             ; 0x22c6 <edit_parameter+0x138>
    22ce:       2f 96           adiw    r28, 0x0f       ; 15
    22d0:       0f b6           in      r0, 0x3f        ; 63
    22d2:       f8 94           cli
    22d4:       de bf           out     0x3e, r29       ; 62
    22d6:       0f be           out     0x3f, r0        ; 63
    22d8:       cd bf           out     0x3d, r28       ; 61
    22da:       df 91           pop     r29
    22dc:       cf 91           pop     r28
    22de:       1f 91           pop     r17
    22e0:       08 95           ret

000022e2 <menu_set_cursor>:

// Subroutine für den Stern (*) bzw. Cursor

void menu_set_cursor (uint8_t before, uint8_t line, uint8_t pos)
{
    22e2:       0f 93           push    r16
    22e4:       1f 93           push    r17
    22e6:       06 2f           mov     r16, r22
    22e8:       14 2f           mov     r17, r20
        lcd_print_atp(pos,before,PSTR(" "),0);                                                                  // Die vorhergehende Position löschen
    22ea:       20 e0           ldi     r18, 0x00       ; 0
    22ec:       4c e9           ldi     r20, 0x9C       ; 156
    22ee:       5c e0           ldi     r21, 0x0C       ; 12
    22f0:       68 2f           mov     r22, r24
    22f2:       81 2f           mov     r24, r17
    22f4:       0e 94 e1 08     call    0x11c2 <lcd_print_atp>
        lcd_print_atp(pos,line,PSTR("*"),0);                                                                    // Den Cursor an der aktuellen Position anzeigen
    22f8:       20 e0           ldi     r18, 0x00       ; 0
    22fa:       4e e9           ldi     r20, 0x9E       ; 158
    22fc:       5c e0           ldi     r21, 0x0C       ; 12
    22fe:       60 2f           mov     r22, r16
    2300:       81 2f           mov     r24, r17
    2302:       0e 94 e1 08     call    0x11c2 <lcd_print_atp>
    2306:       1f 91           pop     r17
    2308:       0f 91           pop     r16
    230a:       08 95           ret

0000230c <menu_choose>:
}


// Zeigt einen Stern (*) an der x-Position <pos> an, y-Position von min bis max.
// Mit der +/- Taste kann ein Menü-Punkt ausgewählt und mit (Enter) bestätigt werden.
// Die Zeilennummer des aktuellen Menüpunkts wird zurückgegeben.

uint8_t menu_choose (uint8_t min, uint8_t max, uint8_t pos)
{
    230c:       ef 92           push    r14
    230e:       ff 92           push    r15
    2310:       0f 93           push    r16
    2312:       1f 93           push    r17
    2314:       cf 93           push    r28
    2316:       f8 2e           mov     r15, r24
    2318:       e6 2e           mov     r14, r22
    231a:       04 2f           mov     r16, r20
        uint8_t line, before;
        
        line = min;
    231c:       c8 2f           mov     r28, r24
        before = min;
    231e:       18 2f           mov     r17, r24
        menu_set_cursor(line,line,pos);
    2320:       68 2f           mov     r22, r24
    2322:       0e 94 71 11     call    0x22e2 <menu_set_cursor>
        
        do
        {
                while (key != key_nokey);
    2326:       80 91 e6 04     lds     r24, 0x04E6
    232a:       88 23           and     r24, r24
    232c:       e1 f7           brne    .-8             ; 0x2326 <menu_choose+0x1a>
                while(key == key_nokey);
    232e:       80 91 e6 04     lds     r24, 0x04E6
    2332:       88 23           and     r24, r24
    2334:       e1 f3           breq    .-8             ; 0x232e <menu_choose+0x22>
                
                if ((key == key_plus) && (line < max))
    2336:       80 91 e6 04     lds     r24, 0x04E6
    233a:       82 30           cpi     r24, 0x02       ; 2
    233c:       19 f4           brne    .+6             ; 0x2344 <menu_choose+0x38>
    233e:       ce 15           cp      r28, r14
    2340:       08 f4           brcc    .+2             ; 0x2344 <menu_choose+0x38>
                        line ++;
    2342:       cf 5f           subi    r28, 0xFF       ; 255
                if ((key == key_minus) && (line > min))
    2344:       80 91 e6 04     lds     r24, 0x04E6
    2348:       81 30           cpi     r24, 0x01       ; 1
    234a:       19 f4           brne    .+6             ; 0x2352 <menu_choose+0x46>
    234c:       fc 16           cp      r15, r28
    234e:       08 f4           brcc    .+2             ; 0x2352 <menu_choose+0x46>
                        line --;
    2350:       c1 50           subi    r28, 0x01       ; 1

                menu_set_cursor(before,line,pos);
    2352:       40 2f           mov     r20, r16
    2354:       6c 2f           mov     r22, r28
    2356:       81 2f           mov     r24, r17
    2358:       0e 94 71 11     call    0x22e2 <menu_set_cursor>
                before = line;
    235c:       1c 2f           mov     r17, r28
        }
    235e:       80 91 e6 04     lds     r24, 0x04E6
    2362:       88 30           cpi     r24, 0x08       ; 8
    2364:       21 f0           breq    .+8             ; 0x236e <menu_choose+0x62>
    2366:       80 91 e6 04     lds     r24, 0x04E6
    236a:       84 30           cpi     r24, 0x04       ; 4
    236c:       e1 f6           brne    .-72            ; 0x2326 <menu_choose+0x1a>
        while ((key != key_enter) && (key != key_esc));                         // Schleife wiederholen, bis (Enter) / Esc gedrückt wurde
        if (key == key_esc)
    236e:       80 91 e6 04     lds     r24, 0x04E6
    2372:       84 30           cpi     r24, 0x04       ; 4
    2374:       09 f4           brne    .+2             ; 0x2378 <menu_choose+0x6c>
                line = 255;
    2376:       cf ef           ldi     r28, 0xFF       ; 255
        while (key != key_nokey);                                                                       // Warten, bis Taste wieder losgelassen wurde
    2378:       80 91 e6 04     lds     r24, 0x04E6
    237c:       88 23           and     r24, r24
    237e:       e1 f7           brne    .-8             ; 0x2378 <menu_choose+0x6c>
        return line;
}
    2380:       8c 2f           mov     r24, r28
    2382:       99 27           eor     r25, r25
    2384:       cf 91           pop     r28
    2386:       1f 91           pop     r17
    2388:       0f 91           pop     r16
    238a:       ff 90           pop     r15
    238c:       ef 90           pop     r14
    238e:       08 95           ret

00002390 <main_menu>:

void main_menu (void)
{
        lcd_cls();
    2390:       0e 94 36 07     call    0xe6c <lcd_cls>
        lcd_printp(PSTR("Hauptmenü(BETA V0.1)\r\n"),0);
    2394:       60 e0           ldi     r22, 0x00       ; 0
    2396:       80 ea           ldi     r24, 0xA0       ; 160
    2398:       9c e0           ldi     r25, 0x0C       ; 12
    239a:       0e 94 aa 08     call    0x1154 <lcd_printp>
        lcd_printp(PSTR("\r\nDisplay\r\n"),0);
    239e:       60 e0           ldi     r22, 0x00       ; 0
    23a0:       87 eb           ldi     r24, 0xB7       ; 183
    23a2:       9c e0           ldi     r25, 0x0C       ; 12
    23a4:       0e 94 aa 08     call    0x1154 <lcd_printp>
        lcd_printp(PSTR("Parameter\r\n"),0);
    23a8:       60 e0           ldi     r22, 0x00       ; 0
    23aa:       83 ec           ldi     r24, 0xC3       ; 195
    23ac:       9c e0           ldi     r25, 0x0C       ; 12
    23ae:       0e 94 aa 08     call    0x1154 <lcd_printp>
        lcd_printp(PSTR("Motortest"),0);
    23b2:       60 e0           ldi     r22, 0x00       ; 0
    23b4:       8f ec           ldi     r24, 0xCF       ; 207
    23b6:       9c e0           ldi     r25, 0x0C       ; 12
    23b8:       0e 94 aa 08     call    0x1154 <lcd_printp>
        
        switch(menu_choose(2,4,10))
    23bc:       4a e0           ldi     r20, 0x0A       ; 10
    23be:       64 e0           ldi     r22, 0x04       ; 4
    23c0:       82 e0           ldi     r24, 0x02       ; 2
    23c2:       0e 94 86 11     call    0x230c <menu_choose>
    23c6:       99 27           eor     r25, r25
    23c8:       83 30           cpi     r24, 0x03       ; 3
    23ca:       91 05           cpc     r25, r1
    23cc:       61 f0           breq    .+24            ; 0x23e6 <main_menu+0x56>
    23ce:       84 30           cpi     r24, 0x04       ; 4
    23d0:       91 05           cpc     r25, r1
    23d2:       1c f4           brge    .+6             ; 0x23da <main_menu+0x4a>
    23d4:       02 97           sbiw    r24, 0x02       ; 2
    23d6:       21 f0           breq    .+8             ; 0x23e0 <main_menu+0x50>
    23d8:       08 95           ret
    23da:       04 97           sbiw    r24, 0x04       ; 4
    23dc:       39 f0           breq    .+14            ; 0x23ec <main_menu+0x5c>
    23de:       08 95           ret
        {
                case 2:
                        display_data();                                                                 // LCD-Modus
    23e0:       0e 94 23 12     call    0x2446 <display_data>
                        break;
    23e4:       08 95           ret
                case 3:
                        edit_parameter();                                                               // Parameter (Settings) laden/editieren
    23e6:       0e 94 c7 10     call    0x218e <edit_parameter>
                        break;
    23ea:       08 95           ret
                case 4:
                        motor_test();                                                                   // primitiver Motor-Test
    23ec:       0e 94 83 12     call    0x2506 <motor_test>
    23f0:       08 95           ret

000023f2 <read_display>:
#include "parameter.h"
#include "menu.h"

uint8_t read_display (uint8_t command)                  // 
{
    23f2:       cf 93           push    r28
        uint8_t timeout;
        
        timeout = 0;
    23f4:       c0 e0           ldi     r28, 0x00       ; 0
        p_buffer[0] = '#';                                                      // Display-Zeile anfordern
    23f6:       93 e2           ldi     r25, 0x23       ; 35
    23f8:       90 93 63 04     sts     0x0463, r25
        p_buffer[1] = 'a';
    23fc:       91 e6           ldi     r25, 0x61       ; 97
    23fe:       90 93 64 04     sts     0x0464, r25
        p_buffer[2] = 'h';
    2402:       98 e6           ldi     r25, 0x68       ; 104
    2404:       90 93 65 04     sts     0x0465, r25
        p_buffer[3] = command;
    2408:       80 93 66 04     sts     0x0466, r24
        p_buffer[4] = 0;
    240c:       c0 93 67 04     sts     0x0467, r28
        p_buffer[5] = 0;
    2410:       c0 93 68 04     sts     0x0468, r28
        base64_send(6);
    2414:       86 e0           ldi     r24, 0x06       ; 6
    2416:       0e 94 bc 0c     call    0x1978 <base64_send>
        
        do                                                                                      // warten, bis die Parameter gesendet werden
        {
                if (get_message() == 1)
    241a:       0e 94 95 0c     call    0x192a <get_message>
    241e:       81 30           cpi     r24, 0x01       ; 1
    2420:       09 f4           brne    .+2             ; 0x2424 <read_display+0x32>
                        timeout = 10;
    2422:       ca e0           ldi     r28, 0x0A       ; 10
                timeout ++;
    2424:       cf 5f           subi    r28, 0xFF       ; 255
        }
    2426:       80 91 ea 04     lds     r24, 0x04EA
    242a:       80 53           subi    r24, 0x30       ; 48
    242c:       85 30           cpi     r24, 0x05       ; 5
    242e:       10 f0           brcs    .+4             ; 0x2434 <read_display+0x42>
    2430:       ca 30           cpi     r28, 0x0A       ; 10
    2432:       98 f3           brcs    .-26            ; 0x241a <read_display+0x28>
        while (((r_buffer[1] < '0') || (r_buffer[1] > '4')) && (timeout < 10));
        
        if (timeout >= 10)
    2434:       ca 30           cpi     r28, 0x0A       ; 10
    2436:       18 f0           brcs    .+6             ; 0x243e <read_display+0x4c>
                return 1;
    2438:       81 e0           ldi     r24, 0x01       ; 1
    243a:       90 e0           ldi     r25, 0x00       ; 0
    243c:       02 c0           rjmp    .+4             ; 0x2442 <read_display+0x50>
        else
                return 0;
    243e:       80 e0           ldi     r24, 0x00       ; 0
    2440:       90 e0           ldi     r25, 0x00       ; 0
    2442:       cf 91           pop     r28
    2444:       08 95           ret

00002446 <display_data>:
}

void display_data (void)
{
    2446:       0f 93           push    r16
    2448:       1f 93           push    r17
    244a:       cf 93           push    r28
    244c:       df 93           push    r29
    244e:       cd b7           in      r28, 0x3d       ; 61
    2450:       de b7           in      r29, 0x3e       ; 62
    2452:       2a 97           sbiw    r28, 0x0a       ; 10
    2454:       0f b6           in      r0, 0x3f        ; 63
    2456:       f8 94           cli
    2458:       de bf           out     0x3e, r29       ; 62
    245a:       0f be           out     0x3f, r0        ; 63
    245c:       cd bf           out     0x3d, r28       ; 61
        uint8_t line;
        uint8_t text[10];

        lcd_cls();
    245e:       0e 94 36 07     call    0xe6c <lcd_cls>
        lcd_printp(PSTR("Display"),0);
    2462:       60 e0           ldi     r22, 0x00       ; 0
    2464:       89 ed           ldi     r24, 0xD9       ; 217
    2466:       9c e0           ldi     r25, 0x0C       ; 12
    2468:       0e 94 aa 08     call    0x1154 <lcd_printp>
        do
        {
                while (key != 0x00);
    246c:       00 91 e6 04     lds     r16, 0x04E6
    2470:       00 23           and     r16, r16
    2472:       e1 f7           brne    .-8             ; 0x246c <display_data+0x26>
                if (read_display(0) == 1)
    2474:       80 2f           mov     r24, r16
    2476:       0e 94 f9 11     call    0x23f2 <read_display>
    247a:       81 30           cpi     r24, 0x01       ; 1
    247c:       69 f4           brne    .+26            ; 0x2498 <display_data+0x52>
                {
                        lcd_printp(PSTR("\r\nTimeout!"),0);
    247e:       60 2f           mov     r22, r16
    2480:       81 ee           ldi     r24, 0xE1       ; 225
    2482:       9c e0           ldi     r25, 0x0C       ; 12
    2484:       0e 94 aa 08     call    0x1154 <lcd_printp>
                        timer = 200;
    2488:       88 ec           ldi     r24, 0xC8       ; 200
    248a:       80 93 61 00     sts     0x0061, r24
                        while (timer > 0);
    248e:       80 91 61 00     lds     r24, 0x0061
    2492:       88 23           and     r24, r24
    2494:       e1 f7           brne    .-8             ; 0x248e <display_data+0x48>
                        break;
    2496:       2c c0           rjmp    .+88            ; 0x24f0 <display_data+0xaa>
                }
                else
                {
                        line = r_buffer[1];
    2498:       10 91 ea 04     lds     r17, 0x04EA
                        text[0] = line;
    249c:       19 83           std     Y+1, r17        ; 0x01
                        text[1] = 0x00;
    249e:       0a 83           std     Y+2, r16        ; 0x02
                        lcd_print_at(10,0,text,0);
    24a0:       20 2f           mov     r18, r16
    24a2:       ae 01           movw    r20, r28
    24a4:       4f 5f           subi    r20, 0xFF       ; 255
    24a6:       5f 4f           sbci    r21, 0xFF       ; 255
    24a8:       60 2f           mov     r22, r16
    24aa:       8a e0           ldi     r24, 0x0A       ; 10
    24ac:       0e 94 1d 09     call    0x123a <lcd_print_at>
                        
                        lcd_print_at(0,line+1,p_buffer,0);
    24b0:       1f 5f           subi    r17, 0xFF       ; 255
    24b2:       20 2f           mov     r18, r16
    24b4:       43 e6           ldi     r20, 0x63       ; 99
    24b6:       54 e0           ldi     r21, 0x04       ; 4
    24b8:       61 2f           mov     r22, r17
    24ba:       80 2f           mov     r24, r16
    24bc:       0e 94 1d 09     call    0x123a <lcd_print_at>
                        
                        timer = 10;
    24c0:       8a e0           ldi     r24, 0x0A       ; 10
    24c2:       80 93 61 00     sts     0x0061, r24
                        while(timer > 0);
    24c6:       80 91 61 00     lds     r24, 0x0061
    24ca:       88 23           and     r24, r24
    24cc:       e1 f7           brne    .-8             ; 0x24c6 <display_data+0x80>
                
                        if (key == 0x01)
    24ce:       80 91 e6 04     lds     r24, 0x04E6
    24d2:       81 30           cpi     r24, 0x01       ; 1
    24d4:       11 f4           brne    .+4             ; 0x24da <display_data+0x94>
                                read_display(1);
    24d6:       0e 94 f9 11     call    0x23f2 <read_display>
                        if (key == 0x02)
    24da:       80 91 e6 04     lds     r24, 0x04E6
    24de:       82 30           cpi     r24, 0x02       ; 2
    24e0:       11 f4           brne    .+4             ; 0x24e6 <display_data+0xa0>
                                read_display(2);
    24e2:       0e 94 f9 11     call    0x23f2 <read_display>
                }
        
        }
    24e6:       80 91 e6 04     lds     r24, 0x04E6
    24ea:       84 30           cpi     r24, 0x04       ; 4
    24ec:       09 f0           breq    .+2             ; 0x24f0 <display_data+0xaa>
    24ee:       be cf           rjmp    .-132           ; 0x246c <display_data+0x26>
    24f0:       2a 96           adiw    r28, 0x0a       ; 10
    24f2:       0f b6           in      r0, 0x3f        ; 63
    24f4:       f8 94           cli
    24f6:       de bf           out     0x3e, r29       ; 62
    24f8:       0f be           out     0x3f, r0        ; 63
    24fa:       cd bf           out     0x3d, r28       ; 61
    24fc:       df 91           pop     r29
    24fe:       cf 91           pop     r28
    2500:       1f 91           pop     r17
    2502:       0f 91           pop     r16
    2504:       08 95           ret

00002506 <motor_test>:
#include "base64.h"

void motor_test(void)
{
        lcd_cls();
    2506:       0e 94 36 07     call    0xe6c <lcd_cls>

        while (key != 0x00);
    250a:       60 91 e6 04     lds     r22, 0x04E6
    250e:       66 23           and     r22, r22
    2510:       e1 f7           brne    .-8             ; 0x250a <motor_test+0x4>

        lcd_printp(PSTR("Taste drücken\r\n"),0);
    2512:       8c ee           ldi     r24, 0xEC       ; 236
    2514:       9c e0           ldi     r25, 0x0C       ; 12
    2516:       0e 94 aa 08     call    0x1154 <lcd_printp>
        
        while (key == 0x00);
    251a:       80 91 e6 04     lds     r24, 0x04E6
    251e:       88 23           and     r24, r24
    2520:       e1 f3           breq    .-8             ; 0x251a <motor_test+0x14>
        if (key == 0x08)                                                                // nur, wenn die Bestätigungstaste gedrückt wird
    2522:       80 91 e6 04     lds     r24, 0x04E6
    2526:       88 30           cpi     r24, 0x08       ; 8
    2528:       c9 f4           brne    .+50            ; 0x255c <motor_test+0x56>
        {
                p_buffer[0] = '#';                                                      // Motoren einschalten
    252a:       83 e2           ldi     r24, 0x23       ; 35
    252c:       80 93 63 04     sts     0x0463, r24
                p_buffer[1] = 'a';
    2530:       81 e6           ldi     r24, 0x61       ; 97
    2532:       80 93 64 04     sts     0x0464, r24
                p_buffer[2] = 't';
    2536:       84 e7           ldi     r24, 0x74       ; 116
    2538:       80 93 65 04     sts     0x0465, r24
                p_buffer[3] = 10;
    253c:       8a e0           ldi     r24, 0x0A       ; 10
    253e:       80 93 66 04     sts     0x0466, r24
                p_buffer[4] = 10;
    2542:       80 93 67 04     sts     0x0467, r24
                p_buffer[5] = 10;
    2546:       80 93 68 04     sts     0x0468, r24
                p_buffer[6] = 10;
    254a:       80 93 69 04     sts     0x0469, r24
                p_buffer[7] = 0;
    254e:       10 92 6a 04     sts     0x046A, r1
                p_buffer[8] = 0;
    2552:       10 92 6b 04     sts     0x046B, r1

                base64_send(9);
    2556:       89 e0           ldi     r24, 0x09       ; 9
    2558:       0e 94 bc 0c     call    0x1978 <base64_send>
        }
 
        while (key != 0x00);
    255c:       80 91 e6 04     lds     r24, 0x04E6
    2560:       88 23           and     r24, r24
    2562:       e1 f7           brne    .-8             ; 0x255c <motor_test+0x56>
        while (key == 0x00);
    2564:       80 91 e6 04     lds     r24, 0x04E6
    2568:       88 23           and     r24, r24
    256a:       e1 f3           breq    .-8             ; 0x2564 <motor_test+0x5e>
        
        p_buffer[0] = '#';                                                      // Motoren ausschalten
    256c:       83 e2           ldi     r24, 0x23       ; 35
    256e:       80 93 63 04     sts     0x0463, r24
        p_buffer[1] = 'a';
    2572:       81 e6           ldi     r24, 0x61       ; 97
    2574:       80 93 64 04     sts     0x0464, r24
        p_buffer[2] = 't';
    2578:       84 e7           ldi     r24, 0x74       ; 116
    257a:       80 93 65 04     sts     0x0465, r24
        p_buffer[3] = 0;
    257e:       10 92 66 04     sts     0x0466, r1
        p_buffer[4] = 0;
    2582:       10 92 67 04     sts     0x0467, r1
        p_buffer[5] = 0;
    2586:       10 92 68 04     sts     0x0468, r1
        p_buffer[6] = 0;
    258a:       10 92 69 04     sts     0x0469, r1
        p_buffer[7] = 0;
    258e:       10 92 6a 04     sts     0x046A, r1
        p_buffer[8] = 0;
    2592:       10 92 6b 04     sts     0x046B, r1

        base64_send(9);
    2596:       89 e0           ldi     r24, 0x09       ; 9
    2598:       0e 94 bc 0c     call    0x1978 <base64_send>
    259c:       08 95           ret

0000259e <itoa>:
    259e:       fb 01           movw    r30, r22
    25a0:       9f 01           movw    r18, r30
    25a2:       e8 94           clt
    25a4:       42 30           cpi     r20, 0x02       ; 2
    25a6:       c4 f0           brlt    .+48            ; 0x25d8 <itoa+0x3a>
    25a8:       45 32           cpi     r20, 0x25       ; 37
    25aa:       b4 f4           brge    .+44            ; 0x25d8 <itoa+0x3a>
    25ac:       4a 30           cpi     r20, 0x0A       ; 10
    25ae:       29 f4           brne    .+10            ; 0x25ba <itoa+0x1c>
    25b0:       97 fb           bst     r25, 7
    25b2:       1e f4           brtc    .+6             ; 0x25ba <itoa+0x1c>
    25b4:       90 95           com     r25
    25b6:       81 95           neg     r24
    25b8:       9f 4f           sbci    r25, 0xFF       ; 255
    25ba:       64 2f           mov     r22, r20
    25bc:       77 27           eor     r23, r23
    25be:       0e 94 22 13     call    0x2644 <__udivmodhi4>
    25c2:       80 5d           subi    r24, 0xD0       ; 208
    25c4:       8a 33           cpi     r24, 0x3A       ; 58
    25c6:       0c f0           brlt    .+2             ; 0x25ca <itoa+0x2c>
    25c8:       89 5d           subi    r24, 0xD9       ; 217
    25ca:       81 93           st      Z+, r24
    25cc:       cb 01           movw    r24, r22
    25ce:       00 97           sbiw    r24, 0x00       ; 0
    25d0:       a1 f7           brne    .-24            ; 0x25ba <itoa+0x1c>
    25d2:       16 f4           brtc    .+4             ; 0x25d8 <itoa+0x3a>
    25d4:       5d e2           ldi     r21, 0x2D       ; 45
    25d6:       51 93           st      Z+, r21
    25d8:       10 82           st      Z, r1
    25da:       c9 01           movw    r24, r18
    25dc:       0c 94 06 13     jmp     0x260c <strrev>

000025e0 <utoa>:
    25e0:       fb 01           movw    r30, r22
    25e2:       9f 01           movw    r18, r30
    25e4:       42 30           cpi     r20, 0x02       ; 2
    25e6:       74 f0           brlt    .+28            ; 0x2604 <utoa+0x24>
    25e8:       45 32           cpi     r20, 0x25       ; 37
    25ea:       64 f4           brge    .+24            ; 0x2604 <utoa+0x24>
    25ec:       64 2f           mov     r22, r20
    25ee:       77 27           eor     r23, r23
    25f0:       0e 94 22 13     call    0x2644 <__udivmodhi4>
    25f4:       80 5d           subi    r24, 0xD0       ; 208
    25f6:       8a 33           cpi     r24, 0x3A       ; 58
    25f8:       0c f0           brlt    .+2             ; 0x25fc <utoa+0x1c>
    25fa:       89 5d           subi    r24, 0xD9       ; 217
    25fc:       81 93           st      Z+, r24
    25fe:       cb 01           movw    r24, r22
    2600:       00 97           sbiw    r24, 0x00       ; 0
    2602:       a1 f7           brne    .-24            ; 0x25ec <utoa+0xc>
    2604:       10 82           st      Z, r1
    2606:       c9 01           movw    r24, r18
    2608:       0c 94 06 13     jmp     0x260c <strrev>

0000260c <strrev>:
    260c:       dc 01           movw    r26, r24
    260e:       fc 01           movw    r30, r24
    2610:       01 90           ld      r0, Z+
    2612:       00 20           and     r0, r0
    2614:       e9 f7           brne    .-6             ; 0x2610 <strrev+0x4>
    2616:       32 97           sbiw    r30, 0x02       ; 2
    2618:       ae 17           cp      r26, r30
    261a:       bf 07           cpc     r27, r31
    261c:       30 f4           brcc    .+12            ; 0x262a <strrev+0x1e>
    261e:       7c 91           ld      r23, X
    2620:       60 81           ld      r22, Z
    2622:       70 83           st      Z, r23
    2624:       31 97           sbiw    r30, 0x01       ; 1
    2626:       6d 93           st      X+, r22
    2628:       f7 cf           rjmp    .-18            ; 0x2618 <strrev+0xc>
    262a:       08 95           ret

0000262c <__udivmodqi4>:
    262c:       99 1b           sub     r25, r25
    262e:       79 e0           ldi     r23, 0x09       ; 9
    2630:       04 c0           rjmp    .+8             ; 0x263a <__udivmodqi4_ep>

00002632 <__udivmodqi4_loop>:
    2632:       99 1f           adc     r25, r25
    2634:       96 17           cp      r25, r22
    2636:       08 f0           brcs    .+2             ; 0x263a <__udivmodqi4_ep>
    2638:       96 1b           sub     r25, r22

0000263a <__udivmodqi4_ep>:
    263a:       88 1f           adc     r24, r24
    263c:       7a 95           dec     r23
    263e:       c9 f7           brne    .-14            ; 0x2632 <__udivmodqi4_loop>
    2640:       80 95           com     r24
    2642:       08 95           ret

00002644 <__udivmodhi4>:
    2644:       aa 1b           sub     r26, r26
    2646:       bb 1b           sub     r27, r27
    2648:       51 e1           ldi     r21, 0x11       ; 17
    264a:       07 c0           rjmp    .+14            ; 0x265a <__udivmodhi4_ep>

0000264c <__udivmodhi4_loop>:
    264c:       aa 1f           adc     r26, r26
    264e:       bb 1f           adc     r27, r27
    2650:       a6 17           cp      r26, r22
    2652:       b7 07           cpc     r27, r23
    2654:       10 f0           brcs    .+4             ; 0x265a <__udivmodhi4_ep>
    2656:       a6 1b           sub     r26, r22
    2658:       b7 0b           sbc     r27, r23

0000265a <__udivmodhi4_ep>:
    265a:       88 1f           adc     r24, r24
    265c:       99 1f           adc     r25, r25
    265e:       5a 95           dec     r21
    2660:       a9 f7           brne    .-22            ; 0x264c <__udivmodhi4_loop>
    2662:       80 95           com     r24
    2664:       90 95           com     r25
    2666:       bc 01           movw    r22, r24
    2668:       cd 01           movw    r24, r26
    266a:       08 95           ret