Subversion Repositories Projects

Rev

Rev 111 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
111 mikeljo 1
 
2
main.elf:     file format elf32-avr
3
 
4
Sections:
5
Idx Name          Size      VMA       LMA       File off  Algn
6
 
7
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
8
  1 .data         00000000  00800060  0000266c  00002700  2**0
9
                  CONTENTS, ALLOC, LOAD, DATA
10
  2 .bss          00000527  00800060  00800060  00002700  2**0
11
                  ALLOC
12
  3 .noinit       00000000  00800587  00800587  00002700  2**0
13
                  CONTENTS
14
  4 .eeprom       00000000  00810000  00810000  00002700  2**0
15
                  CONTENTS
16
  5 .stab         0000036c  00000000  00000000  00002700  2**2
17
                  CONTENTS, READONLY, DEBUGGING
18
  6 .stabstr      00000084  00000000  00000000  00002a6c  2**0
19
                  CONTENTS, READONLY, DEBUGGING
20
  7 .debug_aranges 000000c8  00000000  00000000  00002af0  2**0
21
                  CONTENTS, READONLY, DEBUGGING
22
  8 .debug_pubnames 00000902  00000000  00000000  00002bb8  2**0
23
                  CONTENTS, READONLY, DEBUGGING
24
  9 .debug_info   00001dfa  00000000  00000000  000034ba  2**0
25
                  CONTENTS, READONLY, DEBUGGING
26
 10 .debug_abbrev 0000098e  00000000  00000000  000052b4  2**0
27
                  CONTENTS, READONLY, DEBUGGING
28
 11 .debug_line   00001982  00000000  00000000  00005c42  2**0
29
                  CONTENTS, READONLY, DEBUGGING
30
 12 .debug_str    000004dc  00000000  00000000  000075c4  2**0
31
                  CONTENTS, READONLY, DEBUGGING
32
 13 .debug_ranges 0000000c  0000266c  0000266c  00007aa0  2**0
33
                  CONTENTS, READONLY, DEBUGGING
34
Disassembly of section .text:
35
 
36
00000000 <__vectors>:
37
       0:	0c 94 7e 06 	jmp	0xcfc <__init>
38
       4:	0c 94 99 06 	jmp	0xd32 <__bad_interrupt>
39
       8:	0c 94 99 06 	jmp	0xd32 <__bad_interrupt>
40
       c:	0c 94 99 06 	jmp	0xd32 <__bad_interrupt>
41
      10:	0c 94 99 06 	jmp	0xd32 <__bad_interrupt>
42
      14:	0c 94 99 06 	jmp	0xd32 <__bad_interrupt>
43
      18:	0c 94 99 06 	jmp	0xd32 <__bad_interrupt>
44
      1c:	0c 94 99 06 	jmp	0xd32 <__bad_interrupt>
45
      20:	0c 94 99 06 	jmp	0xd32 <__bad_interrupt>
46
      24:	0c 94 99 06 	jmp	0xd32 <__bad_interrupt>
47
      28:	0c 94 b5 06 	jmp	0xd6a <__vector_10>
48
      2c:	0c 94 99 06 	jmp	0xd32 <__bad_interrupt>
49
      30:	0c 94 99 06 	jmp	0xd32 <__bad_interrupt>
50
      34:	0c 94 f8 0b 	jmp	0x17f0 <__vector_13>
51
      38:	0c 94 99 06 	jmp	0xd32 <__bad_interrupt>
52
      3c:	0c 94 99 06 	jmp	0xd32 <__bad_interrupt>
53
      40:	0c 94 99 06 	jmp	0xd32 <__bad_interrupt>
54
      44:	0c 94 99 06 	jmp	0xd32 <__bad_interrupt>
55
      48:	0c 94 99 06 	jmp	0xd32 <__bad_interrupt>
56
      4c:	0c 94 99 06 	jmp	0xd32 <__bad_interrupt>
57
      50:	0c 94 99 06 	jmp	0xd32 <__bad_interrupt>
58
 
59
00000054 <__ctors_end>:
60
      54:	00 00       	nop
61
      56:	00 00       	nop
62
      58:	00 00       	nop
63
      5a:	3e 5b       	subi	r19, 0xBE	; 190
64
      5c:	4f 5b       	subi	r20, 0xBF	; 191
65
      5e:	3e 00       	.word	0x003e	; ????
66
      60:	3e 6b       	ori	r19, 0xBE	; 190
67
      62:	4f 6b       	ori	r20, 0xBF	; 191
68
      64:	3e 00       	.word	0x003e	; ????
69
      66:	1c 3e       	cpi	r17, 0xEC	; 236
70
      68:	7c 3e       	cpi	r23, 0xEC	; 236
71
      6a:	1c 00       	.word	0x001c	; ????
72
      6c:	18 3c       	cpi	r17, 0xC8	; 200
73
      6e:	7e 3c       	cpi	r23, 0xCE	; 206
74
      70:	18 00       	.word	0x0018	; ????
75
      72:	1c 57       	subi	r17, 0x7C	; 124
76
      74:	7d 57       	subi	r23, 0x7D	; 125
77
      76:	1c 00       	.word	0x001c	; ????
78
      78:	1c 5e       	subi	r17, 0xEC	; 236
79
      7a:	7f 5e       	subi	r23, 0xEF	; 239
80
      7c:	1c 00       	.word	0x001c	; ????
81
      7e:	00 18       	sub	r0, r0
82
      80:	3c 18       	sub	r3, r12
83
      82:	00 00       	nop
84
      84:	ff e7       	ldi	r31, 0x7F	; 127
85
      86:	c3 e7       	ldi	r28, 0x73	; 115
86
      88:	ff 00       	.word	0x00ff	; ????
87
      8a:	00 18       	sub	r0, r0
88
      8c:	24 18       	sub	r2, r4
89
      8e:	00 00       	nop
90
      90:	ff e7       	ldi	r31, 0x7F	; 127
91
      92:	db e7       	ldi	r29, 0x7B	; 123
92
      94:	ff 00       	.word	0x00ff	; ????
93
      96:	30 48       	sbci	r19, 0x80	; 128
94
      98:	3a 06       	cpc	r3, r26
95
      9a:	0e 00       	.word	0x000e	; ????
96
      9c:	26 29       	or	r18, r6
97
      9e:	79 29       	or	r23, r9
98
      a0:	26 00       	.word	0x0026	; ????
99
      a2:	40 7f       	andi	r20, 0xF0	; 240
100
      a4:	05 05       	cpc	r16, r5
101
      a6:	07 00       	.word	0x0007	; ????
102
      a8:	40 7f       	andi	r20, 0xF0	; 240
103
      aa:	05 25       	eor	r16, r5
104
      ac:	3f 00       	.word	0x003f	; ????
105
      ae:	5a 3c       	cpi	r21, 0xCA	; 202
106
      b0:	e7 3c       	cpi	r30, 0xC7	; 199
107
      b2:	5a 00       	.word	0x005a	; ????
108
      b4:	7f 3e       	cpi	r23, 0xEF	; 239
109
      b6:	1c 1c       	adc	r1, r12
110
      b8:	08 00       	.word	0x0008	; ????
111
      ba:	08 1c       	adc	r0, r8
112
      bc:	1c 3e       	cpi	r17, 0xEC	; 236
113
      be:	7f 00       	.word	0x007f	; ????
114
      c0:	14 22       	and	r1, r20
115
      c2:	7f 22       	and	r7, r31
116
      c4:	14 00       	.word	0x0014	; ????
117
      c6:	5f 5f       	subi	r21, 0xFF	; 255
118
      c8:	00 5f       	subi	r16, 0xF0	; 240
119
      ca:	5f 00       	.word	0x005f	; ????
120
      cc:	06 09       	sbc	r16, r6
121
      ce:	7f 01       	movw	r14, r30
122
      d0:	7f 00       	.word	0x007f	; ????
123
      d2:	00 66       	ori	r16, 0x60	; 96
124
      d4:	89 95       	.word	0x9589	; ????
125
      d6:	6a 00       	.word	0x006a	; ????
126
      d8:	60 60       	ori	r22, 0x00	; 0
127
      da:	60 60       	ori	r22, 0x00	; 0
128
      dc:	60 60       	ori	r22, 0x00	; 0
129
      de:	94 a2       	std	Z+36, r9	; 0x24
130
      e0:	ff a2       	std	Y+39, r15	; 0x27
131
      e2:	94 00       	.word	0x0094	; ????
132
      e4:	08 04       	cpc	r0, r8
133
      e6:	7e 04       	cpc	r7, r14
134
      e8:	08 00       	.word	0x0008	; ????
135
      ea:	10 20       	and	r1, r0
136
      ec:	7e 20       	and	r7, r14
137
      ee:	10 00       	.word	0x0010	; ????
138
      f0:	08 08       	sbc	r0, r8
139
      f2:	2a 1c       	adc	r2, r10
140
      f4:	08 00       	.word	0x0008	; ????
141
      f6:	08 1c       	adc	r0, r8
142
      f8:	2a 08       	sbc	r2, r10
143
      fa:	08 00       	.word	0x0008	; ????
144
      fc:	1e 10       	cpse	r1, r14
145
      fe:	10 10       	cpse	r1, r0
146
     100:	10 00       	.word	0x0010	; ????
147
     102:	0c 1e       	adc	r0, r28
148
     104:	0c 1e       	adc	r0, r28
149
     106:	0c 00       	.word	0x000c	; ????
150
     108:	30 38       	cpi	r19, 0x80	; 128
151
     10a:	3e 38       	cpi	r19, 0x8E	; 142
152
     10c:	30 00       	.word	0x0030	; ????
153
     10e:	06 0e       	add	r0, r22
154
     110:	3e 0e       	add	r3, r30
155
     112:	06 00       	.word	0x0006	; ????
156
	...
157
     11c:	5f 00       	.word	0x005f	; ????
158
     11e:	00 00       	nop
159
     120:	00 07       	cpc	r16, r16
160
     122:	00 07       	cpc	r16, r16
161
     124:	00 00       	nop
162
     126:	14 7f       	andi	r17, 0xF4	; 244
163
     128:	14 7f       	andi	r17, 0xF4	; 244
164
     12a:	14 00       	.word	0x0014	; ????
165
     12c:	24 2a       	or	r2, r20
166
     12e:	7f 2a       	or	r7, r31
167
     130:	12 00       	.word	0x0012	; ????
168
     132:	23 13       	cpse	r18, r19
169
     134:	08 64       	ori	r16, 0x48	; 72
170
     136:	62 00       	.word	0x0062	; ????
171
     138:	36 49       	sbci	r19, 0x96	; 150
172
     13a:	56 20       	and	r5, r6
173
     13c:	50 00       	.word	0x0050	; ????
174
     13e:	00 08       	sbc	r0, r0
175
     140:	07 03       	mulsu	r16, r23
176
     142:	00 00       	nop
177
     144:	00 1c       	adc	r0, r0
178
     146:	22 41       	sbci	r18, 0x12	; 18
179
     148:	00 00       	nop
180
     14a:	00 41       	sbci	r16, 0x10	; 16
181
     14c:	22 1c       	adc	r2, r2
182
     14e:	00 00       	nop
183
     150:	2a 1c       	adc	r2, r10
184
     152:	7f 1c       	adc	r7, r15
185
     154:	2a 00       	.word	0x002a	; ????
186
     156:	08 08       	sbc	r0, r8
187
     158:	3e 08       	sbc	r3, r14
188
     15a:	08 00       	.word	0x0008	; ????
189
     15c:	00 80       	ld	r0, Z
190
     15e:	70 30       	cpi	r23, 0x00	; 0
191
     160:	00 00       	nop
192
     162:	08 08       	sbc	r0, r8
193
     164:	08 08       	sbc	r0, r8
194
     166:	08 00       	.word	0x0008	; ????
195
     168:	00 00       	nop
196
     16a:	60 60       	ori	r22, 0x00	; 0
197
     16c:	00 00       	nop
198
     16e:	20 10       	cpse	r2, r0
199
     170:	08 04       	cpc	r0, r8
200
     172:	02 00       	.word	0x0002	; ????
201
     174:	3e 51       	subi	r19, 0x1E	; 30
202
     176:	49 45       	sbci	r20, 0x59	; 89
203
     178:	3e 00       	.word	0x003e	; ????
204
     17a:	00 42       	sbci	r16, 0x20	; 32
205
     17c:	7f 40       	sbci	r23, 0x0F	; 15
206
     17e:	00 00       	nop
207
     180:	72 49       	sbci	r23, 0x92	; 146
208
     182:	49 49       	sbci	r20, 0x99	; 153
209
     184:	46 00       	.word	0x0046	; ????
210
     186:	21 41       	sbci	r18, 0x11	; 17
211
     188:	49 4d       	sbci	r20, 0xD9	; 217
212
     18a:	33 00       	.word	0x0033	; ????
213
     18c:	18 14       	cp	r1, r8
214
     18e:	12 7f       	andi	r17, 0xF2	; 242
215
     190:	10 00       	.word	0x0010	; ????
216
     192:	27 45       	sbci	r18, 0x57	; 87
217
     194:	45 45       	sbci	r20, 0x55	; 85
218
     196:	39 00       	.word	0x0039	; ????
219
     198:	3c 4a       	sbci	r19, 0xAC	; 172
220
     19a:	49 49       	sbci	r20, 0x99	; 153
221
     19c:	31 00       	.word	0x0031	; ????
222
     19e:	41 21       	and	r20, r1
223
     1a0:	11 09       	sbc	r17, r1
224
     1a2:	07 00       	.word	0x0007	; ????
225
     1a4:	36 49       	sbci	r19, 0x96	; 150
226
     1a6:	49 49       	sbci	r20, 0x99	; 153
227
     1a8:	36 00       	.word	0x0036	; ????
228
     1aa:	46 49       	sbci	r20, 0x96	; 150
229
     1ac:	49 29       	or	r20, r9
230
     1ae:	1e 00       	.word	0x001e	; ????
231
     1b0:	00 00       	nop
232
     1b2:	14 00       	.word	0x0014	; ????
233
     1b4:	00 00       	nop
234
     1b6:	00 40       	sbci	r16, 0x00	; 0
235
     1b8:	34 00       	.word	0x0034	; ????
236
     1ba:	00 00       	nop
237
     1bc:	00 08       	sbc	r0, r0
238
     1be:	14 22       	and	r1, r20
239
     1c0:	41 00       	.word	0x0041	; ????
240
     1c2:	14 14       	cp	r1, r4
241
     1c4:	14 14       	cp	r1, r4
242
     1c6:	14 00       	.word	0x0014	; ????
243
     1c8:	00 41       	sbci	r16, 0x10	; 16
244
     1ca:	22 14       	cp	r2, r2
245
     1cc:	08 00       	.word	0x0008	; ????
246
     1ce:	02 01       	movw	r0, r4
247
     1d0:	59 09       	sbc	r21, r9
248
     1d2:	06 00       	.word	0x0006	; ????
249
     1d4:	3e 41       	sbci	r19, 0x1E	; 30
250
     1d6:	5d 59       	subi	r21, 0x9D	; 157
251
     1d8:	4e 00       	.word	0x004e	; ????
252
     1da:	7c 12       	cpse	r7, r28
253
     1dc:	11 12       	cpse	r1, r17
254
     1de:	7c 00       	.word	0x007c	; ????
255
     1e0:	7f 49       	sbci	r23, 0x9F	; 159
256
     1e2:	49 49       	sbci	r20, 0x99	; 153
257
     1e4:	36 00       	.word	0x0036	; ????
258
     1e6:	3e 41       	sbci	r19, 0x1E	; 30
259
     1e8:	41 41       	sbci	r20, 0x11	; 17
260
     1ea:	22 00       	.word	0x0022	; ????
261
     1ec:	7f 41       	sbci	r23, 0x1F	; 31
262
     1ee:	41 41       	sbci	r20, 0x11	; 17
263
     1f0:	3e 00       	.word	0x003e	; ????
264
     1f2:	7f 49       	sbci	r23, 0x9F	; 159
265
     1f4:	49 49       	sbci	r20, 0x99	; 153
266
     1f6:	41 00       	.word	0x0041	; ????
267
     1f8:	7f 09       	sbc	r23, r15
268
     1fa:	09 09       	sbc	r16, r9
269
     1fc:	01 00       	.word	0x0001	; ????
270
     1fe:	3e 41       	sbci	r19, 0x1E	; 30
271
     200:	41 51       	subi	r20, 0x11	; 17
272
     202:	73 00       	.word	0x0073	; ????
273
     204:	7f 08       	sbc	r7, r15
274
     206:	08 08       	sbc	r0, r8
275
     208:	7f 00       	.word	0x007f	; ????
276
     20a:	00 41       	sbci	r16, 0x10	; 16
277
     20c:	7f 41       	sbci	r23, 0x1F	; 31
278
     20e:	00 00       	nop
279
     210:	20 40       	sbci	r18, 0x00	; 0
280
     212:	41 3f       	cpi	r20, 0xF1	; 241
281
     214:	01 00       	.word	0x0001	; ????
282
     216:	7f 08       	sbc	r7, r15
283
     218:	14 22       	and	r1, r20
284
     21a:	41 00       	.word	0x0041	; ????
285
     21c:	7f 40       	sbci	r23, 0x0F	; 15
286
     21e:	40 40       	sbci	r20, 0x00	; 0
287
     220:	40 00       	.word	0x0040	; ????
288
     222:	7f 02       	muls	r23, r31
289
     224:	1c 02       	muls	r17, r28
290
     226:	7f 00       	.word	0x007f	; ????
291
     228:	7f 04       	cpc	r7, r15
292
     22a:	08 10       	cpse	r0, r8
293
     22c:	7f 00       	.word	0x007f	; ????
294
     22e:	3e 41       	sbci	r19, 0x1E	; 30
295
     230:	41 41       	sbci	r20, 0x11	; 17
296
     232:	3e 00       	.word	0x003e	; ????
297
     234:	7f 09       	sbc	r23, r15
298
     236:	09 09       	sbc	r16, r9
299
     238:	06 00       	.word	0x0006	; ????
300
     23a:	3e 41       	sbci	r19, 0x1E	; 30
301
     23c:	51 21       	and	r21, r1
302
     23e:	5e 00       	.word	0x005e	; ????
303
     240:	7f 09       	sbc	r23, r15
304
     242:	19 29       	or	r17, r9
305
     244:	46 00       	.word	0x0046	; ????
306
     246:	26 49       	sbci	r18, 0x96	; 150
307
     248:	49 49       	sbci	r20, 0x99	; 153
308
     24a:	32 00       	.word	0x0032	; ????
309
     24c:	03 01       	movw	r0, r6
310
     24e:	7f 01       	movw	r14, r30
311
     250:	03 00       	.word	0x0003	; ????
312
     252:	3f 40       	sbci	r19, 0x0F	; 15
313
     254:	40 40       	sbci	r20, 0x00	; 0
314
     256:	3f 00       	.word	0x003f	; ????
315
     258:	1f 20       	and	r1, r15
316
     25a:	40 20       	and	r4, r0
317
     25c:	1f 00       	.word	0x001f	; ????
318
     25e:	3f 40       	sbci	r19, 0x0F	; 15
319
     260:	38 40       	sbci	r19, 0x08	; 8
320
     262:	3f 00       	.word	0x003f	; ????
321
     264:	63 14       	cp	r6, r3
322
     266:	08 14       	cp	r0, r8
323
     268:	63 00       	.word	0x0063	; ????
324
     26a:	03 04       	cpc	r0, r3
325
     26c:	78 04       	cpc	r7, r8
326
     26e:	03 00       	.word	0x0003	; ????
327
     270:	61 59       	subi	r22, 0x91	; 145
328
     272:	49 4d       	sbci	r20, 0xD9	; 217
329
     274:	43 00       	.word	0x0043	; ????
330
     276:	00 7f       	andi	r16, 0xF0	; 240
331
     278:	41 41       	sbci	r20, 0x11	; 17
332
     27a:	41 00       	.word	0x0041	; ????
333
     27c:	02 04       	cpc	r0, r2
334
     27e:	08 10       	cpse	r0, r8
335
     280:	20 00       	.word	0x0020	; ????
336
     282:	00 41       	sbci	r16, 0x10	; 16
337
     284:	41 41       	sbci	r20, 0x11	; 17
338
     286:	7f 00       	.word	0x007f	; ????
339
     288:	04 02       	muls	r16, r20
340
     28a:	01 02       	muls	r16, r17
341
     28c:	04 00       	.word	0x0004	; ????
342
     28e:	40 40       	sbci	r20, 0x00	; 0
343
     290:	40 40       	sbci	r20, 0x00	; 0
344
     292:	40 00       	.word	0x0040	; ????
345
     294:	00 03       	mulsu	r16, r16
346
     296:	07 08       	sbc	r0, r7
347
     298:	00 00       	nop
348
     29a:	20 54       	subi	r18, 0x40	; 64
349
     29c:	54 78       	andi	r21, 0x84	; 132
350
     29e:	40 00       	.word	0x0040	; ????
351
     2a0:	7f 28       	or	r7, r15
352
     2a2:	44 44       	sbci	r20, 0x44	; 68
353
     2a4:	38 00       	.word	0x0038	; ????
354
     2a6:	38 44       	sbci	r19, 0x48	; 72
355
     2a8:	44 44       	sbci	r20, 0x44	; 68
356
     2aa:	28 00       	.word	0x0028	; ????
357
     2ac:	38 44       	sbci	r19, 0x48	; 72
358
     2ae:	44 28       	or	r4, r4
359
     2b0:	7f 00       	.word	0x007f	; ????
360
     2b2:	38 54       	subi	r19, 0x48	; 72
361
     2b4:	54 54       	subi	r21, 0x44	; 68
362
     2b6:	18 00       	.word	0x0018	; ????
363
     2b8:	00 08       	sbc	r0, r0
364
     2ba:	7e 09       	sbc	r23, r14
365
     2bc:	02 00       	.word	0x0002	; ????
366
     2be:	18 a4       	ldd	r1, Y+40	; 0x28
367
     2c0:	a4 9c       	mul	r10, r4
368
     2c2:	78 00       	.word	0x0078	; ????
369
     2c4:	7f 08       	sbc	r7, r15
370
     2c6:	04 04       	cpc	r0, r4
371
     2c8:	78 00       	.word	0x0078	; ????
372
     2ca:	00 44       	sbci	r16, 0x40	; 64
373
     2cc:	7d 40       	sbci	r23, 0x0D	; 13
374
     2ce:	00 00       	nop
375
     2d0:	20 40       	sbci	r18, 0x00	; 0
376
     2d2:	40 3d       	cpi	r20, 0xD0	; 208
377
     2d4:	00 00       	nop
378
     2d6:	7f 10       	cpse	r7, r15
379
     2d8:	28 44       	sbci	r18, 0x48	; 72
380
     2da:	00 00       	nop
381
     2dc:	00 41       	sbci	r16, 0x10	; 16
382
     2de:	7f 40       	sbci	r23, 0x0F	; 15
383
     2e0:	00 00       	nop
384
     2e2:	7c 04       	cpc	r7, r12
385
     2e4:	78 04       	cpc	r7, r8
386
     2e6:	78 00       	.word	0x0078	; ????
387
     2e8:	7c 08       	sbc	r7, r12
388
     2ea:	04 04       	cpc	r0, r4
389
     2ec:	78 00       	.word	0x0078	; ????
390
     2ee:	38 44       	sbci	r19, 0x48	; 72
391
     2f0:	44 44       	sbci	r20, 0x44	; 68
392
     2f2:	38 00       	.word	0x0038	; ????
393
     2f4:	fc 18       	sub	r15, r12
394
     2f6:	24 24       	eor	r2, r4
395
     2f8:	18 00       	.word	0x0018	; ????
396
     2fa:	18 24       	eor	r1, r8
397
     2fc:	24 18       	sub	r2, r4
398
     2fe:	fc 00       	.word	0x00fc	; ????
399
     300:	7c 08       	sbc	r7, r12
400
     302:	04 04       	cpc	r0, r4
401
     304:	08 00       	.word	0x0008	; ????
402
     306:	48 54       	subi	r20, 0x48	; 72
403
     308:	54 54       	subi	r21, 0x44	; 68
404
     30a:	24 00       	.word	0x0024	; ????
405
     30c:	04 04       	cpc	r0, r4
406
     30e:	3f 44       	sbci	r19, 0x4F	; 79
407
     310:	24 00       	.word	0x0024	; ????
408
     312:	3c 40       	sbci	r19, 0x0C	; 12
409
     314:	40 20       	and	r4, r0
410
     316:	7c 00       	.word	0x007c	; ????
411
     318:	1c 20       	and	r1, r12
412
     31a:	40 20       	and	r4, r0
413
     31c:	1c 00       	.word	0x001c	; ????
414
     31e:	3c 40       	sbci	r19, 0x0C	; 12
415
     320:	30 40       	sbci	r19, 0x00	; 0
416
     322:	3c 00       	.word	0x003c	; ????
417
     324:	44 28       	or	r4, r4
418
     326:	10 28       	or	r1, r0
419
     328:	44 00       	.word	0x0044	; ????
420
     32a:	4c 90       	ld	r4, X
421
     32c:	90 90 7c 00 	lds	r9, 0x007C
422
     330:	44 64       	ori	r20, 0x44	; 68
423
     332:	54 4c       	sbci	r21, 0xC4	; 196
424
     334:	44 00       	.word	0x0044	; ????
425
     336:	00 08       	sbc	r0, r0
426
     338:	36 41       	sbci	r19, 0x16	; 22
427
     33a:	00 00       	nop
428
     33c:	00 00       	nop
429
     33e:	77 00       	.word	0x0077	; ????
430
     340:	00 00       	nop
431
     342:	00 41       	sbci	r16, 0x10	; 16
432
     344:	36 08       	sbc	r3, r6
433
     346:	00 00       	nop
434
     348:	02 01       	movw	r0, r4
435
     34a:	02 04       	cpc	r0, r2
436
     34c:	02 00       	.word	0x0002	; ????
437
     34e:	3c 26       	eor	r3, r28
438
     350:	23 26       	eor	r2, r19
439
     352:	3c 00       	.word	0x003c	; ????
440
     354:	1e a1       	ldd	r17, Y+38	; 0x26
441
     356:	a1 61       	ori	r26, 0x11	; 17
442
     358:	12 00       	.word	0x0012	; ????
443
     35a:	3a 40       	sbci	r19, 0x0A	; 10
444
     35c:	40 20       	and	r4, r0
445
     35e:	7a 00       	.word	0x007a	; ????
446
     360:	38 54       	subi	r19, 0x48	; 72
447
     362:	54 55       	subi	r21, 0x54	; 84
448
     364:	59 00       	.word	0x0059	; ????
449
     366:	21 55       	subi	r18, 0x51	; 81
450
     368:	55 79       	andi	r21, 0x95	; 149
451
     36a:	41 00       	.word	0x0041	; ????
452
     36c:	21 54       	subi	r18, 0x41	; 65
453
     36e:	54 78       	andi	r21, 0x84	; 132
454
     370:	41 00       	.word	0x0041	; ????
455
     372:	21 55       	subi	r18, 0x51	; 81
456
     374:	54 78       	andi	r21, 0x84	; 132
457
     376:	40 00       	.word	0x0040	; ????
458
     378:	20 54       	subi	r18, 0x40	; 64
459
     37a:	55 79       	andi	r21, 0x95	; 149
460
     37c:	40 00       	.word	0x0040	; ????
461
     37e:	0c 1e       	adc	r0, r28
462
     380:	52 72       	andi	r21, 0x22	; 34
463
     382:	12 00       	.word	0x0012	; ????
464
     384:	39 55       	subi	r19, 0x59	; 89
465
     386:	55 55       	subi	r21, 0x55	; 85
466
     388:	59 00       	.word	0x0059	; ????
467
     38a:	39 54       	subi	r19, 0x49	; 73
468
     38c:	54 54       	subi	r21, 0x44	; 68
469
     38e:	59 00       	.word	0x0059	; ????
470
     390:	39 55       	subi	r19, 0x59	; 89
471
     392:	54 54       	subi	r21, 0x44	; 68
472
     394:	58 00       	.word	0x0058	; ????
473
     396:	00 00       	nop
474
     398:	45 7c       	andi	r20, 0xC5	; 197
475
     39a:	41 00       	.word	0x0041	; ????
476
     39c:	00 02       	muls	r16, r16
477
     39e:	45 7d       	andi	r20, 0xD5	; 213
478
     3a0:	42 00       	.word	0x0042	; ????
479
     3a2:	00 01       	movw	r0, r0
480
     3a4:	45 7c       	andi	r20, 0xC5	; 197
481
     3a6:	40 00       	.word	0x0040	; ????
482
     3a8:	79 14       	cp	r7, r9
483
     3aa:	12 14       	cp	r1, r2
484
     3ac:	79 00       	.word	0x0079	; ????
485
     3ae:	f0 28       	or	r15, r0
486
     3b0:	25 28       	or	r2, r5
487
     3b2:	f0 00       	.word	0x00f0	; ????
488
     3b4:	7c 54       	subi	r23, 0x4C	; 76
489
     3b6:	55 45       	sbci	r21, 0x55	; 85
490
     3b8:	00 00       	nop
491
     3ba:	20 54       	subi	r18, 0x40	; 64
492
     3bc:	54 7c       	andi	r21, 0xC4	; 196
493
     3be:	54 44       	sbci	r21, 0x44	; 68
494
     3c0:	7c 0a       	sbc	r7, r28
495
     3c2:	09 7f       	andi	r16, 0xF9	; 249
496
     3c4:	49 41       	sbci	r20, 0x19	; 25
497
     3c6:	32 49       	sbci	r19, 0x92	; 146
498
     3c8:	49 49       	sbci	r20, 0x99	; 153
499
     3ca:	32 00       	.word	0x0032	; ????
500
     3cc:	32 48       	sbci	r19, 0x82	; 130
501
     3ce:	48 48       	sbci	r20, 0x88	; 136
502
     3d0:	32 00       	.word	0x0032	; ????
503
     3d2:	32 4a       	sbci	r19, 0xA2	; 162
504
     3d4:	48 48       	sbci	r20, 0x88	; 136
505
     3d6:	30 00       	.word	0x0030	; ????
506
     3d8:	3a 41       	sbci	r19, 0x1A	; 26
507
     3da:	41 21       	and	r20, r1
508
     3dc:	7a 00       	.word	0x007a	; ????
509
     3de:	3a 42       	sbci	r19, 0x2A	; 42
510
     3e0:	40 20       	and	r4, r0
511
     3e2:	78 00       	.word	0x0078	; ????
512
     3e4:	00 9d       	mul	r16, r0
513
     3e6:	a0 a0       	ldd	r10, Z+32	; 0x20
514
     3e8:	7d 00       	.word	0x007d	; ????
515
     3ea:	39 44       	sbci	r19, 0x49	; 73
516
     3ec:	44 44       	sbci	r20, 0x44	; 68
517
     3ee:	39 00       	.word	0x0039	; ????
518
     3f0:	3d 40       	sbci	r19, 0x0D	; 13
519
     3f2:	40 40       	sbci	r20, 0x00	; 0
520
     3f4:	3d 00       	.word	0x003d	; ????
521
     3f6:	3c 24       	eor	r3, r12
522
     3f8:	ff 24       	eor	r15, r15
523
     3fa:	24 00       	.word	0x0024	; ????
524
     3fc:	48 7e       	andi	r20, 0xE8	; 232
525
     3fe:	49 43       	sbci	r20, 0x39	; 57
526
     400:	66 00       	.word	0x0066	; ????
527
     402:	2b 2f       	mov	r18, r27
528
     404:	fc 2f       	mov	r31, r28
529
     406:	2b 00       	.word	0x002b	; ????
530
     408:	ff 09       	sbc	r31, r15
531
     40a:	29 f6       	brne	.-118    	; 0x396 <__ctors_end+0x342>
532
     40c:	20 00       	.word	0x0020	; ????
533
     40e:	c0 88       	ldd	r12, Z+16	; 0x10
534
     410:	7e 09       	sbc	r23, r14
535
     412:	03 00       	.word	0x0003	; ????
536
     414:	20 54       	subi	r18, 0x40	; 64
537
     416:	54 79       	andi	r21, 0x94	; 148
538
     418:	41 00       	.word	0x0041	; ????
539
     41a:	00 00       	nop
540
     41c:	44 7d       	andi	r20, 0xD4	; 212
541
     41e:	41 00       	.word	0x0041	; ????
542
     420:	30 48       	sbci	r19, 0x80	; 128
543
     422:	48 4a       	sbci	r20, 0xA8	; 168
544
     424:	32 00       	.word	0x0032	; ????
545
     426:	38 40       	sbci	r19, 0x08	; 8
546
     428:	40 22       	and	r4, r16
547
     42a:	7a 00       	.word	0x007a	; ????
548
     42c:	00 7a       	andi	r16, 0xA0	; 160
549
     42e:	0a 0a       	sbc	r0, r26
550
     430:	72 00       	.word	0x0072	; ????
551
     432:	7d 0d       	add	r23, r13
552
     434:	19 31       	cpi	r17, 0x19	; 25
553
     436:	7d 00       	.word	0x007d	; ????
554
     438:	26 29       	or	r18, r6
555
     43a:	29 2f       	mov	r18, r25
556
     43c:	28 00       	.word	0x0028	; ????
557
     43e:	26 29       	or	r18, r6
558
     440:	29 29       	or	r18, r9
559
     442:	26 00       	.word	0x0026	; ????
560
     444:	30 48       	sbci	r19, 0x80	; 128
561
     446:	4d 40       	sbci	r20, 0x0D	; 13
562
     448:	20 00       	.word	0x0020	; ????
563
     44a:	38 08       	sbc	r3, r8
564
     44c:	08 08       	sbc	r0, r8
565
     44e:	08 00       	.word	0x0008	; ????
566
     450:	08 08       	sbc	r0, r8
567
     452:	08 08       	sbc	r0, r8
568
     454:	38 00       	.word	0x0038	; ????
569
     456:	2f 10       	cpse	r2, r15
570
     458:	c8 ac       	ldd	r12, Y+56	; 0x38
571
     45a:	ba 00       	.word	0x00ba	; ????
572
     45c:	2f 10       	cpse	r2, r15
573
     45e:	28 34       	cpi	r18, 0x48	; 72
574
     460:	fa 00       	.word	0x00fa	; ????
575
     462:	00 00       	nop
576
     464:	7b 00       	.word	0x007b	; ????
577
     466:	00 00       	nop
578
     468:	08 14       	cp	r0, r8
579
     46a:	2a 14       	cp	r2, r10
580
     46c:	22 00       	.word	0x0022	; ????
581
     46e:	22 14       	cp	r2, r2
582
     470:	2a 14       	cp	r2, r10
583
     472:	08 00       	.word	0x0008	; ????
584
     474:	aa 00       	.word	0x00aa	; ????
585
     476:	55 00       	.word	0x0055	; ????
586
     478:	aa 00       	.word	0x00aa	; ????
587
     47a:	aa 55       	subi	r26, 0x5A	; 90
588
     47c:	aa 55       	subi	r26, 0x5A	; 90
589
     47e:	aa 55       	subi	r26, 0x5A	; 90
590
     480:	55 aa       	std	Z+53, r5	; 0x35
591
     482:	55 aa       	std	Z+53, r5	; 0x35
592
     484:	55 aa       	std	Z+53, r5	; 0x35
593
     486:	00 00       	nop
594
     488:	00 ff       	sbrs	r16, 0
595
     48a:	00 00       	nop
596
     48c:	10 10       	cpse	r1, r0
597
     48e:	10 ff       	sbrs	r17, 0
598
     490:	00 00       	nop
599
     492:	14 14       	cp	r1, r4
600
     494:	14 ff       	sbrs	r17, 4
601
     496:	00 00       	nop
602
     498:	10 10       	cpse	r1, r0
603
     49a:	ff 00       	.word	0x00ff	; ????
604
     49c:	ff 00       	.word	0x00ff	; ????
605
     49e:	10 10       	cpse	r1, r0
606
     4a0:	f0 10       	cpse	r15, r0
607
     4a2:	f0 00       	.word	0x00f0	; ????
608
     4a4:	14 14       	cp	r1, r4
609
     4a6:	14 fc       	sbrc	r1, 4
610
     4a8:	00 00       	nop
611
     4aa:	14 14       	cp	r1, r4
612
     4ac:	f7 00       	.word	0x00f7	; ????
613
     4ae:	ff 00       	.word	0x00ff	; ????
614
     4b0:	00 00       	nop
615
     4b2:	ff 00       	.word	0x00ff	; ????
616
     4b4:	ff 00       	.word	0x00ff	; ????
617
     4b6:	14 14       	cp	r1, r4
618
     4b8:	f4 04       	cpc	r15, r4
619
     4ba:	fc 00       	.word	0x00fc	; ????
620
     4bc:	14 14       	cp	r1, r4
621
     4be:	17 10       	cpse	r1, r7
622
     4c0:	1f 00       	.word	0x001f	; ????
623
     4c2:	10 10       	cpse	r1, r0
624
     4c4:	1f 10       	cpse	r1, r15
625
     4c6:	1f 00       	.word	0x001f	; ????
626
     4c8:	14 14       	cp	r1, r4
627
     4ca:	14 1f       	adc	r17, r20
628
     4cc:	00 00       	nop
629
     4ce:	10 10       	cpse	r1, r0
630
     4d0:	10 f0       	brcs	.+4      	; 0x4d6 <__ctors_end+0x482>
631
     4d2:	00 00       	nop
632
     4d4:	00 00       	nop
633
     4d6:	00 1f       	adc	r16, r16
634
     4d8:	10 10       	cpse	r1, r0
635
     4da:	10 10       	cpse	r1, r0
636
     4dc:	10 1f       	adc	r17, r16
637
     4de:	10 10       	cpse	r1, r0
638
     4e0:	10 10       	cpse	r1, r0
639
     4e2:	10 f0       	brcs	.+4      	; 0x4e8 <__ctors_end+0x494>
640
     4e4:	10 10       	cpse	r1, r0
641
     4e6:	00 00       	nop
642
     4e8:	00 ff       	sbrs	r16, 0
643
     4ea:	10 10       	cpse	r1, r0
644
     4ec:	10 10       	cpse	r1, r0
645
     4ee:	10 10       	cpse	r1, r0
646
     4f0:	10 10       	cpse	r1, r0
647
     4f2:	10 10       	cpse	r1, r0
648
     4f4:	10 ff       	sbrs	r17, 0
649
     4f6:	10 10       	cpse	r1, r0
650
     4f8:	00 00       	nop
651
     4fa:	00 ff       	sbrs	r16, 0
652
     4fc:	14 14       	cp	r1, r4
653
     4fe:	00 00       	nop
654
     500:	ff 00       	.word	0x00ff	; ????
655
     502:	ff 10       	cpse	r15, r15
656
     504:	00 00       	nop
657
     506:	1f 10       	cpse	r1, r15
658
     508:	17 14       	cp	r1, r7
659
     50a:	00 00       	nop
660
     50c:	fc 04       	cpc	r15, r12
661
     50e:	f4 14       	cp	r15, r4
662
     510:	14 14       	cp	r1, r4
663
     512:	17 10       	cpse	r1, r7
664
     514:	17 14       	cp	r1, r7
665
     516:	14 14       	cp	r1, r4
666
     518:	f4 04       	cpc	r15, r4
667
     51a:	f4 14       	cp	r15, r4
668
     51c:	00 00       	nop
669
     51e:	ff 00       	.word	0x00ff	; ????
670
     520:	f7 14       	cp	r15, r7
671
     522:	14 14       	cp	r1, r4
672
     524:	14 14       	cp	r1, r4
673
     526:	14 14       	cp	r1, r4
674
     528:	14 14       	cp	r1, r4
675
     52a:	f7 00       	.word	0x00f7	; ????
676
     52c:	f7 14       	cp	r15, r7
677
     52e:	14 14       	cp	r1, r4
678
     530:	14 17       	cp	r17, r20
679
     532:	14 14       	cp	r1, r4
680
     534:	10 10       	cpse	r1, r0
681
     536:	1f 10       	cpse	r1, r15
682
     538:	1f 10       	cpse	r1, r15
683
     53a:	14 14       	cp	r1, r4
684
     53c:	14 f4       	brge	.+4      	; 0x542 <__ctors_end+0x4ee>
685
     53e:	14 14       	cp	r1, r4
686
     540:	10 10       	cpse	r1, r0
687
     542:	f0 10       	cpse	r15, r0
688
     544:	f0 10       	cpse	r15, r0
689
     546:	00 00       	nop
690
     548:	1f 10       	cpse	r1, r15
691
     54a:	1f 10       	cpse	r1, r15
692
     54c:	00 00       	nop
693
     54e:	00 1f       	adc	r16, r16
694
     550:	14 14       	cp	r1, r4
695
     552:	00 00       	nop
696
     554:	00 fc       	sbrc	r0, 0
697
     556:	14 14       	cp	r1, r4
698
     558:	00 00       	nop
699
     55a:	f0 10       	cpse	r15, r0
700
     55c:	f0 10       	cpse	r15, r0
701
     55e:	10 10       	cpse	r1, r0
702
     560:	ff 10       	cpse	r15, r15
703
     562:	ff 10       	cpse	r15, r15
704
     564:	14 14       	cp	r1, r4
705
     566:	14 ff       	sbrs	r17, 4
706
     568:	14 14       	cp	r1, r4
707
     56a:	10 10       	cpse	r1, r0
708
     56c:	10 1f       	adc	r17, r16
709
     56e:	00 00       	nop
710
     570:	00 00       	nop
711
     572:	00 f0       	brcs	.+0      	; 0x574 <__ctors_end+0x520>
712
     574:	10 10       	cpse	r1, r0
713
     576:	ff ff       	.word	0xffff	; ????
714
     578:	ff ff       	.word	0xffff	; ????
715
     57a:	ff ff       	.word	0xffff	; ????
716
     57c:	f0 f0       	brcs	.+60     	; 0x5ba <__ctors_end+0x566>
717
     57e:	f0 f0       	brcs	.+60     	; 0x5bc <__ctors_end+0x568>
718
     580:	f0 f0       	brcs	.+60     	; 0x5be <__ctors_end+0x56a>
719
     582:	ff ff       	.word	0xffff	; ????
720
     584:	ff 00       	.word	0x00ff	; ????
721
     586:	00 00       	nop
722
     588:	00 00       	nop
723
     58a:	00 ff       	sbrs	r16, 0
724
     58c:	ff ff       	.word	0xffff	; ????
725
     58e:	0f 0f       	add	r16, r31
726
     590:	0f 0f       	add	r16, r31
727
     592:	0f 0f       	add	r16, r31
728
     594:	38 44       	sbci	r19, 0x48	; 72
729
     596:	44 38       	cpi	r20, 0x84	; 132
730
     598:	44 00       	.word	0x0044	; ????
731
     59a:	7c 2a       	or	r7, r28
732
     59c:	2a 3e       	cpi	r18, 0xEA	; 234
733
     59e:	14 00       	.word	0x0014	; ????
734
     5a0:	7e 02       	muls	r23, r30
735
     5a2:	02 06       	cpc	r0, r18
736
     5a4:	06 00       	.word	0x0006	; ????
737
     5a6:	02 7e       	andi	r16, 0xE2	; 226
738
     5a8:	02 7e       	andi	r16, 0xE2	; 226
739
     5aa:	02 00       	.word	0x0002	; ????
740
     5ac:	63 55       	subi	r22, 0x53	; 83
741
     5ae:	49 41       	sbci	r20, 0x19	; 25
742
     5b0:	63 00       	.word	0x0063	; ????
743
     5b2:	38 44       	sbci	r19, 0x48	; 72
744
     5b4:	44 3c       	cpi	r20, 0xC4	; 196
745
     5b6:	04 00       	.word	0x0004	; ????
746
     5b8:	40 7e       	andi	r20, 0xE0	; 224
747
     5ba:	20 1e       	adc	r2, r16
748
     5bc:	20 00       	.word	0x0020	; ????
749
     5be:	06 02       	muls	r16, r22
750
     5c0:	7e 02       	muls	r23, r30
751
     5c2:	02 00       	.word	0x0002	; ????
752
     5c4:	99 a5       	ldd	r25, Y+41	; 0x29
753
     5c6:	e7 a5       	ldd	r30, Z+47	; 0x2f
754
     5c8:	99 00       	.word	0x0099	; ????
755
     5ca:	1c 2a       	or	r1, r28
756
     5cc:	49 2a       	or	r4, r25
757
     5ce:	1c 00       	.word	0x001c	; ????
758
     5d0:	4c 72       	andi	r20, 0x2C	; 44
759
     5d2:	01 72       	andi	r16, 0x21	; 33
760
     5d4:	4c 00       	.word	0x004c	; ????
761
     5d6:	30 4a       	sbci	r19, 0xA0	; 160
762
     5d8:	4d 4d       	sbci	r20, 0xDD	; 221
763
     5da:	30 00       	.word	0x0030	; ????
764
     5dc:	30 48       	sbci	r19, 0x80	; 128
765
     5de:	78 48       	sbci	r23, 0x88	; 136
766
     5e0:	30 00       	.word	0x0030	; ????
767
     5e2:	bc 62       	ori	r27, 0x2C	; 44
768
     5e4:	5a 46       	sbci	r21, 0x6A	; 106
769
     5e6:	3d 00       	.word	0x003d	; ????
770
     5e8:	3e 49       	sbci	r19, 0x9E	; 158
771
     5ea:	49 49       	sbci	r20, 0x99	; 153
772
     5ec:	00 00       	nop
773
     5ee:	7e 01       	movw	r14, r28
774
     5f0:	01 01       	movw	r0, r2
775
     5f2:	7e 00       	.word	0x007e	; ????
776
     5f4:	2a 2a       	or	r2, r26
777
     5f6:	2a 2a       	or	r2, r26
778
     5f8:	2a 00       	.word	0x002a	; ????
779
     5fa:	44 44       	sbci	r20, 0x44	; 68
780
     5fc:	5f 44       	sbci	r21, 0x4F	; 79
781
     5fe:	44 00       	.word	0x0044	; ????
782
     600:	40 51       	subi	r20, 0x10	; 16
783
     602:	4a 44       	sbci	r20, 0x4A	; 74
784
     604:	40 00       	.word	0x0040	; ????
785
     606:	40 44       	sbci	r20, 0x40	; 64
786
     608:	4a 51       	subi	r20, 0x1A	; 26
787
     60a:	40 00       	.word	0x0040	; ????
788
     60c:	00 00       	nop
789
     60e:	ff 01       	movw	r30, r30
790
     610:	03 00       	.word	0x0003	; ????
791
     612:	e0 80       	ld	r14, Z
792
     614:	ff 00       	.word	0x00ff	; ????
793
     616:	00 00       	nop
794
     618:	08 08       	sbc	r0, r8
795
     61a:	6b 6b       	ori	r22, 0xBB	; 187
796
     61c:	08 08       	sbc	r0, r8
797
     61e:	36 12       	cpse	r3, r22
798
     620:	36 24       	eor	r3, r6
799
     622:	36 00       	.word	0x0036	; ????
800
     624:	06 0f       	add	r16, r22
801
     626:	09 0f       	add	r16, r25
802
     628:	06 00       	.word	0x0006	; ????
803
     62a:	00 00       	nop
804
     62c:	18 18       	sub	r1, r8
805
     62e:	00 00       	nop
806
     630:	00 00       	nop
807
     632:	10 10       	cpse	r1, r0
808
     634:	00 00       	nop
809
     636:	30 40       	sbci	r19, 0x00	; 0
810
     638:	ff 01       	movw	r30, r30
811
     63a:	01 00       	.word	0x0001	; ????
812
     63c:	00 1f       	adc	r16, r16
813
     63e:	01 01       	movw	r0, r2
814
     640:	1e 00       	.word	0x001e	; ????
815
     642:	00 19       	sub	r16, r0
816
     644:	1d 17       	cp	r17, r29
817
     646:	12 00       	.word	0x0012	; ????
818
     648:	00 3c       	cpi	r16, 0xC0	; 192
819
     64a:	3c 3c       	cpi	r19, 0xCC	; 204
820
     64c:	3c 00       	.word	0x003c	; ????
821
     64e:	00 00       	nop
822
     650:	00 00       	nop
823
	...
824
 
825
00000654 <__c.0>:
826
     654:	20 20 20 20 20 20 00                                      .
827
 
828
0000065b <parameter>:
829
     65b:	4e 69 63 6b 20 20 20 20 20 20 20 20 20 20 20 00     Nick           .
830
     66b:	52 6f 6c 6c 20 20 20 20 20 20 20 20 20 20 20 00     Roll           .
831
     67b:	47 61 73 20 20 20 20 20 20 20 20 20 20 20 20 00     Gas            .
832
     68b:	47 69 65 72 09 09 09 00 00 00 00 00 00 00 00 00     Gier............
833
     69b:	50 6f 74 69 31 09 09 09 00 00 00 00 00 00 00 00     Poti1...........
834
     6ab:	50 6f 74 69 32 09 09 09 00 00 00 00 00 00 00 00     Poti2...........
835
     6bb:	50 6f 74 69 33 09 09 09 00 00 00 00 00 00 00 00     Poti3...........
836
     6cb:	50 6f 74 69 34 09 09 09 00 00 00 00 00 00 00 00     Poti4...........
837
     6db:	43 6f 6e 66 69 67 09 09 09 00 00 00 00 00 00 00     Config..........
838
     6eb:	48 6f 65 68 65 5f 4d 69 6e 47 61 73 20 20 20 00     Hoehe_MinGas   .
839
     6fb:	4c 75 66 74 64 72 75 63 6b 5f 44 20 20 20 20 00     Luftdruck_D    .
840
     70b:	4d 61 78 48 6f 65 68 65 20 20 20 20 20 20 20 00     MaxHoehe       .
841
     71b:	48 6f 65 68 65 5f 50 20 20 20 20 20 20 20 20 00     Hoehe_P        .
842
     72b:	48 6f 65 68 65 5f 56 65 72 73 74 61 65 72 6b 00     Hoehe_Verstaerk.
843
     73b:	48 6f 65 68 65 5f 41 43 43 5f 57 69 72 6b 2e 00     Hoehe_ACC_Wirk..
844
     74b:	53 74 69 63 6b 5f 50 20 20 20 20 20 20 20 20 00     Stick_P        .
845
     75b:	53 74 69 63 6b 5f 44 20 20 20 20 20 20 20 20 00     Stick_D        .
846
     76b:	47 69 65 72 5f 50 20 20 20 20 20 20 20 20 20 00     Gier_P         .
847
     77b:	47 61 73 5f 4d 69 6e 20 20 20 20 20 20 20 20 00     Gas_Min        .
848
     78b:	47 61 73 5f 4d 61 78 20 20 20 20 20 20 20 20 00     Gas_Max        .
849
     79b:	47 79 72 6f 41 63 63 46 61 6b 74 6f 72 09 00 00     GyroAccFaktor...
850
     7ab:	4b 6f 6d 70 61 73 73 57 69 72 6b 75 6e 67 20 00     KompassWirkung .
851
     7bb:	47 79 72 6f 5f 50 20 09 09 00 00 00 00 00 00 00     Gyro_P .........
852
     7cb:	47 79 72 6f 5f 49 09 09 09 00 00 00 00 00 00 00     Gyro_I..........
853
     7db:	55 6e 74 65 72 73 70 61 6e 6e 75 6e 67 20 20 00     Unterspannung  .
854
     7eb:	4e 6f 74 47 61 73 09 09 09 00 00 00 00 00 00 00     NotGas..........
855
     7fb:	4e 6f 74 47 61 73 5a 65 69 74 20 20 20 20 20 00     NotGasZeit     .
856
     80b:	55 66 6f 41 75 73 72 69 63 68 74 75 6e 67 20 00     UfoAusrichtung .
857
     81b:	49 5f 46 61 6b 74 6f 72 20 20 20 20 20 20 20 00     I_Faktor       .
858
     82b:	55 73 65 72 50 61 72 61 6d 31 09 09 00 00 00 00     UserParam1......
859
     83b:	55 73 65 72 50 61 72 61 6d 32 09 09 00 00 00 00     UserParam2......
860
     84b:	55 73 65 72 50 61 72 61 6d 33 09 09 00 00 00 00     UserParam3......
861
     85b:	55 73 65 72 50 61 72 61 6d 34 09 09 00 00 00 00     UserParam4......
862
     86b:	53 65 72 76 6f 4e 69 63 6b 43 74 72 6c 09 00 00     ServoNickCtrl...
863
     87b:	53 65 72 76 6f 4e 69 63 6b 43 6f 6d 70 09 00 00     ServoNickComp...
864
     88b:	53 65 72 76 6f 4e 69 63 6b 4d 69 6e 09 00 00 00     ServoNickMin....
865
     89b:	53 65 72 76 6f 4e 69 63 6b 4d 61 78 09 00 00 00     ServoNickMax....
866
     8ab:	53 65 72 76 6f 4e 69 63 6b 52 65 66 72 73 68 00     ServoNickRefrsh.
867
     8bb:	4c 6f 6f 70 47 61 73 4c 69 6d 69 74 09 00 00 00     LoopGasLimit....
868
     8cb:	4c 6f 6f 70 54 68 72 65 73 68 6f 6c 64 09 00 00     LoopThreshold...
869
     8db:	4c 6f 6f 70 48 79 73 74 65 72 65 73 65 09 00 00     LoopHysterese...
870
     8eb:	41 63 68 73 4b 6f 70 70 6c 75 6e 67 09 00 00 00     AchsKopplung....
871
     8fb:	41 63 68 73 47 65 67 65 6e 4b 6f 70 70 6c 2e 00     AchsGegenKoppl..
872
     90b:	57 69 6e 6b 6c 55 6d 73 63 68 6c 4e 69 63 6b 00     WinklUmschlNick.
873
     91b:	57 69 6e 6b 6c 55 6d 73 63 68 6c 52 6f 6c 6c 00     WinklUmschlRoll.
874
     92b:	47 79 72 6f 41 63 63 41 62 67 6c 65 69 63 68 00     GyroAccAbgleich.
875
     93b:	44 72 69 66 74 6b 6f 6d 70 09 09 00 00 00 00 00     Driftkomp.......
876
     94b:	44 79 6e 61 6d 69 63 53 74 61 62 69 6c 69 74 00     DynamicStabilit.
877
     95b:	55 73 65 72 50 61 72 61 6d 35 09 09 00 00 00 00     UserParam5......
878
     96b:	55 73 65 72 50 61 72 61 6d 36 09 09 00 00 00 00     UserParam6......
879
     97b:	55 73 65 72 50 61 72 61 6d 37 09 09 00 00 00 00     UserParam7......
880
     98b:	55 73 65 72 50 61 72 61 6d 38 09 09 00 00 00 00     UserParam8......
881
     99b:	4c 6f 6f 70 43 6f 6e 66 69 67 09 09 00 00 00 00     LoopConfig......
882
     9ab:	53 65 72 76 6f 4e 69 63 6b 43 6f 6d 70 49 6e 00     ServoNickCompIn.
883
 
884
000009bb <bin_parameter>:
885
     9bb:	4c 6f 6f 70 20 75 70 20 20 20 20 20 20 20 20 00     Loop up        .
886
     9cb:	4c 6f 6f 70 20 64 6f 77 6e 09 20 20 20 20 00 00     Loop down.    ..
887
     9db:	4c 6f 6f 70 20 6c 65 66 74 20 20 20 20 20 20 00     Loop left      .
888
     9eb:	4c 6f 6f 70 20 72 69 67 68 74 20 20 20 20 20 00     Loop right     .
889
     9fb:	48 f6 68 65 6e 72 65 67 6c 65 72 20 20 20 20 00     H.henregler    .
890
     a0b:	48 f6 68 65 6e 73 63 68 61 6c 74 65 72 20 20 00     H.henschalter  .
891
     a1b:	48 65 61 64 68 6f 6c 64 09 09 00 00 00 00 00 00     Headhold........
892
     a2b:	4b 6f 6d 70 61 73 73 09 09 00 00 00 00 00 00 00     Kompass.........
893
     a3b:	4b 6f 6d 70 61 73 73 46 69 78 09 09 00 00 00 00     KompassFix......
894
     a4b:	47 50 53 09 09 09 00 00 00 00 00 00 00 00 00 00     GPS.............
895
     a5b:	41 63 68 73 65 6e 6b 6f 70 70 6c 75 6e 67 20 00     Achsenkopplung .
896
     a6b:	44 72 65 68 72 61 74 65 09 09 00 00 00 00 00 00     Drehrate........
897
 
898
00000a7b <p_limits>:
899
     a7b:	01 08 02 01 08 02 01 08 02 01 08 02 01 08 02 01     ................
900
     a8b:	08 02 01 08 02 01 08 02 00 00 00 00 ff 04 00 ff     ................
901
     a9b:	04 00 ff 04 00 ff 04 00 32 04 00 ff 04 00 06 03     ........2.......
902
     aab:	00 40 03 00 14 03 00 20 08 21 fa 08 00 32 08 00     .@..... .!...2..
903
     abb:	ff 08 00 00 05 00 00 05 00 fa 08 00 fa 08 00 fa     ................
904
     acb:	08 00 01 00 00 ff 05 00 ff 09 00 ff 09 00 ff 09     ................
905
     adb:	00 ff 09 00 ff 07 00 fa 07 00 fa 07 00 fa 07 00     ................
906
     aeb:	19 07 00 ff 06 00 fa 06 00 fa 06 00 ff 0a 00 ff     ................
907
     afb:	0a 00 fa 06 00 fa 06 00 fa 05 00 fa 05 00 ff 05     ................
908
     b0b:	00 ff 09 00 ff 09 00 ff 09 00 ff 09 00 00 01 00     ................
909
     b1b:	01 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00     ................
910
	...
911
 
912
00000b42 <p_menu_number>:
913
     b42:	02 02 02 02 02 02 02 02 00 04 04 04 04 04 04 03     ................
914
     b52:	03 03 08 08 08 08 05 05 08 08 08 00 05 09 09 09     ................
915
     b62:	09 07 07 07 07 07 07 06 06 06 0a 0a 06 06 05 05     ................
916
     b72:	05 09 09 09 09 00 07 0b 0b 0b 0b 0c 0c 0c 0c 0c     ................
917
     b82:	0c 0c 0c                                            ...
918
 
919
00000b85 <p_menus>:
920
     b85:	43 6f 6e 66 69 67 20 20 20 20 00 43 68 61 6e 6e     Config    .Chann
921
     b95:	65 6c 73 20 20 00 53 74 69 63 6b 20 20 20 20 20     els  .Stick
922
     ba5:	00 48 6f 65 68 65 20 20 20 20 20 00 47 79 72 6f     .Hoehe     .Gyro
923
     bb5:	20 20 20 20 20 20 00 4c 6f 6f 70 69 6e 67 20 20           .Looping
924
     bc5:	20 00 43 61 6d 65 72 61 20 20 20 20 00 53 6f 6e      .Camera    .Son
925
     bd5:	73 74 69 67 65 73 20 00 55 73 65 72 20 20 20 20     stiges .User
926
     be5:	20 20 00 43 6f 75 70 6c 69 6e 67 20 20 00 43 6f       .Coupling  .Co
927
     bf5:	6e 66 69 67 28 32 29 20 00 4c 6f 6f 70 69 6e 67     nfig(2) .Looping
928
     c05:	73 65 74 00                                         set.
929
 
930
00000c09 <__c.11>:
931
     c09:	2d 00                                               -.
932
 
933
00000c0b <__c.12>:
934
     c0b:	2d 00                                               -.
935
 
936
00000c0d <__c.13>:
937
     c0d:	2d 00                                               -.
938
 
939
00000c0f <__c.0>:
940
     c0f:	4c 61 64 65 20 50 61 72 61 6d 65 74 65 72 0d 0a     Lade Parameter..
941
	...
942
 
943
00000c20 <__c.1>:
944
     c20:	20 31 3a 0d 0a 00                                    1:...
945
 
946
00000c26 <__c.2>:
947
     c26:	20 32 3a 0d 0a 00                                    2:...
948
 
949
00000c2c <__c.3>:
950
     c2c:	20 33 3a 0d 0a 00                                    3:...
951
 
952
00000c32 <__c.4>:
953
     c32:	20 34 3a 0d 0a 00                                    4:...
954
 
955
00000c38 <__c.5>:
956
     c38:	20 35 3a 0d 0a 00                                    5:...
957
 
958
00000c3e <__c.6>:
959
     c3e:	54 69 6d 65 6f 75 74 00                             Timeout.
960
 
961
00000c46 <__c.7>:
962
     c46:	50 61 72 61 6d 65 74 65 72 20 73 70 65 69 63 68     Parameter speich
963
     c56:	65 72 6e 3f 0d 0a 20 20 6a 61 0d 0a 20 20 6e 65     ern?..  ja..  ne
964
     c66:	69 6e 00                                            in.
965
 
966
00000c69 <__c.8>:
967
     c69:	0d 0a 2d 2d 2d 3e 00                                ..--->.
968
 
969
00000c70 <__c.9>:
970
     c70:	0d 0a 50 61 72 61 6d 65 74 65 72 20 67 65 73 70     ..Parameter gesp
971
     c80:	65 69 63 68 65 72 74 00                             eichert.
972
 
973
00000c88 <__c.10>:
974
     c88:	0d 0a 4e 69 63 68 74 20 67 65 73 70 65 69 63 68     ..Nicht gespeich
975
     c98:	65 72 74 00                                         ert.
976
 
977
00000c9c <__c.4>:
978
     c9c:	20 00                                                .
979
 
980
00000c9e <__c.5>:
981
     c9e:	2a 00                                               *.
982
 
983
00000ca0 <__c.0>:
984
     ca0:	48 61 75 70 74 6d 65 6e fc 28 42 45 54 41 20 56     Hauptmen.(BETA V
985
     cb0:	30 2e 31 29 0d 0a 00                                0.1)...
986
 
987
00000cb7 <__c.1>:
988
     cb7:	0d 0a 44 69 73 70 6c 61 79 0d 0a 00                 ..Display...
989
 
990
00000cc3 <__c.2>:
991
     cc3:	50 61 72 61 6d 65 74 65 72 0d 0a 00                 Parameter...
992
 
993
00000ccf <__c.3>:
994
     ccf:	4d 6f 74 6f 72 74 65 73 74 00                       Motortest.
995
 
996
00000cd9 <__c.0>:
997
     cd9:	44 69 73 70 6c 61 79 00                             Display.
998
 
999
00000ce1 <__c.1>:
1000
     ce1:	0d 0a 54 69 6d 65 6f 75 74 21 00                    ..Timeout!.
1001
 
1002
00000cec <__c.0>:
1003
     cec:	54 61 73 74 65 20 64 72 fc 63 6b 65 6e 0d 0a 00     Taste dr.cken...
1004
 
1005
00000cfc <__init>:
1006
     cfc:	11 24       	eor	r1, r1
1007
     cfe:	1f be       	out	0x3f, r1	; 63
1008
     d00:	cf e5       	ldi	r28, 0x5F	; 95
1009
     d02:	d8 e0       	ldi	r29, 0x08	; 8
1010
     d04:	de bf       	out	0x3e, r29	; 62
1011
     d06:	cd bf       	out	0x3d, r28	; 61
1012
 
1013
00000d08 <__do_copy_data>:
1014
     d08:	10 e0       	ldi	r17, 0x00	; 0
1015
     d0a:	a0 e6       	ldi	r26, 0x60	; 96
1016
     d0c:	b0 e0       	ldi	r27, 0x00	; 0
1017
     d0e:	ec e6       	ldi	r30, 0x6C	; 108
1018
     d10:	f6 e2       	ldi	r31, 0x26	; 38
1019
     d12:	02 c0       	rjmp	.+4      	; 0xd18 <.do_copy_data_start>
1020
 
1021
00000d14 <.do_copy_data_loop>:
1022
     d14:	05 90       	lpm	r0, Z+
1023
     d16:	0d 92       	st	X+, r0
1024
 
1025
00000d18 <.do_copy_data_start>:
1026
     d18:	a0 36       	cpi	r26, 0x60	; 96
1027
     d1a:	b1 07       	cpc	r27, r17
1028
     d1c:	d9 f7       	brne	.-10     	; 0xd14 <.do_copy_data_loop>
1029
 
1030
00000d1e <__do_clear_bss>:
1031
     d1e:	15 e0       	ldi	r17, 0x05	; 5
1032
     d20:	a0 e6       	ldi	r26, 0x60	; 96
1033
     d22:	b0 e0       	ldi	r27, 0x00	; 0
1034
     d24:	01 c0       	rjmp	.+2      	; 0xd28 <.do_clear_bss_start>
1035
 
1036
00000d26 <.do_clear_bss_loop>:
1037
     d26:	1d 92       	st	X+, r1
1038
 
1039
00000d28 <.do_clear_bss_start>:
1040
     d28:	a7 38       	cpi	r26, 0x87	; 135
1041
     d2a:	b1 07       	cpc	r27, r17
1042
     d2c:	e1 f7       	brne	.-8      	; 0xd26 <.do_clear_bss_loop>
1043
     d2e:	0c 94 9b 06 	jmp	0xd36 <main>
1044
 
1045
00000d32 <__bad_interrupt>:
1046
     d32:	0c 94 00 00 	jmp	0x0 <__vectors>
1047
 
1048
00000d36 <main>:
1049
#include "timer.h"
1050
 
1051
 
1052
int main (void)
1053
{
1054
     d36:	cf e5       	ldi	r28, 0x5F	; 95
1055
     d38:	d8 e0       	ldi	r29, 0x08	; 8
1056
     d3a:	de bf       	out	0x3e, r29	; 62
1057
     d3c:	cd bf       	out	0x3d, r28	; 61
1058
	PORTA = 0xFF;		// unbenutzte Pins auf Pull-Up
1059
     d3e:	8f ef       	ldi	r24, 0xFF	; 255
1060
     d40:	8b bb       	out	0x1b, r24	; 27
1061
	PORTB = 0x43;
1062
     d42:	83 e4       	ldi	r24, 0x43	; 67
1063
     d44:	88 bb       	out	0x18, r24	; 24
1064
	PORTC = 0xFC;
1065
     d46:	8c ef       	ldi	r24, 0xFC	; 252
1066
     d48:	85 bb       	out	0x15, r24	; 21
1067
	PORTD = 0x7C;
1068
     d4a:	8c e7       	ldi	r24, 0x7C	; 124
1069
     d4c:	82 bb       	out	0x12, r24	; 18
1070
 
1071
	DDRC = 0x03;		// Pins für Beleuchtung auf Ausgang
1072
     d4e:	83 e0       	ldi	r24, 0x03	; 3
1073
     d50:	84 bb       	out	0x14, r24	; 20
1074
	DDRD = 0x80;
1075
     d52:	80 e8       	ldi	r24, 0x80	; 128
1076
     d54:	81 bb       	out	0x11, r24	; 17
1077
 
1078
	lcd_init();
1079
     d56:	0e 94 53 07 	call	0xea6 <lcd_init>
1080
	RS232_init();
1081
     d5a:	0e 94 1a 0c 	call	0x1834 <RS232_init>
1082
	timer_init();
1083
     d5e:	0e 94 f4 06 	call	0xde8 <timer_init>
1084
 
1085
	sei();
1086
     d62:	78 94       	sei
1087
 
1088
	for (;;)
1089
		main_menu();
1090
     d64:	0e 94 c8 11 	call	0x2390 <main_menu>
1091
     d68:	fd cf       	rjmp	.-6      	; 0xd64 <main+0x2e>
1092
 
1093
00000d6a <__vector_10>:
1094
volatile uint8_t rs232_timer;
1095
 
1096
 
1097
ISR(SIG_OUTPUT_COMPARE0)						// Timer-Interrupt (100 Hz)
1098
{
1099
     d6a:	1f 92       	push	r1
1100
     d6c:	0f 92       	push	r0
1101
     d6e:	0f b6       	in	r0, 0x3f	; 63
1102
     d70:	0f 92       	push	r0
1103
     d72:	11 24       	eor	r1, r1
1104
     d74:	8f 93       	push	r24
1105
     d76:	9f 93       	push	r25
1106
	if (counter > 0)
1107
     d78:	80 91 e4 04 	lds	r24, 0x04E4
1108
     d7c:	88 23       	and	r24, r24
1109
     d7e:	31 f0       	breq	.+12     	; 0xd8c <__vector_10+0x22>
1110
		counter --;
1111
     d80:	80 91 e4 04 	lds	r24, 0x04E4
1112
     d84:	81 50       	subi	r24, 0x01	; 1
1113
     d86:	80 93 e4 04 	sts	0x04E4, r24
1114
     d8a:	15 c0       	rjmp	.+42     	; 0xdb6 <__vector_10+0x4c>
1115
	else
1116
	{
1117
		counter = 10;
1118
     d8c:	8a e0       	ldi	r24, 0x0A	; 10
1119
     d8e:	80 93 e4 04 	sts	0x04E4, r24
1120
		key = (~PINA >> 4) & 0x0F;
1121
     d92:	89 b3       	in	r24, 0x19	; 25
1122
     d94:	99 27       	eor	r25, r25
1123
     d96:	80 95       	com	r24
1124
     d98:	90 95       	com	r25
1125
     d9a:	68 94       	set
1126
     d9c:	13 f8       	bld	r1, 3
1127
     d9e:	95 95       	asr	r25
1128
     da0:	87 95       	ror	r24
1129
     da2:	16 94       	lsr	r1
1130
     da4:	e1 f7       	brne	.-8      	; 0xd9e <__vector_10+0x34>
1131
     da6:	8f 70       	andi	r24, 0x0F	; 15
1132
     da8:	80 93 e6 04 	sts	0x04E6, r24
1133
		counter2 ++;
1134
     dac:	80 91 69 05 	lds	r24, 0x0569
1135
     db0:	8f 5f       	subi	r24, 0xFF	; 255
1136
     db2:	80 93 69 05 	sts	0x0569, r24
1137
	}
1138
 
1139
	if (timer > 0)
1140
     db6:	80 91 61 00 	lds	r24, 0x0061
1141
     dba:	88 23       	and	r24, r24
1142
     dbc:	29 f0       	breq	.+10     	; 0xdc8 <__vector_10+0x5e>
1143
		timer --;
1144
     dbe:	80 91 61 00 	lds	r24, 0x0061
1145
     dc2:	81 50       	subi	r24, 0x01	; 1
1146
     dc4:	80 93 61 00 	sts	0x0061, r24
1147
 
1148
	if (rs232_timer > 0)
1149
     dc8:	80 91 e5 04 	lds	r24, 0x04E5
1150
     dcc:	88 23       	and	r24, r24
1151
     dce:	29 f0       	breq	.+10     	; 0xdda <__vector_10+0x70>
1152
		rs232_timer --;
1153
     dd0:	80 91 e5 04 	lds	r24, 0x04E5
1154
     dd4:	81 50       	subi	r24, 0x01	; 1
1155
     dd6:	80 93 e5 04 	sts	0x04E5, r24
1156
     dda:	9f 91       	pop	r25
1157
     ddc:	8f 91       	pop	r24
1158
     dde:	0f 90       	pop	r0
1159
     de0:	0f be       	out	0x3f, r0	; 63
1160
     de2:	0f 90       	pop	r0
1161
     de4:	1f 90       	pop	r1
1162
     de6:	18 95       	reti
1163
 
1164
00000de8 <timer_init>:
1165
 
1166
}
1167
 
1168
void timer_init (void)
1169
{
1170
	TCCR0 = (1<<CS02)|(1<<CS00)|(1<<WGM01);	// Prescaler 1024
1171
     de8:	8d e0       	ldi	r24, 0x0D	; 13
1172
     dea:	83 bf       	out	0x33, r24	; 51
1173
	OCR0 = 72;									// Interrupt 100Hz für 7,372800 MHz-Quarz
1174
     dec:	88 e4       	ldi	r24, 0x48	; 72
1175
     dee:	8c bf       	out	0x3c, r24	; 60
1176
	TIMSK |= (1<<OCIE0);						// Interrupt freigeben für OCR
1177
     df0:	89 b7       	in	r24, 0x39	; 57
1178
     df2:	82 60       	ori	r24, 0x02	; 2
1179
     df4:	89 bf       	out	0x39, r24	; 57
1180
     df6:	08 95       	ret
1181
 
1182
00000df8 <send_byte>:
1183
 
1184
 
1185
void send_byte (uint8_t data)
1186
{
1187
	clr_cs();
1188
     df8:	c4 98       	cbi	0x18, 4	; 24
1189
	SPDR = data;
1190
     dfa:	8f b9       	out	0x0f, r24	; 15
1191
	while(!(SPSR & (1<<SPIF)));
1192
     dfc:	77 9b       	sbis	0x0e, 7	; 14
1193
     dfe:	fe cf       	rjmp	.-4      	; 0xdfc <send_byte+0x4>
1194
	SPSR = SPSR;
1195
     e00:	8e b1       	in	r24, 0x0e	; 14
1196
     e02:	8e b9       	out	0x0e, r24	; 14
1197
	set_cs();
1198
     e04:	c4 9a       	sbi	0x18, 4	; 24
1199
     e06:	08 95       	ret
1200
 
1201
00000e08 <cls>:
1202
}
1203
 
1204
void cls (void)
1205
{
1206
     e08:	0f 93       	push	r16
1207
     e0a:	1f 93       	push	r17
1208
     e0c:	cf 93       	push	r28
1209
     e0e:	df 93       	push	r29
1210
     e10:	82 e6       	ldi	r24, 0x62	; 98
1211
     e12:	90 e0       	ldi	r25, 0x00	; 0
1212
     e14:	fc 01       	movw	r30, r24
1213
	uint16_t i,j;
1214
 
1215
	for (i=0;i<1024;i++)
1216
		display_buffer[i] = 0x00;
1217
     e16:	11 92       	st	Z+, r1
1218
     e18:	01 96       	adiw	r24, 0x01	; 1
1219
     e1a:	24 e0       	ldi	r18, 0x04	; 4
1220
     e1c:	81 36       	cpi	r24, 0x61	; 97
1221
     e1e:	92 07       	cpc	r25, r18
1222
     e20:	d1 f3       	breq	.-12     	; 0xe16 <cls+0xe>
1223
     e22:	c8 f3       	brcs	.-14     	; 0xe16 <cls+0xe>
1224
 
1225
	for (i=0;i<8;i++)
1226
     e24:	00 e0       	ldi	r16, 0x00	; 0
1227
     e26:	10 e0       	ldi	r17, 0x00	; 0
1228
	{
1229
		clr_A0();
1230
     e28:	c3 98       	cbi	0x18, 3	; 24
1231
		send_byte(0xB0+i);
1232
     e2a:	80 2f       	mov	r24, r16
1233
     e2c:	80 55       	subi	r24, 0x50	; 80
1234
     e2e:	0e 94 fc 06 	call	0xdf8 <send_byte>
1235
		send_byte(0x10);
1236
     e32:	80 e1       	ldi	r24, 0x10	; 16
1237
     e34:	0e 94 fc 06 	call	0xdf8 <send_byte>
1238
		send_byte(0x04);
1239
     e38:	84 e0       	ldi	r24, 0x04	; 4
1240
     e3a:	0e 94 fc 06 	call	0xdf8 <send_byte>
1241
 
1242
		set_A0();
1243
     e3e:	c3 9a       	sbi	0x18, 3	; 24
1244
     e40:	cf e7       	ldi	r28, 0x7F	; 127
1245
     e42:	d0 e0       	ldi	r29, 0x00	; 0
1246
		for (j=0;j<128;j++)
1247
			send_byte(0x00);
1248
     e44:	80 e0       	ldi	r24, 0x00	; 0
1249
     e46:	0e 94 fc 06 	call	0xdf8 <send_byte>
1250
     e4a:	21 97       	sbiw	r28, 0x01	; 1
1251
     e4c:	d7 ff       	sbrs	r29, 7
1252
     e4e:	fa cf       	rjmp	.-12     	; 0xe44 <cls+0x3c>
1253
     e50:	0f 5f       	subi	r16, 0xFF	; 255
1254
     e52:	1f 4f       	sbci	r17, 0xFF	; 255
1255
     e54:	08 30       	cpi	r16, 0x08	; 8
1256
     e56:	11 05       	cpc	r17, r1
1257
     e58:	38 f3       	brcs	.-50     	; 0xe28 <cls+0x20>
1258
	}
1259
 
1260
	lcd_xpos = 0;
1261
     e5a:	10 92 6a 05 	sts	0x056A, r1
1262
	lcd_ypos = 0;
1263
     e5e:	10 92 6b 05 	sts	0x056B, r1
1264
     e62:	df 91       	pop	r29
1265
     e64:	cf 91       	pop	r28
1266
     e66:	1f 91       	pop	r17
1267
     e68:	0f 91       	pop	r16
1268
     e6a:	08 95       	ret
1269
 
1270
00000e6c <lcd_cls>:
1271
}
1272
 
1273
void lcd_cls (void)
1274
{
1275
	cls();
1276
     e6c:	0e 94 04 07 	call	0xe08 <cls>
1277
     e70:	08 95       	ret
1278
 
1279
00000e72 <wait_1ms>:
1280
		__ticks = 1;
1281
	else if (__tmp > 65535)
1282
		__ticks = 0;	/* i.e. 65536 */
1283
	else
1284
		__ticks = (uint16_t)__tmp;
1285
     e72:	83 e3       	ldi	r24, 0x33	; 51
1286
     e74:	97 e0       	ldi	r25, 0x07	; 7
1287
     e76:	01 97       	sbiw	r24, 0x01	; 1
1288
     e78:	f1 f7       	brne	.-4      	; 0xe76 <wait_1ms+0x4>
1289
     e7a:	08 95       	ret
1290
 
1291
00000e7c <wait_ms>:
1292
}
1293
 
1294
void wait_1ms(void)
1295
{
1296
	_delay_ms (1.0);
1297
}
1298
 
1299
void wait_ms (uint16_t time)
1300
{
1301
     e7c:	0f 93       	push	r16
1302
     e7e:	1f 93       	push	r17
1303
     e80:	cf 93       	push	r28
1304
     e82:	df 93       	push	r29
1305
     e84:	8c 01       	movw	r16, r24
1306
	uint16_t i;
1307
 
1308
	for (i=0; i<time; i++)
1309
     e86:	c0 e0       	ldi	r28, 0x00	; 0
1310
     e88:	d0 e0       	ldi	r29, 0x00	; 0
1311
     e8a:	c8 17       	cp	r28, r24
1312
     e8c:	d9 07       	cpc	r29, r25
1313
     e8e:	30 f4       	brcc	.+12     	; 0xe9c <wait_ms+0x20>
1314
		wait_1ms();
1315
     e90:	0e 94 39 07 	call	0xe72 <wait_1ms>
1316
     e94:	21 96       	adiw	r28, 0x01	; 1
1317
     e96:	c0 17       	cp	r28, r16
1318
     e98:	d1 07       	cpc	r29, r17
1319
     e9a:	d0 f3       	brcs	.-12     	; 0xe90 <wait_ms+0x14>
1320
     e9c:	df 91       	pop	r29
1321
     e9e:	cf 91       	pop	r28
1322
     ea0:	1f 91       	pop	r17
1323
     ea2:	0f 91       	pop	r16
1324
     ea4:	08 95       	ret
1325
 
1326
00000ea6 <lcd_init>:
1327
}
1328
 
1329
void lcd_init (void)
1330
{
1331
	lcd_xpos = 0;
1332
     ea6:	10 92 6a 05 	sts	0x056A, r1
1333
	lcd_ypos = 0;
1334
     eaa:	10 92 6b 05 	sts	0x056B, r1
1335
 
1336
		DDRB = 0xFF;
1337
     eae:	8f ef       	ldi	r24, 0xFF	; 255
1338
     eb0:	87 bb       	out	0x17, r24	; 23
1339
 
1340
	SPCR = (1<<SPE)|(1<<MSTR)|(1<<CPHA)|(1<<CPOL)|(1<<SPR1);
1341
     eb2:	8e e5       	ldi	r24, 0x5E	; 94
1342
     eb4:	8d b9       	out	0x0d, r24	; 13
1343
 
1344
	set_cs();
1345
     eb6:	c4 9a       	sbi	0x18, 4	; 24
1346
	clr_reset();
1347
     eb8:	c2 98       	cbi	0x18, 2	; 24
1348
	wait_ms(10);
1349
     eba:	8a e0       	ldi	r24, 0x0A	; 10
1350
     ebc:	90 e0       	ldi	r25, 0x00	; 0
1351
     ebe:	0e 94 3e 07 	call	0xe7c <wait_ms>
1352
	set_reset();
1353
     ec2:	c2 9a       	sbi	0x18, 2	; 24
1354
 
1355
	clr_cs();
1356
     ec4:	c4 98       	cbi	0x18, 4	; 24
1357
	clr_A0();
1358
     ec6:	c3 98       	cbi	0x18, 3	; 24
1359
 
1360
	send_byte(0x40);
1361
     ec8:	80 e4       	ldi	r24, 0x40	; 64
1362
     eca:	0e 94 fc 06 	call	0xdf8 <send_byte>
1363
	send_byte(0xA0); // A1
1364
     ece:	80 ea       	ldi	r24, 0xA0	; 160
1365
     ed0:	0e 94 fc 06 	call	0xdf8 <send_byte>
1366
	send_byte(0xC8); // C0
1367
     ed4:	88 ec       	ldi	r24, 0xC8	; 200
1368
     ed6:	0e 94 fc 06 	call	0xdf8 <send_byte>
1369
	send_byte(0xA6);
1370
     eda:	86 ea       	ldi	r24, 0xA6	; 166
1371
     edc:	0e 94 fc 06 	call	0xdf8 <send_byte>
1372
	send_byte(0xA2);
1373
     ee0:	82 ea       	ldi	r24, 0xA2	; 162
1374
     ee2:	0e 94 fc 06 	call	0xdf8 <send_byte>
1375
	send_byte(0x2F);
1376
     ee6:	8f e2       	ldi	r24, 0x2F	; 47
1377
     ee8:	0e 94 fc 06 	call	0xdf8 <send_byte>
1378
	send_byte(0xF8);
1379
     eec:	88 ef       	ldi	r24, 0xF8	; 248
1380
     eee:	0e 94 fc 06 	call	0xdf8 <send_byte>
1381
	send_byte(0x00);
1382
     ef2:	80 e0       	ldi	r24, 0x00	; 0
1383
     ef4:	0e 94 fc 06 	call	0xdf8 <send_byte>
1384
	send_byte(0x27);
1385
     ef8:	87 e2       	ldi	r24, 0x27	; 39
1386
     efa:	0e 94 fc 06 	call	0xdf8 <send_byte>
1387
	send_byte(0x81);
1388
     efe:	81 e8       	ldi	r24, 0x81	; 129
1389
     f00:	0e 94 fc 06 	call	0xdf8 <send_byte>
1390
	send_byte(0x16);
1391
     f04:	86 e1       	ldi	r24, 0x16	; 22
1392
     f06:	0e 94 fc 06 	call	0xdf8 <send_byte>
1393
	send_byte(0xAC);
1394
     f0a:	8c ea       	ldi	r24, 0xAC	; 172
1395
     f0c:	0e 94 fc 06 	call	0xdf8 <send_byte>
1396
	send_byte(0x00);
1397
     f10:	80 e0       	ldi	r24, 0x00	; 0
1398
     f12:	0e 94 fc 06 	call	0xdf8 <send_byte>
1399
	send_byte(0xAF);
1400
     f16:	8f ea       	ldi	r24, 0xAF	; 175
1401
     f18:	0e 94 fc 06 	call	0xdf8 <send_byte>
1402
 
1403
	cls();
1404
     f1c:	0e 94 04 07 	call	0xe08 <cls>
1405
     f20:	08 95       	ret
1406
 
1407
00000f22 <set_adress>:
1408
 
1409
}
1410
 
1411
void set_adress (uint16_t adress, uint8_t data)
1412
{
1413
     f22:	ff 92       	push	r15
1414
     f24:	0f 93       	push	r16
1415
     f26:	1f 93       	push	r17
1416
     f28:	8c 01       	movw	r16, r24
1417
     f2a:	f6 2e       	mov	r15, r22
1418
	uint8_t page;
1419
	uint8_t column;
1420
 
1421
	page = adress >> 7;
1422
     f2c:	88 0f       	add	r24, r24
1423
     f2e:	89 2f       	mov	r24, r25
1424
     f30:	88 1f       	adc	r24, r24
1425
     f32:	99 0b       	sbc	r25, r25
1426
     f34:	91 95       	neg	r25
1427
 
1428
	clr_A0();
1429
     f36:	c3 98       	cbi	0x18, 3	; 24
1430
	send_byte(0xB0 + page);
1431
     f38:	80 55       	subi	r24, 0x50	; 80
1432
     f3a:	0e 94 fc 06 	call	0xdf8 <send_byte>
1433
 
1434
	column = (adress & 0x7F) + 4;
1435
     f3e:	10 2f       	mov	r17, r16
1436
     f40:	1f 77       	andi	r17, 0x7F	; 127
1437
     f42:	1c 5f       	subi	r17, 0xFC	; 252
1438
 
1439
	send_byte(0x10 + (column >> 4));
1440
     f44:	81 2f       	mov	r24, r17
1441
     f46:	82 95       	swap	r24
1442
     f48:	8f 70       	andi	r24, 0x0F	; 15
1443
     f4a:	80 5f       	subi	r24, 0xF0	; 240
1444
     f4c:	0e 94 fc 06 	call	0xdf8 <send_byte>
1445
	send_byte(column & 0x0F);
1446
     f50:	81 2f       	mov	r24, r17
1447
     f52:	8f 70       	andi	r24, 0x0F	; 15
1448
     f54:	0e 94 fc 06 	call	0xdf8 <send_byte>
1449
 
1450
	set_A0();
1451
     f58:	c3 9a       	sbi	0x18, 3	; 24
1452
	send_byte(data);
1453
     f5a:	8f 2d       	mov	r24, r15
1454
     f5c:	0e 94 fc 06 	call	0xdf8 <send_byte>
1455
     f60:	1f 91       	pop	r17
1456
     f62:	0f 91       	pop	r16
1457
     f64:	ff 90       	pop	r15
1458
     f66:	08 95       	ret
1459
 
1460
00000f68 <scroll>:
1461
}
1462
 
1463
void scroll (void)
1464
{
1465
     f68:	ef 92       	push	r14
1466
     f6a:	ff 92       	push	r15
1467
     f6c:	0f 93       	push	r16
1468
     f6e:	1f 93       	push	r17
1469
     f70:	cf 93       	push	r28
1470
     f72:	df 93       	push	r29
1471
	uint16_t adress;
1472
 
1473
	for (adress=0;adress<896;adress++)
1474
     f74:	c0 e0       	ldi	r28, 0x00	; 0
1475
     f76:	d0 e0       	ldi	r29, 0x00	; 0
1476
     f78:	32 ee       	ldi	r19, 0xE2	; 226
1477
     f7a:	e3 2e       	mov	r14, r19
1478
     f7c:	30 e0       	ldi	r19, 0x00	; 0
1479
     f7e:	f3 2e       	mov	r15, r19
1480
     f80:	87 01       	movw	r16, r14
1481
     f82:	00 58       	subi	r16, 0x80	; 128
1482
     f84:	10 40       	sbci	r17, 0x00	; 0
1483
	{
1484
		display_buffer[adress] = display_buffer[adress+128];
1485
     f86:	f7 01       	movw	r30, r14
1486
     f88:	81 91       	ld	r24, Z+
1487
     f8a:	7f 01       	movw	r14, r30
1488
     f8c:	f8 01       	movw	r30, r16
1489
     f8e:	80 83       	st	Z, r24
1490
		set_adress(adress,display_buffer[adress]);
1491
     f90:	61 91       	ld	r22, Z+
1492
     f92:	8f 01       	movw	r16, r30
1493
     f94:	ce 01       	movw	r24, r28
1494
     f96:	0e 94 91 07 	call	0xf22 <set_adress>
1495
     f9a:	21 96       	adiw	r28, 0x01	; 1
1496
     f9c:	f3 e0       	ldi	r31, 0x03	; 3
1497
     f9e:	c0 38       	cpi	r28, 0x80	; 128
1498
     fa0:	df 07       	cpc	r29, r31
1499
     fa2:	88 f3       	brcs	.-30     	; 0xf86 <scroll+0x1e>
1500
     fa4:	c0 e8       	ldi	r28, 0x80	; 128
1501
     fa6:	d3 e0       	ldi	r29, 0x03	; 3
1502
     fa8:	02 ee       	ldi	r16, 0xE2	; 226
1503
     faa:	13 e0       	ldi	r17, 0x03	; 3
1504
	}
1505
	for (adress=896;adress<1024;adress++)
1506
	{
1507
		display_buffer[adress] = 0;
1508
     fac:	f8 01       	movw	r30, r16
1509
     fae:	11 92       	st	Z+, r1
1510
     fb0:	8f 01       	movw	r16, r30
1511
		set_adress(adress,0);
1512
     fb2:	60 e0       	ldi	r22, 0x00	; 0
1513
     fb4:	ce 01       	movw	r24, r28
1514
     fb6:	0e 94 91 07 	call	0xf22 <set_adress>
1515
     fba:	21 96       	adiw	r28, 0x01	; 1
1516
     fbc:	f4 e0       	ldi	r31, 0x04	; 4
1517
     fbe:	c0 30       	cpi	r28, 0x00	; 0
1518
     fc0:	df 07       	cpc	r29, r31
1519
     fc2:	a0 f3       	brcs	.-24     	; 0xfac <scroll+0x44>
1520
     fc4:	df 91       	pop	r29
1521
     fc6:	cf 91       	pop	r28
1522
     fc8:	1f 91       	pop	r17
1523
     fca:	0f 91       	pop	r16
1524
     fcc:	ff 90       	pop	r15
1525
     fce:	ef 90       	pop	r14
1526
     fd0:	08 95       	ret
1527
 
1528
00000fd2 <put_char>:
1529
	}
1530
}
1531
 
1532
//
1533
// x,y = character-Pos. !
1534
//
1535
// mode: 0=Overwrite, 1 = OR, 2 = XOR, 3 = AND, 4 = Delete
1536
void put_char (uint8_t x, uint8_t y, uint8_t c, uint8_t mode)
1537
{
1538
     fd2:	bf 92       	push	r11
1539
     fd4:	cf 92       	push	r12
1540
     fd6:	df 92       	push	r13
1541
     fd8:	ef 92       	push	r14
1542
     fda:	ff 92       	push	r15
1543
     fdc:	0f 93       	push	r16
1544
     fde:	1f 93       	push	r17
1545
     fe0:	cf 93       	push	r28
1546
     fe2:	df 93       	push	r29
1547
     fe4:	38 2f       	mov	r19, r24
1548
     fe6:	f4 2e       	mov	r15, r20
1549
     fe8:	b2 2e       	mov	r11, r18
1550
	uint8_t ch;
1551
	uint8_t i;
1552
	uint16_t adress;
1553
 
1554
	switch(c)
1555
     fea:	84 2f       	mov	r24, r20
1556
     fec:	99 27       	eor	r25, r25
1557
     fee:	8f 3d       	cpi	r24, 0xDF	; 223
1558
     ff0:	91 05       	cpc	r25, r1
1559
     ff2:	89 f1       	breq	.+98     	; 0x1056 <put_char+0x84>
1560
     ff4:	80 3e       	cpi	r24, 0xE0	; 224
1561
     ff6:	91 05       	cpc	r25, r1
1562
     ff8:	74 f4       	brge	.+28     	; 0x1016 <put_char+0x44>
1563
     ffa:	86 3d       	cpi	r24, 0xD6	; 214
1564
     ffc:	91 05       	cpc	r25, r1
1565
     ffe:	29 f1       	breq	.+74     	; 0x104a <put_char+0x78>
1566
    1000:	87 3d       	cpi	r24, 0xD7	; 215
1567
    1002:	91 05       	cpc	r25, r1
1568
    1004:	24 f4       	brge	.+8      	; 0x100e <put_char+0x3c>
1569
    1006:	84 3c       	cpi	r24, 0xC4	; 196
1570
    1008:	91 05       	cpc	r25, r1
1571
    100a:	e1 f0       	breq	.+56     	; 0x1044 <put_char+0x72>
1572
    100c:	26 c0       	rjmp	.+76     	; 0x105a <put_char+0x88>
1573
    100e:	8c 3d       	cpi	r24, 0xDC	; 220
1574
    1010:	91 05       	cpc	r25, r1
1575
    1012:	f1 f0       	breq	.+60     	; 0x1050 <put_char+0x7e>
1576
    1014:	22 c0       	rjmp	.+68     	; 0x105a <put_char+0x88>
1577
    1016:	86 3f       	cpi	r24, 0xF6	; 246
1578
    1018:	91 05       	cpc	r25, r1
1579
    101a:	71 f0       	breq	.+28     	; 0x1038 <put_char+0x66>
1580
    101c:	87 3f       	cpi	r24, 0xF7	; 247
1581
    101e:	91 05       	cpc	r25, r1
1582
    1020:	24 f4       	brge	.+8      	; 0x102a <put_char+0x58>
1583
    1022:	84 3e       	cpi	r24, 0xE4	; 228
1584
    1024:	91 05       	cpc	r25, r1
1585
    1026:	29 f0       	breq	.+10     	; 0x1032 <put_char+0x60>
1586
    1028:	18 c0       	rjmp	.+48     	; 0x105a <put_char+0x88>
1587
    102a:	8c 3f       	cpi	r24, 0xFC	; 252
1588
    102c:	91 05       	cpc	r25, r1
1589
    102e:	39 f0       	breq	.+14     	; 0x103e <put_char+0x6c>
1590
    1030:	14 c0       	rjmp	.+40     	; 0x105a <put_char+0x88>
1591
	{
1592
		case 'ä':
1593
			c = 0x84;
1594
    1032:	14 e8       	ldi	r17, 0x84	; 132
1595
    1034:	f1 2e       	mov	r15, r17
1596
			break;
1597
    1036:	11 c0       	rjmp	.+34     	; 0x105a <put_char+0x88>
1598
		case 'ö':
1599
			c = 0x94;
1600
    1038:	c4 e9       	ldi	r28, 0x94	; 148
1601
    103a:	fc 2e       	mov	r15, r28
1602
			break;
1603
    103c:	0e c0       	rjmp	.+28     	; 0x105a <put_char+0x88>
1604
		case 'ü':
1605
			c = 0x81;
1606
    103e:	b1 e8       	ldi	r27, 0x81	; 129
1607
    1040:	fb 2e       	mov	r15, r27
1608
			break;
1609
    1042:	0b c0       	rjmp	.+22     	; 0x105a <put_char+0x88>
1610
		case 'Ä':
1611
			c = 0x8E;
1612
    1044:	ae e8       	ldi	r26, 0x8E	; 142
1613
    1046:	fa 2e       	mov	r15, r26
1614
			break;
1615
    1048:	08 c0       	rjmp	.+16     	; 0x105a <put_char+0x88>
1616
		case 'Ö':
1617
			c = 0x99;
1618
    104a:	f9 e9       	ldi	r31, 0x99	; 153
1619
    104c:	ff 2e       	mov	r15, r31
1620
			break;
1621
    104e:	05 c0       	rjmp	.+10     	; 0x105a <put_char+0x88>
1622
		case 'Ü':
1623
			c = 0x9A;
1624
    1050:	ea e9       	ldi	r30, 0x9A	; 154
1625
    1052:	fe 2e       	mov	r15, r30
1626
			break;
1627
    1054:	02 c0       	rjmp	.+4      	; 0x105a <put_char+0x88>
1628
		case 'ß':
1629
			c = 0xE1;
1630
    1056:	71 ee       	ldi	r23, 0xE1	; 225
1631
    1058:	f7 2e       	mov	r15, r23
1632
			break;
1633
	}
1634
 
1635
	adress = y*128 + x*6;
1636
    105a:	c6 2f       	mov	r28, r22
1637
    105c:	dd 27       	eor	r29, r29
1638
    105e:	d6 95       	lsr	r29
1639
    1060:	dc 2f       	mov	r29, r28
1640
    1062:	cc 27       	eor	r28, r28
1641
    1064:	d7 95       	ror	r29
1642
    1066:	c7 95       	ror	r28
1643
    1068:	86 e0       	ldi	r24, 0x06	; 6
1644
    106a:	38 9f       	mul	r19, r24
1645
    106c:	c0 01       	movw	r24, r0
1646
    106e:	11 24       	eor	r1, r1
1647
    1070:	c8 0f       	add	r28, r24
1648
    1072:	d9 1f       	adc	r29, r25
1649
	adress &= 0x3FF;
1650
    1074:	d3 70       	andi	r29, 0x03	; 3
1651
    1076:	6e 01       	movw	r12, r28
1652
    1078:	00 e0       	ldi	r16, 0x00	; 0
1653
    107a:	10 e0       	ldi	r17, 0x00	; 0
1654
    107c:	45 e0       	ldi	r20, 0x05	; 5
1655
    107e:	e4 2e       	mov	r14, r20
1656
 
1657
	for (i=0;i<6;i++)
1658
	{
1659
		ch = pgm_read_byte (&f8x6[0][0] + i + c * 6);
1660
    1080:	86 e0       	ldi	r24, 0x06	; 6
1661
    1082:	f8 9e       	mul	r15, r24
1662
    1084:	f0 01       	movw	r30, r0
1663
    1086:	11 24       	eor	r1, r1
1664
    1088:	e0 0f       	add	r30, r16
1665
    108a:	f1 1f       	adc	r31, r17
1666
    108c:	ec 5a       	subi	r30, 0xAC	; 172
1667
    108e:	ff 4f       	sbci	r31, 0xFF	; 255
1668
    1090:	24 91       	lpm	r18, Z
1669
 
1670
		switch (mode)
1671
    1092:	8b 2d       	mov	r24, r11
1672
    1094:	99 27       	eor	r25, r25
1673
    1096:	82 30       	cpi	r24, 0x02	; 2
1674
    1098:	91 05       	cpc	r25, r1
1675
    109a:	e9 f0       	breq	.+58     	; 0x10d6 <put_char+0x104>
1676
    109c:	83 30       	cpi	r24, 0x03	; 3
1677
    109e:	91 05       	cpc	r25, r1
1678
    10a0:	2c f4       	brge	.+10     	; 0x10ac <put_char+0xda>
1679
    10a2:	00 97       	sbiw	r24, 0x00	; 0
1680
    10a4:	49 f0       	breq	.+18     	; 0x10b8 <put_char+0xe6>
1681
    10a6:	01 97       	sbiw	r24, 0x01	; 1
1682
    10a8:	71 f0       	breq	.+28     	; 0x10c6 <put_char+0xf4>
1683
    10aa:	2c c0       	rjmp	.+88     	; 0x1104 <put_char+0x132>
1684
    10ac:	83 30       	cpi	r24, 0x03	; 3
1685
    10ae:	91 05       	cpc	r25, r1
1686
    10b0:	d1 f0       	breq	.+52     	; 0x10e6 <put_char+0x114>
1687
    10b2:	04 97       	sbiw	r24, 0x04	; 4
1688
    10b4:	f1 f0       	breq	.+60     	; 0x10f2 <put_char+0x120>
1689
    10b6:	26 c0       	rjmp	.+76     	; 0x1104 <put_char+0x132>
1690
		{
1691
			case 0:
1692
				display_buffer[adress+i] = ch;
1693
    10b8:	fe 01       	movw	r30, r28
1694
    10ba:	ee 59       	subi	r30, 0x9E	; 158
1695
    10bc:	ff 4f       	sbci	r31, 0xFF	; 255
1696
    10be:	e0 0f       	add	r30, r16
1697
    10c0:	f1 1f       	adc	r31, r17
1698
    10c2:	20 83       	st	Z, r18
1699
				break;
1700
    10c4:	1f c0       	rjmp	.+62     	; 0x1104 <put_char+0x132>
1701
			case 1:
1702
				display_buffer[adress+i] |= ch;
1703
    10c6:	fe 01       	movw	r30, r28
1704
    10c8:	ee 59       	subi	r30, 0x9E	; 158
1705
    10ca:	ff 4f       	sbci	r31, 0xFF	; 255
1706
    10cc:	e0 0f       	add	r30, r16
1707
    10ce:	f1 1f       	adc	r31, r17
1708
    10d0:	80 81       	ld	r24, Z
1709
    10d2:	82 2b       	or	r24, r18
1710
    10d4:	16 c0       	rjmp	.+44     	; 0x1102 <put_char+0x130>
1711
				break;
1712
			case 2:
1713
				display_buffer[adress+i] ^= ch;
1714
    10d6:	fe 01       	movw	r30, r28
1715
    10d8:	ee 59       	subi	r30, 0x9E	; 158
1716
    10da:	ff 4f       	sbci	r31, 0xFF	; 255
1717
    10dc:	e0 0f       	add	r30, r16
1718
    10de:	f1 1f       	adc	r31, r17
1719
    10e0:	80 81       	ld	r24, Z
1720
    10e2:	82 27       	eor	r24, r18
1721
    10e4:	0e c0       	rjmp	.+28     	; 0x1102 <put_char+0x130>
1722
				break;
1723
			case 3:
1724
				display_buffer[adress+i] &= ch;
1725
    10e6:	fe 01       	movw	r30, r28
1726
    10e8:	ee 59       	subi	r30, 0x9E	; 158
1727
    10ea:	ff 4f       	sbci	r31, 0xFF	; 255
1728
    10ec:	e0 0f       	add	r30, r16
1729
    10ee:	f1 1f       	adc	r31, r17
1730
    10f0:	06 c0       	rjmp	.+12     	; 0x10fe <put_char+0x12c>
1731
				break;
1732
			case 4:
1733
				display_buffer[adress+i] &= ~ch;
1734
    10f2:	fe 01       	movw	r30, r28
1735
    10f4:	ee 59       	subi	r30, 0x9E	; 158
1736
    10f6:	ff 4f       	sbci	r31, 0xFF	; 255
1737
    10f8:	e0 0f       	add	r30, r16
1738
    10fa:	f1 1f       	adc	r31, r17
1739
    10fc:	20 95       	com	r18
1740
    10fe:	80 81       	ld	r24, Z
1741
    1100:	82 23       	and	r24, r18
1742
    1102:	80 83       	st	Z, r24
1743
				break;
1744
		}
1745
 
1746
		set_adress(adress+i,display_buffer[adress+i]);
1747
    1104:	fe 01       	movw	r30, r28
1748
    1106:	ee 59       	subi	r30, 0x9E	; 158
1749
    1108:	ff 4f       	sbci	r31, 0xFF	; 255
1750
    110a:	e0 0f       	add	r30, r16
1751
    110c:	f1 1f       	adc	r31, r17
1752
    110e:	60 81       	ld	r22, Z
1753
    1110:	c6 01       	movw	r24, r12
1754
    1112:	0e 94 91 07 	call	0xf22 <set_adress>
1755
    1116:	ea 94       	dec	r14
1756
    1118:	0f 5f       	subi	r16, 0xFF	; 255
1757
    111a:	1f 4f       	sbci	r17, 0xFF	; 255
1758
    111c:	08 94       	sec
1759
    111e:	c1 1c       	adc	r12, r1
1760
    1120:	d1 1c       	adc	r13, r1
1761
    1122:	e7 fe       	sbrs	r14, 7
1762
    1124:	ad cf       	rjmp	.-166    	; 0x1080 <put_char+0xae>
1763
    1126:	df 91       	pop	r29
1764
    1128:	cf 91       	pop	r28
1765
    112a:	1f 91       	pop	r17
1766
    112c:	0f 91       	pop	r16
1767
    112e:	ff 90       	pop	r15
1768
    1130:	ef 90       	pop	r14
1769
    1132:	df 90       	pop	r13
1770
    1134:	cf 90       	pop	r12
1771
    1136:	bf 90       	pop	r11
1772
    1138:	08 95       	ret
1773
 
1774
0000113a <new_line>:
1775
	}
1776
}
1777
 
1778
void new_line (void)
1779
{
1780
	lcd_ypos++;
1781
    113a:	80 91 6b 05 	lds	r24, 0x056B
1782
    113e:	8f 5f       	subi	r24, 0xFF	; 255
1783
    1140:	80 93 6b 05 	sts	0x056B, r24
1784
 
1785
	if (lcd_ypos > 7)
1786
    1144:	88 30       	cpi	r24, 0x08	; 8
1787
    1146:	28 f0       	brcs	.+10     	; 0x1152 <new_line+0x18>
1788
	{
1789
		scroll();
1790
    1148:	0e 94 b4 07 	call	0xf68 <scroll>
1791
		lcd_ypos = 7;
1792
    114c:	87 e0       	ldi	r24, 0x07	; 7
1793
    114e:	80 93 6b 05 	sts	0x056B, r24
1794
    1152:	08 95       	ret
1795
 
1796
00001154 <lcd_printp>:
1797
	}
1798
}
1799
 
1800
 
1801
void lcd_printp (const char *text, uint8_t mode)
1802
{
1803
    1154:	1f 93       	push	r17
1804
    1156:	cf 93       	push	r28
1805
    1158:	df 93       	push	r29
1806
    115a:	ec 01       	movw	r28, r24
1807
    115c:	16 2f       	mov	r17, r22
1808
	while (pgm_read_byte(text))
1809
	{
1810
		if (pgm_read_byte(text) > 0x1F)
1811
		{
1812
			put_char(lcd_xpos,lcd_ypos,pgm_read_byte(text++),mode);
1813
 
1814
			lcd_xpos++;
1815
			if (lcd_xpos > 20)
1816
			{
1817
				lcd_xpos = 0;
1818
				new_line();
1819
			}
1820
		}
1821
		else
1822
		{
1823
			switch (pgm_read_byte(text))
1824
			{
1825
				case 0x0D:
1826
					lcd_xpos = 0;
1827
					break;
1828
				case 0x0A:
1829
					new_line();
1830
					break;
1831
			}
1832
			text++;
1833
    115e:	fc 01       	movw	r30, r24
1834
    1160:	84 91       	lpm	r24, Z
1835
    1162:	88 23       	and	r24, r24
1836
    1164:	51 f1       	breq	.+84     	; 0x11ba <lcd_printp+0x66>
1837
    1166:	fe 01       	movw	r30, r28
1838
    1168:	84 91       	lpm	r24, Z
1839
    116a:	80 32       	cpi	r24, 0x20	; 32
1840
    116c:	b0 f0       	brcs	.+44     	; 0x119a <lcd_printp+0x46>
1841
    116e:	21 96       	adiw	r28, 0x01	; 1
1842
    1170:	84 91       	lpm	r24, Z
1843
    1172:	21 2f       	mov	r18, r17
1844
    1174:	48 2f       	mov	r20, r24
1845
    1176:	60 91 6b 05 	lds	r22, 0x056B
1846
    117a:	80 91 6a 05 	lds	r24, 0x056A
1847
    117e:	0e 94 e9 07 	call	0xfd2 <put_char>
1848
    1182:	80 91 6a 05 	lds	r24, 0x056A
1849
    1186:	8f 5f       	subi	r24, 0xFF	; 255
1850
    1188:	80 93 6a 05 	sts	0x056A, r24
1851
    118c:	85 31       	cpi	r24, 0x15	; 21
1852
    118e:	88 f0       	brcs	.+34     	; 0x11b2 <lcd_printp+0x5e>
1853
    1190:	10 92 6a 05 	sts	0x056A, r1
1854
    1194:	0e 94 9d 08 	call	0x113a <new_line>
1855
    1198:	0c c0       	rjmp	.+24     	; 0x11b2 <lcd_printp+0x5e>
1856
    119a:	99 27       	eor	r25, r25
1857
    119c:	8a 30       	cpi	r24, 0x0A	; 10
1858
    119e:	91 05       	cpc	r25, r1
1859
    11a0:	29 f0       	breq	.+10     	; 0x11ac <lcd_printp+0x58>
1860
    11a2:	0d 97       	sbiw	r24, 0x0d	; 13
1861
    11a4:	29 f4       	brne	.+10     	; 0x11b0 <lcd_printp+0x5c>
1862
    11a6:	10 92 6a 05 	sts	0x056A, r1
1863
    11aa:	02 c0       	rjmp	.+4      	; 0x11b0 <lcd_printp+0x5c>
1864
    11ac:	0e 94 9d 08 	call	0x113a <new_line>
1865
    11b0:	21 96       	adiw	r28, 0x01	; 1
1866
    11b2:	fe 01       	movw	r30, r28
1867
    11b4:	84 91       	lpm	r24, Z
1868
    11b6:	88 23       	and	r24, r24
1869
    11b8:	b1 f6       	brne	.-84     	; 0x1166 <lcd_printp+0x12>
1870
    11ba:	df 91       	pop	r29
1871
    11bc:	cf 91       	pop	r28
1872
    11be:	1f 91       	pop	r17
1873
    11c0:	08 95       	ret
1874
 
1875
000011c2 <lcd_print_atp>:
1876
		}
1877
	}
1878
}
1879
 
1880
void lcd_print_atp (uint8_t x, uint8_t y, const char *text, uint8_t mode)
1881
{
1882
	lcd_xpos = x;
1883
    11c2:	80 93 6a 05 	sts	0x056A, r24
1884
	lcd_ypos = y;
1885
    11c6:	60 93 6b 05 	sts	0x056B, r22
1886
	lcd_printp (text, mode);
1887
    11ca:	62 2f       	mov	r22, r18
1888
    11cc:	ca 01       	movw	r24, r20
1889
    11ce:	0e 94 aa 08 	call	0x1154 <lcd_printp>
1890
    11d2:	08 95       	ret
1891
 
1892
000011d4 <lcd_print>:
1893
}
1894
 
1895
 
1896
void lcd_print (uint8_t *text, uint8_t mode)
1897
{
1898
    11d4:	1f 93       	push	r17
1899
    11d6:	cf 93       	push	r28
1900
    11d8:	df 93       	push	r29
1901
    11da:	ec 01       	movw	r28, r24
1902
    11dc:	16 2f       	mov	r17, r22
1903
	while (*text)
1904
	{
1905
		if (*text > 0x1F)
1906
		{
1907
			put_char(lcd_xpos,lcd_ypos,*text++,mode);
1908
 
1909
			lcd_xpos++;
1910
			if (lcd_xpos > 20)
1911
			{
1912
				lcd_xpos = 0;
1913
				new_line();
1914
			}
1915
		}
1916
		else
1917
		{
1918
			switch (*text)
1919
			{
1920
				case 0x0D:
1921
					lcd_xpos = 0;
1922
					break;
1923
				case 0x0A:
1924
					new_line();
1925
					break;
1926
			}
1927
			text++;
1928
    11de:	88 81       	ld	r24, Y
1929
    11e0:	88 23       	and	r24, r24
1930
    11e2:	39 f1       	breq	.+78     	; 0x1232 <lcd_print+0x5e>
1931
    11e4:	48 81       	ld	r20, Y
1932
    11e6:	40 32       	cpi	r20, 0x20	; 32
1933
    11e8:	a0 f0       	brcs	.+40     	; 0x1212 <lcd_print+0x3e>
1934
    11ea:	21 96       	adiw	r28, 0x01	; 1
1935
    11ec:	21 2f       	mov	r18, r17
1936
    11ee:	60 91 6b 05 	lds	r22, 0x056B
1937
    11f2:	80 91 6a 05 	lds	r24, 0x056A
1938
    11f6:	0e 94 e9 07 	call	0xfd2 <put_char>
1939
    11fa:	80 91 6a 05 	lds	r24, 0x056A
1940
    11fe:	8f 5f       	subi	r24, 0xFF	; 255
1941
    1200:	80 93 6a 05 	sts	0x056A, r24
1942
    1204:	85 31       	cpi	r24, 0x15	; 21
1943
    1206:	90 f0       	brcs	.+36     	; 0x122c <lcd_print+0x58>
1944
    1208:	10 92 6a 05 	sts	0x056A, r1
1945
    120c:	0e 94 9d 08 	call	0x113a <new_line>
1946
    1210:	0d c0       	rjmp	.+26     	; 0x122c <lcd_print+0x58>
1947
    1212:	55 27       	eor	r21, r21
1948
    1214:	4a 30       	cpi	r20, 0x0A	; 10
1949
    1216:	51 05       	cpc	r21, r1
1950
    1218:	31 f0       	breq	.+12     	; 0x1226 <lcd_print+0x52>
1951
    121a:	4d 30       	cpi	r20, 0x0D	; 13
1952
    121c:	51 05       	cpc	r21, r1
1953
    121e:	29 f4       	brne	.+10     	; 0x122a <lcd_print+0x56>
1954
    1220:	10 92 6a 05 	sts	0x056A, r1
1955
    1224:	02 c0       	rjmp	.+4      	; 0x122a <lcd_print+0x56>
1956
    1226:	0e 94 9d 08 	call	0x113a <new_line>
1957
    122a:	21 96       	adiw	r28, 0x01	; 1
1958
    122c:	88 81       	ld	r24, Y
1959
    122e:	88 23       	and	r24, r24
1960
    1230:	c9 f6       	brne	.-78     	; 0x11e4 <lcd_print+0x10>
1961
    1232:	df 91       	pop	r29
1962
    1234:	cf 91       	pop	r28
1963
    1236:	1f 91       	pop	r17
1964
    1238:	08 95       	ret
1965
 
1966
0000123a <lcd_print_at>:
1967
		}
1968
	}
1969
}
1970
 
1971
void lcd_print_at (uint8_t x, uint8_t y, uint8_t *text, uint8_t mode)
1972
{
1973
	lcd_xpos = x;
1974
    123a:	80 93 6a 05 	sts	0x056A, r24
1975
	lcd_ypos = y;
1976
    123e:	60 93 6b 05 	sts	0x056B, r22
1977
	lcd_print(text, mode);
1978
    1242:	62 2f       	mov	r22, r18
1979
    1244:	ca 01       	movw	r24, r20
1980
    1246:	0e 94 ea 08 	call	0x11d4 <lcd_print>
1981
    124a:	08 95       	ret
1982
 
1983
0000124c <lcd_plot>:
1984
}
1985
 
1986
 
1987
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1988
// + Plot (set one Pixel)
1989
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1990
// mode:
1991
// 0=Clear, 1=Set, 2=XOR
1992
void lcd_plot (uint8_t xpos, uint8_t ypos, uint8_t mode)
1993
{
1994
    124c:	98 2f       	mov	r25, r24
1995
	uint16_t adress;
1996
	uint8_t mask;
1997
 
1998
	if ((xpos < 128) && (ypos < 64))
1999
    124e:	87 fd       	sbrc	r24, 7
2000
    1250:	45 c0       	rjmp	.+138    	; 0x12dc <lcd_plot+0x90>
2001
    1252:	60 34       	cpi	r22, 0x40	; 64
2002
    1254:	08 f0       	brcs	.+2      	; 0x1258 <lcd_plot+0xc>
2003
    1256:	42 c0       	rjmp	.+132    	; 0x12dc <lcd_plot+0x90>
2004
	{
2005
		adress = (ypos/8) * 128 + xpos;				// adress = 0/8 * 128 + 0   = 0
2006
    1258:	86 2f       	mov	r24, r22
2007
    125a:	86 95       	lsr	r24
2008
    125c:	86 95       	lsr	r24
2009
    125e:	86 95       	lsr	r24
2010
    1260:	a8 2f       	mov	r26, r24
2011
    1262:	bb 27       	eor	r27, r27
2012
    1264:	b6 95       	lsr	r27
2013
    1266:	ba 2f       	mov	r27, r26
2014
    1268:	aa 27       	eor	r26, r26
2015
    126a:	b7 95       	ror	r27
2016
    126c:	a7 95       	ror	r26
2017
    126e:	a9 0f       	add	r26, r25
2018
    1270:	b1 1d       	adc	r27, r1
2019
		mask = 1<<(ypos & 0x07);						// mask = 1<<0 = 1
2020
    1272:	26 2f       	mov	r18, r22
2021
    1274:	33 27       	eor	r19, r19
2022
    1276:	27 70       	andi	r18, 0x07	; 7
2023
    1278:	30 70       	andi	r19, 0x00	; 0
2024
    127a:	81 e0       	ldi	r24, 0x01	; 1
2025
    127c:	90 e0       	ldi	r25, 0x00	; 0
2026
    127e:	02 c0       	rjmp	.+4      	; 0x1284 <lcd_plot+0x38>
2027
    1280:	88 0f       	add	r24, r24
2028
    1282:	99 1f       	adc	r25, r25
2029
    1284:	2a 95       	dec	r18
2030
    1286:	e2 f7       	brpl	.-8      	; 0x1280 <lcd_plot+0x34>
2031
    1288:	98 2f       	mov	r25, r24
2032
 
2033
		adress &= 0x3FF;
2034
    128a:	b3 70       	andi	r27, 0x03	; 3
2035
 
2036
		switch (mode)
2037
    128c:	55 27       	eor	r21, r21
2038
    128e:	41 30       	cpi	r20, 0x01	; 1
2039
    1290:	51 05       	cpc	r21, r1
2040
    1292:	89 f0       	breq	.+34     	; 0x12b6 <lcd_plot+0x6a>
2041
    1294:	42 30       	cpi	r20, 0x02	; 2
2042
    1296:	51 05       	cpc	r21, r1
2043
    1298:	1c f4       	brge	.+6      	; 0x12a0 <lcd_plot+0x54>
2044
    129a:	45 2b       	or	r20, r21
2045
    129c:	29 f0       	breq	.+10     	; 0x12a8 <lcd_plot+0x5c>
2046
    129e:	17 c0       	rjmp	.+46     	; 0x12ce <lcd_plot+0x82>
2047
    12a0:	42 30       	cpi	r20, 0x02	; 2
2048
    12a2:	51 05       	cpc	r21, r1
2049
    12a4:	71 f0       	breq	.+28     	; 0x12c2 <lcd_plot+0x76>
2050
    12a6:	13 c0       	rjmp	.+38     	; 0x12ce <lcd_plot+0x82>
2051
		{
2052
			case 0:
2053
				display_buffer[adress] &=~mask;
2054
    12a8:	fd 01       	movw	r30, r26
2055
    12aa:	ee 59       	subi	r30, 0x9E	; 158
2056
    12ac:	ff 4f       	sbci	r31, 0xFF	; 255
2057
    12ae:	90 95       	com	r25
2058
    12b0:	80 81       	ld	r24, Z
2059
    12b2:	89 23       	and	r24, r25
2060
    12b4:	0b c0       	rjmp	.+22     	; 0x12cc <lcd_plot+0x80>
2061
				break;
2062
			case 1:
2063
				display_buffer[adress] |= mask;
2064
    12b6:	fd 01       	movw	r30, r26
2065
    12b8:	ee 59       	subi	r30, 0x9E	; 158
2066
    12ba:	ff 4f       	sbci	r31, 0xFF	; 255
2067
    12bc:	80 81       	ld	r24, Z
2068
    12be:	89 2b       	or	r24, r25
2069
    12c0:	05 c0       	rjmp	.+10     	; 0x12cc <lcd_plot+0x80>
2070
				break;
2071
			case 2:
2072
				display_buffer[adress] ^= mask;
2073
    12c2:	fd 01       	movw	r30, r26
2074
    12c4:	ee 59       	subi	r30, 0x9E	; 158
2075
    12c6:	ff 4f       	sbci	r31, 0xFF	; 255
2076
    12c8:	80 81       	ld	r24, Z
2077
    12ca:	89 27       	eor	r24, r25
2078
    12cc:	80 83       	st	Z, r24
2079
				break;
2080
		}
2081
 
2082
		set_adress(adress,display_buffer[adress]);
2083
    12ce:	fd 01       	movw	r30, r26
2084
    12d0:	ee 59       	subi	r30, 0x9E	; 158
2085
    12d2:	ff 4f       	sbci	r31, 0xFF	; 255
2086
    12d4:	60 81       	ld	r22, Z
2087
    12d6:	cd 01       	movw	r24, r26
2088
    12d8:	0e 94 91 07 	call	0xf22 <set_adress>
2089
    12dc:	08 95       	ret
2090
 
2091
000012de <lcd_line>:
2092
	}
2093
}
2094
 
2095
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2096
// + Line (draws a line from x1,y1 to x2,y2
2097
// + Based on Bresenham line-Algorithm
2098
// + found in the internet, modified by thkais 2007
2099
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2100
 
2101
void lcd_line(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, uint8_t mode)
2102
 
2103
{
2104
    12de:	2f 92       	push	r2
2105
    12e0:	3f 92       	push	r3
2106
    12e2:	4f 92       	push	r4
2107
    12e4:	5f 92       	push	r5
2108
    12e6:	6f 92       	push	r6
2109
    12e8:	7f 92       	push	r7
2110
    12ea:	8f 92       	push	r8
2111
    12ec:	9f 92       	push	r9
2112
    12ee:	af 92       	push	r10
2113
    12f0:	bf 92       	push	r11
2114
    12f2:	cf 92       	push	r12
2115
    12f4:	df 92       	push	r13
2116
    12f6:	ef 92       	push	r14
2117
    12f8:	ff 92       	push	r15
2118
    12fa:	0f 93       	push	r16
2119
    12fc:	1f 93       	push	r17
2120
    12fe:	cf 93       	push	r28
2121
    1300:	df 93       	push	r29
2122
    1302:	cd b7       	in	r28, 0x3d	; 61
2123
    1304:	de b7       	in	r29, 0x3e	; 62
2124
    1306:	23 97       	sbiw	r28, 0x03	; 3
2125
    1308:	0f b6       	in	r0, 0x3f	; 63
2126
    130a:	f8 94       	cli
2127
    130c:	de bf       	out	0x3e, r29	; 62
2128
    130e:	0f be       	out	0x3f, r0	; 63
2129
    1310:	cd bf       	out	0x3d, r28	; 61
2130
    1312:	09 83       	std	Y+1, r16	; 0x01
2131
	int x,y,count,xs,ys,xm,ym;
2132
 
2133
	x=(int)x1;
2134
    1314:	a8 2e       	mov	r10, r24
2135
    1316:	bb 24       	eor	r11, r11
2136
	y=(int)y1;
2137
    1318:	c6 2e       	mov	r12, r22
2138
    131a:	dd 24       	eor	r13, r13
2139
	xs=(int)x2 - (int)x1;
2140
    131c:	64 2e       	mov	r6, r20
2141
    131e:	77 24       	eor	r7, r7
2142
    1320:	73 01       	movw	r14, r6
2143
    1322:	ea 18       	sub	r14, r10
2144
    1324:	fb 08       	sbc	r15, r11
2145
	ys=(int)y2 - (int)y1;
2146
    1326:	82 2e       	mov	r8, r18
2147
    1328:	99 24       	eor	r9, r9
2148
    132a:	84 01       	movw	r16, r8
2149
    132c:	0c 19       	sub	r16, r12
2150
    132e:	1d 09       	sbc	r17, r13
2151
	if(xs < 0)
2152
    1330:	f7 fe       	sbrs	r15, 7
2153
    1332:	04 c0       	rjmp	.+8      	; 0x133c <lcd_line+0x5e>
2154
		xm= -1;
2155
    1334:	7f ef       	ldi	r23, 0xFF	; 255
2156
    1336:	27 2e       	mov	r2, r23
2157
    1338:	37 2e       	mov	r3, r23
2158
    133a:	09 c0       	rjmp	.+18     	; 0x134e <lcd_line+0x70>
2159
	else
2160
		if(xs > 0)
2161
    133c:	1e 14       	cp	r1, r14
2162
    133e:	1f 04       	cpc	r1, r15
2163
    1340:	24 f4       	brge	.+8      	; 0x134a <lcd_line+0x6c>
2164
			xm= 1;
2165
    1342:	61 e0       	ldi	r22, 0x01	; 1
2166
    1344:	26 2e       	mov	r2, r22
2167
    1346:	31 2c       	mov	r3, r1
2168
    1348:	02 c0       	rjmp	.+4      	; 0x134e <lcd_line+0x70>
2169
		else
2170
			xm= 0;
2171
    134a:	22 24       	eor	r2, r2
2172
    134c:	33 24       	eor	r3, r3
2173
	if(ys < 0)
2174
    134e:	17 ff       	sbrs	r17, 7
2175
    1350:	04 c0       	rjmp	.+8      	; 0x135a <lcd_line+0x7c>
2176
		ym= -1;
2177
    1352:	5f ef       	ldi	r21, 0xFF	; 255
2178
    1354:	45 2e       	mov	r4, r21
2179
    1356:	55 2e       	mov	r5, r21
2180
    1358:	09 c0       	rjmp	.+18     	; 0x136c <lcd_line+0x8e>
2181
	else
2182
		if(ys > 0)
2183
    135a:	10 16       	cp	r1, r16
2184
    135c:	11 06       	cpc	r1, r17
2185
    135e:	24 f4       	brge	.+8      	; 0x1368 <lcd_line+0x8a>
2186
			ym= 1;
2187
    1360:	41 e0       	ldi	r20, 0x01	; 1
2188
    1362:	44 2e       	mov	r4, r20
2189
    1364:	51 2c       	mov	r5, r1
2190
    1366:	02 c0       	rjmp	.+4      	; 0x136c <lcd_line+0x8e>
2191
		else
2192
			ym= 0;
2193
    1368:	44 24       	eor	r4, r4
2194
    136a:	55 24       	eor	r5, r5
2195
	if(xs < 0)
2196
    136c:	f7 fe       	sbrs	r15, 7
2197
    136e:	04 c0       	rjmp	.+8      	; 0x1378 <lcd_line+0x9a>
2198
		xs= -xs;
2199
    1370:	f0 94       	com	r15
2200
    1372:	e1 94       	neg	r14
2201
    1374:	f1 08       	sbc	r15, r1
2202
    1376:	f3 94       	inc	r15
2203
	if(ys < 0)
2204
    1378:	17 ff       	sbrs	r17, 7
2205
    137a:	03 c0       	rjmp	.+6      	; 0x1382 <lcd_line+0xa4>
2206
		ys= -ys;
2207
    137c:	10 95       	com	r17
2208
    137e:	01 95       	neg	r16
2209
    1380:	1f 4f       	sbci	r17, 0xFF	; 255
2210
 
2211
	lcd_plot((unsigned char)x, (unsigned char)y, mode);
2212
    1382:	49 81       	ldd	r20, Y+1	; 0x01
2213
    1384:	6c 2d       	mov	r22, r12
2214
    1386:	8a 2d       	mov	r24, r10
2215
    1388:	0e 94 26 09 	call	0x124c <lcd_plot>
2216
 
2217
	if(xs > ys) // Flat Line <45 degrees
2218
    138c:	0e 15       	cp	r16, r14
2219
    138e:	1f 05       	cpc	r17, r15
2220
    1390:	4c f5       	brge	.+82     	; 0x13e4 <lcd_line+0x106>
2221
	{
2222
		count= -(xs / 2);
2223
    1392:	c7 01       	movw	r24, r14
2224
    1394:	f7 fc       	sbrc	r15, 7
2225
    1396:	01 96       	adiw	r24, 0x01	; 1
2226
    1398:	95 95       	asr	r25
2227
    139a:	87 95       	ror	r24
2228
    139c:	22 27       	eor	r18, r18
2229
    139e:	33 27       	eor	r19, r19
2230
    13a0:	28 1b       	sub	r18, r24
2231
    13a2:	39 0b       	sbc	r19, r25
2232
    13a4:	3b 83       	std	Y+3, r19	; 0x03
2233
    13a6:	2a 83       	std	Y+2, r18	; 0x02
2234
		while(x != x2)
2235
		{
2236
			count= count + ys;
2237
			x= x + xm;
2238
			if(count > 0)
2239
			{
2240
				y= y + ym;
2241
				count= count - xs;
2242
			}
2243
			lcd_plot((unsigned char)x, (unsigned char)y, mode);
2244
    13a8:	a6 14       	cp	r10, r6
2245
    13aa:	b7 04       	cpc	r11, r7
2246
    13ac:	09 f4       	brne	.+2      	; 0x13b0 <lcd_line+0xd2>
2247
    13ae:	41 c0       	rjmp	.+130    	; 0x1432 <lcd_line+0x154>
2248
    13b0:	8a 81       	ldd	r24, Y+2	; 0x02
2249
    13b2:	9b 81       	ldd	r25, Y+3	; 0x03
2250
    13b4:	80 0f       	add	r24, r16
2251
    13b6:	91 1f       	adc	r25, r17
2252
    13b8:	9b 83       	std	Y+3, r25	; 0x03
2253
    13ba:	8a 83       	std	Y+2, r24	; 0x02
2254
    13bc:	a2 0c       	add	r10, r2
2255
    13be:	b3 1c       	adc	r11, r3
2256
    13c0:	18 16       	cp	r1, r24
2257
    13c2:	19 06       	cpc	r1, r25
2258
    13c4:	34 f4       	brge	.+12     	; 0x13d2 <lcd_line+0xf4>
2259
    13c6:	c4 0c       	add	r12, r4
2260
    13c8:	d5 1c       	adc	r13, r5
2261
    13ca:	8e 19       	sub	r24, r14
2262
    13cc:	9f 09       	sbc	r25, r15
2263
    13ce:	9b 83       	std	Y+3, r25	; 0x03
2264
    13d0:	8a 83       	std	Y+2, r24	; 0x02
2265
    13d2:	49 81       	ldd	r20, Y+1	; 0x01
2266
    13d4:	6c 2d       	mov	r22, r12
2267
    13d6:	8a 2d       	mov	r24, r10
2268
    13d8:	0e 94 26 09 	call	0x124c <lcd_plot>
2269
    13dc:	a6 14       	cp	r10, r6
2270
    13de:	b7 04       	cpc	r11, r7
2271
    13e0:	39 f7       	brne	.-50     	; 0x13b0 <lcd_line+0xd2>
2272
    13e2:	27 c0       	rjmp	.+78     	; 0x1432 <lcd_line+0x154>
2273
		}
2274
	}
2275
	else // Line >=45 degrees
2276
	{
2277
		count=- (ys / 2);
2278
    13e4:	c8 01       	movw	r24, r16
2279
    13e6:	17 fd       	sbrc	r17, 7
2280
    13e8:	01 96       	adiw	r24, 0x01	; 1
2281
    13ea:	95 95       	asr	r25
2282
    13ec:	87 95       	ror	r24
2283
    13ee:	ee 27       	eor	r30, r30
2284
    13f0:	ff 27       	eor	r31, r31
2285
    13f2:	e8 1b       	sub	r30, r24
2286
    13f4:	f9 0b       	sbc	r31, r25
2287
    13f6:	fb 83       	std	Y+3, r31	; 0x03
2288
    13f8:	ea 83       	std	Y+2, r30	; 0x02
2289
		while(y != y2)
2290
		{
2291
			count= count + xs;
2292
			y= y + ym;
2293
			if(count > 0)
2294
			{
2295
				x= x + xm;
2296
				count= count - ys;
2297
			}
2298
			lcd_plot((unsigned char)x, (unsigned char)y, mode);
2299
    13fa:	c8 14       	cp	r12, r8
2300
    13fc:	d9 04       	cpc	r13, r9
2301
    13fe:	c9 f0       	breq	.+50     	; 0x1432 <lcd_line+0x154>
2302
    1400:	2a 81       	ldd	r18, Y+2	; 0x02
2303
    1402:	3b 81       	ldd	r19, Y+3	; 0x03
2304
    1404:	2e 0d       	add	r18, r14
2305
    1406:	3f 1d       	adc	r19, r15
2306
    1408:	3b 83       	std	Y+3, r19	; 0x03
2307
    140a:	2a 83       	std	Y+2, r18	; 0x02
2308
    140c:	c4 0c       	add	r12, r4
2309
    140e:	d5 1c       	adc	r13, r5
2310
    1410:	12 16       	cp	r1, r18
2311
    1412:	13 06       	cpc	r1, r19
2312
    1414:	34 f4       	brge	.+12     	; 0x1422 <lcd_line+0x144>
2313
    1416:	a2 0c       	add	r10, r2
2314
    1418:	b3 1c       	adc	r11, r3
2315
    141a:	20 1b       	sub	r18, r16
2316
    141c:	31 0b       	sbc	r19, r17
2317
    141e:	3b 83       	std	Y+3, r19	; 0x03
2318
    1420:	2a 83       	std	Y+2, r18	; 0x02
2319
    1422:	49 81       	ldd	r20, Y+1	; 0x01
2320
    1424:	6c 2d       	mov	r22, r12
2321
    1426:	8a 2d       	mov	r24, r10
2322
    1428:	0e 94 26 09 	call	0x124c <lcd_plot>
2323
    142c:	c8 14       	cp	r12, r8
2324
    142e:	d9 04       	cpc	r13, r9
2325
    1430:	39 f7       	brne	.-50     	; 0x1400 <lcd_line+0x122>
2326
    1432:	23 96       	adiw	r28, 0x03	; 3
2327
    1434:	0f b6       	in	r0, 0x3f	; 63
2328
    1436:	f8 94       	cli
2329
    1438:	de bf       	out	0x3e, r29	; 62
2330
    143a:	0f be       	out	0x3f, r0	; 63
2331
    143c:	cd bf       	out	0x3d, r28	; 61
2332
    143e:	df 91       	pop	r29
2333
    1440:	cf 91       	pop	r28
2334
    1442:	1f 91       	pop	r17
2335
    1444:	0f 91       	pop	r16
2336
    1446:	ff 90       	pop	r15
2337
    1448:	ef 90       	pop	r14
2338
    144a:	df 90       	pop	r13
2339
    144c:	cf 90       	pop	r12
2340
    144e:	bf 90       	pop	r11
2341
    1450:	af 90       	pop	r10
2342
    1452:	9f 90       	pop	r9
2343
    1454:	8f 90       	pop	r8
2344
    1456:	7f 90       	pop	r7
2345
    1458:	6f 90       	pop	r6
2346
    145a:	5f 90       	pop	r5
2347
    145c:	4f 90       	pop	r4
2348
    145e:	3f 90       	pop	r3
2349
    1460:	2f 90       	pop	r2
2350
    1462:	08 95       	ret
2351
 
2352
00001464 <lcd_frect>:
2353
		}
2354
	}
2355
}
2356
 
2357
 
2358
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2359
// + Filled rectangle
2360
// + x1, y1 = upper left corner
2361
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2362
 
2363
void lcd_frect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode)
2364
{
2365
    1464:	bf 92       	push	r11
2366
    1466:	cf 92       	push	r12
2367
    1468:	df 92       	push	r13
2368
    146a:	ef 92       	push	r14
2369
    146c:	ff 92       	push	r15
2370
    146e:	0f 93       	push	r16
2371
    1470:	1f 93       	push	r17
2372
    1472:	cf 93       	push	r28
2373
    1474:	df 93       	push	r29
2374
    1476:	18 2f       	mov	r17, r24
2375
    1478:	82 2f       	mov	r24, r18
2376
    147a:	b0 2e       	mov	r11, r16
2377
	uint16_t x2, y2;
2378
	uint16_t i;
2379
 
2380
	if (x1 >= DISP_W)
2381
    147c:	17 fd       	sbrc	r17, 7
2382
		x1 = DISP_W - 1;
2383
    147e:	1f e7       	ldi	r17, 0x7F	; 127
2384
	if (y1 >= DISP_H)
2385
    1480:	60 34       	cpi	r22, 0x40	; 64
2386
    1482:	08 f0       	brcs	.+2      	; 0x1486 <lcd_frect+0x22>
2387
		y1 = DISP_H - 1;
2388
    1484:	6f e3       	ldi	r22, 0x3F	; 63
2389
	x2 = x1 + widthx;
2390
    1486:	21 2f       	mov	r18, r17
2391
    1488:	24 0f       	add	r18, r20
2392
    148a:	31 2d       	mov	r19, r1
2393
    148c:	31 1d       	adc	r19, r1
2394
    148e:	69 01       	movw	r12, r18
2395
	y2 = y1 + widthy;
2396
    1490:	26 2f       	mov	r18, r22
2397
    1492:	33 27       	eor	r19, r19
2398
    1494:	79 01       	movw	r14, r18
2399
    1496:	e8 0e       	add	r14, r24
2400
    1498:	f1 1c       	adc	r15, r1
2401
 
2402
	if (x2 > DISP_W)
2403
    149a:	81 e8       	ldi	r24, 0x81	; 129
2404
    149c:	c8 16       	cp	r12, r24
2405
    149e:	d1 04       	cpc	r13, r1
2406
    14a0:	18 f0       	brcs	.+6      	; 0x14a8 <lcd_frect+0x44>
2407
		x2 = DISP_W;
2408
    14a2:	f0 e8       	ldi	r31, 0x80	; 128
2409
    14a4:	cf 2e       	mov	r12, r31
2410
    14a6:	d1 2c       	mov	r13, r1
2411
	if (y2 > DISP_H)
2412
    14a8:	81 e4       	ldi	r24, 0x41	; 65
2413
    14aa:	e8 16       	cp	r14, r24
2414
    14ac:	f1 04       	cpc	r15, r1
2415
    14ae:	18 f0       	brcs	.+6      	; 0x14b6 <lcd_frect+0x52>
2416
		y2 = DISP_H;
2417
    14b0:	e0 e4       	ldi	r30, 0x40	; 64
2418
    14b2:	ee 2e       	mov	r14, r30
2419
    14b4:	f1 2c       	mov	r15, r1
2420
 
2421
	for (i=y1;i<=y2;i++)
2422
    14b6:	e9 01       	movw	r28, r18
2423
    14b8:	e2 16       	cp	r14, r18
2424
    14ba:	f3 06       	cpc	r15, r19
2425
    14bc:	58 f0       	brcs	.+22     	; 0x14d4 <lcd_frect+0x70>
2426
	{
2427
		lcd_line(x1,i,x2,i,mode);
2428
    14be:	0b 2d       	mov	r16, r11
2429
    14c0:	2c 2f       	mov	r18, r28
2430
    14c2:	4c 2d       	mov	r20, r12
2431
    14c4:	6c 2f       	mov	r22, r28
2432
    14c6:	81 2f       	mov	r24, r17
2433
    14c8:	0e 94 6f 09 	call	0x12de <lcd_line>
2434
    14cc:	21 96       	adiw	r28, 0x01	; 1
2435
    14ce:	ec 16       	cp	r14, r28
2436
    14d0:	fd 06       	cpc	r15, r29
2437
    14d2:	a8 f7       	brcc	.-22     	; 0x14be <lcd_frect+0x5a>
2438
    14d4:	df 91       	pop	r29
2439
    14d6:	cf 91       	pop	r28
2440
    14d8:	1f 91       	pop	r17
2441
    14da:	0f 91       	pop	r16
2442
    14dc:	ff 90       	pop	r15
2443
    14de:	ef 90       	pop	r14
2444
    14e0:	df 90       	pop	r13
2445
    14e2:	cf 90       	pop	r12
2446
    14e4:	bf 90       	pop	r11
2447
    14e6:	08 95       	ret
2448
 
2449
000014e8 <lcd_rect>:
2450
	}
2451
 
2452
}
2453
 
2454
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2455
// + outline of rectangle
2456
// + x1, y1 = upper left corner
2457
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2458
 
2459
void lcd_rect (uint8_t x1, uint8_t y1, uint8_t widthx, uint8_t widthy, uint8_t mode)
2460
{
2461
    14e8:	cf 92       	push	r12
2462
    14ea:	df 92       	push	r13
2463
    14ec:	ef 92       	push	r14
2464
    14ee:	ff 92       	push	r15
2465
    14f0:	0f 93       	push	r16
2466
    14f2:	1f 93       	push	r17
2467
    14f4:	cf 93       	push	r28
2468
    14f6:	df 93       	push	r29
2469
    14f8:	d8 2e       	mov	r13, r24
2470
    14fa:	16 2f       	mov	r17, r22
2471
    14fc:	c0 2e       	mov	r12, r16
2472
	uint16_t x2, y2;
2473
 
2474
	if (x1 >= DISP_W)
2475
    14fe:	87 ff       	sbrs	r24, 7
2476
    1500:	02 c0       	rjmp	.+4      	; 0x1506 <lcd_rect+0x1e>
2477
		x1 = DISP_W - 1;
2478
    1502:	bf e7       	ldi	r27, 0x7F	; 127
2479
    1504:	db 2e       	mov	r13, r27
2480
	if (y1 >= DISP_H)
2481
    1506:	10 34       	cpi	r17, 0x40	; 64
2482
    1508:	08 f0       	brcs	.+2      	; 0x150c <lcd_rect+0x24>
2483
		y1 = DISP_H - 1;
2484
    150a:	1f e3       	ldi	r17, 0x3F	; 63
2485
	x2 = x1 + widthx;
2486
    150c:	8d 2d       	mov	r24, r13
2487
    150e:	84 0f       	add	r24, r20
2488
    1510:	91 2d       	mov	r25, r1
2489
    1512:	91 1d       	adc	r25, r1
2490
    1514:	ec 01       	movw	r28, r24
2491
	y2 = y1 + widthy;
2492
    1516:	81 2f       	mov	r24, r17
2493
    1518:	82 0f       	add	r24, r18
2494
    151a:	91 2d       	mov	r25, r1
2495
    151c:	91 1d       	adc	r25, r1
2496
    151e:	7c 01       	movw	r14, r24
2497
 
2498
	if (x2 > DISP_W)
2499
    1520:	c1 38       	cpi	r28, 0x81	; 129
2500
    1522:	d1 05       	cpc	r29, r1
2501
    1524:	10 f0       	brcs	.+4      	; 0x152a <lcd_rect+0x42>
2502
		x2 = DISP_W;
2503
    1526:	c0 e8       	ldi	r28, 0x80	; 128
2504
    1528:	d0 e0       	ldi	r29, 0x00	; 0
2505
	if (y2 > DISP_H)
2506
    152a:	91 e4       	ldi	r25, 0x41	; 65
2507
    152c:	e9 16       	cp	r14, r25
2508
    152e:	f1 04       	cpc	r15, r1
2509
    1530:	18 f0       	brcs	.+6      	; 0x1538 <lcd_rect+0x50>
2510
		y2 = DISP_H;
2511
    1532:	a0 e4       	ldi	r26, 0x40	; 64
2512
    1534:	ea 2e       	mov	r14, r26
2513
    1536:	f1 2c       	mov	r15, r1
2514
 
2515
	lcd_line (x1, y1, x2, y1, mode);
2516
    1538:	0c 2d       	mov	r16, r12
2517
    153a:	21 2f       	mov	r18, r17
2518
    153c:	4c 2f       	mov	r20, r28
2519
    153e:	61 2f       	mov	r22, r17
2520
    1540:	8d 2d       	mov	r24, r13
2521
    1542:	0e 94 6f 09 	call	0x12de <lcd_line>
2522
	lcd_line (x2, y1, x2, y2, mode);
2523
    1546:	2e 2d       	mov	r18, r14
2524
    1548:	4c 2f       	mov	r20, r28
2525
    154a:	61 2f       	mov	r22, r17
2526
    154c:	8c 2f       	mov	r24, r28
2527
    154e:	0e 94 6f 09 	call	0x12de <lcd_line>
2528
	lcd_line (x2, y2, x1, y2, mode);
2529
    1552:	2e 2d       	mov	r18, r14
2530
    1554:	4d 2d       	mov	r20, r13
2531
    1556:	6e 2d       	mov	r22, r14
2532
    1558:	8c 2f       	mov	r24, r28
2533
    155a:	0e 94 6f 09 	call	0x12de <lcd_line>
2534
	lcd_line (x1, y2, x1, y1, mode);
2535
    155e:	21 2f       	mov	r18, r17
2536
    1560:	4d 2d       	mov	r20, r13
2537
    1562:	6e 2d       	mov	r22, r14
2538
    1564:	8d 2d       	mov	r24, r13
2539
    1566:	0e 94 6f 09 	call	0x12de <lcd_line>
2540
    156a:	df 91       	pop	r29
2541
    156c:	cf 91       	pop	r28
2542
    156e:	1f 91       	pop	r17
2543
    1570:	0f 91       	pop	r16
2544
    1572:	ff 90       	pop	r15
2545
    1574:	ef 90       	pop	r14
2546
    1576:	df 90       	pop	r13
2547
    1578:	cf 90       	pop	r12
2548
    157a:	08 95       	ret
2549
 
2550
0000157c <draw_circle>:
2551
}
2552
 
2553
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2554
// + outline of a circle
2555
// + Based on Bresenham-algorithm found in wikipedia
2556
// + modified by thkais (2007)
2557
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2558
 
2559
 
2560
void draw_circle(int16_t x0, int16_t y0, int16_t radius, uint8_t mode)
2561
{
2562
    157c:	2f 92       	push	r2
2563
    157e:	3f 92       	push	r3
2564
    1580:	4f 92       	push	r4
2565
    1582:	5f 92       	push	r5
2566
    1584:	6f 92       	push	r6
2567
    1586:	7f 92       	push	r7
2568
    1588:	8f 92       	push	r8
2569
    158a:	9f 92       	push	r9
2570
    158c:	af 92       	push	r10
2571
    158e:	bf 92       	push	r11
2572
    1590:	cf 92       	push	r12
2573
    1592:	df 92       	push	r13
2574
    1594:	ef 92       	push	r14
2575
    1596:	ff 92       	push	r15
2576
    1598:	0f 93       	push	r16
2577
    159a:	1f 93       	push	r17
2578
    159c:	cf 93       	push	r28
2579
    159e:	df 93       	push	r29
2580
    15a0:	5c 01       	movw	r10, r24
2581
    15a2:	6b 01       	movw	r12, r22
2582
    15a4:	e2 2e       	mov	r14, r18
2583
	int16_t f = 1 - radius;
2584
    15a6:	c1 e0       	ldi	r28, 0x01	; 1
2585
    15a8:	8c 2e       	mov	r8, r28
2586
    15aa:	91 2c       	mov	r9, r1
2587
    15ac:	84 1a       	sub	r8, r20
2588
    15ae:	95 0a       	sbc	r9, r21
2589
	int16_t ddF_x = 0;
2590
    15b0:	22 24       	eor	r2, r2
2591
    15b2:	33 24       	eor	r3, r3
2592
	int16_t ddF_y = -2 * radius;
2593
    15b4:	8e ef       	ldi	r24, 0xFE	; 254
2594
    15b6:	9f ef       	ldi	r25, 0xFF	; 255
2595
    15b8:	48 9f       	mul	r20, r24
2596
    15ba:	20 01       	movw	r4, r0
2597
    15bc:	49 9f       	mul	r20, r25
2598
    15be:	50 0c       	add	r5, r0
2599
    15c0:	58 9f       	mul	r21, r24
2600
    15c2:	50 0c       	add	r5, r0
2601
    15c4:	11 24       	eor	r1, r1
2602
	int16_t x = 0;
2603
    15c6:	31 01       	movw	r6, r2
2604
	int16_t y = radius;
2605
    15c8:	ea 01       	movw	r28, r20
2606
 
2607
	lcd_plot(x0, y0 + radius, mode);
2608
    15ca:	86 2f       	mov	r24, r22
2609
    15cc:	84 0f       	add	r24, r20
2610
    15ce:	42 2f       	mov	r20, r18
2611
    15d0:	68 2f       	mov	r22, r24
2612
    15d2:	8a 2d       	mov	r24, r10
2613
    15d4:	0e 94 26 09 	call	0x124c <lcd_plot>
2614
	lcd_plot(x0, y0 - radius, mode);
2615
    15d8:	8c 2d       	mov	r24, r12
2616
    15da:	8c 1b       	sub	r24, r28
2617
    15dc:	4e 2d       	mov	r20, r14
2618
    15de:	68 2f       	mov	r22, r24
2619
    15e0:	8a 2d       	mov	r24, r10
2620
    15e2:	0e 94 26 09 	call	0x124c <lcd_plot>
2621
	lcd_plot(x0 + radius, y0, mode);
2622
    15e6:	4e 2d       	mov	r20, r14
2623
    15e8:	6c 2d       	mov	r22, r12
2624
    15ea:	8a 2d       	mov	r24, r10
2625
    15ec:	8c 0f       	add	r24, r28
2626
    15ee:	0e 94 26 09 	call	0x124c <lcd_plot>
2627
	lcd_plot(x0 - radius, y0, mode);
2628
    15f2:	4e 2d       	mov	r20, r14
2629
    15f4:	6c 2d       	mov	r22, r12
2630
    15f6:	8a 2d       	mov	r24, r10
2631
    15f8:	8c 1b       	sub	r24, r28
2632
    15fa:	0e 94 26 09 	call	0x124c <lcd_plot>
2633
 
2634
	while(x < y)
2635
	{
2636
		if(f >= 0)
2637
		{
2638
			y --;
2639
			ddF_y += 2;
2640
			f += ddF_y;
2641
		}
2642
		x ++;
2643
		ddF_x += 2;
2644
		f += ddF_x + 1;
2645
 
2646
		lcd_plot(x0 + x, y0 + y, mode);
2647
		lcd_plot(x0 - x, y0 + y, mode);
2648
 
2649
		lcd_plot(x0 + x, y0 - y, mode);
2650
		lcd_plot(x0 - x, y0 - y, mode);
2651
 
2652
		lcd_plot(x0 + y, y0 + x, mode);
2653
		lcd_plot(x0 - y, y0 + x, mode);
2654
 
2655
		lcd_plot(x0 + y, y0 - x, mode);
2656
		lcd_plot(x0 - y, y0 - x, mode);
2657
    15fe:	2c 16       	cp	r2, r28
2658
    1600:	3d 06       	cpc	r3, r29
2659
    1602:	0c f0       	brlt	.+2      	; 0x1606 <draw_circle+0x8a>
2660
    1604:	51 c0       	rjmp	.+162    	; 0x16a8 <draw_circle+0x12c>
2661
    1606:	97 fc       	sbrc	r9, 7
2662
    1608:	07 c0       	rjmp	.+14     	; 0x1618 <draw_circle+0x9c>
2663
    160a:	21 97       	sbiw	r28, 0x01	; 1
2664
    160c:	82 e0       	ldi	r24, 0x02	; 2
2665
    160e:	90 e0       	ldi	r25, 0x00	; 0
2666
    1610:	48 0e       	add	r4, r24
2667
    1612:	59 1e       	adc	r5, r25
2668
    1614:	84 0c       	add	r8, r4
2669
    1616:	95 1c       	adc	r9, r5
2670
    1618:	08 94       	sec
2671
    161a:	61 1c       	adc	r6, r1
2672
    161c:	71 1c       	adc	r7, r1
2673
    161e:	82 e0       	ldi	r24, 0x02	; 2
2674
    1620:	90 e0       	ldi	r25, 0x00	; 0
2675
    1622:	28 0e       	add	r2, r24
2676
    1624:	39 1e       	adc	r3, r25
2677
    1626:	82 0c       	add	r8, r2
2678
    1628:	93 1c       	adc	r9, r3
2679
    162a:	08 94       	sec
2680
    162c:	81 1c       	adc	r8, r1
2681
    162e:	91 1c       	adc	r9, r1
2682
    1630:	1c 2d       	mov	r17, r12
2683
    1632:	1c 0f       	add	r17, r28
2684
    1634:	fa 2c       	mov	r15, r10
2685
    1636:	f6 0c       	add	r15, r6
2686
    1638:	4e 2d       	mov	r20, r14
2687
    163a:	61 2f       	mov	r22, r17
2688
    163c:	8f 2d       	mov	r24, r15
2689
    163e:	0e 94 26 09 	call	0x124c <lcd_plot>
2690
    1642:	0a 2d       	mov	r16, r10
2691
    1644:	06 19       	sub	r16, r6
2692
    1646:	4e 2d       	mov	r20, r14
2693
    1648:	61 2f       	mov	r22, r17
2694
    164a:	80 2f       	mov	r24, r16
2695
    164c:	0e 94 26 09 	call	0x124c <lcd_plot>
2696
    1650:	1c 2d       	mov	r17, r12
2697
    1652:	1c 1b       	sub	r17, r28
2698
    1654:	4e 2d       	mov	r20, r14
2699
    1656:	61 2f       	mov	r22, r17
2700
    1658:	8f 2d       	mov	r24, r15
2701
    165a:	0e 94 26 09 	call	0x124c <lcd_plot>
2702
    165e:	4e 2d       	mov	r20, r14
2703
    1660:	61 2f       	mov	r22, r17
2704
    1662:	80 2f       	mov	r24, r16
2705
    1664:	0e 94 26 09 	call	0x124c <lcd_plot>
2706
    1668:	1c 2d       	mov	r17, r12
2707
    166a:	16 0d       	add	r17, r6
2708
    166c:	fa 2c       	mov	r15, r10
2709
    166e:	fc 0e       	add	r15, r28
2710
    1670:	4e 2d       	mov	r20, r14
2711
    1672:	61 2f       	mov	r22, r17
2712
    1674:	8f 2d       	mov	r24, r15
2713
    1676:	0e 94 26 09 	call	0x124c <lcd_plot>
2714
    167a:	0a 2d       	mov	r16, r10
2715
    167c:	0c 1b       	sub	r16, r28
2716
    167e:	4e 2d       	mov	r20, r14
2717
    1680:	61 2f       	mov	r22, r17
2718
    1682:	80 2f       	mov	r24, r16
2719
    1684:	0e 94 26 09 	call	0x124c <lcd_plot>
2720
    1688:	1c 2d       	mov	r17, r12
2721
    168a:	16 19       	sub	r17, r6
2722
    168c:	4e 2d       	mov	r20, r14
2723
    168e:	61 2f       	mov	r22, r17
2724
    1690:	8f 2d       	mov	r24, r15
2725
    1692:	0e 94 26 09 	call	0x124c <lcd_plot>
2726
    1696:	4e 2d       	mov	r20, r14
2727
    1698:	61 2f       	mov	r22, r17
2728
    169a:	80 2f       	mov	r24, r16
2729
    169c:	0e 94 26 09 	call	0x124c <lcd_plot>
2730
    16a0:	6c 16       	cp	r6, r28
2731
    16a2:	7d 06       	cpc	r7, r29
2732
    16a4:	0c f4       	brge	.+2      	; 0x16a8 <draw_circle+0x12c>
2733
    16a6:	af cf       	rjmp	.-162    	; 0x1606 <draw_circle+0x8a>
2734
    16a8:	df 91       	pop	r29
2735
    16aa:	cf 91       	pop	r28
2736
    16ac:	1f 91       	pop	r17
2737
    16ae:	0f 91       	pop	r16
2738
    16b0:	ff 90       	pop	r15
2739
    16b2:	ef 90       	pop	r14
2740
    16b4:	df 90       	pop	r13
2741
    16b6:	cf 90       	pop	r12
2742
    16b8:	bf 90       	pop	r11
2743
    16ba:	af 90       	pop	r10
2744
    16bc:	9f 90       	pop	r9
2745
    16be:	8f 90       	pop	r8
2746
    16c0:	7f 90       	pop	r7
2747
    16c2:	6f 90       	pop	r6
2748
    16c4:	5f 90       	pop	r5
2749
    16c6:	4f 90       	pop	r4
2750
    16c8:	3f 90       	pop	r3
2751
    16ca:	2f 90       	pop	r2
2752
    16cc:	08 95       	ret
2753
 
2754
000016ce <draw_fcircle>:
2755
	}
2756
}
2757
 
2758
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2759
// + filled Circle
2760
// + modified circle-algorithm thkais (2007)
2761
// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2762
 
2763
void draw_fcircle(int16_t x0, int16_t y0, int16_t radius)
2764
{
2765
    16ce:	2f 92       	push	r2
2766
    16d0:	3f 92       	push	r3
2767
    16d2:	4f 92       	push	r4
2768
    16d4:	5f 92       	push	r5
2769
    16d6:	6f 92       	push	r6
2770
    16d8:	7f 92       	push	r7
2771
    16da:	8f 92       	push	r8
2772
    16dc:	9f 92       	push	r9
2773
    16de:	af 92       	push	r10
2774
    16e0:	bf 92       	push	r11
2775
    16e2:	cf 92       	push	r12
2776
    16e4:	df 92       	push	r13
2777
    16e6:	ff 92       	push	r15
2778
    16e8:	0f 93       	push	r16
2779
    16ea:	1f 93       	push	r17
2780
    16ec:	cf 93       	push	r28
2781
    16ee:	df 93       	push	r29
2782
    16f0:	5c 01       	movw	r10, r24
2783
    16f2:	6b 01       	movw	r12, r22
2784
	int16_t f = 1 - radius;
2785
    16f4:	11 e0       	ldi	r17, 0x01	; 1
2786
    16f6:	61 2e       	mov	r6, r17
2787
    16f8:	71 2c       	mov	r7, r1
2788
    16fa:	64 1a       	sub	r6, r20
2789
    16fc:	75 0a       	sbc	r7, r21
2790
	int16_t ddF_x = 0;
2791
    16fe:	22 24       	eor	r2, r2
2792
    1700:	33 24       	eor	r3, r3
2793
	int16_t ddF_y = -2 * radius;
2794
    1702:	8e ef       	ldi	r24, 0xFE	; 254
2795
    1704:	9f ef       	ldi	r25, 0xFF	; 255
2796
    1706:	48 9f       	mul	r20, r24
2797
    1708:	20 01       	movw	r4, r0
2798
    170a:	49 9f       	mul	r20, r25
2799
    170c:	50 0c       	add	r5, r0
2800
    170e:	58 9f       	mul	r21, r24
2801
    1710:	50 0c       	add	r5, r0
2802
    1712:	11 24       	eor	r1, r1
2803
	int16_t x = 0;
2804
    1714:	41 01       	movw	r8, r2
2805
	int16_t y = radius;
2806
    1716:	ea 01       	movw	r28, r20
2807
 
2808
	lcd_line(x0, y0 + radius,x0, y0 - radius,1);
2809
    1718:	86 2f       	mov	r24, r22
2810
    171a:	84 1b       	sub	r24, r20
2811
    171c:	96 2f       	mov	r25, r22
2812
    171e:	94 0f       	add	r25, r20
2813
    1720:	01 e0       	ldi	r16, 0x01	; 1
2814
    1722:	28 2f       	mov	r18, r24
2815
    1724:	4a 2d       	mov	r20, r10
2816
    1726:	69 2f       	mov	r22, r25
2817
    1728:	8a 2d       	mov	r24, r10
2818
    172a:	0e 94 6f 09 	call	0x12de <lcd_line>
2819
 
2820
	lcd_line(x0 + radius, y0,x0 - radius, y0,1);
2821
    172e:	8a 2d       	mov	r24, r10
2822
    1730:	8c 1b       	sub	r24, r28
2823
    1732:	2c 2d       	mov	r18, r12
2824
    1734:	48 2f       	mov	r20, r24
2825
    1736:	6c 2d       	mov	r22, r12
2826
    1738:	8a 2d       	mov	r24, r10
2827
    173a:	8c 0f       	add	r24, r28
2828
    173c:	0e 94 6f 09 	call	0x12de <lcd_line>
2829
 
2830
	while(x < y)
2831
	{
2832
		if(f >= 0)
2833
		{
2834
			y--;
2835
			ddF_y += 2;
2836
			f += ddF_y;
2837
		}
2838
		x++;
2839
		ddF_x += 2;
2840
		f += ddF_x + 1;
2841
 
2842
		lcd_line(x0 + x, y0 + y,x0 - x, y0 + y,1);
2843
		lcd_line(x0 + x, y0 - y,x0 - x, y0 - y,1);
2844
		lcd_line(x0 + y, y0 + x,x0 - y, y0 + x,1);
2845
		lcd_line(x0 + y, y0 - x,x0 - y, y0 - x,1);
2846
    1740:	2c 16       	cp	r2, r28
2847
    1742:	3d 06       	cpc	r3, r29
2848
    1744:	0c f0       	brlt	.+2      	; 0x1748 <draw_fcircle+0x7a>
2849
    1746:	42 c0       	rjmp	.+132    	; 0x17cc <draw_fcircle+0xfe>
2850
    1748:	77 fc       	sbrc	r7, 7
2851
    174a:	07 c0       	rjmp	.+14     	; 0x175a <draw_fcircle+0x8c>
2852
    174c:	21 97       	sbiw	r28, 0x01	; 1
2853
    174e:	82 e0       	ldi	r24, 0x02	; 2
2854
    1750:	90 e0       	ldi	r25, 0x00	; 0
2855
    1752:	48 0e       	add	r4, r24
2856
    1754:	59 1e       	adc	r5, r25
2857
    1756:	64 0c       	add	r6, r4
2858
    1758:	75 1c       	adc	r7, r5
2859
    175a:	08 94       	sec
2860
    175c:	81 1c       	adc	r8, r1
2861
    175e:	91 1c       	adc	r9, r1
2862
    1760:	82 e0       	ldi	r24, 0x02	; 2
2863
    1762:	90 e0       	ldi	r25, 0x00	; 0
2864
    1764:	28 0e       	add	r2, r24
2865
    1766:	39 1e       	adc	r3, r25
2866
    1768:	62 0c       	add	r6, r2
2867
    176a:	73 1c       	adc	r7, r3
2868
    176c:	08 94       	sec
2869
    176e:	61 1c       	adc	r6, r1
2870
    1770:	71 1c       	adc	r7, r1
2871
    1772:	8c 2d       	mov	r24, r12
2872
    1774:	8c 0f       	add	r24, r28
2873
    1776:	1a 2d       	mov	r17, r10
2874
    1778:	18 19       	sub	r17, r8
2875
    177a:	fa 2c       	mov	r15, r10
2876
    177c:	f8 0c       	add	r15, r8
2877
    177e:	01 e0       	ldi	r16, 0x01	; 1
2878
    1780:	28 2f       	mov	r18, r24
2879
    1782:	41 2f       	mov	r20, r17
2880
    1784:	68 2f       	mov	r22, r24
2881
    1786:	8f 2d       	mov	r24, r15
2882
    1788:	0e 94 6f 09 	call	0x12de <lcd_line>
2883
    178c:	8c 2d       	mov	r24, r12
2884
    178e:	8c 1b       	sub	r24, r28
2885
    1790:	28 2f       	mov	r18, r24
2886
    1792:	41 2f       	mov	r20, r17
2887
    1794:	68 2f       	mov	r22, r24
2888
    1796:	8f 2d       	mov	r24, r15
2889
    1798:	0e 94 6f 09 	call	0x12de <lcd_line>
2890
    179c:	8c 2d       	mov	r24, r12
2891
    179e:	88 0d       	add	r24, r8
2892
    17a0:	1a 2d       	mov	r17, r10
2893
    17a2:	1c 1b       	sub	r17, r28
2894
    17a4:	fa 2c       	mov	r15, r10
2895
    17a6:	fc 0e       	add	r15, r28
2896
    17a8:	28 2f       	mov	r18, r24
2897
    17aa:	41 2f       	mov	r20, r17
2898
    17ac:	68 2f       	mov	r22, r24
2899
    17ae:	8f 2d       	mov	r24, r15
2900
    17b0:	0e 94 6f 09 	call	0x12de <lcd_line>
2901
    17b4:	8c 2d       	mov	r24, r12
2902
    17b6:	88 19       	sub	r24, r8
2903
    17b8:	28 2f       	mov	r18, r24
2904
    17ba:	41 2f       	mov	r20, r17
2905
    17bc:	68 2f       	mov	r22, r24
2906
    17be:	8f 2d       	mov	r24, r15
2907
    17c0:	0e 94 6f 09 	call	0x12de <lcd_line>
2908
    17c4:	8c 16       	cp	r8, r28
2909
    17c6:	9d 06       	cpc	r9, r29
2910
    17c8:	0c f4       	brge	.+2      	; 0x17cc <draw_fcircle+0xfe>
2911
    17ca:	be cf       	rjmp	.-132    	; 0x1748 <draw_fcircle+0x7a>
2912
    17cc:	df 91       	pop	r29
2913
    17ce:	cf 91       	pop	r28
2914
    17d0:	1f 91       	pop	r17
2915
    17d2:	0f 91       	pop	r16
2916
    17d4:	ff 90       	pop	r15
2917
    17d6:	df 90       	pop	r13
2918
    17d8:	cf 90       	pop	r12
2919
    17da:	bf 90       	pop	r11
2920
    17dc:	af 90       	pop	r10
2921
    17de:	9f 90       	pop	r9
2922
    17e0:	8f 90       	pop	r8
2923
    17e2:	7f 90       	pop	r7
2924
    17e4:	6f 90       	pop	r6
2925
    17e6:	5f 90       	pop	r5
2926
    17e8:	4f 90       	pop	r4
2927
    17ea:	3f 90       	pop	r3
2928
    17ec:	2f 90       	pop	r2
2929
    17ee:	08 95       	ret
2930
 
2931
000017f0 <__vector_13>:
2932
volatile uint8_t read_index, write_index;
2933
volatile uint8_t rs232_buffer[16];
2934
 
2935
ISR(USART_RXC_vect)
2936
{
2937
    17f0:	1f 92       	push	r1
2938
    17f2:	0f 92       	push	r0
2939
    17f4:	0f b6       	in	r0, 0x3f	; 63
2940
    17f6:	0f 92       	push	r0
2941
    17f8:	11 24       	eor	r1, r1
2942
    17fa:	8f 93       	push	r24
2943
    17fc:	9f 93       	push	r25
2944
    17fe:	ef 93       	push	r30
2945
    1800:	ff 93       	push	r31
2946
	rs232_buffer[write_index++] = UDR;
2947
    1802:	90 91 6c 05 	lds	r25, 0x056C
2948
    1806:	ee e6       	ldi	r30, 0x6E	; 110
2949
    1808:	f5 e0       	ldi	r31, 0x05	; 5
2950
    180a:	e9 0f       	add	r30, r25
2951
    180c:	f1 1d       	adc	r31, r1
2952
    180e:	8c b1       	in	r24, 0x0c	; 12
2953
    1810:	80 83       	st	Z, r24
2954
    1812:	9f 5f       	subi	r25, 0xFF	; 255
2955
    1814:	90 93 6c 05 	sts	0x056C, r25
2956
	write_index &= 15;
2957
    1818:	80 91 6c 05 	lds	r24, 0x056C
2958
    181c:	8f 70       	andi	r24, 0x0F	; 15
2959
    181e:	80 93 6c 05 	sts	0x056C, r24
2960
    1822:	ff 91       	pop	r31
2961
    1824:	ef 91       	pop	r30
2962
    1826:	9f 91       	pop	r25
2963
    1828:	8f 91       	pop	r24
2964
    182a:	0f 90       	pop	r0
2965
    182c:	0f be       	out	0x3f, r0	; 63
2966
    182e:	0f 90       	pop	r0
2967
    1830:	1f 90       	pop	r1
2968
    1832:	18 95       	reti
2969
 
2970
00001834 <RS232_init>:
2971
}
2972
 
2973
void RS232_init (void)
2974
{
2975
   	UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);
2976
    1834:	88 e9       	ldi	r24, 0x98	; 152
2977
    1836:	8a b9       	out	0x0a, r24	; 10
2978
	UBRRL = 7;		// 57600 Baud @ 7,372800 MHz
2979
    1838:	87 e0       	ldi	r24, 0x07	; 7
2980
    183a:	89 b9       	out	0x09, r24	; 9
2981
    183c:	08 95       	ret
2982
 
2983
0000183e <RS232_get>:
2984
}
2985
 
2986
uint8_t RS232_get (void)
2987
{
2988
	uint8_t c;
2989
 
2990
	rs232_timer = 10;
2991
    183e:	8a e0       	ldi	r24, 0x0A	; 10
2992
    1840:	80 93 e5 04 	sts	0x04E5, r24
2993
 
2994
	while ((read_index == write_index) && (rs232_timer > 0));
2995
    1844:	90 91 6d 05 	lds	r25, 0x056D
2996
    1848:	80 91 6c 05 	lds	r24, 0x056C
2997
    184c:	98 17       	cp	r25, r24
2998
    184e:	21 f4       	brne	.+8      	; 0x1858 <RS232_get+0x1a>
2999
    1850:	80 91 e5 04 	lds	r24, 0x04E5
3000
    1854:	88 23       	and	r24, r24
3001
    1856:	b1 f7       	brne	.-20     	; 0x1844 <RS232_get+0x6>
3002
	if (rs232_timer != 0)
3003
    1858:	80 91 e5 04 	lds	r24, 0x04E5
3004
    185c:	88 23       	and	r24, r24
3005
    185e:	81 f0       	breq	.+32     	; 0x1880 <RS232_get+0x42>
3006
	{
3007
	c = rs232_buffer[read_index++];
3008
    1860:	80 91 6d 05 	lds	r24, 0x056D
3009
    1864:	e8 2f       	mov	r30, r24
3010
    1866:	ff 27       	eor	r31, r31
3011
    1868:	e2 59       	subi	r30, 0x92	; 146
3012
    186a:	fa 4f       	sbci	r31, 0xFA	; 250
3013
    186c:	8f 5f       	subi	r24, 0xFF	; 255
3014
    186e:	80 93 6d 05 	sts	0x056D, r24
3015
    1872:	e0 81       	ld	r30, Z
3016
	read_index &= 15;
3017
    1874:	80 91 6d 05 	lds	r24, 0x056D
3018
    1878:	8f 70       	andi	r24, 0x0F	; 15
3019
    187a:	80 93 6d 05 	sts	0x056D, r24
3020
    187e:	01 c0       	rjmp	.+2      	; 0x1882 <RS232_get+0x44>
3021
	}
3022
	else
3023
	{
3024
		c=0;
3025
    1880:	e8 2f       	mov	r30, r24
3026
	}
3027
	return c;
3028
}
3029
    1882:	8e 2f       	mov	r24, r30
3030
    1884:	99 27       	eor	r25, r25
3031
    1886:	08 95       	ret
3032
 
3033
00001888 <RS232_send>:
3034
void RS232_send (uint8_t data)
3035
{
3036
	while ((UCSRA & (1<<UDRE)) == 0);
3037
    1888:	5d 9b       	sbis	0x0b, 5	; 11
3038
    188a:	fe cf       	rjmp	.-4      	; 0x1888 <RS232_send>
3039
	UDR = data;
3040
    188c:	8c b9       	out	0x0c, r24	; 12
3041
    188e:	08 95       	ret
3042
 
3043
00001890 <RS232_text>:
3044
}
3045
void RS232_text (uint8_t *text)
3046
{
3047
    1890:	cf 93       	push	r28
3048
    1892:	df 93       	push	r29
3049
    1894:	ec 01       	movw	r28, r24
3050
	while (*text)
3051
	{
3052
		RS232_send(*text);
3053
		text++;
3054
    1896:	88 81       	ld	r24, Y
3055
    1898:	88 23       	and	r24, r24
3056
    189a:	31 f0       	breq	.+12     	; 0x18a8 <RS232_text+0x18>
3057
    189c:	89 91       	ld	r24, Y+
3058
    189e:	0e 94 44 0c 	call	0x1888 <RS232_send>
3059
    18a2:	88 81       	ld	r24, Y
3060
    18a4:	88 23       	and	r24, r24
3061
    18a6:	d1 f7       	brne	.-12     	; 0x189c <RS232_text+0xc>
3062
    18a8:	df 91       	pop	r29
3063
    18aa:	cf 91       	pop	r28
3064
    18ac:	08 95       	ret
3065
 
3066
000018ae <base64_decode>:
3067
}
3068
 
3069
 
3070
uint8_t base64_decode(uint8_t number)								// Wandelt die base64-Rohdaten in lesbare Daten um
3071
{
3072
    18ae:	a8 2f       	mov	r26, r24
3073
	uint8_t p,q;
3074
	uint8_t a,b,c,d;
3075
 
3076
	p = 2;
3077
    18b0:	62 e0       	ldi	r22, 0x02	; 2
3078
	q = 0;
3079
    18b2:	70 e0       	ldi	r23, 0x00	; 0
3080
 
3081
	while (p < number)
3082
	{
3083
		a = r_buffer[p + 0] - 61;
3084
		b = r_buffer[p + 1] - 61;
3085
		c = r_buffer[p + 2] - 61;
3086
		d = r_buffer[p + 3] - 61;
3087
 
3088
		p += 4;
3089
 
3090
		p_buffer[q + 0] = (a << 2) | (b >> 4);					// gespeichert werden die Daten in p_buffer
3091
		p_buffer[q + 1] = ((b & 0x0F) << 4) | (c >> 2);
3092
		p_buffer[q + 2] = ((c & 0x03) << 6) | d;
3093
 
3094
		q += 3;
3095
    18b4:	6a 17       	cp	r22, r26
3096
    18b6:	b0 f5       	brcc	.+108    	; 0x1924 <base64_decode+0x76>
3097
    18b8:	e6 2f       	mov	r30, r22
3098
    18ba:	ff 27       	eor	r31, r31
3099
    18bc:	e7 51       	subi	r30, 0x17	; 23
3100
    18be:	fb 4f       	sbci	r31, 0xFB	; 251
3101
    18c0:	80 81       	ld	r24, Z
3102
    18c2:	8d 53       	subi	r24, 0x3D	; 61
3103
    18c4:	31 81       	ldd	r19, Z+1	; 0x01
3104
    18c6:	3d 53       	subi	r19, 0x3D	; 61
3105
    18c8:	52 81       	ldd	r21, Z+2	; 0x02
3106
    18ca:	5d 53       	subi	r21, 0x3D	; 61
3107
    18cc:	43 81       	ldd	r20, Z+3	; 0x03
3108
    18ce:	4d 53       	subi	r20, 0x3D	; 61
3109
    18d0:	6c 5f       	subi	r22, 0xFC	; 252
3110
    18d2:	e7 2f       	mov	r30, r23
3111
    18d4:	ff 27       	eor	r31, r31
3112
    18d6:	ed 59       	subi	r30, 0x9D	; 157
3113
    18d8:	fb 4f       	sbci	r31, 0xFB	; 251
3114
    18da:	99 27       	eor	r25, r25
3115
    18dc:	88 0f       	add	r24, r24
3116
    18de:	99 1f       	adc	r25, r25
3117
    18e0:	88 0f       	add	r24, r24
3118
    18e2:	99 1f       	adc	r25, r25
3119
    18e4:	23 2f       	mov	r18, r19
3120
    18e6:	22 95       	swap	r18
3121
    18e8:	2f 70       	andi	r18, 0x0F	; 15
3122
    18ea:	28 2b       	or	r18, r24
3123
    18ec:	20 83       	st	Z, r18
3124
    18ee:	83 2f       	mov	r24, r19
3125
    18f0:	99 27       	eor	r25, r25
3126
    18f2:	8f 70       	andi	r24, 0x0F	; 15
3127
    18f4:	90 70       	andi	r25, 0x00	; 0
3128
    18f6:	34 e0       	ldi	r19, 0x04	; 4
3129
    18f8:	88 0f       	add	r24, r24
3130
    18fa:	99 1f       	adc	r25, r25
3131
    18fc:	3a 95       	dec	r19
3132
    18fe:	e1 f7       	brne	.-8      	; 0x18f8 <base64_decode+0x4a>
3133
    1900:	25 2f       	mov	r18, r21
3134
    1902:	26 95       	lsr	r18
3135
    1904:	26 95       	lsr	r18
3136
    1906:	28 2b       	or	r18, r24
3137
    1908:	21 83       	std	Z+1, r18	; 0x01
3138
    190a:	85 2f       	mov	r24, r21
3139
    190c:	99 27       	eor	r25, r25
3140
    190e:	83 70       	andi	r24, 0x03	; 3
3141
    1910:	90 70       	andi	r25, 0x00	; 0
3142
    1912:	26 e0       	ldi	r18, 0x06	; 6
3143
    1914:	88 0f       	add	r24, r24
3144
    1916:	99 1f       	adc	r25, r25
3145
    1918:	2a 95       	dec	r18
3146
    191a:	e1 f7       	brne	.-8      	; 0x1914 <base64_decode+0x66>
3147
    191c:	48 2b       	or	r20, r24
3148
    191e:	42 83       	std	Z+2, r20	; 0x02
3149
    1920:	7d 5f       	subi	r23, 0xFD	; 253
3150
    1922:	c8 cf       	rjmp	.-112    	; 0x18b4 <base64_decode+0x6>
3151
	}
3152
	return q;														// Rückgabe der Anzahl der Datenbytes
3153
}
3154
    1924:	87 2f       	mov	r24, r23
3155
    1926:	99 27       	eor	r25, r25
3156
    1928:	08 95       	ret
3157
 
3158
0000192a <get_message>:
3159
    192a:	cf 93       	push	r28
3160
    192c:	84 e1       	ldi	r24, 0x14	; 20
3161
    192e:	80 93 61 00 	sts	0x0061, r24
3162
    1932:	0e 94 1f 0c 	call	0x183e <RS232_get>
3163
    1936:	83 32       	cpi	r24, 0x23	; 35
3164
    1938:	21 f0       	breq	.+8      	; 0x1942 <get_message+0x18>
3165
    193a:	80 91 61 00 	lds	r24, 0x0061
3166
    193e:	88 23       	and	r24, r24
3167
    1940:	c1 f7       	brne	.-16     	; 0x1932 <get_message+0x8>
3168
    1942:	80 91 61 00 	lds	r24, 0x0061
3169
    1946:	88 23       	and	r24, r24
3170
    1948:	99 f0       	breq	.+38     	; 0x1970 <get_message+0x46>
3171
    194a:	c0 e0       	ldi	r28, 0x00	; 0
3172
    194c:	0e 94 1f 0c 	call	0x183e <RS232_get>
3173
    1950:	ec 2f       	mov	r30, r28
3174
    1952:	ff 27       	eor	r31, r31
3175
    1954:	e7 51       	subi	r30, 0x17	; 23
3176
    1956:	fb 4f       	sbci	r31, 0xFB	; 251
3177
    1958:	80 83       	st	Z, r24
3178
    195a:	cf 5f       	subi	r28, 0xFF	; 255
3179
    195c:	c7 fd       	sbrc	r28, 7
3180
    195e:	cf e7       	ldi	r28, 0x7F	; 127
3181
    1960:	8d 30       	cpi	r24, 0x0D	; 13
3182
    1962:	a1 f7       	brne	.-24     	; 0x194c <get_message+0x22>
3183
    1964:	8c 2f       	mov	r24, r28
3184
    1966:	0e 94 57 0c 	call	0x18ae <base64_decode>
3185
    196a:	80 e0       	ldi	r24, 0x00	; 0
3186
    196c:	90 e0       	ldi	r25, 0x00	; 0
3187
    196e:	02 c0       	rjmp	.+4      	; 0x1974 <get_message+0x4a>
3188
    1970:	81 e0       	ldi	r24, 0x01	; 1
3189
    1972:	90 e0       	ldi	r25, 0x00	; 0
3190
    1974:	cf 91       	pop	r28
3191
    1976:	08 95       	ret
3192
 
3193
00001978 <base64_send>:
3194
 
3195
void base64_send(uint8_t number)									// Sendet Daten zur Flight-Control
3196
{																	// Die Daten werden in p_buffer erwartet, umcodiert und gesendet
3197
    1978:	ff 92       	push	r15
3198
    197a:	0f 93       	push	r16
3199
    197c:	1f 93       	push	r17
3200
    197e:	cf 93       	push	r28
3201
    1980:	a8 2f       	mov	r26, r24
3202
	uint8_t bpointer,spointer;
3203
	uint8_t x,y,z,a;
3204
	uint16_t checksum;
3205
 
3206
	r_buffer[0] = p_buffer[0];
3207
    1982:	80 91 63 04 	lds	r24, 0x0463
3208
    1986:	80 93 e9 04 	sts	0x04E9, r24
3209
	r_buffer[1] = p_buffer[1];
3210
    198a:	80 91 64 04 	lds	r24, 0x0464
3211
    198e:	80 93 ea 04 	sts	0x04EA, r24
3212
	r_buffer[2] = p_buffer[2];
3213
    1992:	80 91 65 04 	lds	r24, 0x0465
3214
    1996:	80 93 eb 04 	sts	0x04EB, r24
3215
 
3216
	bpointer = 3;
3217
    199a:	43 e0       	ldi	r20, 0x03	; 3
3218
    199c:	f4 2e       	mov	r15, r20
3219
	spointer = 3;
3220
    199e:	7f 2d       	mov	r23, r15
3221
 
3222
	while (spointer < number)
3223
	{
3224
		x = p_buffer[spointer];
3225
		y = p_buffer[spointer + 1];
3226
		z = p_buffer[spointer + 2];
3227
		spointer += 3;
3228
 
3229
		r_buffer[bpointer + 0] = (x >> 2) + 61;
3230
		r_buffer[bpointer + 1] = (((x & 0x03) << 4) | ((y & 0xF0) >> 4)) + 61;
3231
		r_buffer[bpointer + 2] = (((y & 0x0F) << 2) | ((z & 0xC0) >> 6)) + 61;
3232
		r_buffer[bpointer + 3] = (z & 0x3F) + 61;
3233
 
3234
		bpointer += 4;
3235
    19a0:	fa 16       	cp	r15, r26
3236
    19a2:	e0 f5       	brcc	.+120    	; 0x1a1c <base64_send+0xa4>
3237
    19a4:	e7 2f       	mov	r30, r23
3238
    19a6:	ff 27       	eor	r31, r31
3239
    19a8:	ed 59       	subi	r30, 0x9D	; 157
3240
    19aa:	fb 4f       	sbci	r31, 0xFB	; 251
3241
    19ac:	90 81       	ld	r25, Z
3242
    19ae:	21 81       	ldd	r18, Z+1	; 0x01
3243
    19b0:	62 81       	ldd	r22, Z+2	; 0x02
3244
    19b2:	7d 5f       	subi	r23, 0xFD	; 253
3245
    19b4:	ef 2d       	mov	r30, r15
3246
    19b6:	ff 27       	eor	r31, r31
3247
    19b8:	e7 51       	subi	r30, 0x17	; 23
3248
    19ba:	fb 4f       	sbci	r31, 0xFB	; 251
3249
    19bc:	89 2f       	mov	r24, r25
3250
    19be:	86 95       	lsr	r24
3251
    19c0:	86 95       	lsr	r24
3252
    19c2:	83 5c       	subi	r24, 0xC3	; 195
3253
    19c4:	80 83       	st	Z, r24
3254
    19c6:	89 2f       	mov	r24, r25
3255
    19c8:	99 27       	eor	r25, r25
3256
    19ca:	83 70       	andi	r24, 0x03	; 3
3257
    19cc:	90 70       	andi	r25, 0x00	; 0
3258
    19ce:	34 e0       	ldi	r19, 0x04	; 4
3259
    19d0:	88 0f       	add	r24, r24
3260
    19d2:	99 1f       	adc	r25, r25
3261
    19d4:	3a 95       	dec	r19
3262
    19d6:	e1 f7       	brne	.-8      	; 0x19d0 <base64_send+0x58>
3263
    19d8:	42 2f       	mov	r20, r18
3264
    19da:	55 27       	eor	r21, r21
3265
    19dc:	9a 01       	movw	r18, r20
3266
    19de:	94 e0       	ldi	r25, 0x04	; 4
3267
    19e0:	36 95       	lsr	r19
3268
    19e2:	27 95       	ror	r18
3269
    19e4:	9a 95       	dec	r25
3270
    19e6:	e1 f7       	brne	.-8      	; 0x19e0 <base64_send+0x68>
3271
    19e8:	82 2b       	or	r24, r18
3272
    19ea:	83 5c       	subi	r24, 0xC3	; 195
3273
    19ec:	81 83       	std	Z+1, r24	; 0x01
3274
    19ee:	4f 70       	andi	r20, 0x0F	; 15
3275
    19f0:	50 70       	andi	r21, 0x00	; 0
3276
    19f2:	44 0f       	add	r20, r20
3277
    19f4:	55 1f       	adc	r21, r21
3278
    19f6:	44 0f       	add	r20, r20
3279
    19f8:	55 1f       	adc	r21, r21
3280
    19fa:	86 2f       	mov	r24, r22
3281
    19fc:	99 27       	eor	r25, r25
3282
    19fe:	16 e0       	ldi	r17, 0x06	; 6
3283
    1a00:	96 95       	lsr	r25
3284
    1a02:	87 95       	ror	r24
3285
    1a04:	1a 95       	dec	r17
3286
    1a06:	e1 f7       	brne	.-8      	; 0x1a00 <base64_send+0x88>
3287
    1a08:	84 2b       	or	r24, r20
3288
    1a0a:	83 5c       	subi	r24, 0xC3	; 195
3289
    1a0c:	82 83       	std	Z+2, r24	; 0x02
3290
    1a0e:	6f 73       	andi	r22, 0x3F	; 63
3291
    1a10:	63 5c       	subi	r22, 0xC3	; 195
3292
    1a12:	63 83       	std	Z+3, r22	; 0x03
3293
    1a14:	84 e0       	ldi	r24, 0x04	; 4
3294
    1a16:	f8 0e       	add	r15, r24
3295
    1a18:	7a 17       	cp	r23, r26
3296
    1a1a:	20 f2       	brcs	.-120    	; 0x19a4 <base64_send+0x2c>
3297
	}
3298
 
3299
	checksum = 0;
3300
    1a1c:	20 e0       	ldi	r18, 0x00	; 0
3301
    1a1e:	30 e0       	ldi	r19, 0x00	; 0
3302
	for(a=0;a<bpointer;a++)
3303
    1a20:	c0 e0       	ldi	r28, 0x00	; 0
3304
    1a22:	cf 15       	cp	r28, r15
3305
    1a24:	40 f4       	brcc	.+16     	; 0x1a36 <base64_send+0xbe>
3306
    1a26:	e9 ee       	ldi	r30, 0xE9	; 233
3307
    1a28:	f4 e0       	ldi	r31, 0x04	; 4
3308
	  checksum += r_buffer[a];
3309
    1a2a:	81 91       	ld	r24, Z+
3310
    1a2c:	28 0f       	add	r18, r24
3311
    1a2e:	31 1d       	adc	r19, r1
3312
    1a30:	cf 5f       	subi	r28, 0xFF	; 255
3313
    1a32:	cf 15       	cp	r28, r15
3314
    1a34:	d0 f3       	brcs	.-12     	; 0x1a2a <base64_send+0xb2>
3315
 
3316
	checksum %= 4096;
3317
    1a36:	3f 70       	andi	r19, 0x0F	; 15
3318
 
3319
	r_buffer[bpointer] = (checksum / 64) + 61;
3320
    1a38:	ef 2d       	mov	r30, r15
3321
    1a3a:	ff 27       	eor	r31, r31
3322
    1a3c:	e7 51       	subi	r30, 0x17	; 23
3323
    1a3e:	fb 4f       	sbci	r31, 0xFB	; 251
3324
    1a40:	c9 01       	movw	r24, r18
3325
    1a42:	c6 e0       	ldi	r28, 0x06	; 6
3326
    1a44:	96 95       	lsr	r25
3327
    1a46:	87 95       	ror	r24
3328
    1a48:	ca 95       	dec	r28
3329
    1a4a:	e1 f7       	brne	.-8      	; 0x1a44 <base64_send+0xcc>
3330
    1a4c:	83 5c       	subi	r24, 0xC3	; 195
3331
    1a4e:	80 83       	st	Z, r24
3332
	r_buffer[bpointer + 1] = (checksum % 64) + 61;
3333
    1a50:	2f 73       	andi	r18, 0x3F	; 63
3334
    1a52:	30 70       	andi	r19, 0x00	; 0
3335
    1a54:	82 2f       	mov	r24, r18
3336
    1a56:	83 5c       	subi	r24, 0xC3	; 195
3337
    1a58:	81 83       	std	Z+1, r24	; 0x01
3338
	r_buffer[bpointer + 2] = 13;
3339
    1a5a:	8d e0       	ldi	r24, 0x0D	; 13
3340
    1a5c:	82 83       	std	Z+2, r24	; 0x02
3341
	r_buffer[bpointer + 3] = 0;
3342
    1a5e:	13 82       	std	Z+3, r1	; 0x03
3343
 
3344
	bpointer += 3;
3345
    1a60:	83 e0       	ldi	r24, 0x03	; 3
3346
    1a62:	f8 0e       	add	r15, r24
3347
 
3348
	for(a=0;a<bpointer;a++)
3349
    1a64:	c3 81       	ldd	r28, Z+3	; 0x03
3350
    1a66:	cf 15       	cp	r28, r15
3351
    1a68:	50 f4       	brcc	.+20     	; 0x1a7e <base64_send+0x106>
3352
    1a6a:	09 ee       	ldi	r16, 0xE9	; 233
3353
    1a6c:	14 e0       	ldi	r17, 0x04	; 4
3354
	  RS232_send(r_buffer[a]);
3355
    1a6e:	f8 01       	movw	r30, r16
3356
    1a70:	81 91       	ld	r24, Z+
3357
    1a72:	8f 01       	movw	r16, r30
3358
    1a74:	0e 94 44 0c 	call	0x1888 <RS232_send>
3359
    1a78:	cf 5f       	subi	r28, 0xFF	; 255
3360
    1a7a:	cf 15       	cp	r28, r15
3361
    1a7c:	c0 f3       	brcs	.-16     	; 0x1a6e <base64_send+0xf6>
3362
    1a7e:	cf 91       	pop	r28
3363
    1a80:	1f 91       	pop	r17
3364
    1a82:	0f 91       	pop	r16
3365
    1a84:	ff 90       	pop	r15
3366
    1a86:	08 95       	ret
3367
 
3368
00001a88 <displ_get_text>:
3369
uint8_t displ_page;
3370
 
3371
 
3372
void displ_get_text(uint8_t number)
3373
{
3374
    1a88:	1f 93       	push	r17
3375
    1a8a:	cf 93       	push	r28
3376
    1a8c:	df 93       	push	r29
3377
    1a8e:	cd b7       	in	r28, 0x3d	; 61
3378
    1a90:	de b7       	in	r29, 0x3e	; 62
3379
    1a92:	61 97       	sbiw	r28, 0x11	; 17
3380
    1a94:	0f b6       	in	r0, 0x3f	; 63
3381
    1a96:	f8 94       	cli
3382
    1a98:	de bf       	out	0x3e, r29	; 62
3383
    1a9a:	0f be       	out	0x3f, r0	; 63
3384
    1a9c:	cd bf       	out	0x3d, r28	; 61
3385
    1a9e:	18 2f       	mov	r17, r24
3386
	uint8_t text[17];
3387
	uint8_t i;
3388
 
3389
	p_buffer[0] = '#';
3390
    1aa0:	83 e2       	ldi	r24, 0x23	; 35
3391
    1aa2:	80 93 63 04 	sts	0x0463, r24
3392
	p_buffer[1] = 'a';
3393
    1aa6:	81 e6       	ldi	r24, 0x61	; 97
3394
    1aa8:	80 93 64 04 	sts	0x0464, r24
3395
	p_buffer[2] = 'a';
3396
    1aac:	80 93 65 04 	sts	0x0465, r24
3397
	p_buffer[3] = number;
3398
    1ab0:	10 93 66 04 	sts	0x0466, r17
3399
	p_buffer[4] = 0;
3400
    1ab4:	10 92 67 04 	sts	0x0467, r1
3401
	p_buffer[5] = 0;
3402
    1ab8:	10 92 68 04 	sts	0x0468, r1
3403
	base64_send(6);
3404
    1abc:	86 e0       	ldi	r24, 0x06	; 6
3405
    1abe:	0e 94 bc 0c 	call	0x1978 <base64_send>
3406
 
3407
	do
3408
	{
3409
		get_message();
3410
    1ac2:	0e 94 95 0c 	call	0x192a <get_message>
3411
	}
3412
    1ac6:	80 91 ea 04 	lds	r24, 0x04EA
3413
    1aca:	81 34       	cpi	r24, 0x41	; 65
3414
    1acc:	d1 f7       	brne	.-12     	; 0x1ac2 <displ_get_text+0x3a>
3415
    1ace:	de 01       	movw	r26, r28
3416
    1ad0:	11 96       	adiw	r26, 0x01	; 1
3417
    1ad2:	e3 e6       	ldi	r30, 0x63	; 99
3418
    1ad4:	f4 e0       	ldi	r31, 0x04	; 4
3419
    1ad6:	9f e0       	ldi	r25, 0x0F	; 15
3420
	while (r_buffer[1] != 'A');
3421
 
3422
	for (i=0;i<16;i++)
3423
		text[i] = p_buffer[i];
3424
    1ad8:	81 91       	ld	r24, Z+
3425
    1ada:	8d 93       	st	X+, r24
3426
    1adc:	91 50       	subi	r25, 0x01	; 1
3427
    1ade:	97 ff       	sbrs	r25, 7
3428
    1ae0:	fb cf       	rjmp	.-10     	; 0x1ad8 <displ_get_text+0x50>
3429
	text[16] = 0x00;
3430
    1ae2:	19 8a       	std	Y+17, r1	; 0x11
3431
	lcd_print_at(0,(number & 0x07),text,0);
3432
    1ae4:	17 70       	andi	r17, 0x07	; 7
3433
    1ae6:	29 89       	ldd	r18, Y+17	; 0x11
3434
    1ae8:	ae 01       	movw	r20, r28
3435
    1aea:	4f 5f       	subi	r20, 0xFF	; 255
3436
    1aec:	5f 4f       	sbci	r21, 0xFF	; 255
3437
    1aee:	61 2f       	mov	r22, r17
3438
    1af0:	82 2f       	mov	r24, r18
3439
    1af2:	0e 94 1d 09 	call	0x123a <lcd_print_at>
3440
    1af6:	61 96       	adiw	r28, 0x11	; 17
3441
    1af8:	0f b6       	in	r0, 0x3f	; 63
3442
    1afa:	f8 94       	cli
3443
    1afc:	de bf       	out	0x3e, r29	; 62
3444
    1afe:	0f be       	out	0x3f, r0	; 63
3445
    1b00:	cd bf       	out	0x3d, r28	; 61
3446
    1b02:	df 91       	pop	r29
3447
    1b04:	cf 91       	pop	r28
3448
    1b06:	1f 91       	pop	r17
3449
    1b08:	08 95       	ret
3450
 
3451
00001b0a <displ_values>:
3452
 
3453
}
3454
 
3455
void displ_values(void)
3456
{
3457
    1b0a:	cf 92       	push	r12
3458
    1b0c:	df 92       	push	r13
3459
    1b0e:	ef 92       	push	r14
3460
    1b10:	ff 92       	push	r15
3461
    1b12:	0f 93       	push	r16
3462
    1b14:	1f 93       	push	r17
3463
    1b16:	cf 93       	push	r28
3464
    1b18:	df 93       	push	r29
3465
    1b1a:	cd b7       	in	r28, 0x3d	; 61
3466
    1b1c:	de b7       	in	r29, 0x3e	; 62
3467
    1b1e:	61 97       	sbiw	r28, 0x11	; 17
3468
    1b20:	0f b6       	in	r0, 0x3f	; 63
3469
    1b22:	f8 94       	cli
3470
    1b24:	de bf       	out	0x3e, r29	; 62
3471
    1b26:	0f be       	out	0x3f, r0	; 63
3472
    1b28:	cd bf       	out	0x3d, r28	; 61
3473
	uint8_t displ_page, i;
3474
	int16_t value;
3475
	uint8_t text[17];
3476
 
3477
	displ_page = 0;										// Page 0..3 (4 Pages zu je 8 Werte)
3478
    1b2a:	00 e0       	ldi	r16, 0x00	; 0
3479
	lcd_cls();											// LCD löschen
3480
    1b2c:	0e 94 36 07 	call	0xe6c <lcd_cls>
3481
 
3482
	do
3483
	{
3484
		for (i=0;i<8;i++)								// Texte lesen und anzeigen
3485
    1b30:	10 e0       	ldi	r17, 0x00	; 0
3486
			displ_get_text(i+displ_page*8);
3487
    1b32:	c0 2e       	mov	r12, r16
3488
    1b34:	dd 24       	eor	r13, r13
3489
    1b36:	c6 01       	movw	r24, r12
3490
    1b38:	53 e0       	ldi	r21, 0x03	; 3
3491
    1b3a:	88 0f       	add	r24, r24
3492
    1b3c:	99 1f       	adc	r25, r25
3493
    1b3e:	5a 95       	dec	r21
3494
    1b40:	e1 f7       	brne	.-8      	; 0x1b3a <displ_values+0x30>
3495
    1b42:	81 0f       	add	r24, r17
3496
    1b44:	0e 94 44 0d 	call	0x1a88 <displ_get_text>
3497
    1b48:	1f 5f       	subi	r17, 0xFF	; 255
3498
    1b4a:	18 30       	cpi	r17, 0x08	; 8
3499
    1b4c:	90 f3       	brcs	.-28     	; 0x1b32 <displ_values+0x28>
3500
 
3501
		do
3502
		{
3503
			get_message();
3504
    1b4e:	0e 94 95 0c 	call	0x192a <get_message>
3505
			if(r_buffer[1] == 'D')
3506
    1b52:	80 91 ea 04 	lds	r24, 0x04EA
3507
    1b56:	84 34       	cpi	r24, 0x44	; 68
3508
    1b58:	91 f5       	brne	.+100    	; 0x1bbe <displ_values+0xb4>
3509
			{
3510
				for (i=0;i<8;i++)
3511
    1b5a:	10 e0       	ldi	r17, 0x00	; 0
3512
    1b5c:	ee 24       	eor	r14, r14
3513
    1b5e:	ff 24       	eor	r15, r15
3514
				{
3515
					value = p_buffer[i*2+displ_page*16+2] + 256*p_buffer[i*2+displ_page*16+3];
3516
    1b60:	f6 01       	movw	r30, r12
3517
    1b62:	43 e0       	ldi	r20, 0x03	; 3
3518
    1b64:	ee 0f       	add	r30, r30
3519
    1b66:	ff 1f       	adc	r31, r31
3520
    1b68:	4a 95       	dec	r20
3521
    1b6a:	e1 f7       	brne	.-8      	; 0x1b64 <displ_values+0x5a>
3522
    1b6c:	ee 0d       	add	r30, r14
3523
    1b6e:	ff 1d       	adc	r31, r15
3524
    1b70:	ee 0f       	add	r30, r30
3525
    1b72:	ff 1f       	adc	r31, r31
3526
    1b74:	ed 59       	subi	r30, 0x9D	; 157
3527
    1b76:	fb 4f       	sbci	r31, 0xFB	; 251
3528
    1b78:	22 81       	ldd	r18, Z+2	; 0x02
3529
    1b7a:	83 81       	ldd	r24, Z+3	; 0x03
3530
    1b7c:	99 27       	eor	r25, r25
3531
    1b7e:	98 2f       	mov	r25, r24
3532
    1b80:	88 27       	eor	r24, r24
3533
					itoa(value,text,10);
3534
    1b82:	4a e0       	ldi	r20, 0x0A	; 10
3535
    1b84:	50 e0       	ldi	r21, 0x00	; 0
3536
    1b86:	be 01       	movw	r22, r28
3537
    1b88:	6f 5f       	subi	r22, 0xFF	; 255
3538
    1b8a:	7f 4f       	sbci	r23, 0xFF	; 255
3539
    1b8c:	82 0f       	add	r24, r18
3540
    1b8e:	91 1d       	adc	r25, r1
3541
    1b90:	0e 94 cf 12 	call	0x259e <itoa>
3542
					lcd_print_atp(14,i,PSTR("      "),0);
3543
    1b94:	20 e0       	ldi	r18, 0x00	; 0
3544
    1b96:	44 e5       	ldi	r20, 0x54	; 84
3545
    1b98:	56 e0       	ldi	r21, 0x06	; 6
3546
    1b9a:	61 2f       	mov	r22, r17
3547
    1b9c:	8e e0       	ldi	r24, 0x0E	; 14
3548
    1b9e:	0e 94 e1 08 	call	0x11c2 <lcd_print_atp>
3549
					lcd_print_at(14,i,text,0);
3550
    1ba2:	20 e0       	ldi	r18, 0x00	; 0
3551
    1ba4:	ae 01       	movw	r20, r28
3552
    1ba6:	4f 5f       	subi	r20, 0xFF	; 255
3553
    1ba8:	5f 4f       	sbci	r21, 0xFF	; 255
3554
    1baa:	61 2f       	mov	r22, r17
3555
    1bac:	8e e0       	ldi	r24, 0x0E	; 14
3556
    1bae:	0e 94 1d 09 	call	0x123a <lcd_print_at>
3557
    1bb2:	1f 5f       	subi	r17, 0xFF	; 255
3558
    1bb4:	08 94       	sec
3559
    1bb6:	e1 1c       	adc	r14, r1
3560
    1bb8:	f1 1c       	adc	r15, r1
3561
    1bba:	18 30       	cpi	r17, 0x08	; 8
3562
    1bbc:	88 f2       	brcs	.-94     	; 0x1b60 <displ_values+0x56>
3563
				}
3564
			}
3565
		}
3566
    1bbe:	80 91 e6 04 	lds	r24, 0x04E6
3567
    1bc2:	88 23       	and	r24, r24
3568
    1bc4:	21 f2       	breq	.-120    	; 0x1b4e <displ_values+0x44>
3569
		while (key == 0x00);
3570
		if (key == 0x01)
3571
    1bc6:	80 91 e6 04 	lds	r24, 0x04E6
3572
    1bca:	81 30       	cpi	r24, 0x01	; 1
3573
    1bcc:	09 f4       	brne	.+2      	; 0x1bd0 <displ_values+0xc6>
3574
			displ_page++;
3575
    1bce:	0f 5f       	subi	r16, 0xFF	; 255
3576
		if (key == 0x02)
3577
    1bd0:	80 91 e6 04 	lds	r24, 0x04E6
3578
    1bd4:	82 30       	cpi	r24, 0x02	; 2
3579
    1bd6:	09 f4       	brne	.+2      	; 0x1bda <displ_values+0xd0>
3580
			displ_page--;
3581
    1bd8:	01 50       	subi	r16, 0x01	; 1
3582
 
3583
		displ_page &= 0x03;
3584
    1bda:	03 70       	andi	r16, 0x03	; 3
3585
	}
3586
    1bdc:	80 91 e6 04 	lds	r24, 0x04E6
3587
    1be0:	88 30       	cpi	r24, 0x08	; 8
3588
    1be2:	09 f0       	breq	.+2      	; 0x1be6 <displ_values+0xdc>
3589
    1be4:	a5 cf       	rjmp	.-182    	; 0x1b30 <displ_values+0x26>
3590
    1be6:	61 96       	adiw	r28, 0x11	; 17
3591
    1be8:	0f b6       	in	r0, 0x3f	; 63
3592
    1bea:	f8 94       	cli
3593
    1bec:	de bf       	out	0x3e, r29	; 62
3594
    1bee:	0f be       	out	0x3f, r0	; 63
3595
    1bf0:	cd bf       	out	0x3d, r28	; 61
3596
    1bf2:	df 91       	pop	r29
3597
    1bf4:	cf 91       	pop	r28
3598
    1bf6:	1f 91       	pop	r17
3599
    1bf8:	0f 91       	pop	r16
3600
    1bfa:	ff 90       	pop	r15
3601
    1bfc:	ef 90       	pop	r14
3602
    1bfe:	df 90       	pop	r13
3603
    1c00:	cf 90       	pop	r12
3604
    1c02:	08 95       	ret
3605
 
3606
00001c04 <read_parameter>:
3607
 
3608
// Parameter lesen, editieren und zurückschreiben
3609
 
3610
uint8_t read_parameter (uint8_t number)				// Number = Parameter-Set#
3611
{
3612
    1c04:	cf 93       	push	r28
3613
	uint8_t timeout;
3614
 
3615
	timeout = 0;
3616
    1c06:	c0 e0       	ldi	r28, 0x00	; 0
3617
 
3618
	p_buffer[0] = '#';									// Parameter anfordern
3619
    1c08:	93 e2       	ldi	r25, 0x23	; 35
3620
    1c0a:	90 93 63 04 	sts	0x0463, r25
3621
	p_buffer[1] = 'a';
3622
    1c0e:	91 e6       	ldi	r25, 0x61	; 97
3623
    1c10:	90 93 64 04 	sts	0x0464, r25
3624
	p_buffer[2] = 'q';
3625
    1c14:	91 e7       	ldi	r25, 0x71	; 113
3626
    1c16:	90 93 65 04 	sts	0x0465, r25
3627
	p_buffer[3] = number;
3628
    1c1a:	80 93 66 04 	sts	0x0466, r24
3629
	p_buffer[4] = 0;
3630
    1c1e:	c0 93 67 04 	sts	0x0467, r28
3631
	p_buffer[5] = 0;
3632
    1c22:	c0 93 68 04 	sts	0x0468, r28
3633
	base64_send(6);
3634
    1c26:	86 e0       	ldi	r24, 0x06	; 6
3635
    1c28:	0e 94 bc 0c 	call	0x1978 <base64_send>
3636
 
3637
	do													// warten, bis die Parameter gesendet werden
3638
	{
3639
		if (get_message() == 1)						// Fehler bei der Übertragung?
3640
    1c2c:	0e 94 95 0c 	call	0x192a <get_message>
3641
    1c30:	81 30       	cpi	r24, 0x01	; 1
3642
    1c32:	09 f4       	brne	.+2      	; 0x1c36 <read_parameter+0x32>
3643
			timeout = 30;								// Timeout sofort auf Endwert setzen
3644
    1c34:	ce e1       	ldi	r28, 0x1E	; 30
3645
		timeout ++;
3646
    1c36:	cf 5f       	subi	r28, 0xFF	; 255
3647
	}
3648
    1c38:	80 91 ea 04 	lds	r24, 0x04EA
3649
    1c3c:	8c 54       	subi	r24, 0x4C	; 76
3650
    1c3e:	85 30       	cpi	r24, 0x05	; 5
3651
    1c40:	10 f0       	brcs	.+4      	; 0x1c46 <read_parameter+0x42>
3652
    1c42:	ce 31       	cpi	r28, 0x1E	; 30
3653
    1c44:	98 f3       	brcs	.-26     	; 0x1c2c <read_parameter+0x28>
3654
	while (((r_buffer[1] < 'L') || (r_buffer[1] > 'P')) && (timeout < 30)); // warten, bis Parameter empfangen wurden oder ein Timeout auftrat
3655
 
3656
	if (timeout >= 30)									// Wenn ein Timeout (=Fehler) auftrat, eine 1 zurückgeben, ansonsten 0
3657
    1c46:	ce 31       	cpi	r28, 0x1E	; 30
3658
    1c48:	18 f0       	brcs	.+6      	; 0x1c50 <read_parameter+0x4c>
3659
		return 1;
3660
    1c4a:	81 e0       	ldi	r24, 0x01	; 1
3661
    1c4c:	90 e0       	ldi	r25, 0x00	; 0
3662
    1c4e:	02 c0       	rjmp	.+4      	; 0x1c54 <read_parameter+0x50>
3663
	else
3664
		return 0;
3665
    1c50:	80 e0       	ldi	r24, 0x00	; 0
3666
    1c52:	90 e0       	ldi	r25, 0x00	; 0
3667
    1c54:	cf 91       	pop	r28
3668
    1c56:	08 95       	ret
3669
 
3670
00001c58 <write_parameter>:
3671
}
3672
 
3673
void write_parameter(uint8_t number)					// Schreibe Parameter-Satz
3674
{
3675
    1c58:	98 2f       	mov	r25, r24
3676
	uint8_t i;
3677
 
3678
	if (number <= 5)
3679
    1c5a:	86 30       	cpi	r24, 0x06	; 6
3680
    1c5c:	b8 f4       	brcc	.+46     	; 0x1c8c <write_parameter+0x34>
3681
    1c5e:	e9 ea       	ldi	r30, 0xA9	; 169
3682
    1c60:	f4 e0       	ldi	r31, 0x04	; 4
3683
    1c62:	26 e4       	ldi	r18, 0x46	; 70
3684
	{
3685
 
3686
		for (i=0;i<71;i++)								// Den gesamten Parameter-Puffer um 3 Bytes nach hinten verschieben
3687
			p_buffer[(70-i)+3] = p_buffer[70-i];
3688
    1c64:	80 81       	ld	r24, Z
3689
    1c66:	83 83       	std	Z+3, r24	; 0x03
3690
    1c68:	21 50       	subi	r18, 0x01	; 1
3691
    1c6a:	31 97       	sbiw	r30, 0x01	; 1
3692
    1c6c:	27 ff       	sbrs	r18, 7
3693
    1c6e:	fa cf       	rjmp	.-12     	; 0x1c64 <write_parameter+0xc>
3694
 
3695
		p_buffer[0] = '#';								// Befehl zum Schreiben der Parameter
3696
    1c70:	83 e2       	ldi	r24, 0x23	; 35
3697
    1c72:	80 93 63 04 	sts	0x0463, r24
3698
		p_buffer[1] = 'a';
3699
    1c76:	81 e6       	ldi	r24, 0x61	; 97
3700
    1c78:	80 93 64 04 	sts	0x0464, r24
3701
		p_buffer[2] = number + 'k';						// Nummer des Parameters
3702
    1c7c:	95 59       	subi	r25, 0x95	; 149
3703
    1c7e:	90 93 65 04 	sts	0x0465, r25
3704
		p_buffer[74] = 0;
3705
    1c82:	10 92 ad 04 	sts	0x04AD, r1
3706
		base64_send(75);								// Parameter in base64 kodieren und senden, 75 Bytes
3707
    1c86:	8b e4       	ldi	r24, 0x4B	; 75
3708
    1c88:	0e 94 bc 0c 	call	0x1978 <base64_send>
3709
    1c8c:	08 95       	ret
3710
 
3711
00001c8e <binary>:
3712
	}
3713
}
3714
 
3715
void binary (uint8_t data, uint8_t *feld)			// Wandelt eine 8-Bit Zahl in eine Binärzahl um (Array mit 8 Elementen)
3716
{														// Wird für die Flags (Loop + Grundkonfiguration) benötigt
3717
    1c8e:	9b 01       	movw	r18, r22
3718
    1c90:	68 2f       	mov	r22, r24
3719
    1c92:	77 27       	eor	r23, r23
3720
    1c94:	51 e0       	ldi	r21, 0x01	; 1
3721
    1c96:	f9 01       	movw	r30, r18
3722
    1c98:	20 e0       	ldi	r18, 0x00	; 0
3723
    1c9a:	30 e0       	ldi	r19, 0x00	; 0
3724
    1c9c:	47 e0       	ldi	r20, 0x07	; 7
3725
	uint8_t i;
3726
 
3727
	i=0;
3728
	for (i=0;i<8;i++)
3729
	{
3730
		if ((1<<i) & data)
3731
    1c9e:	cb 01       	movw	r24, r22
3732
    1ca0:	02 2e       	mov	r0, r18
3733
    1ca2:	02 c0       	rjmp	.+4      	; 0x1ca8 <binary+0x1a>
3734
    1ca4:	95 95       	asr	r25
3735
    1ca6:	87 95       	ror	r24
3736
    1ca8:	0a 94       	dec	r0
3737
    1caa:	e2 f7       	brpl	.-8      	; 0x1ca4 <binary+0x16>
3738
    1cac:	80 ff       	sbrs	r24, 0
3739
    1cae:	02 c0       	rjmp	.+4      	; 0x1cb4 <binary+0x26>
3740
			feld[i] = 1;
3741
    1cb0:	50 83       	st	Z, r21
3742
    1cb2:	01 c0       	rjmp	.+2      	; 0x1cb6 <binary+0x28>
3743
		else
3744
			feld[i] = 0;
3745
    1cb4:	10 82       	st	Z, r1
3746
    1cb6:	41 50       	subi	r20, 0x01	; 1
3747
    1cb8:	2f 5f       	subi	r18, 0xFF	; 255
3748
    1cba:	3f 4f       	sbci	r19, 0xFF	; 255
3749
    1cbc:	31 96       	adiw	r30, 0x01	; 1
3750
    1cbe:	47 ff       	sbrs	r20, 7
3751
    1cc0:	ee cf       	rjmp	.-36     	; 0x1c9e <binary+0x10>
3752
    1cc2:	08 95       	ret
3753
 
3754
00001cc4 <bindec>:
3755
	}
3756
}
3757
 
3758
uint8_t bindec (uint8_t *feld)						// wandelt eine Binärzahl (im Array) in eine 8-Bit Zahl
3759
{														// Wird für die Flags (Loop + Grundkonfiguration) benötigt
3760
	uint8_t i;
3761
	uint8_t result;
3762
 
3763
	result = 0;
3764
    1cc4:	50 e0       	ldi	r21, 0x00	; 0
3765
    1cc6:	61 e0       	ldi	r22, 0x01	; 1
3766
    1cc8:	70 e0       	ldi	r23, 0x00	; 0
3767
    1cca:	fc 01       	movw	r30, r24
3768
    1ccc:	20 e0       	ldi	r18, 0x00	; 0
3769
    1cce:	30 e0       	ldi	r19, 0x00	; 0
3770
    1cd0:	47 e0       	ldi	r20, 0x07	; 7
3771
	for (i=0;i<8;i++)
3772
	{
3773
		if (feld[i] == 1)
3774
    1cd2:	81 91       	ld	r24, Z+
3775
    1cd4:	81 30       	cpi	r24, 0x01	; 1
3776
    1cd6:	41 f4       	brne	.+16     	; 0x1ce8 <bindec+0x24>
3777
			result += 1<<i;
3778
    1cd8:	cb 01       	movw	r24, r22
3779
    1cda:	02 2e       	mov	r0, r18
3780
    1cdc:	02 c0       	rjmp	.+4      	; 0x1ce2 <bindec+0x1e>
3781
    1cde:	88 0f       	add	r24, r24
3782
    1ce0:	99 1f       	adc	r25, r25
3783
    1ce2:	0a 94       	dec	r0
3784
    1ce4:	e2 f7       	brpl	.-8      	; 0x1cde <bindec+0x1a>
3785
    1ce6:	58 0f       	add	r21, r24
3786
    1ce8:	41 50       	subi	r20, 0x01	; 1
3787
    1cea:	2f 5f       	subi	r18, 0xFF	; 255
3788
    1cec:	3f 4f       	sbci	r19, 0xFF	; 255
3789
    1cee:	47 ff       	sbrs	r20, 7
3790
    1cf0:	f0 cf       	rjmp	.-32     	; 0x1cd2 <bindec+0xe>
3791
	}
3792
	return result;
3793
}
3794
    1cf2:	85 2f       	mov	r24, r21
3795
    1cf4:	99 27       	eor	r25, r25
3796
    1cf6:	08 95       	ret
3797
 
3798
00001cf8 <decimal>:
3799
 
3800
 
3801
 
3802
 
3803
void decimal (uint8_t data, uint8_t *text)			// wandelt Wert in rechtsbündigen Text um
3804
{														// (schneller/kleiner als printf())
3805
    1cf8:	28 2f       	mov	r18, r24
3806
    1cfa:	fb 01       	movw	r30, r22
3807
	text[0] = data/100;
3808
    1cfc:	34 e6       	ldi	r19, 0x64	; 100
3809
    1cfe:	63 2f       	mov	r22, r19
3810
    1d00:	0e 94 16 13 	call	0x262c <__udivmodqi4>
3811
    1d04:	58 2f       	mov	r21, r24
3812
	data -= (text[0] * 100);
3813
    1d06:	83 9f       	mul	r24, r19
3814
    1d08:	c0 01       	movw	r24, r0
3815
    1d0a:	11 24       	eor	r1, r1
3816
    1d0c:	28 1b       	sub	r18, r24
3817
	text[1] = data/10;
3818
    1d0e:	3a e0       	ldi	r19, 0x0A	; 10
3819
    1d10:	82 2f       	mov	r24, r18
3820
    1d12:	63 2f       	mov	r22, r19
3821
    1d14:	0e 94 16 13 	call	0x262c <__udivmodqi4>
3822
    1d18:	48 2f       	mov	r20, r24
3823
	data -= (text[1] *10);
3824
    1d1a:	83 9f       	mul	r24, r19
3825
    1d1c:	c0 01       	movw	r24, r0
3826
    1d1e:	11 24       	eor	r1, r1
3827
    1d20:	28 1b       	sub	r18, r24
3828
	text[2] = data + 0x30;
3829
    1d22:	20 5d       	subi	r18, 0xD0	; 208
3830
    1d24:	22 83       	std	Z+2, r18	; 0x02
3831
	text[0] += 0x30;
3832
    1d26:	85 2f       	mov	r24, r21
3833
    1d28:	80 5d       	subi	r24, 0xD0	; 208
3834
    1d2a:	80 83       	st	Z, r24
3835
	text[1] += 0x30;
3836
    1d2c:	40 5d       	subi	r20, 0xD0	; 208
3837
    1d2e:	41 83       	std	Z+1, r20	; 0x01
3838
 
3839
	if (text[0] == 0x30)
3840
    1d30:	80 33       	cpi	r24, 0x30	; 48
3841
    1d32:	29 f4       	brne	.+10     	; 0x1d3e <decimal+0x46>
3842
	{
3843
		text[0] = 0x20;
3844
    1d34:	80 e2       	ldi	r24, 0x20	; 32
3845
    1d36:	80 83       	st	Z, r24
3846
		if (text[1] == 0x30)
3847
    1d38:	40 33       	cpi	r20, 0x30	; 48
3848
    1d3a:	09 f4       	brne	.+2      	; 0x1d3e <decimal+0x46>
3849
			text[1] = 0x20;
3850
    1d3c:	81 83       	std	Z+1, r24	; 0x01
3851
	}
3852
	text[3] = 0x00;
3853
    1d3e:	13 82       	std	Z+3, r1	; 0x03
3854
    1d40:	08 95       	ret
3855
 
3856
00001d42 <show_parameter>:
3857
}
3858
 
3859
uint8_t show_parameter (uint8_t number)							// Zeigt eine Parameter-Seite an und gibt die ausgewählte Zeile zurück
3860
{
3861
    1d42:	9f 92       	push	r9
3862
    1d44:	af 92       	push	r10
3863
    1d46:	bf 92       	push	r11
3864
    1d48:	cf 92       	push	r12
3865
    1d4a:	df 92       	push	r13
3866
    1d4c:	ef 92       	push	r14
3867
    1d4e:	ff 92       	push	r15
3868
    1d50:	0f 93       	push	r16
3869
    1d52:	1f 93       	push	r17
3870
    1d54:	cf 93       	push	r28
3871
    1d56:	df 93       	push	r29
3872
    1d58:	cd b7       	in	r28, 0x3d	; 61
3873
    1d5a:	de b7       	in	r29, 0x3e	; 62
3874
    1d5c:	a1 97       	sbiw	r28, 0x21	; 33
3875
    1d5e:	0f b6       	in	r0, 0x3f	; 63
3876
    1d60:	f8 94       	cli
3877
    1d62:	de bf       	out	0x3e, r29	; 62
3878
    1d64:	0f be       	out	0x3f, r0	; 63
3879
    1d66:	cd bf       	out	0x3d, r28	; 61
3880
    1d68:	08 2f       	mov	r16, r24
3881
	uint8_t i;
3882
	uint8_t line;
3883
	uint8_t text[25];
3884
	uint8_t bin[8];
3885
 
3886
	line = 0;
3887
    1d6a:	99 24       	eor	r9, r9
3888
 
3889
	if (number > 1)
3890
    1d6c:	82 30       	cpi	r24, 0x02	; 2
3891
    1d6e:	08 f4       	brcc	.+2      	; 0x1d72 <show_parameter+0x30>
3892
    1d70:	3e c0       	rjmp	.+124    	; 0x1dee <show_parameter+0xac>
3893
	{
3894
		for (i = 0; i<66; i++)
3895
    1d72:	19 2d       	mov	r17, r9
3896
    1d74:	4b e5       	ldi	r20, 0x5B	; 91
3897
    1d76:	a4 2e       	mov	r10, r20
3898
    1d78:	46 e0       	ldi	r20, 0x06	; 6
3899
    1d7a:	b4 2e       	mov	r11, r20
3900
    1d7c:	33 e6       	ldi	r19, 0x63	; 99
3901
    1d7e:	c3 2e       	mov	r12, r19
3902
    1d80:	34 e0       	ldi	r19, 0x04	; 4
3903
    1d82:	d3 2e       	mov	r13, r19
3904
    1d84:	2d e7       	ldi	r18, 0x7D	; 125
3905
    1d86:	e2 2e       	mov	r14, r18
3906
    1d88:	2a e0       	ldi	r18, 0x0A	; 10
3907
    1d8a:	f2 2e       	mov	r15, r18
3908
		{
3909
			if (pgm_read_byte(p_limits+i*3+2) == number)
3910
    1d8c:	f7 01       	movw	r30, r14
3911
    1d8e:	84 91       	lpm	r24, Z
3912
    1d90:	80 17       	cp	r24, r16
3913
    1d92:	f1 f4       	brne	.+60     	; 0x1dd0 <show_parameter+0x8e>
3914
			{
3915
				array[line] = i;
3916
    1d94:	e9 2d       	mov	r30, r9
3917
    1d96:	ff 27       	eor	r31, r31
3918
    1d98:	e1 58       	subi	r30, 0x81	; 129
3919
    1d9a:	fa 4f       	sbci	r31, 0xFA	; 250
3920
    1d9c:	10 83       	st	Z, r17
3921
				decimal(p_buffer[i],text);
3922
    1d9e:	be 01       	movw	r22, r28
3923
    1da0:	6f 5f       	subi	r22, 0xFF	; 255
3924
    1da2:	7f 4f       	sbci	r23, 0xFF	; 255
3925
    1da4:	f6 01       	movw	r30, r12
3926
    1da6:	80 81       	ld	r24, Z
3927
    1da8:	0e 94 7c 0e 	call	0x1cf8 <decimal>
3928
				lcd_print_at(0,line,text,0);
3929
    1dac:	20 e0       	ldi	r18, 0x00	; 0
3930
    1dae:	ae 01       	movw	r20, r28
3931
    1db0:	4f 5f       	subi	r20, 0xFF	; 255
3932
    1db2:	5f 4f       	sbci	r21, 0xFF	; 255
3933
    1db4:	69 2d       	mov	r22, r9
3934
    1db6:	82 2f       	mov	r24, r18
3935
    1db8:	0e 94 1d 09 	call	0x123a <lcd_print_at>
3936
				lcd_print_atp(5,line,parameter[i],0);
3937
    1dbc:	20 e0       	ldi	r18, 0x00	; 0
3938
    1dbe:	a5 01       	movw	r20, r10
3939
    1dc0:	69 2d       	mov	r22, r9
3940
    1dc2:	85 e0       	ldi	r24, 0x05	; 5
3941
    1dc4:	0e 94 e1 08 	call	0x11c2 <lcd_print_atp>
3942
				if (line <= 7)
3943
    1dc8:	f7 e0       	ldi	r31, 0x07	; 7
3944
    1dca:	f9 15       	cp	r31, r9
3945
    1dcc:	08 f0       	brcs	.+2      	; 0x1dd0 <show_parameter+0x8e>
3946
					line++;
3947
    1dce:	93 94       	inc	r9
3948
    1dd0:	1f 5f       	subi	r17, 0xFF	; 255
3949
    1dd2:	83 e0       	ldi	r24, 0x03	; 3
3950
    1dd4:	90 e0       	ldi	r25, 0x00	; 0
3951
    1dd6:	e8 0e       	add	r14, r24
3952
    1dd8:	f9 1e       	adc	r15, r25
3953
    1dda:	08 94       	sec
3954
    1ddc:	c1 1c       	adc	r12, r1
3955
    1dde:	d1 1c       	adc	r13, r1
3956
    1de0:	e0 e1       	ldi	r30, 0x10	; 16
3957
    1de2:	f0 e0       	ldi	r31, 0x00	; 0
3958
    1de4:	ae 0e       	add	r10, r30
3959
    1de6:	bf 1e       	adc	r11, r31
3960
    1de8:	12 34       	cpi	r17, 0x42	; 66
3961
    1dea:	80 f2       	brcs	.-96     	; 0x1d8c <show_parameter+0x4a>
3962
    1dec:	5f c0       	rjmp	.+190    	; 0x1eac <show_parameter+0x16a>
3963
			}
3964
		}
3965
	}
3966
	else
3967
	{																// Sonderfälle: Binäre Eingabe
3968
		if (number == 1)
3969
    1dee:	81 30       	cpi	r24, 0x01	; 1
3970
    1df0:	71 f5       	brne	.+92     	; 0x1e4e <show_parameter+0x10c>
3971
		{
3972
			binary(p_buffer[52],bin);								// Loop-Config
3973
    1df2:	be 01       	movw	r22, r28
3974
    1df4:	66 5e       	subi	r22, 0xE6	; 230
3975
    1df6:	7f 4f       	sbci	r23, 0xFF	; 255
3976
    1df8:	80 91 97 04 	lds	r24, 0x0497
3977
    1dfc:	0e 94 47 0e 	call	0x1c8e <binary>
3978
			text[1] = 0x00;
3979
    1e00:	9a 82       	std	Y+2, r9	; 0x02
3980
			for (i=0;i<4;i++)
3981
    1e02:	19 2d       	mov	r17, r9
3982
    1e04:	9b eb       	ldi	r25, 0xBB	; 187
3983
    1e06:	c9 2e       	mov	r12, r25
3984
    1e08:	99 e0       	ldi	r25, 0x09	; 9
3985
    1e0a:	d9 2e       	mov	r13, r25
3986
    1e0c:	ee 24       	eor	r14, r14
3987
    1e0e:	ff 24       	eor	r15, r15
3988
			{
3989
				text[0] = bin[i] + 0x30;
3990
    1e10:	ce 01       	movw	r24, r28
3991
    1e12:	01 96       	adiw	r24, 0x01	; 1
3992
    1e14:	f7 01       	movw	r30, r14
3993
    1e16:	e8 0f       	add	r30, r24
3994
    1e18:	f9 1f       	adc	r31, r25
3995
    1e1a:	21 8d       	ldd	r18, Z+25	; 0x19
3996
    1e1c:	20 5d       	subi	r18, 0xD0	; 208
3997
    1e1e:	29 83       	std	Y+1, r18	; 0x01
3998
				lcd_print_at(0,i,text,0);
3999
    1e20:	20 e0       	ldi	r18, 0x00	; 0
4000
    1e22:	ac 01       	movw	r20, r24
4001
    1e24:	61 2f       	mov	r22, r17
4002
    1e26:	82 2f       	mov	r24, r18
4003
    1e28:	0e 94 1d 09 	call	0x123a <lcd_print_at>
4004
				lcd_print_atp(5,i,bin_parameter[i],0);
4005
    1e2c:	20 e0       	ldi	r18, 0x00	; 0
4006
    1e2e:	a6 01       	movw	r20, r12
4007
    1e30:	61 2f       	mov	r22, r17
4008
    1e32:	85 e0       	ldi	r24, 0x05	; 5
4009
    1e34:	0e 94 e1 08 	call	0x11c2 <lcd_print_atp>
4010
    1e38:	1f 5f       	subi	r17, 0xFF	; 255
4011
    1e3a:	08 94       	sec
4012
    1e3c:	e1 1c       	adc	r14, r1
4013
    1e3e:	f1 1c       	adc	r15, r1
4014
    1e40:	80 e1       	ldi	r24, 0x10	; 16
4015
    1e42:	90 e0       	ldi	r25, 0x00	; 0
4016
    1e44:	c8 0e       	add	r12, r24
4017
    1e46:	d9 1e       	adc	r13, r25
4018
    1e48:	14 30       	cpi	r17, 0x04	; 4
4019
    1e4a:	10 f3       	brcs	.-60     	; 0x1e10 <show_parameter+0xce>
4020
    1e4c:	2f c0       	rjmp	.+94     	; 0x1eac <show_parameter+0x16a>
4021
			}
4022
 
4023
		}
4024
		if (number == 0)
4025
    1e4e:	88 23       	and	r24, r24
4026
    1e50:	69 f5       	brne	.+90     	; 0x1eac <show_parameter+0x16a>
4027
		{
4028
			binary(p_buffer[8],bin);								// Config
4029
    1e52:	be 01       	movw	r22, r28
4030
    1e54:	66 5e       	subi	r22, 0xE6	; 230
4031
    1e56:	7f 4f       	sbci	r23, 0xFF	; 255
4032
    1e58:	80 91 6b 04 	lds	r24, 0x046B
4033
    1e5c:	0e 94 47 0e 	call	0x1c8e <binary>
4034
			text[1] = 0x00;
4035
    1e60:	9a 82       	std	Y+2, r9	; 0x02
4036
			for (i=0;i<8;i++)
4037
    1e62:	19 2d       	mov	r17, r9
4038
    1e64:	8b ef       	ldi	r24, 0xFB	; 251
4039
    1e66:	c8 2e       	mov	r12, r24
4040
    1e68:	89 e0       	ldi	r24, 0x09	; 9
4041
    1e6a:	d8 2e       	mov	r13, r24
4042
    1e6c:	ee 24       	eor	r14, r14
4043
    1e6e:	ff 24       	eor	r15, r15
4044
			{
4045
				text[0] = bin[i] + 0x30;
4046
    1e70:	ce 01       	movw	r24, r28
4047
    1e72:	01 96       	adiw	r24, 0x01	; 1
4048
    1e74:	f7 01       	movw	r30, r14
4049
    1e76:	e8 0f       	add	r30, r24
4050
    1e78:	f9 1f       	adc	r31, r25
4051
    1e7a:	21 8d       	ldd	r18, Z+25	; 0x19
4052
    1e7c:	20 5d       	subi	r18, 0xD0	; 208
4053
    1e7e:	29 83       	std	Y+1, r18	; 0x01
4054
				lcd_print_at(0,i,text,0);
4055
    1e80:	20 e0       	ldi	r18, 0x00	; 0
4056
    1e82:	ac 01       	movw	r20, r24
4057
    1e84:	61 2f       	mov	r22, r17
4058
    1e86:	82 2f       	mov	r24, r18
4059
    1e88:	0e 94 1d 09 	call	0x123a <lcd_print_at>
4060
				lcd_print_atp(5,i,bin_parameter[i+4],0);
4061
    1e8c:	20 e0       	ldi	r18, 0x00	; 0
4062
    1e8e:	a6 01       	movw	r20, r12
4063
    1e90:	61 2f       	mov	r22, r17
4064
    1e92:	85 e0       	ldi	r24, 0x05	; 5
4065
    1e94:	0e 94 e1 08 	call	0x11c2 <lcd_print_atp>
4066
    1e98:	1f 5f       	subi	r17, 0xFF	; 255
4067
    1e9a:	08 94       	sec
4068
    1e9c:	e1 1c       	adc	r14, r1
4069
    1e9e:	f1 1c       	adc	r15, r1
4070
    1ea0:	e0 e1       	ldi	r30, 0x10	; 16
4071
    1ea2:	f0 e0       	ldi	r31, 0x00	; 0
4072
    1ea4:	ce 0e       	add	r12, r30
4073
    1ea6:	df 1e       	adc	r13, r31
4074
    1ea8:	18 30       	cpi	r17, 0x08	; 8
4075
    1eaa:	10 f3       	brcs	.-60     	; 0x1e70 <show_parameter+0x12e>
4076
			}
4077
		}
4078
 
4079
 
4080
	}
4081
	return line;
4082
}
4083
    1eac:	89 2d       	mov	r24, r9
4084
    1eae:	99 27       	eor	r25, r25
4085
    1eb0:	a1 96       	adiw	r28, 0x21	; 33
4086
    1eb2:	0f b6       	in	r0, 0x3f	; 63
4087
    1eb4:	f8 94       	cli
4088
    1eb6:	de bf       	out	0x3e, r29	; 62
4089
    1eb8:	0f be       	out	0x3f, r0	; 63
4090
    1eba:	cd bf       	out	0x3d, r28	; 61
4091
    1ebc:	df 91       	pop	r29
4092
    1ebe:	cf 91       	pop	r28
4093
    1ec0:	1f 91       	pop	r17
4094
    1ec2:	0f 91       	pop	r16
4095
    1ec4:	ff 90       	pop	r15
4096
    1ec6:	ef 90       	pop	r14
4097
    1ec8:	df 90       	pop	r13
4098
    1eca:	cf 90       	pop	r12
4099
    1ecc:	bf 90       	pop	r11
4100
    1ece:	af 90       	pop	r10
4101
    1ed0:	9f 90       	pop	r9
4102
    1ed2:	08 95       	ret
4103
 
4104
00001ed4 <edit_parameter2>:
4105
 
4106
void edit_parameter2 (uint8_t page, uint8_t lines)				// Ändern der Parameter einer Seite
4107
{
4108
    1ed4:	8f 92       	push	r8
4109
    1ed6:	9f 92       	push	r9
4110
    1ed8:	af 92       	push	r10
4111
    1eda:	bf 92       	push	r11
4112
    1edc:	df 92       	push	r13
4113
    1ede:	ef 92       	push	r14
4114
    1ee0:	ff 92       	push	r15
4115
    1ee2:	0f 93       	push	r16
4116
    1ee4:	1f 93       	push	r17
4117
    1ee6:	cf 93       	push	r28
4118
    1ee8:	df 93       	push	r29
4119
    1eea:	cd b7       	in	r28, 0x3d	; 61
4120
    1eec:	de b7       	in	r29, 0x3e	; 62
4121
    1eee:	62 97       	sbiw	r28, 0x12	; 18
4122
    1ef0:	0f b6       	in	r0, 0x3f	; 63
4123
    1ef2:	f8 94       	cli
4124
    1ef4:	de bf       	out	0x3e, r29	; 62
4125
    1ef6:	0f be       	out	0x3f, r0	; 63
4126
    1ef8:	cd bf       	out	0x3d, r28	; 61
4127
    1efa:	d8 2e       	mov	r13, r24
4128
	uint8_t line;
4129
	uint8_t par;
4130
	uint8_t min;
4131
	uint8_t max;
4132
	uint8_t text[10];
4133
	uint8_t bin[8];
4134
 
4135
	if (page > 1)													// "normale" Parameter-Seiten
4136
    1efc:	81 e0       	ldi	r24, 0x01	; 1
4137
    1efe:	8d 15       	cp	r24, r13
4138
    1f00:	08 f0       	brcs	.+2      	; 0x1f04 <edit_parameter2+0x30>
4139
    1f02:	55 c0       	rjmp	.+170    	; 0x1fae <edit_parameter2+0xda>
4140
	{
4141
		line = menu_choose(0,lines-1,4);
4142
    1f04:	61 50       	subi	r22, 0x01	; 1
4143
    1f06:	44 e0       	ldi	r20, 0x04	; 4
4144
    1f08:	80 e0       	ldi	r24, 0x00	; 0
4145
    1f0a:	0e 94 86 11 	call	0x230c <menu_choose>
4146
    1f0e:	08 2f       	mov	r16, r24
4147
		if (line != 255)										// Wenn line == 255, wurde Escape gedrückt
4148
    1f10:	8f 3f       	cpi	r24, 0xFF	; 255
4149
    1f12:	09 f4       	brne	.+2      	; 0x1f16 <edit_parameter2+0x42>
4150
    1f14:	4c c0       	rjmp	.+152    	; 0x1fae <edit_parameter2+0xda>
4151
		{
4152
			par = p_buffer[array[line]];
4153
    1f16:	e8 2e       	mov	r14, r24
4154
    1f18:	ff 24       	eor	r15, r15
4155
    1f1a:	f7 01       	movw	r30, r14
4156
    1f1c:	e1 58       	subi	r30, 0x81	; 129
4157
    1f1e:	fa 4f       	sbci	r31, 0xFA	; 250
4158
    1f20:	80 81       	ld	r24, Z
4159
    1f22:	e8 2f       	mov	r30, r24
4160
    1f24:	ff 27       	eor	r31, r31
4161
    1f26:	ed 59       	subi	r30, 0x9D	; 157
4162
    1f28:	fb 4f       	sbci	r31, 0xFB	; 251
4163
    1f2a:	10 81       	ld	r17, Z
4164
			min = pgm_read_byte(p_limits + par * 3);
4165
			max = pgm_read_byte(p_limits + par * 3 + 1);
4166
 
4167
			lcd_print_atp(4,line,PSTR("-"),0);
4168
    1f2c:	20 e0       	ldi	r18, 0x00	; 0
4169
    1f2e:	49 e0       	ldi	r20, 0x09	; 9
4170
    1f30:	5c e0       	ldi	r21, 0x0C	; 12
4171
    1f32:	60 2f       	mov	r22, r16
4172
    1f34:	84 e0       	ldi	r24, 0x04	; 4
4173
    1f36:	0e 94 e1 08 	call	0x11c2 <lcd_print_atp>
4174
 
4175
			while (key != key_nokey);
4176
    1f3a:	80 91 e6 04 	lds	r24, 0x04E6
4177
    1f3e:	88 23       	and	r24, r24
4178
    1f40:	e1 f7       	brne	.-8      	; 0x1f3a <edit_parameter2+0x66>
4179
 
4180
			do
4181
			{
4182
				if (key == key_minus)
4183
    1f42:	80 91 e6 04 	lds	r24, 0x04E6
4184
    1f46:	81 30       	cpi	r24, 0x01	; 1
4185
    1f48:	09 f4       	brne	.+2      	; 0x1f4c <edit_parameter2+0x78>
4186
				{
4187
					//if (par > min)							// Überprüfung der Parameter auf Bereichsüberschreitung derzeit deaktiviert
4188
						par --;
4189
    1f4a:	11 50       	subi	r17, 0x01	; 1
4190
				}
4191
				if (key == key_plus)
4192
    1f4c:	80 91 e6 04 	lds	r24, 0x04E6
4193
    1f50:	82 30       	cpi	r24, 0x02	; 2
4194
    1f52:	09 f4       	brne	.+2      	; 0x1f56 <edit_parameter2+0x82>
4195
				{
4196
					//if (par < max)
4197
						par ++;
4198
    1f54:	1f 5f       	subi	r17, 0xFF	; 255
4199
				}
4200
 
4201
				decimal(par,text);
4202
    1f56:	be 01       	movw	r22, r28
4203
    1f58:	6f 5f       	subi	r22, 0xFF	; 255
4204
    1f5a:	7f 4f       	sbci	r23, 0xFF	; 255
4205
    1f5c:	81 2f       	mov	r24, r17
4206
    1f5e:	0e 94 7c 0e 	call	0x1cf8 <decimal>
4207
				lcd_print_at(0,line,text,0);
4208
    1f62:	20 e0       	ldi	r18, 0x00	; 0
4209
    1f64:	ae 01       	movw	r20, r28
4210
    1f66:	4f 5f       	subi	r20, 0xFF	; 255
4211
    1f68:	5f 4f       	sbci	r21, 0xFF	; 255
4212
    1f6a:	60 2f       	mov	r22, r16
4213
    1f6c:	82 2f       	mov	r24, r18
4214
    1f6e:	0e 94 1d 09 	call	0x123a <lcd_print_at>
4215
 
4216
				timer = 20;
4217
    1f72:	84 e1       	ldi	r24, 0x14	; 20
4218
    1f74:	80 93 61 00 	sts	0x0061, r24
4219
				while (timer > 0);
4220
    1f78:	80 91 61 00 	lds	r24, 0x0061
4221
    1f7c:	88 23       	and	r24, r24
4222
    1f7e:	e1 f7       	brne	.-8      	; 0x1f78 <edit_parameter2+0xa4>
4223
			}
4224
    1f80:	80 91 e6 04 	lds	r24, 0x04E6
4225
    1f84:	84 30       	cpi	r24, 0x04	; 4
4226
    1f86:	21 f0       	breq	.+8      	; 0x1f90 <edit_parameter2+0xbc>
4227
    1f88:	80 91 e6 04 	lds	r24, 0x04E6
4228
    1f8c:	88 30       	cpi	r24, 0x08	; 8
4229
    1f8e:	c9 f6       	brne	.-78     	; 0x1f42 <edit_parameter2+0x6e>
4230
			while ((key != 0x04) && (key != 0x08));
4231
 
4232
			if (key == 0x08)
4233
    1f90:	80 91 e6 04 	lds	r24, 0x04E6
4234
    1f94:	88 30       	cpi	r24, 0x08	; 8
4235
    1f96:	59 f4       	brne	.+22     	; 0x1fae <edit_parameter2+0xda>
4236
				p_buffer[array[line]] = par;
4237
    1f98:	ef e7       	ldi	r30, 0x7F	; 127
4238
    1f9a:	f5 e0       	ldi	r31, 0x05	; 5
4239
    1f9c:	ee 0e       	add	r14, r30
4240
    1f9e:	ff 1e       	adc	r15, r31
4241
    1fa0:	f7 01       	movw	r30, r14
4242
    1fa2:	80 81       	ld	r24, Z
4243
    1fa4:	e8 2f       	mov	r30, r24
4244
    1fa6:	ff 27       	eor	r31, r31
4245
    1fa8:	ed 59       	subi	r30, 0x9D	; 157
4246
    1faa:	fb 4f       	sbci	r31, 0xFB	; 251
4247
    1fac:	10 83       	st	Z, r17
4248
		}
4249
	}
4250
 
4251
	if (page == 1)											// Spezialfall:  Loop-Config (einzelne Bits setzen / löschen)
4252
    1fae:	f1 e0       	ldi	r31, 0x01	; 1
4253
    1fb0:	df 16       	cp	r13, r31
4254
    1fb2:	09 f0       	breq	.+2      	; 0x1fb6 <edit_parameter2+0xe2>
4255
    1fb4:	6c c0       	rjmp	.+216    	; 0x208e <edit_parameter2+0x1ba>
4256
	{
4257
		binary(p_buffer[52],bin);
4258
    1fb6:	6b e0       	ldi	r22, 0x0B	; 11
4259
    1fb8:	86 2e       	mov	r8, r22
4260
    1fba:	91 2c       	mov	r9, r1
4261
    1fbc:	8c 0e       	add	r8, r28
4262
    1fbe:	9d 1e       	adc	r9, r29
4263
    1fc0:	b4 01       	movw	r22, r8
4264
    1fc2:	80 91 97 04 	lds	r24, 0x0497
4265
    1fc6:	0e 94 47 0e 	call	0x1c8e <binary>
4266
		text[1] = 0x00;
4267
    1fca:	1a 82       	std	Y+2, r1	; 0x02
4268
 
4269
		line = menu_choose(0,3,4);
4270
    1fcc:	44 e0       	ldi	r20, 0x04	; 4
4271
    1fce:	63 e0       	ldi	r22, 0x03	; 3
4272
    1fd0:	8a 81       	ldd	r24, Y+2	; 0x02
4273
    1fd2:	0e 94 86 11 	call	0x230c <menu_choose>
4274
    1fd6:	08 2f       	mov	r16, r24
4275
		if (line != 255)									// Wenn line == 255, wurde Escape gedrückt
4276
    1fd8:	8f 3f       	cpi	r24, 0xFF	; 255
4277
    1fda:	09 f4       	brne	.+2      	; 0x1fde <edit_parameter2+0x10a>
4278
    1fdc:	c6 c0       	rjmp	.+396    	; 0x216a <edit_parameter2+0x296>
4279
		{
4280
			par = bin[line];
4281
    1fde:	e8 2e       	mov	r14, r24
4282
    1fe0:	ff 24       	eor	r15, r15
4283
    1fe2:	5e 01       	movw	r10, r28
4284
    1fe4:	08 94       	sec
4285
    1fe6:	a1 1c       	adc	r10, r1
4286
    1fe8:	b1 1c       	adc	r11, r1
4287
    1fea:	f7 01       	movw	r30, r14
4288
    1fec:	ea 0d       	add	r30, r10
4289
    1fee:	fb 1d       	adc	r31, r11
4290
    1ff0:	12 85       	ldd	r17, Z+10	; 0x0a
4291
 
4292
			lcd_print_atp(4,line,PSTR("-"),0);
4293
    1ff2:	20 e0       	ldi	r18, 0x00	; 0
4294
    1ff4:	4b e0       	ldi	r20, 0x0B	; 11
4295
    1ff6:	5c e0       	ldi	r21, 0x0C	; 12
4296
    1ff8:	68 2f       	mov	r22, r24
4297
    1ffa:	84 e0       	ldi	r24, 0x04	; 4
4298
    1ffc:	0e 94 e1 08 	call	0x11c2 <lcd_print_atp>
4299
 
4300
			do
4301
			{
4302
 
4303
				if (key == key_minus)
4304
    2000:	80 91 e6 04 	lds	r24, 0x04E6
4305
    2004:	81 30       	cpi	r24, 0x01	; 1
4306
    2006:	09 f4       	brne	.+2      	; 0x200a <edit_parameter2+0x136>
4307
				{
4308
					par = 0x00;
4309
    2008:	10 e0       	ldi	r17, 0x00	; 0
4310
				}
4311
				if (key == key_plus)
4312
    200a:	80 91 e6 04 	lds	r24, 0x04E6
4313
    200e:	82 30       	cpi	r24, 0x02	; 2
4314
    2010:	09 f4       	brne	.+2      	; 0x2014 <edit_parameter2+0x140>
4315
				{
4316
					par = 0x01;
4317
    2012:	11 e0       	ldi	r17, 0x01	; 1
4318
				}
4319
 
4320
				text[0] = par+0x30;
4321
    2014:	10 5d       	subi	r17, 0xD0	; 208
4322
    2016:	19 83       	std	Y+1, r17	; 0x01
4323
    2018:	10 53       	subi	r17, 0x30	; 48
4324
				lcd_print_at(0,line,text,0);
4325
    201a:	20 e0       	ldi	r18, 0x00	; 0
4326
    201c:	ae 01       	movw	r20, r28
4327
    201e:	4f 5f       	subi	r20, 0xFF	; 255
4328
    2020:	5f 4f       	sbci	r21, 0xFF	; 255
4329
    2022:	60 2f       	mov	r22, r16
4330
    2024:	82 2f       	mov	r24, r18
4331
    2026:	0e 94 1d 09 	call	0x123a <lcd_print_at>
4332
				timer = 20;
4333
    202a:	84 e1       	ldi	r24, 0x14	; 20
4334
    202c:	80 93 61 00 	sts	0x0061, r24
4335
				while (timer > 0);
4336
    2030:	d0 90 61 00 	lds	r13, 0x0061
4337
    2034:	dd 20       	and	r13, r13
4338
    2036:	e1 f7       	brne	.-8      	; 0x2030 <edit_parameter2+0x15c>
4339
 
4340
 
4341
			}
4342
    2038:	80 91 e6 04 	lds	r24, 0x04E6
4343
    203c:	88 30       	cpi	r24, 0x08	; 8
4344
    203e:	21 f0       	breq	.+8      	; 0x2048 <edit_parameter2+0x174>
4345
    2040:	80 91 e6 04 	lds	r24, 0x04E6
4346
    2044:	84 30       	cpi	r24, 0x04	; 4
4347
    2046:	e1 f6       	brne	.-72     	; 0x2000 <edit_parameter2+0x12c>
4348
			while ((key != key_enter) && (key != key_esc));
4349
 
4350
			if (key == key_enter)
4351
    2048:	80 91 e6 04 	lds	r24, 0x04E6
4352
    204c:	88 30       	cpi	r24, 0x08	; 8
4353
    204e:	49 f4       	brne	.+18     	; 0x2062 <edit_parameter2+0x18e>
4354
			{
4355
				bin[line] = par;
4356
    2050:	ea 0c       	add	r14, r10
4357
    2052:	fb 1c       	adc	r15, r11
4358
    2054:	f7 01       	movw	r30, r14
4359
    2056:	12 87       	std	Z+10, r17	; 0x0a
4360
				p_buffer[52] = bindec(bin);
4361
    2058:	c4 01       	movw	r24, r8
4362
    205a:	0e 94 62 0e 	call	0x1cc4 <bindec>
4363
    205e:	80 93 97 04 	sts	0x0497, r24
4364
			}
4365
 
4366
			lcd_cls();
4367
    2062:	0e 94 36 07 	call	0xe6c <lcd_cls>
4368
			decimal(p_buffer[52],text);
4369
    2066:	be 01       	movw	r22, r28
4370
    2068:	6f 5f       	subi	r22, 0xFF	; 255
4371
    206a:	7f 4f       	sbci	r23, 0xFF	; 255
4372
    206c:	80 91 97 04 	lds	r24, 0x0497
4373
    2070:	0e 94 7c 0e 	call	0x1cf8 <decimal>
4374
			lcd_print(text,0);
4375
    2074:	6d 2d       	mov	r22, r13
4376
    2076:	ce 01       	movw	r24, r28
4377
    2078:	01 96       	adiw	r24, 0x01	; 1
4378
    207a:	0e 94 ea 08 	call	0x11d4 <lcd_print>
4379
			timer = 200;
4380
    207e:	88 ec       	ldi	r24, 0xC8	; 200
4381
    2080:	80 93 61 00 	sts	0x0061, r24
4382
			while(timer > 0);
4383
    2084:	80 91 61 00 	lds	r24, 0x0061
4384
    2088:	88 23       	and	r24, r24
4385
    208a:	e1 f7       	brne	.-8      	; 0x2084 <edit_parameter2+0x1b0>
4386
    208c:	6e c0       	rjmp	.+220    	; 0x216a <edit_parameter2+0x296>
4387
		}
4388
	}
4389
	if (page == 0)													// Spezialfall: Allgemeine Konfiguration (einzelne Bits setzen/löschen)
4390
    208e:	dd 20       	and	r13, r13
4391
    2090:	09 f0       	breq	.+2      	; 0x2094 <edit_parameter2+0x1c0>
4392
    2092:	6b c0       	rjmp	.+214    	; 0x216a <edit_parameter2+0x296>
4393
	{
4394
		binary(p_buffer[8],bin);
4395
    2094:	5b e0       	ldi	r21, 0x0B	; 11
4396
    2096:	85 2e       	mov	r8, r21
4397
    2098:	91 2c       	mov	r9, r1
4398
    209a:	8c 0e       	add	r8, r28
4399
    209c:	9d 1e       	adc	r9, r29
4400
    209e:	b4 01       	movw	r22, r8
4401
    20a0:	80 91 6b 04 	lds	r24, 0x046B
4402
    20a4:	0e 94 47 0e 	call	0x1c8e <binary>
4403
		text[1] = 0x00;
4404
    20a8:	da 82       	std	Y+2, r13	; 0x02
4405
 
4406
		line = menu_choose(0,7,4);
4407
    20aa:	44 e0       	ldi	r20, 0x04	; 4
4408
    20ac:	67 e0       	ldi	r22, 0x07	; 7
4409
    20ae:	8d 2d       	mov	r24, r13
4410
    20b0:	0e 94 86 11 	call	0x230c <menu_choose>
4411
    20b4:	08 2f       	mov	r16, r24
4412
		if (line != 255)											// Wenn line == 255, wurde Escape gedrückt
4413
    20b6:	8f 3f       	cpi	r24, 0xFF	; 255
4414
    20b8:	09 f4       	brne	.+2      	; 0x20bc <edit_parameter2+0x1e8>
4415
    20ba:	57 c0       	rjmp	.+174    	; 0x216a <edit_parameter2+0x296>
4416
		{
4417
			par = bin[line];
4418
    20bc:	e8 2e       	mov	r14, r24
4419
    20be:	ff 24       	eor	r15, r15
4420
    20c0:	5e 01       	movw	r10, r28
4421
    20c2:	08 94       	sec
4422
    20c4:	a1 1c       	adc	r10, r1
4423
    20c6:	b1 1c       	adc	r11, r1
4424
    20c8:	f7 01       	movw	r30, r14
4425
    20ca:	ea 0d       	add	r30, r10
4426
    20cc:	fb 1d       	adc	r31, r11
4427
    20ce:	12 85       	ldd	r17, Z+10	; 0x0a
4428
 
4429
			lcd_print_atp(4,line,PSTR("-"),0);
4430
    20d0:	2d 2d       	mov	r18, r13
4431
    20d2:	4d e0       	ldi	r20, 0x0D	; 13
4432
    20d4:	5c e0       	ldi	r21, 0x0C	; 12
4433
    20d6:	68 2f       	mov	r22, r24
4434
    20d8:	84 e0       	ldi	r24, 0x04	; 4
4435
    20da:	0e 94 e1 08 	call	0x11c2 <lcd_print_atp>
4436
 
4437
			do
4438
			{
4439
 
4440
				if (key == key_minus)
4441
    20de:	80 91 e6 04 	lds	r24, 0x04E6
4442
    20e2:	81 30       	cpi	r24, 0x01	; 1
4443
    20e4:	09 f4       	brne	.+2      	; 0x20e8 <edit_parameter2+0x214>
4444
				{
4445
					par = 0x00;
4446
    20e6:	10 e0       	ldi	r17, 0x00	; 0
4447
				}
4448
				if (key == key_plus)
4449
    20e8:	80 91 e6 04 	lds	r24, 0x04E6
4450
    20ec:	82 30       	cpi	r24, 0x02	; 2
4451
    20ee:	09 f4       	brne	.+2      	; 0x20f2 <edit_parameter2+0x21e>
4452
				{
4453
					par = 0x01;
4454
    20f0:	11 e0       	ldi	r17, 0x01	; 1
4455
				}
4456
 
4457
				text[0] = par+0x30;
4458
    20f2:	10 5d       	subi	r17, 0xD0	; 208
4459
    20f4:	19 83       	std	Y+1, r17	; 0x01
4460
    20f6:	10 53       	subi	r17, 0x30	; 48
4461
				lcd_print_at(0,line,text,0);
4462
    20f8:	20 e0       	ldi	r18, 0x00	; 0
4463
    20fa:	ae 01       	movw	r20, r28
4464
    20fc:	4f 5f       	subi	r20, 0xFF	; 255
4465
    20fe:	5f 4f       	sbci	r21, 0xFF	; 255
4466
    2100:	60 2f       	mov	r22, r16
4467
    2102:	82 2f       	mov	r24, r18
4468
    2104:	0e 94 1d 09 	call	0x123a <lcd_print_at>
4469
				timer = 20;
4470
    2108:	84 e1       	ldi	r24, 0x14	; 20
4471
    210a:	80 93 61 00 	sts	0x0061, r24
4472
				while (timer > 0);
4473
    210e:	d0 90 61 00 	lds	r13, 0x0061
4474
    2112:	dd 20       	and	r13, r13
4475
    2114:	e1 f7       	brne	.-8      	; 0x210e <edit_parameter2+0x23a>
4476
 
4477
 
4478
			}
4479
    2116:	80 91 e6 04 	lds	r24, 0x04E6
4480
    211a:	88 30       	cpi	r24, 0x08	; 8
4481
    211c:	21 f0       	breq	.+8      	; 0x2126 <edit_parameter2+0x252>
4482
    211e:	80 91 e6 04 	lds	r24, 0x04E6
4483
    2122:	84 30       	cpi	r24, 0x04	; 4
4484
    2124:	e1 f6       	brne	.-72     	; 0x20de <edit_parameter2+0x20a>
4485
			while ((key != key_enter) && (key != key_esc));
4486
 
4487
			if (key == key_enter)
4488
    2126:	80 91 e6 04 	lds	r24, 0x04E6
4489
    212a:	88 30       	cpi	r24, 0x08	; 8
4490
    212c:	49 f4       	brne	.+18     	; 0x2140 <edit_parameter2+0x26c>
4491
			{
4492
				bin[line] = par;
4493
    212e:	ea 0c       	add	r14, r10
4494
    2130:	fb 1c       	adc	r15, r11
4495
    2132:	f7 01       	movw	r30, r14
4496
    2134:	12 87       	std	Z+10, r17	; 0x0a
4497
				p_buffer[8] = bindec(bin);
4498
    2136:	c4 01       	movw	r24, r8
4499
    2138:	0e 94 62 0e 	call	0x1cc4 <bindec>
4500
    213c:	80 93 6b 04 	sts	0x046B, r24
4501
			}
4502
 
4503
			lcd_cls();
4504
    2140:	0e 94 36 07 	call	0xe6c <lcd_cls>
4505
			decimal(p_buffer[8],text);
4506
    2144:	be 01       	movw	r22, r28
4507
    2146:	6f 5f       	subi	r22, 0xFF	; 255
4508
    2148:	7f 4f       	sbci	r23, 0xFF	; 255
4509
    214a:	80 91 6b 04 	lds	r24, 0x046B
4510
    214e:	0e 94 7c 0e 	call	0x1cf8 <decimal>
4511
			lcd_print(text,0);
4512
    2152:	6d 2d       	mov	r22, r13
4513
    2154:	ce 01       	movw	r24, r28
4514
    2156:	01 96       	adiw	r24, 0x01	; 1
4515
    2158:	0e 94 ea 08 	call	0x11d4 <lcd_print>
4516
			timer = 200;
4517
    215c:	88 ec       	ldi	r24, 0xC8	; 200
4518
    215e:	80 93 61 00 	sts	0x0061, r24
4519
			while(timer > 0);
4520
    2162:	80 91 61 00 	lds	r24, 0x0061
4521
    2166:	88 23       	and	r24, r24
4522
    2168:	e1 f7       	brne	.-8      	; 0x2162 <edit_parameter2+0x28e>
4523
    216a:	62 96       	adiw	r28, 0x12	; 18
4524
    216c:	0f b6       	in	r0, 0x3f	; 63
4525
    216e:	f8 94       	cli
4526
    2170:	de bf       	out	0x3e, r29	; 62
4527
    2172:	0f be       	out	0x3f, r0	; 63
4528
    2174:	cd bf       	out	0x3d, r28	; 61
4529
    2176:	df 91       	pop	r29
4530
    2178:	cf 91       	pop	r28
4531
    217a:	1f 91       	pop	r17
4532
    217c:	0f 91       	pop	r16
4533
    217e:	ff 90       	pop	r15
4534
    2180:	ef 90       	pop	r14
4535
    2182:	df 90       	pop	r13
4536
    2184:	bf 90       	pop	r11
4537
    2186:	af 90       	pop	r10
4538
    2188:	9f 90       	pop	r9
4539
    218a:	8f 90       	pop	r8
4540
    218c:	08 95       	ret
4541
 
4542
0000218e <edit_parameter>:
4543
		}
4544
	}
4545
}
4546
 
4547
 
4548
void edit_parameter (void)						// Blättert die Parameter seitenweise durch, Einsprung vom Hauptmenü
4549
{
4550
    218e:	1f 93       	push	r17
4551
    2190:	cf 93       	push	r28
4552
    2192:	df 93       	push	r29
4553
    2194:	cd b7       	in	r28, 0x3d	; 61
4554
    2196:	de b7       	in	r29, 0x3e	; 62
4555
    2198:	2f 97       	sbiw	r28, 0x0f	; 15
4556
    219a:	0f b6       	in	r0, 0x3f	; 63
4557
    219c:	f8 94       	cli
4558
    219e:	de bf       	out	0x3e, r29	; 62
4559
    21a0:	0f be       	out	0x3f, r0	; 63
4560
    21a2:	cd bf       	out	0x3d, r28	; 61
4561
	uint8_t page;								// 12 Pages
4562
	uint8_t text[15];
4563
	uint8_t lines;
4564
	uint8_t parameter;
4565
 
4566
	lcd_cls();
4567
    21a4:	0e 94 36 07 	call	0xe6c <lcd_cls>
4568
 
4569
	lcd_printp(PSTR("Lade Parameter\r\n"),0);
4570
    21a8:	60 e0       	ldi	r22, 0x00	; 0
4571
    21aa:	8f e0       	ldi	r24, 0x0F	; 15
4572
    21ac:	9c e0       	ldi	r25, 0x0C	; 12
4573
    21ae:	0e 94 aa 08 	call	0x1154 <lcd_printp>
4574
	lcd_printp(PSTR(" 1:\r\n"),0);
4575
    21b2:	60 e0       	ldi	r22, 0x00	; 0
4576
    21b4:	80 e2       	ldi	r24, 0x20	; 32
4577
    21b6:	9c e0       	ldi	r25, 0x0C	; 12
4578
    21b8:	0e 94 aa 08 	call	0x1154 <lcd_printp>
4579
	lcd_printp(PSTR(" 2:\r\n"),0);
4580
    21bc:	60 e0       	ldi	r22, 0x00	; 0
4581
    21be:	86 e2       	ldi	r24, 0x26	; 38
4582
    21c0:	9c e0       	ldi	r25, 0x0C	; 12
4583
    21c2:	0e 94 aa 08 	call	0x1154 <lcd_printp>
4584
	lcd_printp(PSTR(" 3:\r\n"),0);
4585
    21c6:	60 e0       	ldi	r22, 0x00	; 0
4586
    21c8:	8c e2       	ldi	r24, 0x2C	; 44
4587
    21ca:	9c e0       	ldi	r25, 0x0C	; 12
4588
    21cc:	0e 94 aa 08 	call	0x1154 <lcd_printp>
4589
	lcd_printp(PSTR(" 4:\r\n"),0);
4590
    21d0:	60 e0       	ldi	r22, 0x00	; 0
4591
    21d2:	82 e3       	ldi	r24, 0x32	; 50
4592
    21d4:	9c e0       	ldi	r25, 0x0C	; 12
4593
    21d6:	0e 94 aa 08 	call	0x1154 <lcd_printp>
4594
	lcd_printp(PSTR(" 5:\r\n"),0);
4595
    21da:	60 e0       	ldi	r22, 0x00	; 0
4596
    21dc:	88 e3       	ldi	r24, 0x38	; 56
4597
    21de:	9c e0       	ldi	r25, 0x0C	; 12
4598
    21e0:	0e 94 aa 08 	call	0x1154 <lcd_printp>
4599
 
4600
	parameter = menu_choose(1,5,0);
4601
    21e4:	40 e0       	ldi	r20, 0x00	; 0
4602
    21e6:	65 e0       	ldi	r22, 0x05	; 5
4603
    21e8:	81 e0       	ldi	r24, 0x01	; 1
4604
    21ea:	0e 94 86 11 	call	0x230c <menu_choose>
4605
 
4606
	page = 2;
4607
    21ee:	12 e0       	ldi	r17, 0x02	; 2
4608
	if (read_parameter(parameter) == 1)
4609
    21f0:	0e 94 02 0e 	call	0x1c04 <read_parameter>
4610
    21f4:	81 30       	cpi	r24, 0x01	; 1
4611
    21f6:	41 f4       	brne	.+16     	; 0x2208 <edit_parameter+0x7a>
4612
	{
4613
		lcd_print_atp(0,6,PSTR("Timeout"),0);
4614
    21f8:	20 e0       	ldi	r18, 0x00	; 0
4615
    21fa:	4e e3       	ldi	r20, 0x3E	; 62
4616
    21fc:	5c e0       	ldi	r21, 0x0C	; 12
4617
    21fe:	66 e0       	ldi	r22, 0x06	; 6
4618
    2200:	82 2f       	mov	r24, r18
4619
    2202:	0e 94 e1 08 	call	0x11c2 <lcd_print_atp>
4620
    2206:	5c c0       	rjmp	.+184    	; 0x22c0 <edit_parameter+0x132>
4621
	}
4622
	else
4623
	{
4624
		do
4625
		{
4626
			lcd_cls();
4627
    2208:	0e 94 36 07 	call	0xe6c <lcd_cls>
4628
			utoa(page,text,10);
4629
    220c:	4a e0       	ldi	r20, 0x0A	; 10
4630
    220e:	50 e0       	ldi	r21, 0x00	; 0
4631
    2210:	be 01       	movw	r22, r28
4632
    2212:	6f 5f       	subi	r22, 0xFF	; 255
4633
    2214:	7f 4f       	sbci	r23, 0xFF	; 255
4634
    2216:	81 2f       	mov	r24, r17
4635
    2218:	99 27       	eor	r25, r25
4636
    221a:	0e 94 f0 12 	call	0x25e0 <utoa>
4637
			lcd_print(text,0);
4638
    221e:	60 e0       	ldi	r22, 0x00	; 0
4639
    2220:	ce 01       	movw	r24, r28
4640
    2222:	01 96       	adiw	r24, 0x01	; 1
4641
    2224:	0e 94 ea 08 	call	0x11d4 <lcd_print>
4642
			timer = 50;
4643
    2228:	82 e3       	ldi	r24, 0x32	; 50
4644
    222a:	80 93 61 00 	sts	0x0061, r24
4645
 
4646
			while (timer > 0);
4647
    222e:	80 91 61 00 	lds	r24, 0x0061
4648
    2232:	88 23       	and	r24, r24
4649
    2234:	e1 f7       	brne	.-8      	; 0x222e <edit_parameter+0xa0>
4650
 
4651
			lcd_cls();
4652
    2236:	0e 94 36 07 	call	0xe6c <lcd_cls>
4653
 
4654
			lines = show_parameter(page);
4655
    223a:	81 2f       	mov	r24, r17
4656
    223c:	0e 94 a1 0e 	call	0x1d42 <show_parameter>
4657
    2240:	68 2f       	mov	r22, r24
4658
 
4659
			while (key == key_nokey);
4660
    2242:	80 91 e6 04 	lds	r24, 0x04E6
4661
    2246:	88 23       	and	r24, r24
4662
    2248:	e1 f3       	breq	.-8      	; 0x2242 <edit_parameter+0xb4>
4663
			if (key == key_plus)
4664
    224a:	80 91 e6 04 	lds	r24, 0x04E6
4665
    224e:	82 30       	cpi	r24, 0x02	; 2
4666
    2250:	09 f4       	brne	.+2      	; 0x2254 <edit_parameter+0xc6>
4667
				page++;
4668
    2252:	1f 5f       	subi	r17, 0xFF	; 255
4669
			if (key == key_minus)
4670
    2254:	80 91 e6 04 	lds	r24, 0x04E6
4671
    2258:	81 30       	cpi	r24, 0x01	; 1
4672
    225a:	09 f4       	brne	.+2      	; 0x225e <edit_parameter+0xd0>
4673
				page--;
4674
    225c:	11 50       	subi	r17, 0x01	; 1
4675
 
4676
			if (page == 255)
4677
    225e:	1f 3f       	cpi	r17, 0xFF	; 255
4678
    2260:	11 f4       	brne	.+4      	; 0x2266 <edit_parameter+0xd8>
4679
				page = 12;
4680
    2262:	1c e0       	ldi	r17, 0x0C	; 12
4681
    2264:	03 c0       	rjmp	.+6      	; 0x226c <edit_parameter+0xde>
4682
 
4683
			if (page > 12)
4684
    2266:	1d 30       	cpi	r17, 0x0D	; 13
4685
    2268:	08 f0       	brcs	.+2      	; 0x226c <edit_parameter+0xde>
4686
				page = 0;
4687
    226a:	10 e0       	ldi	r17, 0x00	; 0
4688
 
4689
			if (key == key_enter)
4690
    226c:	80 91 e6 04 	lds	r24, 0x04E6
4691
    2270:	88 30       	cpi	r24, 0x08	; 8
4692
    2272:	19 f4       	brne	.+6      	; 0x227a <edit_parameter+0xec>
4693
				edit_parameter2(page,lines);
4694
    2274:	81 2f       	mov	r24, r17
4695
    2276:	0e 94 6a 0f 	call	0x1ed4 <edit_parameter2>
4696
 
4697
		}
4698
    227a:	80 91 e6 04 	lds	r24, 0x04E6
4699
    227e:	84 30       	cpi	r24, 0x04	; 4
4700
    2280:	19 f6       	brne	.-122    	; 0x2208 <edit_parameter+0x7a>
4701
		while (key != key_esc);
4702
 
4703
		lcd_cls();
4704
    2282:	0e 94 36 07 	call	0xe6c <lcd_cls>
4705
		lcd_printp(PSTR("Parameter speichern?\r\n  ja\r\n  nein"),0);
4706
    2286:	60 e0       	ldi	r22, 0x00	; 0
4707
    2288:	86 e4       	ldi	r24, 0x46	; 70
4708
    228a:	9c e0       	ldi	r25, 0x0C	; 12
4709
    228c:	0e 94 aa 08 	call	0x1154 <lcd_printp>
4710
 
4711
		lines = menu_choose(1,2,0);
4712
    2290:	40 e0       	ldi	r20, 0x00	; 0
4713
    2292:	62 e0       	ldi	r22, 0x02	; 2
4714
    2294:	81 e0       	ldi	r24, 0x01	; 1
4715
    2296:	0e 94 86 11 	call	0x230c <menu_choose>
4716
 
4717
		if (lines == 1 )
4718
    229a:	81 30       	cpi	r24, 0x01	; 1
4719
    229c:	61 f4       	brne	.+24     	; 0x22b6 <edit_parameter+0x128>
4720
		{
4721
			lcd_printp(PSTR("\r\n--->"),0);
4722
    229e:	60 e0       	ldi	r22, 0x00	; 0
4723
    22a0:	89 e6       	ldi	r24, 0x69	; 105
4724
    22a2:	9c e0       	ldi	r25, 0x0C	; 12
4725
    22a4:	0e 94 aa 08 	call	0x1154 <lcd_printp>
4726
			write_parameter(5);									// Sicherheitshalber wird derzeit ausschließlich auf Parametersatz 5 gesichert.
4727
    22a8:	85 e0       	ldi	r24, 0x05	; 5
4728
    22aa:	0e 94 2c 0e 	call	0x1c58 <write_parameter>
4729
			lcd_printp(PSTR("\r\nParameter gespeichert"),0);
4730
    22ae:	60 e0       	ldi	r22, 0x00	; 0
4731
    22b0:	80 e7       	ldi	r24, 0x70	; 112
4732
    22b2:	9c e0       	ldi	r25, 0x0C	; 12
4733
    22b4:	03 c0       	rjmp	.+6      	; 0x22bc <edit_parameter+0x12e>
4734
		}
4735
		else
4736
		{
4737
			lcd_printp(PSTR("\r\nNicht gespeichert"),0);
4738
    22b6:	60 e0       	ldi	r22, 0x00	; 0
4739
    22b8:	88 e8       	ldi	r24, 0x88	; 136
4740
    22ba:	9c e0       	ldi	r25, 0x0C	; 12
4741
    22bc:	0e 94 aa 08 	call	0x1154 <lcd_printp>
4742
		}
4743
	}
4744
	timer = 100;
4745
    22c0:	84 e6       	ldi	r24, 0x64	; 100
4746
    22c2:	80 93 61 00 	sts	0x0061, r24
4747
	while(timer > 0);
4748
    22c6:	80 91 61 00 	lds	r24, 0x0061
4749
    22ca:	88 23       	and	r24, r24
4750
    22cc:	e1 f7       	brne	.-8      	; 0x22c6 <edit_parameter+0x138>
4751
    22ce:	2f 96       	adiw	r28, 0x0f	; 15
4752
    22d0:	0f b6       	in	r0, 0x3f	; 63
4753
    22d2:	f8 94       	cli
4754
    22d4:	de bf       	out	0x3e, r29	; 62
4755
    22d6:	0f be       	out	0x3f, r0	; 63
4756
    22d8:	cd bf       	out	0x3d, r28	; 61
4757
    22da:	df 91       	pop	r29
4758
    22dc:	cf 91       	pop	r28
4759
    22de:	1f 91       	pop	r17
4760
    22e0:	08 95       	ret
4761
 
4762
000022e2 <menu_set_cursor>:
4763
 
4764
// Subroutine für den Stern (*) bzw. Cursor
4765
 
4766
void menu_set_cursor (uint8_t before, uint8_t line, uint8_t pos)
4767
{
4768
    22e2:	0f 93       	push	r16
4769
    22e4:	1f 93       	push	r17
4770
    22e6:	06 2f       	mov	r16, r22
4771
    22e8:	14 2f       	mov	r17, r20
4772
	lcd_print_atp(pos,before,PSTR(" "),0);									// Die vorhergehende Position löschen
4773
    22ea:	20 e0       	ldi	r18, 0x00	; 0
4774
    22ec:	4c e9       	ldi	r20, 0x9C	; 156
4775
    22ee:	5c e0       	ldi	r21, 0x0C	; 12
4776
    22f0:	68 2f       	mov	r22, r24
4777
    22f2:	81 2f       	mov	r24, r17
4778
    22f4:	0e 94 e1 08 	call	0x11c2 <lcd_print_atp>
4779
	lcd_print_atp(pos,line,PSTR("*"),0);									// Den Cursor an der aktuellen Position anzeigen
4780
    22f8:	20 e0       	ldi	r18, 0x00	; 0
4781
    22fa:	4e e9       	ldi	r20, 0x9E	; 158
4782
    22fc:	5c e0       	ldi	r21, 0x0C	; 12
4783
    22fe:	60 2f       	mov	r22, r16
4784
    2300:	81 2f       	mov	r24, r17
4785
    2302:	0e 94 e1 08 	call	0x11c2 <lcd_print_atp>
4786
    2306:	1f 91       	pop	r17
4787
    2308:	0f 91       	pop	r16
4788
    230a:	08 95       	ret
4789
 
4790
0000230c <menu_choose>:
4791
}
4792
 
4793
 
4794
// Zeigt einen Stern (*) an der x-Position <pos> an, y-Position von min bis max.
4795
// Mit der +/- Taste kann ein Menü-Punkt ausgewählt und mit (Enter) bestätigt werden.
4796
// Die Zeilennummer des aktuellen Menüpunkts wird zurückgegeben.
4797
 
4798
uint8_t menu_choose (uint8_t min, uint8_t max, uint8_t pos)
4799
{
4800
    230c:	ef 92       	push	r14
4801
    230e:	ff 92       	push	r15
4802
    2310:	0f 93       	push	r16
4803
    2312:	1f 93       	push	r17
4804
    2314:	cf 93       	push	r28
4805
    2316:	f8 2e       	mov	r15, r24
4806
    2318:	e6 2e       	mov	r14, r22
4807
    231a:	04 2f       	mov	r16, r20
4808
	uint8_t line, before;
4809
 
4810
	line = min;
4811
    231c:	c8 2f       	mov	r28, r24
4812
	before = min;
4813
    231e:	18 2f       	mov	r17, r24
4814
	menu_set_cursor(line,line,pos);
4815
    2320:	68 2f       	mov	r22, r24
4816
    2322:	0e 94 71 11 	call	0x22e2 <menu_set_cursor>
4817
 
4818
	do
4819
	{
4820
		while (key != key_nokey);
4821
    2326:	80 91 e6 04 	lds	r24, 0x04E6
4822
    232a:	88 23       	and	r24, r24
4823
    232c:	e1 f7       	brne	.-8      	; 0x2326 <menu_choose+0x1a>
4824
		while(key == key_nokey);
4825
    232e:	80 91 e6 04 	lds	r24, 0x04E6
4826
    2332:	88 23       	and	r24, r24
4827
    2334:	e1 f3       	breq	.-8      	; 0x232e <menu_choose+0x22>
4828
 
4829
		if ((key == key_plus) && (line < max))
4830
    2336:	80 91 e6 04 	lds	r24, 0x04E6
4831
    233a:	82 30       	cpi	r24, 0x02	; 2
4832
    233c:	19 f4       	brne	.+6      	; 0x2344 <menu_choose+0x38>
4833
    233e:	ce 15       	cp	r28, r14
4834
    2340:	08 f4       	brcc	.+2      	; 0x2344 <menu_choose+0x38>
4835
			line ++;
4836
    2342:	cf 5f       	subi	r28, 0xFF	; 255
4837
		if ((key == key_minus) && (line > min))
4838
    2344:	80 91 e6 04 	lds	r24, 0x04E6
4839
    2348:	81 30       	cpi	r24, 0x01	; 1
4840
    234a:	19 f4       	brne	.+6      	; 0x2352 <menu_choose+0x46>
4841
    234c:	fc 16       	cp	r15, r28
4842
    234e:	08 f4       	brcc	.+2      	; 0x2352 <menu_choose+0x46>
4843
			line --;
4844
    2350:	c1 50       	subi	r28, 0x01	; 1
4845
 
4846
		menu_set_cursor(before,line,pos);
4847
    2352:	40 2f       	mov	r20, r16
4848
    2354:	6c 2f       	mov	r22, r28
4849
    2356:	81 2f       	mov	r24, r17
4850
    2358:	0e 94 71 11 	call	0x22e2 <menu_set_cursor>
4851
		before = line;
4852
    235c:	1c 2f       	mov	r17, r28
4853
	}
4854
    235e:	80 91 e6 04 	lds	r24, 0x04E6
4855
    2362:	88 30       	cpi	r24, 0x08	; 8
4856
    2364:	21 f0       	breq	.+8      	; 0x236e <menu_choose+0x62>
4857
    2366:	80 91 e6 04 	lds	r24, 0x04E6
4858
    236a:	84 30       	cpi	r24, 0x04	; 4
4859
    236c:	e1 f6       	brne	.-72     	; 0x2326 <menu_choose+0x1a>
4860
	while ((key != key_enter) && (key != key_esc));				// Schleife wiederholen, bis (Enter) / Esc gedrückt wurde
4861
	if (key == key_esc)
4862
    236e:	80 91 e6 04 	lds	r24, 0x04E6
4863
    2372:	84 30       	cpi	r24, 0x04	; 4
4864
    2374:	09 f4       	brne	.+2      	; 0x2378 <menu_choose+0x6c>
4865
		line = 255;
4866
    2376:	cf ef       	ldi	r28, 0xFF	; 255
4867
	while (key != key_nokey);									// Warten, bis Taste wieder losgelassen wurde
4868
    2378:	80 91 e6 04 	lds	r24, 0x04E6
4869
    237c:	88 23       	and	r24, r24
4870
    237e:	e1 f7       	brne	.-8      	; 0x2378 <menu_choose+0x6c>
4871
	return line;
4872
}
4873
    2380:	8c 2f       	mov	r24, r28
4874
    2382:	99 27       	eor	r25, r25
4875
    2384:	cf 91       	pop	r28
4876
    2386:	1f 91       	pop	r17
4877
    2388:	0f 91       	pop	r16
4878
    238a:	ff 90       	pop	r15
4879
    238c:	ef 90       	pop	r14
4880
    238e:	08 95       	ret
4881
 
4882
00002390 <main_menu>:
4883
 
4884
void main_menu (void)
4885
{
4886
	lcd_cls();
4887
    2390:	0e 94 36 07 	call	0xe6c <lcd_cls>
4888
	lcd_printp(PSTR("Hauptmenü(BETA V0.1)\r\n"),0);
4889
    2394:	60 e0       	ldi	r22, 0x00	; 0
4890
    2396:	80 ea       	ldi	r24, 0xA0	; 160
4891
    2398:	9c e0       	ldi	r25, 0x0C	; 12
4892
    239a:	0e 94 aa 08 	call	0x1154 <lcd_printp>
4893
	lcd_printp(PSTR("\r\nDisplay\r\n"),0);
4894
    239e:	60 e0       	ldi	r22, 0x00	; 0
4895
    23a0:	87 eb       	ldi	r24, 0xB7	; 183
4896
    23a2:	9c e0       	ldi	r25, 0x0C	; 12
4897
    23a4:	0e 94 aa 08 	call	0x1154 <lcd_printp>
4898
	lcd_printp(PSTR("Parameter\r\n"),0);
4899
    23a8:	60 e0       	ldi	r22, 0x00	; 0
4900
    23aa:	83 ec       	ldi	r24, 0xC3	; 195
4901
    23ac:	9c e0       	ldi	r25, 0x0C	; 12
4902
    23ae:	0e 94 aa 08 	call	0x1154 <lcd_printp>
4903
	lcd_printp(PSTR("Motortest"),0);
4904
    23b2:	60 e0       	ldi	r22, 0x00	; 0
4905
    23b4:	8f ec       	ldi	r24, 0xCF	; 207
4906
    23b6:	9c e0       	ldi	r25, 0x0C	; 12
4907
    23b8:	0e 94 aa 08 	call	0x1154 <lcd_printp>
4908
 
4909
	switch(menu_choose(2,4,10))
4910
    23bc:	4a e0       	ldi	r20, 0x0A	; 10
4911
    23be:	64 e0       	ldi	r22, 0x04	; 4
4912
    23c0:	82 e0       	ldi	r24, 0x02	; 2
4913
    23c2:	0e 94 86 11 	call	0x230c <menu_choose>
4914
    23c6:	99 27       	eor	r25, r25
4915
    23c8:	83 30       	cpi	r24, 0x03	; 3
4916
    23ca:	91 05       	cpc	r25, r1
4917
    23cc:	61 f0       	breq	.+24     	; 0x23e6 <main_menu+0x56>
4918
    23ce:	84 30       	cpi	r24, 0x04	; 4
4919
    23d0:	91 05       	cpc	r25, r1
4920
    23d2:	1c f4       	brge	.+6      	; 0x23da <main_menu+0x4a>
4921
    23d4:	02 97       	sbiw	r24, 0x02	; 2
4922
    23d6:	21 f0       	breq	.+8      	; 0x23e0 <main_menu+0x50>
4923
    23d8:	08 95       	ret
4924
    23da:	04 97       	sbiw	r24, 0x04	; 4
4925
    23dc:	39 f0       	breq	.+14     	; 0x23ec <main_menu+0x5c>
4926
    23de:	08 95       	ret
4927
	{
4928
		case 2:
4929
			display_data();									// LCD-Modus
4930
    23e0:	0e 94 23 12 	call	0x2446 <display_data>
4931
			break;
4932
    23e4:	08 95       	ret
4933
		case 3:
4934
			edit_parameter();								// Parameter (Settings) laden/editieren
4935
    23e6:	0e 94 c7 10 	call	0x218e <edit_parameter>
4936
			break;
4937
    23ea:	08 95       	ret
4938
		case 4:
4939
			motor_test();									// primitiver Motor-Test
4940
    23ec:	0e 94 83 12 	call	0x2506 <motor_test>
4941
    23f0:	08 95       	ret
4942
 
4943
000023f2 <read_display>:
4944
#include "parameter.h"
4945
#include "menu.h"
4946
 
4947
uint8_t read_display (uint8_t command)			//
4948
{
4949
    23f2:	cf 93       	push	r28
4950
	uint8_t timeout;
4951
 
4952
	timeout = 0;
4953
    23f4:	c0 e0       	ldi	r28, 0x00	; 0
4954
	p_buffer[0] = '#';							// Display-Zeile anfordern
4955
    23f6:	93 e2       	ldi	r25, 0x23	; 35
4956
    23f8:	90 93 63 04 	sts	0x0463, r25
4957
	p_buffer[1] = 'a';
4958
    23fc:	91 e6       	ldi	r25, 0x61	; 97
4959
    23fe:	90 93 64 04 	sts	0x0464, r25
4960
	p_buffer[2] = 'h';
4961
    2402:	98 e6       	ldi	r25, 0x68	; 104
4962
    2404:	90 93 65 04 	sts	0x0465, r25
4963
	p_buffer[3] = command;
4964
    2408:	80 93 66 04 	sts	0x0466, r24
4965
	p_buffer[4] = 0;
4966
    240c:	c0 93 67 04 	sts	0x0467, r28
4967
	p_buffer[5] = 0;
4968
    2410:	c0 93 68 04 	sts	0x0468, r28
4969
	base64_send(6);
4970
    2414:	86 e0       	ldi	r24, 0x06	; 6
4971
    2416:	0e 94 bc 0c 	call	0x1978 <base64_send>
4972
 
4973
	do											// warten, bis die Parameter gesendet werden
4974
	{
4975
		if (get_message() == 1)
4976
    241a:	0e 94 95 0c 	call	0x192a <get_message>
4977
    241e:	81 30       	cpi	r24, 0x01	; 1
4978
    2420:	09 f4       	brne	.+2      	; 0x2424 <read_display+0x32>
4979
			timeout = 10;
4980
    2422:	ca e0       	ldi	r28, 0x0A	; 10
4981
		timeout ++;
4982
    2424:	cf 5f       	subi	r28, 0xFF	; 255
4983
	}
4984
    2426:	80 91 ea 04 	lds	r24, 0x04EA
4985
    242a:	80 53       	subi	r24, 0x30	; 48
4986
    242c:	85 30       	cpi	r24, 0x05	; 5
4987
    242e:	10 f0       	brcs	.+4      	; 0x2434 <read_display+0x42>
4988
    2430:	ca 30       	cpi	r28, 0x0A	; 10
4989
    2432:	98 f3       	brcs	.-26     	; 0x241a <read_display+0x28>
4990
	while (((r_buffer[1] < '0') || (r_buffer[1] > '4')) && (timeout < 10));
4991
 
4992
	if (timeout >= 10)
4993
    2434:	ca 30       	cpi	r28, 0x0A	; 10
4994
    2436:	18 f0       	brcs	.+6      	; 0x243e <read_display+0x4c>
4995
		return 1;
4996
    2438:	81 e0       	ldi	r24, 0x01	; 1
4997
    243a:	90 e0       	ldi	r25, 0x00	; 0
4998
    243c:	02 c0       	rjmp	.+4      	; 0x2442 <read_display+0x50>
4999
	else
5000
		return 0;
5001
    243e:	80 e0       	ldi	r24, 0x00	; 0
5002
    2440:	90 e0       	ldi	r25, 0x00	; 0
5003
    2442:	cf 91       	pop	r28
5004
    2444:	08 95       	ret
5005
 
5006
00002446 <display_data>:
5007
}
5008
 
5009
void display_data (void)
5010
{
5011
    2446:	0f 93       	push	r16
5012
    2448:	1f 93       	push	r17
5013
    244a:	cf 93       	push	r28
5014
    244c:	df 93       	push	r29
5015
    244e:	cd b7       	in	r28, 0x3d	; 61
5016
    2450:	de b7       	in	r29, 0x3e	; 62
5017
    2452:	2a 97       	sbiw	r28, 0x0a	; 10
5018
    2454:	0f b6       	in	r0, 0x3f	; 63
5019
    2456:	f8 94       	cli
5020
    2458:	de bf       	out	0x3e, r29	; 62
5021
    245a:	0f be       	out	0x3f, r0	; 63
5022
    245c:	cd bf       	out	0x3d, r28	; 61
5023
	uint8_t line;
5024
	uint8_t text[10];
5025
 
5026
	lcd_cls();
5027
    245e:	0e 94 36 07 	call	0xe6c <lcd_cls>
5028
	lcd_printp(PSTR("Display"),0);
5029
    2462:	60 e0       	ldi	r22, 0x00	; 0
5030
    2464:	89 ed       	ldi	r24, 0xD9	; 217
5031
    2466:	9c e0       	ldi	r25, 0x0C	; 12
5032
    2468:	0e 94 aa 08 	call	0x1154 <lcd_printp>
5033
	do
5034
	{
5035
		while (key != 0x00);
5036
    246c:	00 91 e6 04 	lds	r16, 0x04E6
5037
    2470:	00 23       	and	r16, r16
5038
    2472:	e1 f7       	brne	.-8      	; 0x246c <display_data+0x26>
5039
		if (read_display(0) == 1)
5040
    2474:	80 2f       	mov	r24, r16
5041
    2476:	0e 94 f9 11 	call	0x23f2 <read_display>
5042
    247a:	81 30       	cpi	r24, 0x01	; 1
5043
    247c:	69 f4       	brne	.+26     	; 0x2498 <display_data+0x52>
5044
		{
5045
			lcd_printp(PSTR("\r\nTimeout!"),0);
5046
    247e:	60 2f       	mov	r22, r16
5047
    2480:	81 ee       	ldi	r24, 0xE1	; 225
5048
    2482:	9c e0       	ldi	r25, 0x0C	; 12
5049
    2484:	0e 94 aa 08 	call	0x1154 <lcd_printp>
5050
			timer = 200;
5051
    2488:	88 ec       	ldi	r24, 0xC8	; 200
5052
    248a:	80 93 61 00 	sts	0x0061, r24
5053
			while (timer > 0);
5054
    248e:	80 91 61 00 	lds	r24, 0x0061
5055
    2492:	88 23       	and	r24, r24
5056
    2494:	e1 f7       	brne	.-8      	; 0x248e <display_data+0x48>
5057
			break;
5058
    2496:	2c c0       	rjmp	.+88     	; 0x24f0 <display_data+0xaa>
5059
		}
5060
		else
5061
		{
5062
			line = r_buffer[1];
5063
    2498:	10 91 ea 04 	lds	r17, 0x04EA
5064
			text[0] = line;
5065
    249c:	19 83       	std	Y+1, r17	; 0x01
5066
			text[1] = 0x00;
5067
    249e:	0a 83       	std	Y+2, r16	; 0x02
5068
			lcd_print_at(10,0,text,0);
5069
    24a0:	20 2f       	mov	r18, r16
5070
    24a2:	ae 01       	movw	r20, r28
5071
    24a4:	4f 5f       	subi	r20, 0xFF	; 255
5072
    24a6:	5f 4f       	sbci	r21, 0xFF	; 255
5073
    24a8:	60 2f       	mov	r22, r16
5074
    24aa:	8a e0       	ldi	r24, 0x0A	; 10
5075
    24ac:	0e 94 1d 09 	call	0x123a <lcd_print_at>
5076
 
5077
			lcd_print_at(0,line+1,p_buffer,0);
5078
    24b0:	1f 5f       	subi	r17, 0xFF	; 255
5079
    24b2:	20 2f       	mov	r18, r16
5080
    24b4:	43 e6       	ldi	r20, 0x63	; 99
5081
    24b6:	54 e0       	ldi	r21, 0x04	; 4
5082
    24b8:	61 2f       	mov	r22, r17
5083
    24ba:	80 2f       	mov	r24, r16
5084
    24bc:	0e 94 1d 09 	call	0x123a <lcd_print_at>
5085
 
5086
			timer = 10;
5087
    24c0:	8a e0       	ldi	r24, 0x0A	; 10
5088
    24c2:	80 93 61 00 	sts	0x0061, r24
5089
			while(timer > 0);
5090
    24c6:	80 91 61 00 	lds	r24, 0x0061
5091
    24ca:	88 23       	and	r24, r24
5092
    24cc:	e1 f7       	brne	.-8      	; 0x24c6 <display_data+0x80>
5093
 
5094
			if (key == 0x01)
5095
    24ce:	80 91 e6 04 	lds	r24, 0x04E6
5096
    24d2:	81 30       	cpi	r24, 0x01	; 1
5097
    24d4:	11 f4       	brne	.+4      	; 0x24da <display_data+0x94>
5098
				read_display(1);
5099
    24d6:	0e 94 f9 11 	call	0x23f2 <read_display>
5100
			if (key == 0x02)
5101
    24da:	80 91 e6 04 	lds	r24, 0x04E6
5102
    24de:	82 30       	cpi	r24, 0x02	; 2
5103
    24e0:	11 f4       	brne	.+4      	; 0x24e6 <display_data+0xa0>
5104
				read_display(2);
5105
    24e2:	0e 94 f9 11 	call	0x23f2 <read_display>
5106
		}
5107
 
5108
	}
5109
    24e6:	80 91 e6 04 	lds	r24, 0x04E6
5110
    24ea:	84 30       	cpi	r24, 0x04	; 4
5111
    24ec:	09 f0       	breq	.+2      	; 0x24f0 <display_data+0xaa>
5112
    24ee:	be cf       	rjmp	.-132    	; 0x246c <display_data+0x26>
5113
    24f0:	2a 96       	adiw	r28, 0x0a	; 10
5114
    24f2:	0f b6       	in	r0, 0x3f	; 63
5115
    24f4:	f8 94       	cli
5116
    24f6:	de bf       	out	0x3e, r29	; 62
5117
    24f8:	0f be       	out	0x3f, r0	; 63
5118
    24fa:	cd bf       	out	0x3d, r28	; 61
5119
    24fc:	df 91       	pop	r29
5120
    24fe:	cf 91       	pop	r28
5121
    2500:	1f 91       	pop	r17
5122
    2502:	0f 91       	pop	r16
5123
    2504:	08 95       	ret
5124
 
5125
00002506 <motor_test>:
5126
#include "base64.h"
5127
 
5128
void motor_test(void)
5129
{
5130
	lcd_cls();
5131
    2506:	0e 94 36 07 	call	0xe6c <lcd_cls>
5132
 
5133
	while (key != 0x00);
5134
    250a:	60 91 e6 04 	lds	r22, 0x04E6
5135
    250e:	66 23       	and	r22, r22
5136
    2510:	e1 f7       	brne	.-8      	; 0x250a <motor_test+0x4>
5137
 
5138
	lcd_printp(PSTR("Taste drücken\r\n"),0);
5139
    2512:	8c ee       	ldi	r24, 0xEC	; 236
5140
    2514:	9c e0       	ldi	r25, 0x0C	; 12
5141
    2516:	0e 94 aa 08 	call	0x1154 <lcd_printp>
5142
 
5143
	while (key == 0x00);
5144
    251a:	80 91 e6 04 	lds	r24, 0x04E6
5145
    251e:	88 23       	and	r24, r24
5146
    2520:	e1 f3       	breq	.-8      	; 0x251a <motor_test+0x14>
5147
	if (key == 0x08)								// nur, wenn die Bestätigungstaste gedrückt wird
5148
    2522:	80 91 e6 04 	lds	r24, 0x04E6
5149
    2526:	88 30       	cpi	r24, 0x08	; 8
5150
    2528:	c9 f4       	brne	.+50     	; 0x255c <motor_test+0x56>
5151
	{
5152
		p_buffer[0] = '#';							// Motoren einschalten
5153
    252a:	83 e2       	ldi	r24, 0x23	; 35
5154
    252c:	80 93 63 04 	sts	0x0463, r24
5155
		p_buffer[1] = 'a';
5156
    2530:	81 e6       	ldi	r24, 0x61	; 97
5157
    2532:	80 93 64 04 	sts	0x0464, r24
5158
		p_buffer[2] = 't';
5159
    2536:	84 e7       	ldi	r24, 0x74	; 116
5160
    2538:	80 93 65 04 	sts	0x0465, r24
5161
		p_buffer[3] = 10;
5162
    253c:	8a e0       	ldi	r24, 0x0A	; 10
5163
    253e:	80 93 66 04 	sts	0x0466, r24
5164
		p_buffer[4] = 10;
5165
    2542:	80 93 67 04 	sts	0x0467, r24
5166
		p_buffer[5] = 10;
5167
    2546:	80 93 68 04 	sts	0x0468, r24
5168
		p_buffer[6] = 10;
5169
    254a:	80 93 69 04 	sts	0x0469, r24
5170
		p_buffer[7] = 0;
5171
    254e:	10 92 6a 04 	sts	0x046A, r1
5172
		p_buffer[8] = 0;
5173
    2552:	10 92 6b 04 	sts	0x046B, r1
5174
 
5175
		base64_send(9);
5176
    2556:	89 e0       	ldi	r24, 0x09	; 9
5177
    2558:	0e 94 bc 0c 	call	0x1978 <base64_send>
5178
	}
5179
 
5180
	while (key != 0x00);
5181
    255c:	80 91 e6 04 	lds	r24, 0x04E6
5182
    2560:	88 23       	and	r24, r24
5183
    2562:	e1 f7       	brne	.-8      	; 0x255c <motor_test+0x56>
5184
	while (key == 0x00);
5185
    2564:	80 91 e6 04 	lds	r24, 0x04E6
5186
    2568:	88 23       	and	r24, r24
5187
    256a:	e1 f3       	breq	.-8      	; 0x2564 <motor_test+0x5e>
5188
 
5189
	p_buffer[0] = '#';							// Motoren ausschalten
5190
    256c:	83 e2       	ldi	r24, 0x23	; 35
5191
    256e:	80 93 63 04 	sts	0x0463, r24
5192
	p_buffer[1] = 'a';
5193
    2572:	81 e6       	ldi	r24, 0x61	; 97
5194
    2574:	80 93 64 04 	sts	0x0464, r24
5195
	p_buffer[2] = 't';
5196
    2578:	84 e7       	ldi	r24, 0x74	; 116
5197
    257a:	80 93 65 04 	sts	0x0465, r24
5198
	p_buffer[3] = 0;
5199
    257e:	10 92 66 04 	sts	0x0466, r1
5200
	p_buffer[4] = 0;
5201
    2582:	10 92 67 04 	sts	0x0467, r1
5202
	p_buffer[5] = 0;
5203
    2586:	10 92 68 04 	sts	0x0468, r1
5204
	p_buffer[6] = 0;
5205
    258a:	10 92 69 04 	sts	0x0469, r1
5206
	p_buffer[7] = 0;
5207
    258e:	10 92 6a 04 	sts	0x046A, r1
5208
	p_buffer[8] = 0;
5209
    2592:	10 92 6b 04 	sts	0x046B, r1
5210
 
5211
	base64_send(9);
5212
    2596:	89 e0       	ldi	r24, 0x09	; 9
5213
    2598:	0e 94 bc 0c 	call	0x1978 <base64_send>
5214
    259c:	08 95       	ret
5215
 
5216
0000259e <itoa>:
5217
    259e:	fb 01       	movw	r30, r22
5218
    25a0:	9f 01       	movw	r18, r30
5219
    25a2:	e8 94       	clt
5220
    25a4:	42 30       	cpi	r20, 0x02	; 2
5221
    25a6:	c4 f0       	brlt	.+48     	; 0x25d8 <itoa+0x3a>
5222
    25a8:	45 32       	cpi	r20, 0x25	; 37
5223
    25aa:	b4 f4       	brge	.+44     	; 0x25d8 <itoa+0x3a>
5224
    25ac:	4a 30       	cpi	r20, 0x0A	; 10
5225
    25ae:	29 f4       	brne	.+10     	; 0x25ba <itoa+0x1c>
5226
    25b0:	97 fb       	bst	r25, 7
5227
    25b2:	1e f4       	brtc	.+6      	; 0x25ba <itoa+0x1c>
5228
    25b4:	90 95       	com	r25
5229
    25b6:	81 95       	neg	r24
5230
    25b8:	9f 4f       	sbci	r25, 0xFF	; 255
5231
    25ba:	64 2f       	mov	r22, r20
5232
    25bc:	77 27       	eor	r23, r23
5233
    25be:	0e 94 22 13 	call	0x2644 <__udivmodhi4>
5234
    25c2:	80 5d       	subi	r24, 0xD0	; 208
5235
    25c4:	8a 33       	cpi	r24, 0x3A	; 58
5236
    25c6:	0c f0       	brlt	.+2      	; 0x25ca <itoa+0x2c>
5237
    25c8:	89 5d       	subi	r24, 0xD9	; 217
5238
    25ca:	81 93       	st	Z+, r24
5239
    25cc:	cb 01       	movw	r24, r22
5240
    25ce:	00 97       	sbiw	r24, 0x00	; 0
5241
    25d0:	a1 f7       	brne	.-24     	; 0x25ba <itoa+0x1c>
5242
    25d2:	16 f4       	brtc	.+4      	; 0x25d8 <itoa+0x3a>
5243
    25d4:	5d e2       	ldi	r21, 0x2D	; 45
5244
    25d6:	51 93       	st	Z+, r21
5245
    25d8:	10 82       	st	Z, r1
5246
    25da:	c9 01       	movw	r24, r18
5247
    25dc:	0c 94 06 13 	jmp	0x260c <strrev>
5248
 
5249
000025e0 <utoa>:
5250
    25e0:	fb 01       	movw	r30, r22
5251
    25e2:	9f 01       	movw	r18, r30
5252
    25e4:	42 30       	cpi	r20, 0x02	; 2
5253
    25e6:	74 f0       	brlt	.+28     	; 0x2604 <utoa+0x24>
5254
    25e8:	45 32       	cpi	r20, 0x25	; 37
5255
    25ea:	64 f4       	brge	.+24     	; 0x2604 <utoa+0x24>
5256
    25ec:	64 2f       	mov	r22, r20
5257
    25ee:	77 27       	eor	r23, r23
5258
    25f0:	0e 94 22 13 	call	0x2644 <__udivmodhi4>
5259
    25f4:	80 5d       	subi	r24, 0xD0	; 208
5260
    25f6:	8a 33       	cpi	r24, 0x3A	; 58
5261
    25f8:	0c f0       	brlt	.+2      	; 0x25fc <utoa+0x1c>
5262
    25fa:	89 5d       	subi	r24, 0xD9	; 217
5263
    25fc:	81 93       	st	Z+, r24
5264
    25fe:	cb 01       	movw	r24, r22
5265
    2600:	00 97       	sbiw	r24, 0x00	; 0
5266
    2602:	a1 f7       	brne	.-24     	; 0x25ec <utoa+0xc>
5267
    2604:	10 82       	st	Z, r1
5268
    2606:	c9 01       	movw	r24, r18
5269
    2608:	0c 94 06 13 	jmp	0x260c <strrev>
5270
 
5271
0000260c <strrev>:
5272
    260c:	dc 01       	movw	r26, r24
5273
    260e:	fc 01       	movw	r30, r24
5274
    2610:	01 90       	ld	r0, Z+
5275
    2612:	00 20       	and	r0, r0
5276
    2614:	e9 f7       	brne	.-6      	; 0x2610 <strrev+0x4>
5277
    2616:	32 97       	sbiw	r30, 0x02	; 2
5278
    2618:	ae 17       	cp	r26, r30
5279
    261a:	bf 07       	cpc	r27, r31
5280
    261c:	30 f4       	brcc	.+12     	; 0x262a <strrev+0x1e>
5281
    261e:	7c 91       	ld	r23, X
5282
    2620:	60 81       	ld	r22, Z
5283
    2622:	70 83       	st	Z, r23
5284
    2624:	31 97       	sbiw	r30, 0x01	; 1
5285
    2626:	6d 93       	st	X+, r22
5286
    2628:	f7 cf       	rjmp	.-18     	; 0x2618 <strrev+0xc>
5287
    262a:	08 95       	ret
5288
 
5289
0000262c <__udivmodqi4>:
5290
    262c:	99 1b       	sub	r25, r25
5291
    262e:	79 e0       	ldi	r23, 0x09	; 9
5292
    2630:	04 c0       	rjmp	.+8      	; 0x263a <__udivmodqi4_ep>
5293
 
5294
00002632 <__udivmodqi4_loop>:
5295
    2632:	99 1f       	adc	r25, r25
5296
    2634:	96 17       	cp	r25, r22
5297
    2636:	08 f0       	brcs	.+2      	; 0x263a <__udivmodqi4_ep>
5298
    2638:	96 1b       	sub	r25, r22
5299
 
5300
0000263a <__udivmodqi4_ep>:
5301
    263a:	88 1f       	adc	r24, r24
5302
    263c:	7a 95       	dec	r23
5303
    263e:	c9 f7       	brne	.-14     	; 0x2632 <__udivmodqi4_loop>
5304
    2640:	80 95       	com	r24
5305
    2642:	08 95       	ret
5306
 
5307
00002644 <__udivmodhi4>:
5308
    2644:	aa 1b       	sub	r26, r26
5309
    2646:	bb 1b       	sub	r27, r27
5310
    2648:	51 e1       	ldi	r21, 0x11	; 17
5311
    264a:	07 c0       	rjmp	.+14     	; 0x265a <__udivmodhi4_ep>
5312
 
5313
0000264c <__udivmodhi4_loop>:
5314
    264c:	aa 1f       	adc	r26, r26
5315
    264e:	bb 1f       	adc	r27, r27
5316
    2650:	a6 17       	cp	r26, r22
5317
    2652:	b7 07       	cpc	r27, r23
5318
    2654:	10 f0       	brcs	.+4      	; 0x265a <__udivmodhi4_ep>
5319
    2656:	a6 1b       	sub	r26, r22
5320
    2658:	b7 0b       	sbc	r27, r23
5321
 
5322
0000265a <__udivmodhi4_ep>:
5323
    265a:	88 1f       	adc	r24, r24
5324
    265c:	99 1f       	adc	r25, r25
5325
    265e:	5a 95       	dec	r21
5326
    2660:	a9 f7       	brne	.-22     	; 0x264c <__udivmodhi4_loop>
5327
    2662:	80 95       	com	r24
5328
    2664:	90 95       	com	r25
5329
    2666:	bc 01       	movw	r22, r24
5330
    2668:	cd 01       	movw	r24, r26
5331
    266a:	08 95       	ret