Skip to content

Instantly share code, notes, and snippets.

@master-q
Last active August 29, 2015 14:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save master-q/6e26d28ba93b3b013d5d to your computer and use it in GitHub Desktop.
Save master-q/6e26d28ba93b3b013d5d to your computer and use it in GitHub Desktop.
notuse_template
main.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .data 000001c0 00800100 00000b8c 00000c20 2**0
CONTENTS, ALLOC, LOAD, DATA
1 .text 00000b8c 00000000 00000000 00000094 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
2 .bss 00000010 008002c0 008002c0 00000de0 2**0
ALLOC
3 .stab 000026dc 00000000 00000000 00000de0 2**2
CONTENTS, READONLY, DEBUGGING
4 .stabstr 0000716d 00000000 00000000 000034bc 2**0
CONTENTS, READONLY, DEBUGGING
5 .comment 00000011 00000000 00000000 0000a629 2**0
CONTENTS, READONLY
Disassembly of section .text:
00000000 <__vectors>:
0: 0c 94 61 00 jmp 0xc2 ; 0xc2 <__ctors_end>
4: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
8: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
c: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
10: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
14: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
18: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
1c: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
20: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
24: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
28: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
2c: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
30: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
34: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
38: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
3c: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
40: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
44: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
48: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
4c: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
50: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
54: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
58: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
5c: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
60: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
64: 0c 94 7e 00 jmp 0xfc ; 0xfc <__bad_interrupt>
00000068 <__trampolines_end>:
68: 00 00 nop
6a: 00 07 cpc r16, r16
6c: 00 02 muls r16, r16
6e: 01 00 .word 0x0001 ; ????
70: 00 03 mulsu r16, r16
72: 04 06 cpc r0, r20
...
0000007c <digital_pin_to_bit_mask_PGM>:
7c: 01 02 04 08 10 20 40 80 01 02 04 08 10 20 01 02 ..... @...... ..
8c: 04 08 10 20 ...
00000090 <digital_pin_to_port_PGM>:
90: 04 04 04 04 04 04 04 04 02 02 02 02 02 02 03 03 ................
a0: 03 03 03 03 ....
000000a4 <port_to_input_PGM>:
a4: 00 00 00 00 23 00 26 00 29 00 ....#.&.).
000000ae <port_to_output_PGM>:
ae: 00 00 00 00 25 00 28 00 2b 00 ....%.(.+.
000000b8 <port_to_mode_PGM>:
b8: 00 00 00 00 24 00 27 00 2a 00 ....$.'.*.
000000c2 <__ctors_end>:
c2: 11 24 eor r1, r1
c4: 1f be out 0x3f, r1 ; 63
c6: cf ef ldi r28, 0xFF ; 255
c8: d8 e0 ldi r29, 0x08 ; 8
ca: de bf out 0x3e, r29 ; 62
cc: cd bf out 0x3d, r28 ; 61
000000ce <__do_copy_data>:
ce: 12 e0 ldi r17, 0x02 ; 2
d0: a0 e0 ldi r26, 0x00 ; 0
d2: b1 e0 ldi r27, 0x01 ; 1
d4: ec e8 ldi r30, 0x8C ; 140
d6: fb e0 ldi r31, 0x0B ; 11
d8: 02 c0 rjmp .+4 ; 0xde <__do_copy_data+0x10>
da: 05 90 lpm r0, Z+
dc: 0d 92 st X+, r0
de: a0 3c cpi r26, 0xC0 ; 192
e0: b1 07 cpc r27, r17
e2: d9 f7 brne .-10 ; 0xda <__do_copy_data+0xc>
000000e4 <__do_clear_bss>:
e4: 22 e0 ldi r18, 0x02 ; 2
e6: a0 ec ldi r26, 0xC0 ; 192
e8: b2 e0 ldi r27, 0x02 ; 2
ea: 01 c0 rjmp .+2 ; 0xee <.do_clear_bss_start>
000000ec <.do_clear_bss_loop>:
ec: 1d 92 st X+, r1
000000ee <.do_clear_bss_start>:
ee: a0 3d cpi r26, 0xD0 ; 208
f0: b2 07 cpc r27, r18
f2: e1 f7 brne .-8 ; 0xec <.do_clear_bss_loop>
f4: 0e 94 ff 02 call 0x5fe ; 0x5fe <main>
f8: 0c 94 c4 05 jmp 0xb88 ; 0xb88 <_exit>
000000fc <__bad_interrupt>:
fc: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
00000100 <turnOffPWM>:
//
//static inline void turnOffPWM(uint8_t timer) __attribute__ ((always_inline));
//static inline void turnOffPWM(uint8_t timer)
static void turnOffPWM(uint8_t timer)
{
switch (timer)
100: 83 30 cpi r24, 0x03 ; 3
102: 81 f0 breq .+32 ; 0x124 <turnOffPWM+0x24>
104: 28 f4 brcc .+10 ; 0x110 <turnOffPWM+0x10>
106: 81 30 cpi r24, 0x01 ; 1
108: 99 f0 breq .+38 ; 0x130 <turnOffPWM+0x30>
10a: 82 30 cpi r24, 0x02 ; 2
10c: a1 f0 breq .+40 ; 0x136 <turnOffPWM+0x36>
10e: 08 95 ret
110: 86 30 cpi r24, 0x06 ; 6
112: a9 f0 breq .+42 ; 0x13e <turnOffPWM+0x3e>
114: 87 30 cpi r24, 0x07 ; 7
116: b9 f0 breq .+46 ; 0x146 <turnOffPWM+0x46>
118: 84 30 cpi r24, 0x04 ; 4
11a: d1 f4 brne .+52 ; 0x150 <turnOffPWM+0x50>
{
#if defined(TCCR1A) && defined(COM1A1)
case TIMER1A: cbi(TCCR1A, COM1A1); break;
#endif
#if defined(TCCR1A) && defined(COM1B1)
case TIMER1B: cbi(TCCR1A, COM1B1); break;
11c: 80 91 80 00 lds r24, 0x0080
120: 8f 7d andi r24, 0xDF ; 223
122: 03 c0 rjmp .+6 ; 0x12a <turnOffPWM+0x2a>
static void turnOffPWM(uint8_t timer)
{
switch (timer)
{
#if defined(TCCR1A) && defined(COM1A1)
case TIMER1A: cbi(TCCR1A, COM1A1); break;
124: 80 91 80 00 lds r24, 0x0080
128: 8f 77 andi r24, 0x7F ; 127
#endif
#if defined(TCCR1A) && defined(COM1B1)
case TIMER1B: cbi(TCCR1A, COM1B1); break;
12a: 80 93 80 00 sts 0x0080, r24
12e: 08 95 ret
#if defined(TCCR2) && defined(COM21)
case TIMER2: cbi(TCCR2, COM21); break;
#endif
#if defined(TCCR0A) && defined(COM0A1)
case TIMER0A: cbi(TCCR0A, COM0A1); break;
130: 84 b5 in r24, 0x24 ; 36
132: 8f 77 andi r24, 0x7F ; 127
134: 02 c0 rjmp .+4 ; 0x13a <turnOffPWM+0x3a>
#endif
#if defined(TIMER0B) && defined(COM0B1)
case TIMER0B: cbi(TCCR0A, COM0B1); break;
136: 84 b5 in r24, 0x24 ; 36
138: 8f 7d andi r24, 0xDF ; 223
13a: 84 bd out 0x24, r24 ; 36
13c: 08 95 ret
#endif
#if defined(TCCR2A) && defined(COM2A1)
case TIMER2A: cbi(TCCR2A, COM2A1); break;
13e: 80 91 b0 00 lds r24, 0x00B0
142: 8f 77 andi r24, 0x7F ; 127
144: 03 c0 rjmp .+6 ; 0x14c <turnOffPWM+0x4c>
#endif
#if defined(TCCR2A) && defined(COM2B1)
case TIMER2B: cbi(TCCR2A, COM2B1); break;
146: 80 91 b0 00 lds r24, 0x00B0
14a: 8f 7d andi r24, 0xDF ; 223
14c: 80 93 b0 00 sts 0x00B0, r24
150: 08 95 ret
00000152 <pinMode>:
#define ARDUINO_MAIN
#include "wiring_private.h"
#include "pins_arduino.h"
void pinMode(uint8_t pin, uint8_t mode)
{
152: cf 93 push r28
154: df 93 push r29
uint8_t bit = digitalPinToBitMask(pin);
156: 90 e0 ldi r25, 0x00 ; 0
158: fc 01 movw r30, r24
15a: e4 58 subi r30, 0x84 ; 132
15c: ff 4f sbci r31, 0xFF ; 255
15e: 24 91 lpm r18, Z
uint8_t port = digitalPinToPort(pin);
160: fc 01 movw r30, r24
162: e0 57 subi r30, 0x70 ; 112
164: ff 4f sbci r31, 0xFF ; 255
166: 84 91 lpm r24, Z
volatile uint8_t *reg, *out;
if (port == NOT_A_PIN) return;
168: 88 23 and r24, r24
16a: 49 f1 breq .+82 ; 0x1be <pinMode+0x6c>
// JWS: can I let the optimizer do this?
reg = portModeRegister(port);
16c: 90 e0 ldi r25, 0x00 ; 0
16e: 88 0f add r24, r24
170: 99 1f adc r25, r25
172: fc 01 movw r30, r24
174: e8 54 subi r30, 0x48 ; 72
176: ff 4f sbci r31, 0xFF ; 255
178: a5 91 lpm r26, Z+
17a: b4 91 lpm r27, Z
out = portOutputRegister(port);
17c: 82 55 subi r24, 0x52 ; 82
17e: 9f 4f sbci r25, 0xFF ; 255
180: fc 01 movw r30, r24
182: c5 91 lpm r28, Z+
184: d4 91 lpm r29, Z
if (mode == INPUT) {
uint8_t oldSREG = SREG;
186: 9f b7 in r25, 0x3f ; 63
// JWS: can I let the optimizer do this?
reg = portModeRegister(port);
out = portOutputRegister(port);
if (mode == INPUT) {
188: 61 11 cpse r22, r1
18a: 08 c0 rjmp .+16 ; 0x19c <pinMode+0x4a>
uint8_t oldSREG = SREG;
cli();
18c: f8 94 cli
*reg &= ~bit;
18e: 8c 91 ld r24, X
190: 20 95 com r18
192: 82 23 and r24, r18
194: 8c 93 st X, r24
*out &= ~bit;
196: 88 81 ld r24, Y
198: 82 23 and r24, r18
19a: 0a c0 rjmp .+20 ; 0x1b0 <pinMode+0x5e>
SREG = oldSREG;
} else if (mode == INPUT_PULLUP) {
19c: 62 30 cpi r22, 0x02 ; 2
19e: 51 f4 brne .+20 ; 0x1b4 <pinMode+0x62>
uint8_t oldSREG = SREG;
cli();
1a0: f8 94 cli
*reg &= ~bit;
1a2: 8c 91 ld r24, X
1a4: 32 2f mov r19, r18
1a6: 30 95 com r19
1a8: 83 23 and r24, r19
1aa: 8c 93 st X, r24
*out |= bit;
1ac: 88 81 ld r24, Y
1ae: 82 2b or r24, r18
1b0: 88 83 st Y, r24
1b2: 04 c0 rjmp .+8 ; 0x1bc <pinMode+0x6a>
SREG = oldSREG;
} else {
uint8_t oldSREG = SREG;
cli();
1b4: f8 94 cli
*reg |= bit;
1b6: 8c 91 ld r24, X
1b8: 82 2b or r24, r18
1ba: 8c 93 st X, r24
SREG = oldSREG;
1bc: 9f bf out 0x3f, r25 ; 63
}
}
1be: df 91 pop r29
1c0: cf 91 pop r28
1c2: 08 95 ret
000001c4 <digitalWrite>:
#endif
}
}
void digitalWrite(uint8_t pin, uint8_t val)
{
1c4: 0f 93 push r16
1c6: 1f 93 push r17
1c8: cf 93 push r28
1ca: df 93 push r29
1cc: 1f 92 push r1
1ce: cd b7 in r28, 0x3d ; 61
1d0: de b7 in r29, 0x3e ; 62
uint8_t timer = digitalPinToTimer(pin);
1d2: 28 2f mov r18, r24
1d4: 30 e0 ldi r19, 0x00 ; 0
1d6: f9 01 movw r30, r18
1d8: e8 59 subi r30, 0x98 ; 152
1da: ff 4f sbci r31, 0xFF ; 255
1dc: 84 91 lpm r24, Z
uint8_t bit = digitalPinToBitMask(pin);
1de: f9 01 movw r30, r18
1e0: e4 58 subi r30, 0x84 ; 132
1e2: ff 4f sbci r31, 0xFF ; 255
1e4: 14 91 lpm r17, Z
uint8_t port = digitalPinToPort(pin);
1e6: f9 01 movw r30, r18
1e8: e0 57 subi r30, 0x70 ; 112
1ea: ff 4f sbci r31, 0xFF ; 255
1ec: 04 91 lpm r16, Z
volatile uint8_t *out;
if (port == NOT_A_PIN) return;
1ee: 00 23 and r16, r16
1f0: c9 f0 breq .+50 ; 0x224 <digitalWrite+0x60>
// If the pin that support PWM output, we need to turn it off
// before doing a digital write.
if (timer != NOT_ON_TIMER) turnOffPWM(timer);
1f2: 88 23 and r24, r24
1f4: 21 f0 breq .+8 ; 0x1fe <digitalWrite+0x3a>
1f6: 69 83 std Y+1, r22 ; 0x01
1f8: 0e 94 80 00 call 0x100 ; 0x100 <turnOffPWM>
1fc: 69 81 ldd r22, Y+1 ; 0x01
out = portOutputRegister(port);
1fe: e0 2f mov r30, r16
200: f0 e0 ldi r31, 0x00 ; 0
202: ee 0f add r30, r30
204: ff 1f adc r31, r31
206: e2 55 subi r30, 0x52 ; 82
208: ff 4f sbci r31, 0xFF ; 255
20a: a5 91 lpm r26, Z+
20c: b4 91 lpm r27, Z
uint8_t oldSREG = SREG;
20e: 9f b7 in r25, 0x3f ; 63
cli();
210: f8 94 cli
if (val == LOW) {
*out &= ~bit;
212: 8c 91 ld r24, X
out = portOutputRegister(port);
uint8_t oldSREG = SREG;
cli();
if (val == LOW) {
214: 61 11 cpse r22, r1
216: 03 c0 rjmp .+6 ; 0x21e <digitalWrite+0x5a>
*out &= ~bit;
218: 10 95 com r17
21a: 81 23 and r24, r17
21c: 01 c0 rjmp .+2 ; 0x220 <digitalWrite+0x5c>
} else {
*out |= bit;
21e: 81 2b or r24, r17
220: 8c 93 st X, r24
}
SREG = oldSREG;
222: 9f bf out 0x3f, r25 ; 63
}
224: 0f 90 pop r0
226: df 91 pop r29
228: cf 91 pop r28
22a: 1f 91 pop r17
22c: 0f 91 pop r16
22e: 08 95 ret
00000230 <digitalRead>:
uint8_t digitalRead(uint8_t pin)
{
230: cf 93 push r28
232: df 93 push r29
uint8_t timer = digitalPinToTimer(pin);
234: 28 2f mov r18, r24
236: 30 e0 ldi r19, 0x00 ; 0
238: f9 01 movw r30, r18
23a: e8 59 subi r30, 0x98 ; 152
23c: ff 4f sbci r31, 0xFF ; 255
23e: 84 91 lpm r24, Z
uint8_t bit = digitalPinToBitMask(pin);
240: f9 01 movw r30, r18
242: e4 58 subi r30, 0x84 ; 132
244: ff 4f sbci r31, 0xFF ; 255
246: d4 91 lpm r29, Z
uint8_t port = digitalPinToPort(pin);
248: f9 01 movw r30, r18
24a: e0 57 subi r30, 0x70 ; 112
24c: ff 4f sbci r31, 0xFF ; 255
24e: c4 91 lpm r28, Z
if (port == NOT_A_PIN) return LOW;
250: cc 23 and r28, r28
252: 79 f0 breq .+30 ; 0x272 <digitalRead+0x42>
// If the pin that support PWM output, we need to turn it off
// before getting a digital reading.
if (timer != NOT_ON_TIMER) turnOffPWM(timer);
254: 81 11 cpse r24, r1
256: 0e 94 80 00 call 0x100 ; 0x100 <turnOffPWM>
if (*portInputRegister(port) & bit) return HIGH;
25a: ec 2f mov r30, r28
25c: f0 e0 ldi r31, 0x00 ; 0
25e: ee 0f add r30, r30
260: ff 1f adc r31, r31
262: ec 55 subi r30, 0x5C ; 92
264: ff 4f sbci r31, 0xFF ; 255
266: a5 91 lpm r26, Z+
268: b4 91 lpm r27, Z
26a: 9c 91 ld r25, X
26c: 9d 23 and r25, r29
26e: 81 e0 ldi r24, 0x01 ; 1
270: 09 f4 brne .+2 ; 0x274 <digitalRead+0x44>
{
uint8_t timer = digitalPinToTimer(pin);
uint8_t bit = digitalPinToBitMask(pin);
uint8_t port = digitalPinToPort(pin);
if (port == NOT_A_PIN) return LOW;
272: 80 e0 ldi r24, 0x00 ; 0
// before getting a digital reading.
if (timer != NOT_ON_TIMER) turnOffPWM(timer);
if (*portInputRegister(port) & bit) return HIGH;
return LOW;
}
274: df 91 pop r29
276: cf 91 pop r28
278: 08 95 ret
0000027a <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_close>:
global:
*/
ATSextern()
atsvoid_t0ype
_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_close(atstkind_type(atstype_ptrk) arg0)
{
27a: 08 95 ret
0000027c <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_pulseEnable>:
global:
*/
ATSextern()
atsvoid_t0ype
_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_pulseEnable(atstkind_type(atstype_ptrk) arg0)
{
27c: cf 93 push r28
27e: df 93 push r29
280: ec 01 movw r28, r24
letpush(beg)
*/
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 6680(line=178, offs=12) -- 6713(line=178, offs=45)
*/
ATSINSmove_void(tmp78, digitalWrite(ATSSELfltrec(ATSderef(arg0, postiats_tyrec_49), postiats_tyrec_50, atslab__enable_pin), ATSextval(LOW))) ;
282: 60 e0 ldi r22, 0x00 ; 0
284: 8a 81 ldd r24, Y+2 ; 0x02
286: 0e 94 e2 00 call 0x1c4 ; 0x1c4 <digitalWrite>
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
28a: 85 e0 ldi r24, 0x05 ; 5
28c: 8a 95 dec r24
28e: f1 f7 brne .-4 ; 0x28c <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_pulseEnable+0x10>
290: 00 00 nop
ATSINSmove_void(tmp79, _delay_us(ATSPMVf0loat(1.0))) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 6750(line=180, offs=12) -- 6784(line=180, offs=46)
*/
ATSINSmove_void(tmp80, digitalWrite(ATSSELfltrec(ATSderef(arg0, postiats_tyrec_51), postiats_tyrec_52, atslab__enable_pin), ATSextval(HIGH))) ;
292: 61 e0 ldi r22, 0x01 ; 1
294: 8a 81 ldd r24, Y+2 ; 0x02
296: 0e 94 e2 00 call 0x1c4 ; 0x1c4 <digitalWrite>
29a: 95 e0 ldi r25, 0x05 ; 5
29c: 9a 95 dec r25
29e: f1 f7 brne .-4 ; 0x29c <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_pulseEnable+0x20>
2a0: 00 00 nop
ATSINSmove_void(tmp81, _delay_us(ATSPMVf0loat(1.0))) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 6852(line=182, offs=12) -- 6885(line=182, offs=45)
*/
ATSINSmove_void(tmp82, digitalWrite(ATSSELfltrec(ATSderef(arg0, postiats_tyrec_53), postiats_tyrec_54, atslab__enable_pin), ATSextval(LOW))) ;
2a2: 60 e0 ldi r22, 0x00 ; 0
2a4: 8a 81 ldd r24, Y+2 ; 0x02
2a6: 0e 94 e2 00 call 0x1c4 ; 0x1c4 <digitalWrite>
2aa: 8f e8 ldi r24, 0x8F ; 143
2ac: 91 e0 ldi r25, 0x01 ; 1
2ae: 01 97 sbiw r24, 0x01 ; 1
2b0: f1 f7 brne .-4 ; 0x2ae <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_pulseEnable+0x32>
2b2: 00 c0 rjmp .+0 ; 0x2b4 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_pulseEnable+0x38>
2b4: 00 00 nop
/*
INSletpop()
*/
ATSfunbody_end()
ATSreturn_void(tmpret77) ;
} /* end of [_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_pulseEnable] */
2b6: df 91 pop r29
2b8: cf 91 pop r28
2ba: 08 95 ret
000002bc <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_write4bits>:
global:
*/
ATSextern()
atsvoid_t0ype
_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_write4bits(atstkind_type(atstype_ptrk) arg0, atstkind_t0ype(atstype_uint8) arg1)
{
2bc: ff 92 push r15
2be: 0f 93 push r16
2c0: 1f 93 push r17
2c2: cf 93 push r28
2c4: df 93 push r29
2c6: ec 01 movw r28, r24
2c8: f6 2e mov r15, r22
letpush(beg)
*/
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 7097(line=188, offs=12) -- 7131(line=188, offs=46)
*/
ATSINSmove_void(tmp86, pinMode(ATSSELarrptrind(ATSSELfltrec(ATSderef(arg0, postiats_tyrec_55), postiats_tyrec_56, atslab__data_pins), atstkind_t0ype(atstype_uint8), [ATSPMVi0nt(0)]), ATSextval(OUTPUT))) ;
2ca: 61 e0 ldi r22, 0x01 ; 1
2cc: 88 85 ldd r24, Y+8 ; 0x08
2ce: 0e 94 a9 00 call 0x152 ; 0x152 <pinMode>
(atstype_uint8 x, atstype_int n) { return (x << n) ; }
// end of [atspre_g0uint_lsl_uint8]
ATSinline()
atstype_uint8
atspre_g0uint_lsr_uint8
(atstype_uint8 x, atstype_int n) { return (x >> n) ; }
2d2: 0f 2d mov r16, r15
2d4: 10 e0 ldi r17, 0x00 ; 0
/*
/home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 458(line=13, offs=1) -- 618(line=16, offs=3)
*/
ATSextcode_beg()
inline uint8_t atspre_uint8_bit_or(uint8_t a, uint8_t b) { return (a | b); }
inline uint8_t atspre_uint8_bit_and(uint8_t a, uint8_t b) { return (a & b); }
2d6: 6f 2d mov r22, r15
2d8: 61 70 andi r22, 0x01 ; 1
ATSINSmove(tmp88, uint8_to_highlow_32(tmp89)) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 7143(line=189, offs=12) -- 7205(line=189, offs=74)
*/
ATSINSmove_void(tmp87, digitalWrite(ATSSELarrptrind(ATSSELfltrec(ATSderef(arg0, postiats_tyrec_57), postiats_tyrec_58, atslab__data_pins), atstkind_t0ype(atstype_uint8), [ATSPMVi0nt(0)]), tmp88)) ;
2da: 88 85 ldd r24, Y+8 ; 0x08
2dc: 0e 94 e2 00 call 0x1c4 ; 0x1c4 <digitalWrite>
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 7217(line=190, offs=12) -- 7251(line=190, offs=46)
*/
ATSINSmove_void(tmp90, pinMode(ATSSELarrptrind(ATSSELfltrec(ATSderef(arg0, postiats_tyrec_59), postiats_tyrec_60, atslab__data_pins), atstkind_t0ype(atstype_uint8), [ATSPMVi0nt(1)]), ATSextval(OUTPUT))) ;
2e0: 61 e0 ldi r22, 0x01 ; 1
2e2: 89 85 ldd r24, Y+9 ; 0x09
2e4: 0e 94 a9 00 call 0x152 ; 0x152 <pinMode>
2e8: b8 01 movw r22, r16
2ea: 75 95 asr r23
2ec: 67 95 ror r22
/*
/home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 458(line=13, offs=1) -- 618(line=16, offs=3)
*/
ATSextcode_beg()
inline uint8_t atspre_uint8_bit_or(uint8_t a, uint8_t b) { return (a | b); }
inline uint8_t atspre_uint8_bit_and(uint8_t a, uint8_t b) { return (a & b); }
2ee: 61 70 andi r22, 0x01 ; 1
ATSINSmove(tmp92, uint8_to_highlow_32(tmp93)) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 7263(line=191, offs=12) -- 7325(line=191, offs=74)
*/
ATSINSmove_void(tmp91, digitalWrite(ATSSELarrptrind(ATSSELfltrec(ATSderef(arg0, postiats_tyrec_61), postiats_tyrec_62, atslab__data_pins), atstkind_t0ype(atstype_uint8), [ATSPMVi0nt(1)]), tmp92)) ;
2f0: 89 85 ldd r24, Y+9 ; 0x09
2f2: 0e 94 e2 00 call 0x1c4 ; 0x1c4 <digitalWrite>
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 7337(line=192, offs=12) -- 7371(line=192, offs=46)
*/
ATSINSmove_void(tmp94, pinMode(ATSSELarrptrind(ATSSELfltrec(ATSderef(arg0, postiats_tyrec_63), postiats_tyrec_64, atslab__data_pins), atstkind_t0ype(atstype_uint8), [ATSPMVi0nt(2)]), ATSextval(OUTPUT))) ;
2f6: 61 e0 ldi r22, 0x01 ; 1
2f8: 8a 85 ldd r24, Y+10 ; 0x0a
2fa: 0e 94 a9 00 call 0x152 ; 0x152 <pinMode>
2fe: b8 01 movw r22, r16
300: 75 95 asr r23
302: 67 95 ror r22
304: 75 95 asr r23
306: 67 95 ror r22
/*
/home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 458(line=13, offs=1) -- 618(line=16, offs=3)
*/
ATSextcode_beg()
inline uint8_t atspre_uint8_bit_or(uint8_t a, uint8_t b) { return (a | b); }
inline uint8_t atspre_uint8_bit_and(uint8_t a, uint8_t b) { return (a & b); }
308: 61 70 andi r22, 0x01 ; 1
ATSINSmove(tmp96, uint8_to_highlow_32(tmp97)) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 7383(line=193, offs=12) -- 7445(line=193, offs=74)
*/
ATSINSmove_void(tmp95, digitalWrite(ATSSELarrptrind(ATSSELfltrec(ATSderef(arg0, postiats_tyrec_65), postiats_tyrec_66, atslab__data_pins), atstkind_t0ype(atstype_uint8), [ATSPMVi0nt(2)]), tmp96)) ;
30a: 8a 85 ldd r24, Y+10 ; 0x0a
30c: 0e 94 e2 00 call 0x1c4 ; 0x1c4 <digitalWrite>
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 7457(line=194, offs=12) -- 7491(line=194, offs=46)
*/
ATSINSmove_void(tmp98, pinMode(ATSSELarrptrind(ATSSELfltrec(ATSderef(arg0, postiats_tyrec_67), postiats_tyrec_68, atslab__data_pins), atstkind_t0ype(atstype_uint8), [ATSPMVi0nt(3)]), ATSextval(OUTPUT))) ;
310: 61 e0 ldi r22, 0x01 ; 1
312: 8b 85 ldd r24, Y+11 ; 0x0b
314: 0e 94 a9 00 call 0x152 ; 0x152 <pinMode>
318: b8 01 movw r22, r16
31a: 23 e0 ldi r18, 0x03 ; 3
31c: 75 95 asr r23
31e: 67 95 ror r22
320: 2a 95 dec r18
322: e1 f7 brne .-8 ; 0x31c <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_write4bits+0x60>
/*
/home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 458(line=13, offs=1) -- 618(line=16, offs=3)
*/
ATSextcode_beg()
inline uint8_t atspre_uint8_bit_or(uint8_t a, uint8_t b) { return (a | b); }
inline uint8_t atspre_uint8_bit_and(uint8_t a, uint8_t b) { return (a & b); }
324: 61 70 andi r22, 0x01 ; 1
ATSINSmove(tmp100, uint8_to_highlow_32(tmp101)) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 7503(line=195, offs=12) -- 7565(line=195, offs=74)
*/
ATSINSmove_void(tmp99, digitalWrite(ATSSELarrptrind(ATSSELfltrec(ATSderef(arg0, postiats_tyrec_69), postiats_tyrec_70, atslab__data_pins), atstkind_t0ype(atstype_uint8), [ATSPMVi0nt(3)]), tmp100)) ;
326: 8b 85 ldd r24, Y+11 ; 0x0b
328: 0e 94 e2 00 call 0x1c4 ; 0x1c4 <digitalWrite>
*/
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 7577(line=196, offs=12) -- 7603(line=196, offs=38)
*/
ATSINSmove_void(tmpret83, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_pulseEnable(arg0)) ;
32c: ce 01 movw r24, r28
/*
INSletpop()
*/
ATSfunbody_end()
ATSreturn_void(tmpret83) ;
} /* end of [_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_write4bits] */
32e: df 91 pop r29
330: cf 91 pop r28
332: 1f 91 pop r17
334: 0f 91 pop r16
336: ff 90 pop r15
*/
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 7577(line=196, offs=12) -- 7603(line=196, offs=38)
*/
ATSINSmove_void(tmpret83, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_pulseEnable(arg0)) ;
338: 0c 94 3e 01 jmp 0x27c ; 0x27c <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_pulseEnable>
0000033c <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_send>:
global:
*/
ATSextern()
atsvoid_t0ype
_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_send(atstkind_type(atstype_ptrk) arg0, atstkind_t0ype(atstype_uint8) arg1, uint8_t arg2)
{
33c: 1f 93 push r17
33e: cf 93 push r28
340: df 93 push r29
342: ec 01 movw r28, r24
344: 16 2f mov r17, r22
letpush(beg)
*/
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 6460(line=171, offs=12) -- 6490(line=171, offs=42)
*/
ATSINSmove_void(tmp73, digitalWrite(ATSSELfltrec(ATSderef(arg0, postiats_tyrec_45), postiats_tyrec_46, atslab__rs_pin), arg2)) ;
346: 64 2f mov r22, r20
348: 88 81 ld r24, Y
34a: 0e 94 e2 00 call 0x1c4 ; 0x1c4 <digitalWrite>
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 6502(line=172, offs=12) -- 6531(line=172, offs=41)
*/
ATSINSmove_void(tmp74, digitalWrite(ATSSELfltrec(ATSderef(arg0, postiats_tyrec_47), postiats_tyrec_48, atslab__rw_pin), ATSextval(LOW))) ;
34e: 60 e0 ldi r22, 0x00 ; 0
350: 89 81 ldd r24, Y+1 ; 0x01
352: 0e 94 e2 00 call 0x1c4 ; 0x1c4 <digitalWrite>
356: 61 2f mov r22, r17
358: 70 e0 ldi r23, 0x00 ; 0
35a: 34 e0 ldi r19, 0x04 ; 4
35c: 75 95 asr r23
35e: 67 95 ror r22
360: 3a 95 dec r19
362: e1 f7 brne .-8 ; 0x35c <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_send+0x20>
ATSINSmove(tmp76, atspre_g0uint_lsr_uint8(arg1, ATSPMVi0nt(4))) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 6543(line=173, offs=12) -- 6580(line=173, offs=49)
*/
ATSINSmove_void(tmp75, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_write4bits(arg0, tmp76)) ;
364: ce 01 movw r24, r28
366: 0e 94 5e 01 call 0x2bc ; 0x2bc <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_write4bits>
*/
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 6592(line=174, offs=12) -- 6624(line=174, offs=44)
*/
ATSINSmove_void(tmpret72, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_write4bits(arg0, arg1)) ;
36a: 61 2f mov r22, r17
36c: ce 01 movw r24, r28
/*
INSletpop()
*/
ATSfunbody_end()
ATSreturn_void(tmpret72) ;
} /* end of [_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_send] */
36e: df 91 pop r29
370: cf 91 pop r28
372: 1f 91 pop r17
*/
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 6592(line=174, offs=12) -- 6624(line=174, offs=44)
*/
ATSINSmove_void(tmpret72, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_write4bits(arg0, arg1)) ;
374: 0c 94 5e 01 jmp 0x2bc ; 0x2bc <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_write4bits>
00000378 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_write>:
*/
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 5943(line=154, offs=12) -- 5975(line=154, offs=44)
*/
ATSINSmove_void(tmpret67, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_send(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(arg0)), arg1, ATSextval(HIGH))) ;
378: 41 e0 ldi r20, 0x01 ; 1
37a: 0c 94 9e 01 jmp 0x33c ; 0x33c <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_send>
0000037e <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_print>:
global:
*/
ATSextern()
atsvoid_t0ype
_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_print(atsrefarg0_type(atstkind_type(atstype_ptrk)) arg0, atstkind_type(atstype_ptrk) arg1, atstkind_t0ype(atstype_size) arg2, atstkind_t0ype(atstype_int) arg3)
{
37e: ef 92 push r14
380: ff 92 push r15
382: 0f 93 push r16
384: 1f 93 push r17
386: cf 93 push r28
388: df 93 push r29
38a: ec 01 movw r28, r24
/* ****** ****** */
ATSinline()
atstype_ptr
atspre_add_ptr_bsz
(atstype_ptr p, atstype_size ofs) { return ((char*)p + ofs) ; }
38c: 62 0f add r22, r18
38e: 73 1f adc r23, r19
ATSINSmove(tmp48, ATSLIB_056_prelude__gt_g0int_int__5__2(arg2, ATSPMVi0nt(0))) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 5682(line=145, offs=14) -- 5747(line=145, offs=79)
*/
ATSif(
390: 10 16 cp r1, r16
392: 11 06 cpc r1, r17
394: 54 f4 brge .+20 ; 0x3aa <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_print+0x2c>
*/
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 5597(line=142, offs=14) -- 5615(line=142, offs=32)
*/
ATSINSmove_void(tmpret43, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_write(ATSPMVrefarg0(arg0), tmp44)) ;
396: fb 01 movw r30, r22
398: 61 91 ld r22, Z+
39a: 7f 01 movw r14, r30
39c: ce 01 movw r24, r28
39e: 0e 94 bc 01 call 0x378 ; 0x378 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_write>
(atstype_int x1, atstype_int x2) { return (x1 + x2) ; }
// end of [atspre_g0int_add_int]
ATSinline()
atstype_int
atspre_g0int_sub_int
(atstype_int x1, atstype_int x2) { return (x1 - x2) ; }
3a2: 01 50 subi r16, 0x01 ; 1
3a4: 11 09 sbc r17, r1
3a6: b7 01 movw r22, r14
3a8: f3 cf rjmp .-26 ; 0x390 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_print+0x12>
/*
INSletpop()
*/
ATSfunbody_end()
ATSreturn_void(tmpret42) ;
} /* end of [_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_print] */
3aa: df 91 pop r29
3ac: cf 91 pop r28
3ae: 1f 91 pop r17
3b0: 0f 91 pop r16
3b2: ff 90 pop r15
3b4: ef 90 pop r14
3b6: 08 95 ret
000003b8 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_command>:
*/
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 6367(line=167, offs=12) -- 6398(line=167, offs=43)
*/
ATSINSmove_void(tmpret71, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_send(arg0, arg1, ATSextval(LOW))) ;
3b8: 40 e0 ldi r20, 0x00 ; 0
3ba: 0c 94 9e 01 jmp 0x33c ; 0x33c <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_send>
000003be <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_clear>:
/* (*nothing*) */
/* (*nothing*) */
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 4954(line=126, offs=12) -- 4994(line=126, offs=52)
*/
ATSINSmove_void(tmp32, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_command(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(arg0)), ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(0x01)))) ;
3be: 61 e0 ldi r22, 0x01 ; 1
3c0: 0e 94 dc 01 call 0x3b8 ; 0x3b8 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_command>
3c4: 8f e3 ldi r24, 0x3F ; 63
3c6: 9f e1 ldi r25, 0x1F ; 31
3c8: 01 97 sbiw r24, 0x01 ; 1
3ca: f1 f7 brne .-4 ; 0x3c8 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_clear+0xa>
3cc: 00 c0 rjmp .+0 ; 0x3ce <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_clear+0x10>
3ce: 00 00 nop
3d0: 08 95 ret
000003d2 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_setCursor>:
ATSINSmove(tmp35, ATSLIB_056_prelude__gt_g0int_int__5__1(arg2, ATSPMVi0nt(0))) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 5250(line=133, offs=17) -- 5280(line=133, offs=47)
*/
ATSif(
3d2: 14 16 cp r1, r20
3d4: 15 06 cpc r1, r21
3d6: 14 f4 brge .+4 ; 0x3dc <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_setCursor+0xa>
tmp35
) ATSthen() {
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 5266(line=133, offs=33) -- 5270(line=133, offs=37)
*/
ATSINSmove(tmp34, ATSPMVi0nt(0x40)) ;
3d8: 20 e4 ldi r18, 0x40 ; 64
3da: 01 c0 rjmp .+2 ; 0x3de <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_setCursor+0xc>
} ATSelse() {
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 5276(line=133, offs=43) -- 5280(line=133, offs=47)
*/
ATSINSmove(tmp34, ATSPMVi0nt(0x00)) ;
3dc: 20 e0 ldi r18, 0x00 ; 0
(atstype_uint8 x) { return (x >> 1) ; }
// end of [atspre_g0uint_pred_uint8]
ATSinline()
atstype_uint8
atspre_g0uint_add_uint8
(atstype_uint8 x1, atstype_uint8 x2) { return (x1 + x2) ; }
3de: 62 0f add r22, r18
ATSstatmpdec(statmpref0, postiats_tyrec_0) ;
/*
/home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 458(line=13, offs=1) -- 618(line=16, offs=3)
*/
ATSextcode_beg()
inline uint8_t atspre_uint8_bit_or(uint8_t a, uint8_t b) { return (a | b); }
3e0: 60 68 ori r22, 0x80 ; 128
ATSINSmove(tmp40, atspre_uint8_bit_or(ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(0x80)), tmp41)) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 5336(line=135, offs=12) -- 5415(line=135, offs=91)
*/
ATSINSmove_void(tmpret33, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_command(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(arg0)), tmp40)) ;
3e2: 0c 94 dc 01 jmp 0x3b8 ; 0x3b8 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_command>
000003e6 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_display>:
*/
/* (*nothing*) */
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 6107(line=160, offs=12) -- 6141(line=160, offs=46)
*/
ATSINSstore(ATSSELfltrec(ATSderef(arg0, postiats_tyrec_41), postiats_tyrec_42, atslab__displaycontrol), ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(0x04))) ;
3e6: 24 e0 ldi r18, 0x04 ; 4
3e8: fc 01 movw r30, r24
3ea: 24 83 std Z+4, r18 ; 0x04
ATSINSmove(tmp70, atspre_uint8_bit_or(ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(0x08)), tmp69)) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 6235(line=163, offs=12) -- 6308(line=163, offs=85)
*/
ATSINSmove_void(tmpret68, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_command(arg0, tmp70)) ;
3ec: 6c e0 ldi r22, 0x0C ; 12
3ee: 0c 94 dc 01 jmp 0x3b8 ; 0x3b8 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_command>
000003f2 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_open>:
global:
*/
ATSextern()
atstkind_type(atstype_ptrk)
_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_open(atstkind_t0ype(atstype_uint8) arg0, atstkind_t0ype(atstype_uint8) arg1, atstkind_t0ype(atstype_uint8) arg2, atstkind_t0ype(atstype_uint8) arg3, atstkind_t0ype(atstype_uint8) arg4, atstkind_t0ype(atstype_uint8) arg5, atstkind_t0ype(atstype_uint8) arg6)
{
3f2: af 92 push r10
3f4: bf 92 push r11
3f6: cf 92 push r12
3f8: ef 92 push r14
3fa: 0f 93 push r16
3fc: cf 93 push r28
3fe: df 93 push r29
/* (*nothing*) */
/* (*nothing*) */
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 2089(line=59, offs=14) -- 2108(line=59, offs=33)
*/
ATSINSstore(ATSSELfltrec(ATSderef(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(ATSPMVcastfn(castvwtp0, atstype_boxed, ATSPMVptrof(statmpref0)))), postiats_tyrec_1), postiats_tyrec_2, atslab__rs_pin), arg0) ;
400: e0 ec ldi r30, 0xC0 ; 192
402: f2 e0 ldi r31, 0x02 ; 2
404: 80 83 st Z, r24
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 2122(line=60, offs=14) -- 2141(line=60, offs=33)
*/
ATSINSstore(ATSSELfltrec(ATSderef(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(ATSPMVcastfn(castvwtp0, atstype_boxed, ATSPMVptrof(statmpref0)))), postiats_tyrec_3), postiats_tyrec_4, atslab__rw_pin), arg1) ;
406: 51 ec ldi r21, 0xC1 ; 193
408: a5 2e mov r10, r21
40a: 52 e0 ldi r21, 0x02 ; 2
40c: b5 2e mov r11, r21
40e: d5 01 movw r26, r10
410: 6c 93 st X, r22
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 2155(line=61, offs=14) -- 2178(line=61, offs=37)
*/
ATSINSstore(ATSSELfltrec(ATSderef(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(ATSPMVcastfn(castvwtp0, atstype_boxed, ATSPMVptrof(statmpref0)))), postiats_tyrec_5), postiats_tyrec_6, atslab__enable_pin), arg2) ;
412: c2 ec ldi r28, 0xC2 ; 194
414: d2 e0 ldi r29, 0x02 ; 2
416: 48 83 st Y, r20
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 2192(line=62, offs=14) -- 2214(line=62, offs=36)
*/
ATSINSstore(ATSSELarrptrind(ATSSELfltrec(ATSderef(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(ATSPMVcastfn(castvwtp0, atstype_boxed, ATSPMVptrof(statmpref0)))), postiats_tyrec_7), postiats_tyrec_8, atslab__data_pins), atstkind_t0ype(atstype_uint8), [ATSPMVi0nt(0)]), arg3) ;
418: 20 87 std Z+8, r18 ; 0x08
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 2228(line=63, offs=14) -- 2250(line=63, offs=36)
*/
ATSINSstore(ATSSELarrptrind(ATSSELfltrec(ATSderef(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(ATSPMVcastfn(castvwtp0, atstype_boxed, ATSPMVptrof(statmpref0)))), postiats_tyrec_9), postiats_tyrec_10, atslab__data_pins), atstkind_t0ype(atstype_uint8), [ATSPMVi0nt(1)]), arg4) ;
41a: 01 87 std Z+9, r16 ; 0x09
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 2264(line=64, offs=14) -- 2286(line=64, offs=36)
*/
ATSINSstore(ATSSELarrptrind(ATSSELfltrec(ATSderef(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(ATSPMVcastfn(castvwtp0, atstype_boxed, ATSPMVptrof(statmpref0)))), postiats_tyrec_11), postiats_tyrec_12, atslab__data_pins), atstkind_t0ype(atstype_uint8), [ATSPMVi0nt(2)]), arg5) ;
41c: e2 86 std Z+10, r14 ; 0x0a
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 2300(line=65, offs=14) -- 2322(line=65, offs=36)
*/
ATSINSstore(ATSSELarrptrind(ATSSELfltrec(ATSderef(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(ATSPMVcastfn(castvwtp0, atstype_boxed, ATSPMVptrof(statmpref0)))), postiats_tyrec_13), postiats_tyrec_14, atslab__data_pins), atstkind_t0ype(atstype_uint8), [ATSPMVi0nt(3)]), arg6) ;
41e: c3 86 std Z+11, r12 ; 0x0b
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 2336(line=66, offs=14) -- 2363(line=66, offs=41)
*/
ATSINSmove_void(tmp2, pinMode(ATSSELfltrec(ATSderef(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(ATSPMVcastfn(castvwtp0, atstype_boxed, ATSPMVptrof(statmpref0)))), postiats_tyrec_15), postiats_tyrec_16, atslab__rs_pin), ATSextval(OUTPUT))) ;
420: 61 e0 ldi r22, 0x01 ; 1
422: 0e 94 a9 00 call 0x152 ; 0x152 <pinMode>
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 2377(line=67, offs=14) -- 2404(line=67, offs=41)
*/
ATSINSmove_void(tmp3, pinMode(ATSSELfltrec(ATSderef(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(ATSPMVcastfn(castvwtp0, atstype_boxed, ATSPMVptrof(statmpref0)))), postiats_tyrec_17), postiats_tyrec_18, atslab__rw_pin), ATSextval(OUTPUT))) ;
426: 61 e0 ldi r22, 0x01 ; 1
428: f5 01 movw r30, r10
42a: 80 81 ld r24, Z
42c: 0e 94 a9 00 call 0x152 ; 0x152 <pinMode>
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 2418(line=68, offs=14) -- 2449(line=68, offs=45)
*/
ATSINSmove_void(tmp4, pinMode(ATSSELfltrec(ATSderef(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(ATSPMVcastfn(castvwtp0, atstype_boxed, ATSPMVptrof(statmpref0)))), postiats_tyrec_19), postiats_tyrec_20, atslab__enable_pin), ATSextval(OUTPUT))) ;
430: 61 e0 ldi r22, 0x01 ; 1
432: 88 81 ld r24, Y
434: 0e 94 a9 00 call 0x152 ; 0x152 <pinMode>
ATSINSmove(tmp5, atspre_uint8_bit_or(ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(0x00)), tmp6)) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 2574(line=72, offs=14) -- 2662(line=72, offs=102)
*/
ATSINSstore(ATSSELfltrec(ATSderef(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(ATSPMVcastfn(castvwtp0, atstype_boxed, ATSPMVptrof(statmpref0)))), postiats_tyrec_21), postiats_tyrec_22, atslab__displayfunction), tmp5) ;
438: 88 e0 ldi r24, 0x08 ; 8
43a: 80 93 c3 02 sts 0x02C3, r24
*/
/* (*nothing*) */
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 2826(line=76, offs=16) -- 2846(line=76, offs=36)
*/
ATSINSstore(ATSSELfltrec(ATSderef(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(arg0)), postiats_tyrec_23), postiats_tyrec_24, atslab__numlines), arg1) ;
43e: 82 e0 ldi r24, 0x02 ; 2
440: 80 93 c6 02 sts 0x02C6, r24
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 2862(line=77, offs=16) -- 2887(line=77, offs=41)
*/
ATSINSstore(ATSSELfltrec(ATSderef(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(arg0)), postiats_tyrec_25), postiats_tyrec_26, atslab__currline), ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(0))) ;
444: 10 92 c7 02 sts 0x02C7, r1
448: ff ef ldi r31, 0xFF ; 255
44a: 20 e7 ldi r18, 0x70 ; 112
44c: 82 e0 ldi r24, 0x02 ; 2
44e: f1 50 subi r31, 0x01 ; 1
450: 20 40 sbci r18, 0x00 ; 0
452: 80 40 sbci r24, 0x00 ; 0
454: e1 f7 brne .-8 ; 0x44e <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_open+0x5c>
456: 00 c0 rjmp .+0 ; 0x458 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_open+0x66>
458: 00 00 nop
ATSINSmove_void(tmp8, _delay_us(ATSPMVf0loat(50000.0))) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 2936(line=79, offs=16) -- 2965(line=79, offs=45)
*/
ATSINSmove_void(tmp9, digitalWrite(ATSSELfltrec(ATSderef(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(arg0)), postiats_tyrec_27), postiats_tyrec_28, atslab__rs_pin), ATSextval(LOW))) ;
45a: 60 e0 ldi r22, 0x00 ; 0
45c: 80 91 c0 02 lds r24, 0x02C0
460: 0e 94 e2 00 call 0x1c4 ; 0x1c4 <digitalWrite>
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 2981(line=80, offs=16) -- 3014(line=80, offs=49)
*/
ATSINSmove_void(tmp10, digitalWrite(ATSSELfltrec(ATSderef(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(arg0)), postiats_tyrec_29), postiats_tyrec_30, atslab__enable_pin), ATSextval(LOW))) ;
464: 60 e0 ldi r22, 0x00 ; 0
466: 80 91 c2 02 lds r24, 0x02C2
46a: 0e 94 e2 00 call 0x1c4 ; 0x1c4 <digitalWrite>
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 3030(line=81, offs=16) -- 3059(line=81, offs=45)
*/
ATSINSmove_void(tmp11, digitalWrite(ATSSELfltrec(ATSderef(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(arg0)), postiats_tyrec_31), postiats_tyrec_32, atslab__rw_pin), ATSextval(LOW))) ;
46e: 60 e0 ldi r22, 0x00 ; 0
470: 80 91 c1 02 lds r24, 0x02C1
474: 0e 94 e2 00 call 0x1c4 ; 0x1c4 <digitalWrite>
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 3088(line=82, offs=29) -- 3106(line=82, offs=47)
*/
ATSINSmove(tmp12, ATSSELfltrec(ATSderef(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(arg0)), postiats_tyrec_33), postiats_tyrec_34, atslab__displayfunction)) ;
478: c0 91 c3 02 lds r28, 0x02C3
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 3255(line=85, offs=16) -- 3295(line=85, offs=56)
*/
ATSINSmove_void(tmp13, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_write4bits(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(arg0)), ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(0x03)))) ;
47c: 63 e0 ldi r22, 0x03 ; 3
47e: 80 ec ldi r24, 0xC0 ; 192
480: 92 e0 ldi r25, 0x02 ; 2
482: 0e 94 5e 01 call 0x2bc ; 0x2bc <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_write4bits>
486: af e4 ldi r26, 0x4F ; 79
488: b6 e4 ldi r27, 0x46 ; 70
48a: 11 97 sbiw r26, 0x01 ; 1
48c: f1 f7 brne .-4 ; 0x48a <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_open+0x98>
48e: 00 c0 rjmp .+0 ; 0x490 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_open+0x9e>
490: 00 00 nop
ATSINSmove_void(tmp14, _delay_us(ATSPMVf0loat(4500.0))) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 3343(line=87, offs=16) -- 3383(line=87, offs=56)
*/
ATSINSmove_void(tmp15, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_write4bits(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(arg0)), ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(0x03)))) ;
492: 63 e0 ldi r22, 0x03 ; 3
494: 80 ec ldi r24, 0xC0 ; 192
496: 92 e0 ldi r25, 0x02 ; 2
498: 0e 94 5e 01 call 0x2bc ; 0x2bc <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_write4bits>
49c: ef e4 ldi r30, 0x4F ; 79
49e: f6 e4 ldi r31, 0x46 ; 70
4a0: 31 97 sbiw r30, 0x01 ; 1
4a2: f1 f7 brne .-4 ; 0x4a0 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_open+0xae>
4a4: 00 c0 rjmp .+0 ; 0x4a6 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_open+0xb4>
4a6: 00 00 nop
ATSINSmove_void(tmp16, _delay_us(ATSPMVf0loat(4500.0))) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 3445(line=89, offs=16) -- 3485(line=89, offs=56)
*/
ATSINSmove_void(tmp17, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_write4bits(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(arg0)), ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(0x03)))) ;
4a8: 63 e0 ldi r22, 0x03 ; 3
4aa: 80 ec ldi r24, 0xC0 ; 192
4ac: 92 e0 ldi r25, 0x02 ; 2
4ae: 0e 94 5e 01 call 0x2bc ; 0x2bc <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_write4bits>
4b2: 87 e5 ldi r24, 0x57 ; 87
4b4: 92 e0 ldi r25, 0x02 ; 2
4b6: 01 97 sbiw r24, 0x01 ; 1
4b8: f1 f7 brne .-4 ; 0x4b6 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_open+0xc4>
4ba: 00 c0 rjmp .+0 ; 0x4bc <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_open+0xca>
4bc: 00 00 nop
ATSINSmove_void(tmp18, _delay_us(ATSPMVf0loat(150.0))) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 3545(line=91, offs=16) -- 3585(line=91, offs=56)
*/
ATSINSmove_void(tmp19, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_write4bits(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(arg0)), ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(0x02)))) ;
4be: 62 e0 ldi r22, 0x02 ; 2
4c0: 80 ec ldi r24, 0xC0 ; 192
4c2: 92 e0 ldi r25, 0x02 ; 2
4c4: 0e 94 5e 01 call 0x2bc ; 0x2bc <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_write4bits>
ATSstatmpdec(statmpref0, postiats_tyrec_0) ;
/*
/home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 458(line=13, offs=1) -- 618(line=16, offs=3)
*/
ATSextcode_beg()
inline uint8_t atspre_uint8_bit_or(uint8_t a, uint8_t b) { return (a | b); }
4c8: 6c 2f mov r22, r28
4ca: 60 62 ori r22, 0x20 ; 32
ATSINSmove(tmp21, atspre_uint8_bit_or(ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(0x20)), tmp12)) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 3725(line=94, offs=16) -- 3796(line=94, offs=87)
*/
ATSINSmove_void(tmp20, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_command(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(arg0)), tmp21)) ;
4cc: 80 ec ldi r24, 0xC0 ; 192
4ce: 92 e0 ldi r25, 0x02 ; 2
4d0: 0e 94 dc 01 call 0x3b8 ; 0x3b8 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_command>
ATSINSmove(tmp22, atspre_uint8_bit_or(ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(0x04)), tmp23)) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 3996(line=99, offs=16) -- 4089(line=99, offs=109)
*/
ATSINSstore(ATSSELfltrec(ATSderef(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(arg0)), postiats_tyrec_35), postiats_tyrec_36, atslab__displaycontrol), tmp22) ;
4d4: 84 e0 ldi r24, 0x04 ; 4
4d6: 80 93 c4 02 sts 0x02C4, r24
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 4105(line=100, offs=16) -- 4127(line=100, offs=38)
*/
ATSINSmove_void(tmp24, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_display(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(arg0)))) ;
4da: 80 ec ldi r24, 0xC0 ; 192
4dc: 92 e0 ldi r25, 0x02 ; 2
4de: 0e 94 f3 01 call 0x3e6 ; 0x3e6 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_display>
ATSINSmove(tmp25, atspre_uint8_bit_or(ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(0x02)), ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(0x00)))) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 4313(line=104, offs=16) -- 4384(line=104, offs=87)
*/
ATSINSstore(ATSSELfltrec(ATSderef(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(arg0)), postiats_tyrec_37), postiats_tyrec_38, atslab__displaymode), tmp25) ;
4e2: 82 e0 ldi r24, 0x02 ; 2
4e4: 80 93 c5 02 sts 0x02C5, r24
ATSINSmove(tmp28, atspre_uint8_bit_or(ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(0x04)), tmp26)) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 4510(line=108, offs=16) -- 4578(line=108, offs=84)
*/
ATSINSmove_void(tmp27, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_command(ATSPMVcastfn(LCD_takeout_struct, atstkind_type(atstype_ptrk), ATSPMVrefarg0(arg0)), tmp28)) ;
4e8: 66 e0 ldi r22, 0x06 ; 6
4ea: 80 ec ldi r24, 0xC0 ; 192
4ec: 92 e0 ldi r25, 0x02 ; 2
4ee: 0e 94 dc 01 call 0x3b8 ; 0x3b8 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_command>
*/
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/lcd.dats: 4664(line=111, offs=16) -- 4677(line=111, offs=29)
*/
ATSINSmove_void(tmpret7, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_clear(ATSPMVrefarg0(arg0))) ;
4f2: 80 ec ldi r24, 0xC0 ; 192
4f4: 92 e0 ldi r25, 0x02 ; 2
4f6: 0e 94 df 01 call 0x3be ; 0x3be <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_clear>
/*
INSletpop()
*/
ATSfunbody_end()
ATSreturn(tmpret1) ;
} /* end of [_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_open] */
4fa: 80 ec ldi r24, 0xC0 ; 192
4fc: 92 e0 ldi r25, 0x02 ; 2
4fe: df 91 pop r29
500: cf 91 pop r28
502: 0f 91 pop r16
504: ef 90 pop r14
506: cf 90 pop r12
508: bf 90 pop r11
50a: af 90 pop r10
50c: 08 95 ret
0000050e <mainats_void_0>:
letpush(beg)
*/
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/main.dats: 1213(line=28, offs=13) -- 1307(line=28, offs=107)
*/
ATSINSmove(tmp25, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_open(ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(8)), ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(13)), ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(9)), ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(4)), ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(5)), ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(6)), ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(7)))) ;
50e: 87 e0 ldi r24, 0x07 ; 7
510: c8 2e mov r12, r24
512: 96 e0 ldi r25, 0x06 ; 6
514: e9 2e mov r14, r25
516: 05 e0 ldi r16, 0x05 ; 5
518: 24 e0 ldi r18, 0x04 ; 4
51a: 49 e0 ldi r20, 0x09 ; 9
51c: 6d e0 ldi r22, 0x0D ; 13
51e: 88 e0 ldi r24, 0x08 ; 8
520: 0e 94 f9 01 call 0x3f2 ; 0x3f2 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_open>
524: ec 01 movw r28, r24
ATSINSmove(tmp8, atspre_g1uint_lt_size(tmp9, tmp16)) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/main.dats: 956(line=21, offs=14) -- 1017(line=21, offs=75)
*/
ATSif(
526: c1 2c mov r12, r1
528: d1 2c mov r13, r1
52a: 76 01 movw r14, r12
letpush(beg)
*/
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/main.dats: 714(line=16, offs=14) -- 748(line=16, offs=48)
*/
ATSINSmove_void(tmp2, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_setCursor(ATSPMVrefarg0(arg0), ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(1)), ATSPMVi0nt(0))) ;
52c: 40 e0 ldi r20, 0x00 ; 0
52e: 50 e0 ldi r21, 0x00 ; 0
530: 61 e0 ldi r22, 0x01 ; 1
532: ce 01 movw r24, r28
534: 0e 94 e9 01 call 0x3d2 ; 0x3d2 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_setCursor>
ATSINSmove(tmp4, atspre_g1int2uint_int_size(ATSPMVi0nt(0))) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/main.dats: 762(line=17, offs=14) -- 807(line=17, offs=59)
*/
ATSINSmove_void(tmp3, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_print(ATSPMVrefarg0(arg0), ATSPMVstring("<ATS running!>"), tmp4, ATSPMVi0nt(14))) ;
538: 0e e0 ldi r16, 0x0E ; 14
53a: 10 e0 ldi r17, 0x00 ; 0
53c: 20 e0 ldi r18, 0x00 ; 0
53e: 30 e0 ldi r19, 0x00 ; 0
540: a9 01 movw r20, r18
542: 60 e0 ldi r22, 0x00 ; 0
544: 71 e0 ldi r23, 0x01 ; 1
546: ce 01 movw r24, r28
548: 0e 94 bf 01 call 0x37e ; 0x37e <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_print>
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/main.dats: 821(line=18, offs=14) -- 855(line=18, offs=48)
*/
ATSINSmove_void(tmp5, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_setCursor(ATSPMVrefarg0(arg0), ATSPMVcastfn(cast, atstkind_t0ype(atstype_uint8), ATSPMVi0nt(0)), ATSPMVi0nt(1))) ;
54c: 41 e0 ldi r20, 0x01 ; 1
54e: 50 e0 ldi r21, 0x00 ; 0
550: 60 e0 ldi r22, 0x00 ; 0
552: ce 01 movw r24, r28
554: 0e 94 e9 01 call 0x3d2 ; 0x3d2 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_setCursor>
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/main.dats: 869(line=19, offs=14) -- 905(line=19, offs=50)
*/
ATSINSmove_void(tmp6, _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_print(ATSPMVrefarg0(arg0), arg1, arg2, ATSPMVintrep(16))) ;
558: 00 e1 ldi r16, 0x10 ; 16
55a: 10 e0 ldi r17, 0x00 ; 0
55c: a7 01 movw r20, r14
55e: 96 01 movw r18, r12
560: 6f e0 ldi r22, 0x0F ; 15
562: 71 e0 ldi r23, 0x01 ; 1
564: ce 01 movw r24, r28
566: 0e 94 bf 01 call 0x37e ; 0x37e <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_print>
#else
//round up by default
__ticks_dc = (uint32_t)(ceil(fabs(__tmp)));
#endif
__builtin_avr_delay_cycles(__ticks_dc);
56a: 2f ef ldi r18, 0xFF ; 255
56c: 87 e8 ldi r24, 0x87 ; 135
56e: 93 e1 ldi r25, 0x13 ; 19
570: 21 50 subi r18, 0x01 ; 1
572: 80 40 sbci r24, 0x00 ; 0
574: 90 40 sbci r25, 0x00 ; 0
576: e1 f7 brne .-8 ; 0x570 <mainats_void_0+0x62>
578: 00 c0 rjmp .+0 ; 0x57a <mainats_void_0+0x6c>
57a: 00 00 nop
(atstype_size x) { return (x >> 1) ; }
// end of [atspre_g0uint_half_size]
ATSinline()
atstype_size
atspre_g0uint_add_size
(atstype_size x1, atstype_size x2) { return (x1 + x2) ; }
57c: d7 01 movw r26, r14
57e: c6 01 movw r24, r12
580: 40 96 adiw r24, 0x10 ; 16
582: a1 1d adc r26, r1
584: b1 1d adc r27, r1
ATSINSmove(tmp8, atspre_g1uint_lt_size(tmp9, tmp16)) ;
/*
emit_instr: loc0 = /home/kiwamu/src/arduino-ats/demo/lcd_ats/DATS/main.dats: 956(line=21, offs=14) -- 1017(line=21, offs=75)
*/
ATSif(
586: 86 35 cpi r24, 0x56 ; 86
588: 91 40 sbci r25, 0x01 ; 1
58a: a1 05 cpc r26, r1
58c: b1 05 cpc r27, r1
58e: 58 f6 brcc .-106 ; 0x526 <mainats_void_0+0x18>
590: 8f ef ldi r24, 0xFF ; 255
592: c8 1a sub r12, r24
594: d8 0a sbc r13, r24
596: e8 0a sbc r14, r24
598: f8 0a sbc r15, r24
59a: c8 cf rjmp .-112 ; 0x52c <mainats_void_0+0x1e>
0000059c <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_main_056_dats__dynload>:
ATSfunbody_beg()
ATSdynload(/*void*/)
ATSdynloadflag_sta(
_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_main_056_dats__dynloadflag
) ;
ATSif(
59c: 80 91 c8 02 lds r24, 0x02C8
5a0: 90 91 c9 02 lds r25, 0x02C9
5a4: 89 2b or r24, r25
5a6: 31 f4 brne .+12 ; 0x5b4 <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_main_056_dats__dynload+0x18>
ATSCKiseqz(
_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_main_056_dats__dynloadflag
)
) ATSthen() {
ATSdynloadset(_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_main_056_dats__dynloadflag) ;
5a8: 81 e0 ldi r24, 0x01 ; 1
5aa: 90 e0 ldi r25, 0x00 ; 0
5ac: 90 93 c9 02 sts 0x02C9, r25
5b0: 80 93 c8 02 sts 0x02C8, r24
5b4: 08 95 ret
000005b6 <atsruntime_handle_unmatchedval>:
extern
void
atsruntime_handle_unmatchedval
(char *msg0)
{
fprintf(
5b6: 9f 93 push r25
5b8: 8f 93 push r24
5ba: 86 e6 ldi r24, 0x66 ; 102
5bc: 92 e0 ldi r25, 0x02 ; 2
5be: 9f 93 push r25
5c0: 8f 93 push r24
5c2: ee ec ldi r30, 0xCE ; 206
5c4: f2 e0 ldi r31, 0x02 ; 2
5c6: 81 81 ldd r24, Z+1 ; 0x01
5c8: 8f 93 push r24
5ca: 80 81 ld r24, Z
5cc: 8f 93 push r24
5ce: 0e 94 03 03 call 0x606 ; 0x606 <fprintf>
stderr
, "exit(ATS): unmatched value at run-time:\n%s\n", msg0
) ; exit(1) ;
5d2: 81 e0 ldi r24, 0x01 ; 1
5d4: 90 e0 ldi r25, 0x00 ; 0
5d6: 0e 94 c4 05 call 0xb88 ; 0xb88 <_exit>
000005da <atsruntime_handle_unmatchedarg>:
extern
void
atsruntime_handle_unmatchedarg
(char *msg0)
{
fprintf(
5da: 9f 93 push r25
5dc: 8f 93 push r24
5de: 82 e9 ldi r24, 0x92 ; 146
5e0: 92 e0 ldi r25, 0x02 ; 2
5e2: 9f 93 push r25
5e4: 8f 93 push r24
5e6: ee ec ldi r30, 0xCE ; 206
5e8: f2 e0 ldi r31, 0x02 ; 2
5ea: 81 81 ldd r24, Z+1 ; 0x01
5ec: 8f 93 push r24
5ee: 80 81 ld r24, Z
5f0: 8f 93 push r24
5f2: 0e 94 03 03 call 0x606 ; 0x606 <fprintf>
stderr
, "exit(ATS): unmatched funarg at run-time:\n%s\n", msg0
) ; exit(1) ;
5f6: 81 e0 ldi r24, 0x01 ; 1
5f8: 90 e0 ldi r25, 0x00 ; 0
5fa: 0e 94 c4 05 call 0xb88 ; 0xb88 <_exit>
000005fe <main>:
main
(
int argc, char **argv, char **envp
) {
int err = 0 ;
_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_main_056_dats__dynload() ;
5fe: 0e 94 ce 02 call 0x59c ; 0x59c <_057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_main_056_dats__dynload>
ATSmainats_void_0(err) ;
602: 0e 94 87 02 call 0x50e ; 0x50e <mainats_void_0>
00000606 <fprintf>:
606: a0 e0 ldi r26, 0x00 ; 0
608: b0 e0 ldi r27, 0x00 ; 0
60a: e9 e0 ldi r30, 0x09 ; 9
60c: f3 e0 ldi r31, 0x03 ; 3
60e: 0c 94 9d 05 jmp 0xb3a ; 0xb3a <__prologue_saves__+0x20>
612: ae 01 movw r20, r28
614: 47 5f subi r20, 0xF7 ; 247
616: 5f 4f sbci r21, 0xFF ; 255
618: 6f 81 ldd r22, Y+7 ; 0x07
61a: 78 85 ldd r23, Y+8 ; 0x08
61c: 8d 81 ldd r24, Y+5 ; 0x05
61e: 9e 81 ldd r25, Y+6 ; 0x06
620: 0e 94 15 03 call 0x62a ; 0x62a <vfprintf>
624: e2 e0 ldi r30, 0x02 ; 2
626: 0c 94 b9 05 jmp 0xb72 ; 0xb72 <__epilogue_restores__+0x20>
0000062a <vfprintf>:
62a: ac e0 ldi r26, 0x0C ; 12
62c: b0 e0 ldi r27, 0x00 ; 0
62e: eb e1 ldi r30, 0x1B ; 27
630: f3 e0 ldi r31, 0x03 ; 3
632: 0c 94 8d 05 jmp 0xb1a ; 0xb1a <__prologue_saves__>
636: 7c 01 movw r14, r24
638: 6b 01 movw r12, r22
63a: 8a 01 movw r16, r20
63c: fc 01 movw r30, r24
63e: 17 82 std Z+7, r1 ; 0x07
640: 16 82 std Z+6, r1 ; 0x06
642: 83 81 ldd r24, Z+3 ; 0x03
644: 81 ff sbrs r24, 1
646: bd c1 rjmp .+890 ; 0x9c2 <__stack+0xc3>
648: ce 01 movw r24, r28
64a: 01 96 adiw r24, 0x01 ; 1
64c: 4c 01 movw r8, r24
64e: f7 01 movw r30, r14
650: 93 81 ldd r25, Z+3 ; 0x03
652: f6 01 movw r30, r12
654: 93 fd sbrc r25, 3
656: 85 91 lpm r24, Z+
658: 93 ff sbrs r25, 3
65a: 81 91 ld r24, Z+
65c: 6f 01 movw r12, r30
65e: 88 23 and r24, r24
660: 09 f4 brne .+2 ; 0x664 <vfprintf+0x3a>
662: ab c1 rjmp .+854 ; 0x9ba <__stack+0xbb>
664: 85 32 cpi r24, 0x25 ; 37
666: 39 f4 brne .+14 ; 0x676 <vfprintf+0x4c>
668: 93 fd sbrc r25, 3
66a: 85 91 lpm r24, Z+
66c: 93 ff sbrs r25, 3
66e: 81 91 ld r24, Z+
670: 6f 01 movw r12, r30
672: 85 32 cpi r24, 0x25 ; 37
674: 29 f4 brne .+10 ; 0x680 <vfprintf+0x56>
676: b7 01 movw r22, r14
678: 90 e0 ldi r25, 0x00 ; 0
67a: 0e 94 fd 04 call 0x9fa ; 0x9fa <fputc>
67e: e7 cf rjmp .-50 ; 0x64e <vfprintf+0x24>
680: 51 2c mov r5, r1
682: 31 2c mov r3, r1
684: 20 e0 ldi r18, 0x00 ; 0
686: 20 32 cpi r18, 0x20 ; 32
688: a0 f4 brcc .+40 ; 0x6b2 <vfprintf+0x88>
68a: 8b 32 cpi r24, 0x2B ; 43
68c: 69 f0 breq .+26 ; 0x6a8 <vfprintf+0x7e>
68e: 30 f4 brcc .+12 ; 0x69c <vfprintf+0x72>
690: 80 32 cpi r24, 0x20 ; 32
692: 59 f0 breq .+22 ; 0x6aa <vfprintf+0x80>
694: 83 32 cpi r24, 0x23 ; 35
696: 69 f4 brne .+26 ; 0x6b2 <vfprintf+0x88>
698: 20 61 ori r18, 0x10 ; 16
69a: 2c c0 rjmp .+88 ; 0x6f4 <vfprintf+0xca>
69c: 8d 32 cpi r24, 0x2D ; 45
69e: 39 f0 breq .+14 ; 0x6ae <vfprintf+0x84>
6a0: 80 33 cpi r24, 0x30 ; 48
6a2: 39 f4 brne .+14 ; 0x6b2 <vfprintf+0x88>
6a4: 21 60 ori r18, 0x01 ; 1
6a6: 26 c0 rjmp .+76 ; 0x6f4 <vfprintf+0xca>
6a8: 22 60 ori r18, 0x02 ; 2
6aa: 24 60 ori r18, 0x04 ; 4
6ac: 23 c0 rjmp .+70 ; 0x6f4 <vfprintf+0xca>
6ae: 28 60 ori r18, 0x08 ; 8
6b0: 21 c0 rjmp .+66 ; 0x6f4 <vfprintf+0xca>
6b2: 27 fd sbrc r18, 7
6b4: 27 c0 rjmp .+78 ; 0x704 <vfprintf+0xda>
6b6: 30 ed ldi r19, 0xD0 ; 208
6b8: 38 0f add r19, r24
6ba: 3a 30 cpi r19, 0x0A ; 10
6bc: 78 f4 brcc .+30 ; 0x6dc <vfprintf+0xb2>
6be: 26 ff sbrs r18, 6
6c0: 06 c0 rjmp .+12 ; 0x6ce <vfprintf+0xa4>
6c2: fa e0 ldi r31, 0x0A ; 10
6c4: 5f 9e mul r5, r31
6c6: 30 0d add r19, r0
6c8: 11 24 eor r1, r1
6ca: 53 2e mov r5, r19
6cc: 13 c0 rjmp .+38 ; 0x6f4 <vfprintf+0xca>
6ce: 8a e0 ldi r24, 0x0A ; 10
6d0: 38 9e mul r3, r24
6d2: 30 0d add r19, r0
6d4: 11 24 eor r1, r1
6d6: 33 2e mov r3, r19
6d8: 20 62 ori r18, 0x20 ; 32
6da: 0c c0 rjmp .+24 ; 0x6f4 <vfprintf+0xca>
6dc: 8e 32 cpi r24, 0x2E ; 46
6de: 21 f4 brne .+8 ; 0x6e8 <vfprintf+0xbe>
6e0: 26 fd sbrc r18, 6
6e2: 6b c1 rjmp .+726 ; 0x9ba <__stack+0xbb>
6e4: 20 64 ori r18, 0x40 ; 64
6e6: 06 c0 rjmp .+12 ; 0x6f4 <vfprintf+0xca>
6e8: 8c 36 cpi r24, 0x6C ; 108
6ea: 11 f4 brne .+4 ; 0x6f0 <vfprintf+0xc6>
6ec: 20 68 ori r18, 0x80 ; 128
6ee: 02 c0 rjmp .+4 ; 0x6f4 <vfprintf+0xca>
6f0: 88 36 cpi r24, 0x68 ; 104
6f2: 41 f4 brne .+16 ; 0x704 <vfprintf+0xda>
6f4: f6 01 movw r30, r12
6f6: 93 fd sbrc r25, 3
6f8: 85 91 lpm r24, Z+
6fa: 93 ff sbrs r25, 3
6fc: 81 91 ld r24, Z+
6fe: 6f 01 movw r12, r30
700: 81 11 cpse r24, r1
702: c1 cf rjmp .-126 ; 0x686 <vfprintf+0x5c>
704: 98 2f mov r25, r24
706: 9f 7d andi r25, 0xDF ; 223
708: 95 54 subi r25, 0x45 ; 69
70a: 93 30 cpi r25, 0x03 ; 3
70c: 28 f4 brcc .+10 ; 0x718 <vfprintf+0xee>
70e: 0c 5f subi r16, 0xFC ; 252
710: 1f 4f sbci r17, 0xFF ; 255
712: ff e3 ldi r31, 0x3F ; 63
714: f9 83 std Y+1, r31 ; 0x01
716: 0d c0 rjmp .+26 ; 0x732 <vfprintf+0x108>
718: 83 36 cpi r24, 0x63 ; 99
71a: 31 f0 breq .+12 ; 0x728 <vfprintf+0xfe>
71c: 83 37 cpi r24, 0x73 ; 115
71e: 71 f0 breq .+28 ; 0x73c <vfprintf+0x112>
720: 83 35 cpi r24, 0x53 ; 83
722: 09 f0 breq .+2 ; 0x726 <vfprintf+0xfc>
724: 5b c0 rjmp .+182 ; 0x7dc <vfprintf+0x1b2>
726: 22 c0 rjmp .+68 ; 0x76c <vfprintf+0x142>
728: f8 01 movw r30, r16
72a: 80 81 ld r24, Z
72c: 89 83 std Y+1, r24 ; 0x01
72e: 0e 5f subi r16, 0xFE ; 254
730: 1f 4f sbci r17, 0xFF ; 255
732: 44 24 eor r4, r4
734: 43 94 inc r4
736: 51 2c mov r5, r1
738: 54 01 movw r10, r8
73a: 15 c0 rjmp .+42 ; 0x766 <vfprintf+0x13c>
73c: 38 01 movw r6, r16
73e: f2 e0 ldi r31, 0x02 ; 2
740: 6f 0e add r6, r31
742: 71 1c adc r7, r1
744: f8 01 movw r30, r16
746: a0 80 ld r10, Z
748: b1 80 ldd r11, Z+1 ; 0x01
74a: 26 ff sbrs r18, 6
74c: 03 c0 rjmp .+6 ; 0x754 <vfprintf+0x12a>
74e: 65 2d mov r22, r5
750: 70 e0 ldi r23, 0x00 ; 0
752: 02 c0 rjmp .+4 ; 0x758 <vfprintf+0x12e>
754: 6f ef ldi r22, 0xFF ; 255
756: 7f ef ldi r23, 0xFF ; 255
758: c5 01 movw r24, r10
75a: 2c 87 std Y+12, r18 ; 0x0c
75c: 0e 94 f2 04 call 0x9e4 ; 0x9e4 <strnlen>
760: 2c 01 movw r4, r24
762: 83 01 movw r16, r6
764: 2c 85 ldd r18, Y+12 ; 0x0c
766: 2f 77 andi r18, 0x7F ; 127
768: 22 2e mov r2, r18
76a: 17 c0 rjmp .+46 ; 0x79a <vfprintf+0x170>
76c: 38 01 movw r6, r16
76e: f2 e0 ldi r31, 0x02 ; 2
770: 6f 0e add r6, r31
772: 71 1c adc r7, r1
774: f8 01 movw r30, r16
776: a0 80 ld r10, Z
778: b1 80 ldd r11, Z+1 ; 0x01
77a: 26 ff sbrs r18, 6
77c: 03 c0 rjmp .+6 ; 0x784 <vfprintf+0x15a>
77e: 65 2d mov r22, r5
780: 70 e0 ldi r23, 0x00 ; 0
782: 02 c0 rjmp .+4 ; 0x788 <vfprintf+0x15e>
784: 6f ef ldi r22, 0xFF ; 255
786: 7f ef ldi r23, 0xFF ; 255
788: c5 01 movw r24, r10
78a: 2c 87 std Y+12, r18 ; 0x0c
78c: 0e 94 e7 04 call 0x9ce ; 0x9ce <strnlen_P>
790: 2c 01 movw r4, r24
792: 2c 85 ldd r18, Y+12 ; 0x0c
794: 20 68 ori r18, 0x80 ; 128
796: 22 2e mov r2, r18
798: 83 01 movw r16, r6
79a: 23 fc sbrc r2, 3
79c: 1b c0 rjmp .+54 ; 0x7d4 <vfprintf+0x1aa>
79e: 83 2d mov r24, r3
7a0: 90 e0 ldi r25, 0x00 ; 0
7a2: 48 16 cp r4, r24
7a4: 59 06 cpc r5, r25
7a6: b0 f4 brcc .+44 ; 0x7d4 <vfprintf+0x1aa>
7a8: b7 01 movw r22, r14
7aa: 80 e2 ldi r24, 0x20 ; 32
7ac: 90 e0 ldi r25, 0x00 ; 0
7ae: 0e 94 fd 04 call 0x9fa ; 0x9fa <fputc>
7b2: 3a 94 dec r3
7b4: f4 cf rjmp .-24 ; 0x79e <vfprintf+0x174>
7b6: f5 01 movw r30, r10
7b8: 27 fc sbrc r2, 7
7ba: 85 91 lpm r24, Z+
7bc: 27 fe sbrs r2, 7
7be: 81 91 ld r24, Z+
7c0: 5f 01 movw r10, r30
7c2: b7 01 movw r22, r14
7c4: 90 e0 ldi r25, 0x00 ; 0
7c6: 0e 94 fd 04 call 0x9fa ; 0x9fa <fputc>
7ca: 31 10 cpse r3, r1
7cc: 3a 94 dec r3
7ce: f1 e0 ldi r31, 0x01 ; 1
7d0: 4f 1a sub r4, r31
7d2: 51 08 sbc r5, r1
7d4: 41 14 cp r4, r1
7d6: 51 04 cpc r5, r1
7d8: 71 f7 brne .-36 ; 0x7b6 <vfprintf+0x18c>
7da: e5 c0 rjmp .+458 ; 0x9a6 <__stack+0xa7>
7dc: 84 36 cpi r24, 0x64 ; 100
7de: 11 f0 breq .+4 ; 0x7e4 <vfprintf+0x1ba>
7e0: 89 36 cpi r24, 0x69 ; 105
7e2: 39 f5 brne .+78 ; 0x832 <vfprintf+0x208>
7e4: f8 01 movw r30, r16
7e6: 27 ff sbrs r18, 7
7e8: 07 c0 rjmp .+14 ; 0x7f8 <vfprintf+0x1ce>
7ea: 60 81 ld r22, Z
7ec: 71 81 ldd r23, Z+1 ; 0x01
7ee: 82 81 ldd r24, Z+2 ; 0x02
7f0: 93 81 ldd r25, Z+3 ; 0x03
7f2: 0c 5f subi r16, 0xFC ; 252
7f4: 1f 4f sbci r17, 0xFF ; 255
7f6: 08 c0 rjmp .+16 ; 0x808 <vfprintf+0x1de>
7f8: 60 81 ld r22, Z
7fa: 71 81 ldd r23, Z+1 ; 0x01
7fc: 88 27 eor r24, r24
7fe: 77 fd sbrc r23, 7
800: 80 95 com r24
802: 98 2f mov r25, r24
804: 0e 5f subi r16, 0xFE ; 254
806: 1f 4f sbci r17, 0xFF ; 255
808: 2f 76 andi r18, 0x6F ; 111
80a: b2 2e mov r11, r18
80c: 97 ff sbrs r25, 7
80e: 09 c0 rjmp .+18 ; 0x822 <vfprintf+0x1f8>
810: 90 95 com r25
812: 80 95 com r24
814: 70 95 com r23
816: 61 95 neg r22
818: 7f 4f sbci r23, 0xFF ; 255
81a: 8f 4f sbci r24, 0xFF ; 255
81c: 9f 4f sbci r25, 0xFF ; 255
81e: 20 68 ori r18, 0x80 ; 128
820: b2 2e mov r11, r18
822: 2a e0 ldi r18, 0x0A ; 10
824: 30 e0 ldi r19, 0x00 ; 0
826: a4 01 movw r20, r8
828: 0e 94 2f 05 call 0xa5e ; 0xa5e <__ultoa_invert>
82c: a8 2e mov r10, r24
82e: a8 18 sub r10, r8
830: 44 c0 rjmp .+136 ; 0x8ba <vfprintf+0x290>
832: 85 37 cpi r24, 0x75 ; 117
834: 29 f4 brne .+10 ; 0x840 <vfprintf+0x216>
836: 2f 7e andi r18, 0xEF ; 239
838: b2 2e mov r11, r18
83a: 2a e0 ldi r18, 0x0A ; 10
83c: 30 e0 ldi r19, 0x00 ; 0
83e: 25 c0 rjmp .+74 ; 0x88a <vfprintf+0x260>
840: f2 2f mov r31, r18
842: f9 7f andi r31, 0xF9 ; 249
844: bf 2e mov r11, r31
846: 8f 36 cpi r24, 0x6F ; 111
848: c1 f0 breq .+48 ; 0x87a <vfprintf+0x250>
84a: 18 f4 brcc .+6 ; 0x852 <vfprintf+0x228>
84c: 88 35 cpi r24, 0x58 ; 88
84e: 79 f0 breq .+30 ; 0x86e <vfprintf+0x244>
850: b4 c0 rjmp .+360 ; 0x9ba <__stack+0xbb>
852: 80 37 cpi r24, 0x70 ; 112
854: 19 f0 breq .+6 ; 0x85c <vfprintf+0x232>
856: 88 37 cpi r24, 0x78 ; 120
858: 21 f0 breq .+8 ; 0x862 <vfprintf+0x238>
85a: af c0 rjmp .+350 ; 0x9ba <__stack+0xbb>
85c: 2f 2f mov r18, r31
85e: 20 61 ori r18, 0x10 ; 16
860: b2 2e mov r11, r18
862: b4 fe sbrs r11, 4
864: 0d c0 rjmp .+26 ; 0x880 <vfprintf+0x256>
866: 8b 2d mov r24, r11
868: 84 60 ori r24, 0x04 ; 4
86a: b8 2e mov r11, r24
86c: 09 c0 rjmp .+18 ; 0x880 <vfprintf+0x256>
86e: 24 ff sbrs r18, 4
870: 0a c0 rjmp .+20 ; 0x886 <vfprintf+0x25c>
872: 9f 2f mov r25, r31
874: 96 60 ori r25, 0x06 ; 6
876: b9 2e mov r11, r25
878: 06 c0 rjmp .+12 ; 0x886 <vfprintf+0x25c>
87a: 28 e0 ldi r18, 0x08 ; 8
87c: 30 e0 ldi r19, 0x00 ; 0
87e: 05 c0 rjmp .+10 ; 0x88a <vfprintf+0x260>
880: 20 e1 ldi r18, 0x10 ; 16
882: 30 e0 ldi r19, 0x00 ; 0
884: 02 c0 rjmp .+4 ; 0x88a <vfprintf+0x260>
886: 20 e1 ldi r18, 0x10 ; 16
888: 32 e0 ldi r19, 0x02 ; 2
88a: f8 01 movw r30, r16
88c: b7 fe sbrs r11, 7
88e: 07 c0 rjmp .+14 ; 0x89e <vfprintf+0x274>
890: 60 81 ld r22, Z
892: 71 81 ldd r23, Z+1 ; 0x01
894: 82 81 ldd r24, Z+2 ; 0x02
896: 93 81 ldd r25, Z+3 ; 0x03
898: 0c 5f subi r16, 0xFC ; 252
89a: 1f 4f sbci r17, 0xFF ; 255
89c: 06 c0 rjmp .+12 ; 0x8aa <vfprintf+0x280>
89e: 60 81 ld r22, Z
8a0: 71 81 ldd r23, Z+1 ; 0x01
8a2: 80 e0 ldi r24, 0x00 ; 0
8a4: 90 e0 ldi r25, 0x00 ; 0
8a6: 0e 5f subi r16, 0xFE ; 254
8a8: 1f 4f sbci r17, 0xFF ; 255
8aa: a4 01 movw r20, r8
8ac: 0e 94 2f 05 call 0xa5e ; 0xa5e <__ultoa_invert>
8b0: a8 2e mov r10, r24
8b2: a8 18 sub r10, r8
8b4: fb 2d mov r31, r11
8b6: ff 77 andi r31, 0x7F ; 127
8b8: bf 2e mov r11, r31
8ba: b6 fe sbrs r11, 6
8bc: 0b c0 rjmp .+22 ; 0x8d4 <vfprintf+0x2aa>
8be: 2b 2d mov r18, r11
8c0: 2e 7f andi r18, 0xFE ; 254
8c2: a5 14 cp r10, r5
8c4: 50 f4 brcc .+20 ; 0x8da <vfprintf+0x2b0>
8c6: b4 fe sbrs r11, 4
8c8: 0a c0 rjmp .+20 ; 0x8de <vfprintf+0x2b4>
8ca: b2 fc sbrc r11, 2
8cc: 08 c0 rjmp .+16 ; 0x8de <vfprintf+0x2b4>
8ce: 2b 2d mov r18, r11
8d0: 2e 7e andi r18, 0xEE ; 238
8d2: 05 c0 rjmp .+10 ; 0x8de <vfprintf+0x2b4>
8d4: 7a 2c mov r7, r10
8d6: 2b 2d mov r18, r11
8d8: 03 c0 rjmp .+6 ; 0x8e0 <vfprintf+0x2b6>
8da: 7a 2c mov r7, r10
8dc: 01 c0 rjmp .+2 ; 0x8e0 <vfprintf+0x2b6>
8de: 75 2c mov r7, r5
8e0: 24 ff sbrs r18, 4
8e2: 0d c0 rjmp .+26 ; 0x8fe <vfprintf+0x2d4>
8e4: fe 01 movw r30, r28
8e6: ea 0d add r30, r10
8e8: f1 1d adc r31, r1
8ea: 80 81 ld r24, Z
8ec: 80 33 cpi r24, 0x30 ; 48
8ee: 11 f4 brne .+4 ; 0x8f4 <vfprintf+0x2ca>
8f0: 29 7e andi r18, 0xE9 ; 233
8f2: 09 c0 rjmp .+18 ; 0x906 <__stack+0x7>
8f4: 22 ff sbrs r18, 2
8f6: 06 c0 rjmp .+12 ; 0x904 <__stack+0x5>
8f8: 73 94 inc r7
8fa: 73 94 inc r7
8fc: 04 c0 rjmp .+8 ; 0x906 <__stack+0x7>
8fe: 82 2f mov r24, r18
900: 86 78 andi r24, 0x86 ; 134
902: 09 f0 breq .+2 ; 0x906 <__stack+0x7>
904: 73 94 inc r7
906: 23 fd sbrc r18, 3
908: 13 c0 rjmp .+38 ; 0x930 <__stack+0x31>
90a: 20 ff sbrs r18, 0
90c: 06 c0 rjmp .+12 ; 0x91a <__stack+0x1b>
90e: 5a 2c mov r5, r10
910: 73 14 cp r7, r3
912: 18 f4 brcc .+6 ; 0x91a <__stack+0x1b>
914: 53 0c add r5, r3
916: 57 18 sub r5, r7
918: 73 2c mov r7, r3
91a: 73 14 cp r7, r3
91c: 68 f4 brcc .+26 ; 0x938 <__stack+0x39>
91e: b7 01 movw r22, r14
920: 80 e2 ldi r24, 0x20 ; 32
922: 90 e0 ldi r25, 0x00 ; 0
924: 2c 87 std Y+12, r18 ; 0x0c
926: 0e 94 fd 04 call 0x9fa ; 0x9fa <fputc>
92a: 73 94 inc r7
92c: 2c 85 ldd r18, Y+12 ; 0x0c
92e: f5 cf rjmp .-22 ; 0x91a <__stack+0x1b>
930: 73 14 cp r7, r3
932: 10 f4 brcc .+4 ; 0x938 <__stack+0x39>
934: 37 18 sub r3, r7
936: 01 c0 rjmp .+2 ; 0x93a <__stack+0x3b>
938: 31 2c mov r3, r1
93a: 24 ff sbrs r18, 4
93c: 12 c0 rjmp .+36 ; 0x962 <__stack+0x63>
93e: b7 01 movw r22, r14
940: 80 e3 ldi r24, 0x30 ; 48
942: 90 e0 ldi r25, 0x00 ; 0
944: 2c 87 std Y+12, r18 ; 0x0c
946: 0e 94 fd 04 call 0x9fa ; 0x9fa <fputc>
94a: 2c 85 ldd r18, Y+12 ; 0x0c
94c: 22 ff sbrs r18, 2
94e: 17 c0 rjmp .+46 ; 0x97e <__stack+0x7f>
950: 21 ff sbrs r18, 1
952: 03 c0 rjmp .+6 ; 0x95a <__stack+0x5b>
954: 88 e5 ldi r24, 0x58 ; 88
956: 90 e0 ldi r25, 0x00 ; 0
958: 02 c0 rjmp .+4 ; 0x95e <__stack+0x5f>
95a: 88 e7 ldi r24, 0x78 ; 120
95c: 90 e0 ldi r25, 0x00 ; 0
95e: b7 01 movw r22, r14
960: 0c c0 rjmp .+24 ; 0x97a <__stack+0x7b>
962: 82 2f mov r24, r18
964: 86 78 andi r24, 0x86 ; 134
966: 59 f0 breq .+22 ; 0x97e <__stack+0x7f>
968: 21 fd sbrc r18, 1
96a: 02 c0 rjmp .+4 ; 0x970 <__stack+0x71>
96c: 80 e2 ldi r24, 0x20 ; 32
96e: 01 c0 rjmp .+2 ; 0x972 <__stack+0x73>
970: 8b e2 ldi r24, 0x2B ; 43
972: 27 fd sbrc r18, 7
974: 8d e2 ldi r24, 0x2D ; 45
976: b7 01 movw r22, r14
978: 90 e0 ldi r25, 0x00 ; 0
97a: 0e 94 fd 04 call 0x9fa ; 0x9fa <fputc>
97e: a5 14 cp r10, r5
980: 38 f4 brcc .+14 ; 0x990 <__stack+0x91>
982: b7 01 movw r22, r14
984: 80 e3 ldi r24, 0x30 ; 48
986: 90 e0 ldi r25, 0x00 ; 0
988: 0e 94 fd 04 call 0x9fa ; 0x9fa <fputc>
98c: 5a 94 dec r5
98e: f7 cf rjmp .-18 ; 0x97e <__stack+0x7f>
990: aa 94 dec r10
992: f4 01 movw r30, r8
994: ea 0d add r30, r10
996: f1 1d adc r31, r1
998: 80 81 ld r24, Z
99a: b7 01 movw r22, r14
99c: 90 e0 ldi r25, 0x00 ; 0
99e: 0e 94 fd 04 call 0x9fa ; 0x9fa <fputc>
9a2: a1 10 cpse r10, r1
9a4: f5 cf rjmp .-22 ; 0x990 <__stack+0x91>
9a6: 33 20 and r3, r3
9a8: 09 f4 brne .+2 ; 0x9ac <__stack+0xad>
9aa: 51 ce rjmp .-862 ; 0x64e <vfprintf+0x24>
9ac: b7 01 movw r22, r14
9ae: 80 e2 ldi r24, 0x20 ; 32
9b0: 90 e0 ldi r25, 0x00 ; 0
9b2: 0e 94 fd 04 call 0x9fa ; 0x9fa <fputc>
9b6: 3a 94 dec r3
9b8: f6 cf rjmp .-20 ; 0x9a6 <__stack+0xa7>
9ba: f7 01 movw r30, r14
9bc: 86 81 ldd r24, Z+6 ; 0x06
9be: 97 81 ldd r25, Z+7 ; 0x07
9c0: 02 c0 rjmp .+4 ; 0x9c6 <__stack+0xc7>
9c2: 8f ef ldi r24, 0xFF ; 255
9c4: 9f ef ldi r25, 0xFF ; 255
9c6: 2c 96 adiw r28, 0x0c ; 12
9c8: e2 e1 ldi r30, 0x12 ; 18
9ca: 0c 94 a9 05 jmp 0xb52 ; 0xb52 <__epilogue_restores__>
000009ce <strnlen_P>:
9ce: fc 01 movw r30, r24
9d0: 05 90 lpm r0, Z+
9d2: 61 50 subi r22, 0x01 ; 1
9d4: 70 40 sbci r23, 0x00 ; 0
9d6: 01 10 cpse r0, r1
9d8: d8 f7 brcc .-10 ; 0x9d0 <strnlen_P+0x2>
9da: 80 95 com r24
9dc: 90 95 com r25
9de: 8e 0f add r24, r30
9e0: 9f 1f adc r25, r31
9e2: 08 95 ret
000009e4 <strnlen>:
9e4: fc 01 movw r30, r24
9e6: 61 50 subi r22, 0x01 ; 1
9e8: 70 40 sbci r23, 0x00 ; 0
9ea: 01 90 ld r0, Z+
9ec: 01 10 cpse r0, r1
9ee: d8 f7 brcc .-10 ; 0x9e6 <strnlen+0x2>
9f0: 80 95 com r24
9f2: 90 95 com r25
9f4: 8e 0f add r24, r30
9f6: 9f 1f adc r25, r31
9f8: 08 95 ret
000009fa <fputc>:
9fa: 0f 93 push r16
9fc: 1f 93 push r17
9fe: cf 93 push r28
a00: df 93 push r29
a02: 18 2f mov r17, r24
a04: 09 2f mov r16, r25
a06: eb 01 movw r28, r22
a08: 8b 81 ldd r24, Y+3 ; 0x03
a0a: 81 fd sbrc r24, 1
a0c: 03 c0 rjmp .+6 ; 0xa14 <fputc+0x1a>
a0e: 8f ef ldi r24, 0xFF ; 255
a10: 9f ef ldi r25, 0xFF ; 255
a12: 20 c0 rjmp .+64 ; 0xa54 <fputc+0x5a>
a14: 82 ff sbrs r24, 2
a16: 10 c0 rjmp .+32 ; 0xa38 <fputc+0x3e>
a18: 4e 81 ldd r20, Y+6 ; 0x06
a1a: 5f 81 ldd r21, Y+7 ; 0x07
a1c: 2c 81 ldd r18, Y+4 ; 0x04
a1e: 3d 81 ldd r19, Y+5 ; 0x05
a20: 42 17 cp r20, r18
a22: 53 07 cpc r21, r19
a24: 7c f4 brge .+30 ; 0xa44 <fputc+0x4a>
a26: e8 81 ld r30, Y
a28: f9 81 ldd r31, Y+1 ; 0x01
a2a: 9f 01 movw r18, r30
a2c: 2f 5f subi r18, 0xFF ; 255
a2e: 3f 4f sbci r19, 0xFF ; 255
a30: 39 83 std Y+1, r19 ; 0x01
a32: 28 83 st Y, r18
a34: 10 83 st Z, r17
a36: 06 c0 rjmp .+12 ; 0xa44 <fputc+0x4a>
a38: e8 85 ldd r30, Y+8 ; 0x08
a3a: f9 85 ldd r31, Y+9 ; 0x09
a3c: 81 2f mov r24, r17
a3e: 09 95 icall
a40: 89 2b or r24, r25
a42: 29 f7 brne .-54 ; 0xa0e <fputc+0x14>
a44: 2e 81 ldd r18, Y+6 ; 0x06
a46: 3f 81 ldd r19, Y+7 ; 0x07
a48: 2f 5f subi r18, 0xFF ; 255
a4a: 3f 4f sbci r19, 0xFF ; 255
a4c: 3f 83 std Y+7, r19 ; 0x07
a4e: 2e 83 std Y+6, r18 ; 0x06
a50: 81 2f mov r24, r17
a52: 90 2f mov r25, r16
a54: df 91 pop r29
a56: cf 91 pop r28
a58: 1f 91 pop r17
a5a: 0f 91 pop r16
a5c: 08 95 ret
00000a5e <__ultoa_invert>:
a5e: fa 01 movw r30, r20
a60: aa 27 eor r26, r26
a62: 28 30 cpi r18, 0x08 ; 8
a64: 51 f1 breq .+84 ; 0xaba <__ultoa_invert+0x5c>
a66: 20 31 cpi r18, 0x10 ; 16
a68: 81 f1 breq .+96 ; 0xaca <__ultoa_invert+0x6c>
a6a: e8 94 clt
a6c: 6f 93 push r22
a6e: 6e 7f andi r22, 0xFE ; 254
a70: 6e 5f subi r22, 0xFE ; 254
a72: 7f 4f sbci r23, 0xFF ; 255
a74: 8f 4f sbci r24, 0xFF ; 255
a76: 9f 4f sbci r25, 0xFF ; 255
a78: af 4f sbci r26, 0xFF ; 255
a7a: b1 e0 ldi r27, 0x01 ; 1
a7c: 3e d0 rcall .+124 ; 0xafa <__ultoa_invert+0x9c>
a7e: b4 e0 ldi r27, 0x04 ; 4
a80: 3c d0 rcall .+120 ; 0xafa <__ultoa_invert+0x9c>
a82: 67 0f add r22, r23
a84: 78 1f adc r23, r24
a86: 89 1f adc r24, r25
a88: 9a 1f adc r25, r26
a8a: a1 1d adc r26, r1
a8c: 68 0f add r22, r24
a8e: 79 1f adc r23, r25
a90: 8a 1f adc r24, r26
a92: 91 1d adc r25, r1
a94: a1 1d adc r26, r1
a96: 6a 0f add r22, r26
a98: 71 1d adc r23, r1
a9a: 81 1d adc r24, r1
a9c: 91 1d adc r25, r1
a9e: a1 1d adc r26, r1
aa0: 20 d0 rcall .+64 ; 0xae2 <__ultoa_invert+0x84>
aa2: 09 f4 brne .+2 ; 0xaa6 <__ultoa_invert+0x48>
aa4: 68 94 set
aa6: 3f 91 pop r19
aa8: 2a e0 ldi r18, 0x0A ; 10
aaa: 26 9f mul r18, r22
aac: 11 24 eor r1, r1
aae: 30 19 sub r19, r0
ab0: 30 5d subi r19, 0xD0 ; 208
ab2: 31 93 st Z+, r19
ab4: de f6 brtc .-74 ; 0xa6c <__ultoa_invert+0xe>
ab6: cf 01 movw r24, r30
ab8: 08 95 ret
aba: 46 2f mov r20, r22
abc: 47 70 andi r20, 0x07 ; 7
abe: 40 5d subi r20, 0xD0 ; 208
ac0: 41 93 st Z+, r20
ac2: b3 e0 ldi r27, 0x03 ; 3
ac4: 0f d0 rcall .+30 ; 0xae4 <__ultoa_invert+0x86>
ac6: c9 f7 brne .-14 ; 0xaba <__ultoa_invert+0x5c>
ac8: f6 cf rjmp .-20 ; 0xab6 <__ultoa_invert+0x58>
aca: 46 2f mov r20, r22
acc: 4f 70 andi r20, 0x0F ; 15
ace: 40 5d subi r20, 0xD0 ; 208
ad0: 4a 33 cpi r20, 0x3A ; 58
ad2: 18 f0 brcs .+6 ; 0xada <__ultoa_invert+0x7c>
ad4: 49 5d subi r20, 0xD9 ; 217
ad6: 31 fd sbrc r19, 1
ad8: 40 52 subi r20, 0x20 ; 32
ada: 41 93 st Z+, r20
adc: 02 d0 rcall .+4 ; 0xae2 <__ultoa_invert+0x84>
ade: a9 f7 brne .-22 ; 0xaca <__ultoa_invert+0x6c>
ae0: ea cf rjmp .-44 ; 0xab6 <__ultoa_invert+0x58>
ae2: b4 e0 ldi r27, 0x04 ; 4
ae4: a6 95 lsr r26
ae6: 97 95 ror r25
ae8: 87 95 ror r24
aea: 77 95 ror r23
aec: 67 95 ror r22
aee: ba 95 dec r27
af0: c9 f7 brne .-14 ; 0xae4 <__ultoa_invert+0x86>
af2: 00 97 sbiw r24, 0x00 ; 0
af4: 61 05 cpc r22, r1
af6: 71 05 cpc r23, r1
af8: 08 95 ret
afa: 9b 01 movw r18, r22
afc: ac 01 movw r20, r24
afe: 0a 2e mov r0, r26
b00: 06 94 lsr r0
b02: 57 95 ror r21
b04: 47 95 ror r20
b06: 37 95 ror r19
b08: 27 95 ror r18
b0a: ba 95 dec r27
b0c: c9 f7 brne .-14 ; 0xb00 <__ultoa_invert+0xa2>
b0e: 62 0f add r22, r18
b10: 73 1f adc r23, r19
b12: 84 1f adc r24, r20
b14: 95 1f adc r25, r21
b16: a0 1d adc r26, r0
b18: 08 95 ret
00000b1a <__prologue_saves__>:
b1a: 2f 92 push r2
b1c: 3f 92 push r3
b1e: 4f 92 push r4
b20: 5f 92 push r5
b22: 6f 92 push r6
b24: 7f 92 push r7
b26: 8f 92 push r8
b28: 9f 92 push r9
b2a: af 92 push r10
b2c: bf 92 push r11
b2e: cf 92 push r12
b30: df 92 push r13
b32: ef 92 push r14
b34: ff 92 push r15
b36: 0f 93 push r16
b38: 1f 93 push r17
b3a: cf 93 push r28
b3c: df 93 push r29
b3e: cd b7 in r28, 0x3d ; 61
b40: de b7 in r29, 0x3e ; 62
b42: ca 1b sub r28, r26
b44: db 0b sbc r29, r27
b46: 0f b6 in r0, 0x3f ; 63
b48: f8 94 cli
b4a: de bf out 0x3e, r29 ; 62
b4c: 0f be out 0x3f, r0 ; 63
b4e: cd bf out 0x3d, r28 ; 61
b50: 09 94 ijmp
00000b52 <__epilogue_restores__>:
b52: 2a 88 ldd r2, Y+18 ; 0x12
b54: 39 88 ldd r3, Y+17 ; 0x11
b56: 48 88 ldd r4, Y+16 ; 0x10
b58: 5f 84 ldd r5, Y+15 ; 0x0f
b5a: 6e 84 ldd r6, Y+14 ; 0x0e
b5c: 7d 84 ldd r7, Y+13 ; 0x0d
b5e: 8c 84 ldd r8, Y+12 ; 0x0c
b60: 9b 84 ldd r9, Y+11 ; 0x0b
b62: aa 84 ldd r10, Y+10 ; 0x0a
b64: b9 84 ldd r11, Y+9 ; 0x09
b66: c8 84 ldd r12, Y+8 ; 0x08
b68: df 80 ldd r13, Y+7 ; 0x07
b6a: ee 80 ldd r14, Y+6 ; 0x06
b6c: fd 80 ldd r15, Y+5 ; 0x05
b6e: 0c 81 ldd r16, Y+4 ; 0x04
b70: 1b 81 ldd r17, Y+3 ; 0x03
b72: aa 81 ldd r26, Y+2 ; 0x02
b74: b9 81 ldd r27, Y+1 ; 0x01
b76: ce 0f add r28, r30
b78: d1 1d adc r29, r1
b7a: 0f b6 in r0, 0x3f ; 63
b7c: f8 94 cli
b7e: de bf out 0x3e, r29 ; 62
b80: 0f be out 0x3f, r0 ; 63
b82: cd bf out 0x3d, r28 ; 61
b84: ed 01 movw r28, r26
b86: 08 95 ret
00000b88 <_exit>:
b88: f8 94 cli
00000b8a <__stop_program>:
b8a: ff cf rjmp .-2 ; 0xb8a <__stop_program>
Archive member included because of file (symbol)
/usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_exit.o)
/usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/crtm328p.o (exit)
/usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_copy_data.o)
DATS/main_dats.o (__do_copy_data)
/usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_clear_bss.o)
DATS/lcd_dats.o (__do_clear_bss)
/usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(fprintf.o)
DATS/main_dats.o (fprintf)
/usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(iob.o)
DATS/main_dats.o (__iob)
/usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(vfprintf_std.o)
/usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(fprintf.o) (vfprintf)
/usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(strnlen_P.o)
/usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(vfprintf_std.o) (strnlen_P)
/usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(strnlen.o)
/usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(vfprintf_std.o) (strnlen)
/usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(fputc.o)
/usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(vfprintf_std.o) (fputc)
/usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(ultoa_invert.o)
/usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(vfprintf_std.o) (__ultoa_invert)
/usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_prologue.o)
/usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(fprintf.o) (__prologue_saves__)
/usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_epilogue.o)
/usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(fprintf.o) (__epilogue_restores__)
Allocating common symbols
Common symbol size file
__iob 0x6 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(iob.o)
Memory Configuration
Name Origin Length Attributes
text 0x0000000000000000 0x0000000000020000 xr
data 0x0000000000800060 0x000000000000ffa0 rw !x
eeprom 0x0000000000810000 0x0000000000010000 rw !x
fuse 0x0000000000820000 0x0000000000000400 rw !x
lock 0x0000000000830000 0x0000000000000400 rw !x
signature 0x0000000000840000 0x0000000000000400 rw !x
user_signatures 0x0000000000850000 0x0000000000000400 rw !x
*default* 0x0000000000000000 0xffffffffffffffff
Linker script and memory map
Address of section .data set to 0x800100
LOAD /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/crtm328p.o
LOAD wiring_digital.o
LOAD DATS/lcd_dats.o
LOAD DATS/main_dats.o
START GROUP
LOAD /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a
LOAD /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libm.a
LOAD /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a
END GROUP
.hash
*(.hash)
.dynsym
*(.dynsym)
.dynstr
*(.dynstr)
.gnu.version
*(.gnu.version)
.gnu.version_d
*(.gnu.version_d)
.gnu.version_r
*(.gnu.version_r)
.rel.init
*(.rel.init)
.rela.init
*(.rela.init)
.rel.text
*(.rel.text)
*(.rel.text.*)
*(.rel.gnu.linkonce.t*)
.rela.text
*(.rela.text)
*(.rela.text.*)
*(.rela.gnu.linkonce.t*)
.rel.fini
*(.rel.fini)
.rela.fini
*(.rela.fini)
.rel.rodata
*(.rel.rodata)
*(.rel.rodata.*)
*(.rel.gnu.linkonce.r*)
.rela.rodata
*(.rela.rodata)
*(.rela.rodata.*)
*(.rela.gnu.linkonce.r*)
.rel.data
*(.rel.data)
*(.rel.data.*)
*(.rel.gnu.linkonce.d*)
.rela.data
*(.rela.data)
*(.rela.data.*)
*(.rela.gnu.linkonce.d*)
.rel.ctors
*(.rel.ctors)
.rela.ctors
*(.rela.ctors)
.rel.dtors
*(.rel.dtors)
.rela.dtors
*(.rela.dtors)
.rel.got
*(.rel.got)
.rela.got
*(.rela.got)
.rel.bss
*(.rel.bss)
.rela.bss
*(.rela.bss)
.rel.plt
*(.rel.plt)
.rela.plt
*(.rela.plt)
.text 0x0000000000000000 0xb8c
*(.vectors)
.vectors 0x0000000000000000 0x68 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/crtm328p.o
0x0000000000000000 __vectors
0x0000000000000000 __vector_default
*(.vectors)
*(.progmem.gcc*)
0x0000000000000068 . = ALIGN (0x2)
0x0000000000000068 __trampolines_start = .
*(.trampolines)
.trampolines 0x0000000000000068 0x0 linker stubs
*(.trampolines*)
0x0000000000000068 __trampolines_end = .
*(.progmem*)
.progmem.data 0x0000000000000068 0x5a wiring_digital.o
0x0000000000000068 digital_pin_to_timer_PGM
0x000000000000007c digital_pin_to_bit_mask_PGM
0x0000000000000090 digital_pin_to_port_PGM
0x00000000000000a4 port_to_input_PGM
0x00000000000000ae port_to_output_PGM
0x00000000000000b8 port_to_mode_PGM
0x00000000000000c2 . = ALIGN (0x2)
*(.jumptables)
*(.jumptables*)
*(.lowtext)
*(.lowtext*)
0x00000000000000c2 __ctors_start = .
*(.ctors)
0x00000000000000c2 __ctors_end = .
0x00000000000000c2 __dtors_start = .
*(.dtors)
0x00000000000000c2 __dtors_end = .
SORT(*)(.ctors)
SORT(*)(.dtors)
*(.init0)
.init0 0x00000000000000c2 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/crtm328p.o
0x00000000000000c2 __init
*(.init0)
*(.init1)
*(.init1)
*(.init2)
.init2 0x00000000000000c2 0xc /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/crtm328p.o
*(.init2)
*(.init3)
*(.init3)
*(.init4)
.init4 0x00000000000000ce 0x16 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_copy_data.o)
0x00000000000000ce __do_copy_data
.init4 0x00000000000000e4 0x10 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_clear_bss.o)
0x00000000000000e4 __do_clear_bss
*(.init4)
*(.init5)
*(.init5)
*(.init6)
*(.init6)
*(.init7)
*(.init7)
*(.init8)
*(.init8)
*(.init9)
.init9 0x00000000000000f4 0x8 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/crtm328p.o
*(.init9)
*(.text)
.text 0x00000000000000fc 0x4 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/crtm328p.o
0x00000000000000fc __vector_22
0x00000000000000fc __vector_1
0x00000000000000fc __vector_24
0x00000000000000fc __vector_12
0x00000000000000fc __bad_interrupt
0x00000000000000fc __vector_6
0x00000000000000fc __vector_3
0x00000000000000fc __vector_23
0x00000000000000fc __vector_25
0x00000000000000fc __vector_11
0x00000000000000fc __vector_13
0x00000000000000fc __vector_17
0x00000000000000fc __vector_19
0x00000000000000fc __vector_7
0x00000000000000fc __vector_5
0x00000000000000fc __vector_4
0x00000000000000fc __vector_9
0x00000000000000fc __vector_2
0x00000000000000fc __vector_21
0x00000000000000fc __vector_15
0x00000000000000fc __vector_8
0x00000000000000fc __vector_14
0x00000000000000fc __vector_10
0x00000000000000fc __vector_16
0x00000000000000fc __vector_18
0x00000000000000fc __vector_20
.text 0x0000000000000100 0x17a wiring_digital.o
0x0000000000000152 pinMode
0x00000000000001c4 digitalWrite
0x0000000000000230 digitalRead
.text 0x000000000000027a 0x294 DATS/lcd_dats.o
0x000000000000027a _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_close
0x000000000000027c _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_pulseEnable
0x00000000000002bc _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_write4bits
0x000000000000033c _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_send
0x0000000000000378 _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_write
0x000000000000037e _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_print
0x00000000000003b8 _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_command
0x00000000000003be _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_clear
0x00000000000003d2 _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_setCursor
0x00000000000003e6 _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_lcd_056_dats__lcd_display
0x00000000000003f2 _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_SATS_057_lcd_056_sats__lcd_open
.text 0x000000000000050e 0xf0 DATS/main_dats.o
0x000000000000050e mainats_void_0
0x000000000000059c _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_main_056_dats__dynload
0x00000000000005b6 atsruntime_handle_unmatchedval
0x00000000000005da atsruntime_handle_unmatchedarg
.text 0x00000000000005fe 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_exit.o)
.text 0x00000000000005fe 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_copy_data.o)
.text 0x00000000000005fe 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_clear_bss.o)
.text 0x00000000000005fe 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(fprintf.o)
.text 0x00000000000005fe 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(iob.o)
.text 0x00000000000005fe 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(vfprintf_std.o)
.text 0x00000000000005fe 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(strnlen_P.o)
.text 0x00000000000005fe 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(strnlen.o)
.text 0x00000000000005fe 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(fputc.o)
.text 0x00000000000005fe 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(ultoa_invert.o)
.text 0x00000000000005fe 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_prologue.o)
.text 0x00000000000005fe 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_epilogue.o)
0x00000000000005fe . = ALIGN (0x2)
*(.text.*)
.text.startup 0x00000000000005fe 0x8 DATS/main_dats.o
0x00000000000005fe main
.text.libgcc.mul
0x0000000000000606 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_exit.o)
.text.libgcc.div
0x0000000000000606 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_exit.o)
.text.libgcc 0x0000000000000606 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_exit.o)
.text.libgcc.prologue
0x0000000000000606 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_exit.o)
.text.libgcc.builtins
0x0000000000000606 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_exit.o)
.text.libgcc.fmul
0x0000000000000606 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_exit.o)
.text.libgcc.fixed
0x0000000000000606 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_exit.o)
.text.libgcc.mul
0x0000000000000606 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_copy_data.o)
.text.libgcc.div
0x0000000000000606 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_copy_data.o)
.text.libgcc 0x0000000000000606 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_copy_data.o)
.text.libgcc.prologue
0x0000000000000606 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_copy_data.o)
.text.libgcc.builtins
0x0000000000000606 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_copy_data.o)
.text.libgcc.fmul
0x0000000000000606 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_copy_data.o)
.text.libgcc.fixed
0x0000000000000606 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_copy_data.o)
.text.libgcc.mul
0x0000000000000606 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_clear_bss.o)
.text.libgcc.div
0x0000000000000606 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_clear_bss.o)
.text.libgcc 0x0000000000000606 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_clear_bss.o)
.text.libgcc.prologue
0x0000000000000606 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_clear_bss.o)
.text.libgcc.builtins
0x0000000000000606 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_clear_bss.o)
.text.libgcc.fmul
0x0000000000000606 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_clear_bss.o)
.text.libgcc.fixed
0x0000000000000606 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_clear_bss.o)
.text.avr-libc
0x0000000000000606 0x24 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(fprintf.o)
0x0000000000000606 fprintf
.text.avr-libc
0x000000000000062a 0x3a4 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(vfprintf_std.o)
0x000000000000062a vfprintf
.text.avr-libc
0x00000000000009ce 0x16 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(strnlen_P.o)
0x00000000000009ce strnlen_P
.text.avr-libc
0x00000000000009e4 0x16 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(strnlen.o)
0x00000000000009e4 strnlen
.text.avr-libc
0x00000000000009fa 0x64 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(fputc.o)
0x00000000000009fa fputc
.text.avr-libc
0x0000000000000a5e 0xbc /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(ultoa_invert.o)
0x0000000000000a5e __ultoa_invert
.text.libgcc.mul
0x0000000000000b1a 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_prologue.o)
.text.libgcc.div
0x0000000000000b1a 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_prologue.o)
.text.libgcc 0x0000000000000b1a 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_prologue.o)
.text.libgcc.prologue
0x0000000000000b1a 0x38 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_prologue.o)
0x0000000000000b1a __prologue_saves__
.text.libgcc.builtins
0x0000000000000b52 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_prologue.o)
.text.libgcc.fmul
0x0000000000000b52 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_prologue.o)
.text.libgcc.fixed
0x0000000000000b52 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_prologue.o)
.text.libgcc.mul
0x0000000000000b52 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_epilogue.o)
.text.libgcc.div
0x0000000000000b52 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_epilogue.o)
.text.libgcc 0x0000000000000b52 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_epilogue.o)
.text.libgcc.prologue
0x0000000000000b52 0x36 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_epilogue.o)
0x0000000000000b52 __epilogue_restores__
.text.libgcc.builtins
0x0000000000000b88 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_epilogue.o)
.text.libgcc.fmul
0x0000000000000b88 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_epilogue.o)
.text.libgcc.fixed
0x0000000000000b88 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_epilogue.o)
0x0000000000000b88 . = ALIGN (0x2)
*(.fini9)
.fini9 0x0000000000000b88 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_exit.o)
0x0000000000000b88 exit
0x0000000000000b88 _exit
*(.fini9)
*(.fini8)
*(.fini8)
*(.fini7)
*(.fini7)
*(.fini6)
*(.fini6)
*(.fini5)
*(.fini5)
*(.fini4)
*(.fini4)
*(.fini3)
*(.fini3)
*(.fini2)
*(.fini2)
*(.fini1)
*(.fini1)
*(.fini0)
.fini0 0x0000000000000b88 0x4 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_exit.o)
*(.fini0)
0x0000000000000b8c _etext = .
.data 0x0000000000800100 0x1c0 load address 0x0000000000000b8c
0x0000000000800100 PROVIDE (__data_start, .)
*(.data)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/crtm328p.o
.data 0x0000000000800100 0x0 wiring_digital.o
.data 0x0000000000800100 0x0 DATS/lcd_dats.o
.data 0x0000000000800100 0x0 DATS/main_dats.o
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_exit.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_copy_data.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_clear_bss.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(fprintf.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(iob.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(vfprintf_std.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(strnlen_P.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(strnlen.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(fputc.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(ultoa_invert.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_prologue.o)
.data 0x0000000000800100 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_epilogue.o)
*(.data*)
*(.rodata)
*(.rodata*)
.rodata.str1.1
0x0000000000800100 0x1bf DATS/main_dats.o
*(.gnu.linkonce.d*)
0x00000000008002c0 . = ALIGN (0x2)
*fill* 0x00000000008002bf 0x1
0x00000000008002c0 _edata = .
0x00000000008002c0 PROVIDE (__data_end, .)
.bss 0x00000000008002c0 0x10
0x00000000008002c0 PROVIDE (__bss_start, .)
*(.bss)
.bss 0x00000000008002c0 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/crtm328p.o
.bss 0x00000000008002c0 0x0 wiring_digital.o
.bss 0x00000000008002c0 0x8 DATS/lcd_dats.o
.bss 0x00000000008002c8 0x2 DATS/main_dats.o
0x00000000008002c8 _057_home_057_kiwamu_057_src_057_arduino_055_ats_057_demo_057_lcd_ats_057_DATS_057_main_056_dats__dynloadflag
.bss 0x00000000008002ca 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_exit.o)
.bss 0x00000000008002ca 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_copy_data.o)
.bss 0x00000000008002ca 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_clear_bss.o)
.bss 0x00000000008002ca 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(fprintf.o)
.bss 0x00000000008002ca 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(iob.o)
.bss 0x00000000008002ca 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(vfprintf_std.o)
.bss 0x00000000008002ca 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(strnlen_P.o)
.bss 0x00000000008002ca 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(strnlen.o)
.bss 0x00000000008002ca 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(fputc.o)
.bss 0x00000000008002ca 0x0 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(ultoa_invert.o)
.bss 0x00000000008002ca 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_prologue.o)
.bss 0x00000000008002ca 0x0 /usr/lib/gcc/avr/4.8.1/avr5/libgcc.a(_epilogue.o)
*(.bss*)
*(COMMON)
COMMON 0x00000000008002ca 0x6 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(iob.o)
0x00000000008002ca __iob
0x00000000008002d0 PROVIDE (__bss_end, .)
0x0000000000000b8c __data_load_start = LOADADDR (.data)
0x0000000000000d4c __data_load_end = (__data_load_start + SIZEOF (.data))
.noinit 0x00000000008002d0 0x0
0x00000000008002d0 PROVIDE (__noinit_start, .)
*(.noinit*)
0x00000000008002d0 PROVIDE (__noinit_end, .)
0x00000000008002d0 _end = .
0x00000000008002d0 PROVIDE (__heap_start, .)
.eeprom 0x0000000000810000 0x0
*(.eeprom*)
0x0000000000810000 __eeprom_end = .
.fuse
*(.fuse)
*(.lfuse)
*(.hfuse)
*(.efuse)
.lock
*(.lock*)
.signature
*(.signature*)
.user_signatures
*(.user_signatures*)
.stab 0x0000000000000000 0x26dc
*(.stab)
.stab 0x0000000000000000 0xbac wiring_digital.o
.stab 0x0000000000000bac 0x1470 DATS/lcd_dats.o
0x16b0 (size before relaxing)
.stab 0x000000000000201c 0x6c0 DATS/main_dats.o
0xc90 (size before relaxing)
.stabstr 0x0000000000000000 0x716d
*(.stabstr)
.stabstr 0x0000000000000000 0x716d wiring_digital.o
.stab.excl
*(.stab.excl)
.stab.exclstr
*(.stab.exclstr)
.stab.index
*(.stab.index)
.stab.indexstr
*(.stab.indexstr)
.comment 0x0000000000000000 0x11
*(.comment)
.comment 0x0000000000000000 0x11 wiring_digital.o
0x12 (size before relaxing)
.comment 0x0000000000000000 0x12 DATS/lcd_dats.o
.comment 0x0000000000000000 0x12 DATS/main_dats.o
.comment 0x0000000000000000 0x12 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(fprintf.o)
.comment 0x0000000000000000 0x12 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(iob.o)
.comment 0x0000000000000000 0x12 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(vfprintf_std.o)
.comment 0x0000000000000000 0x12 /usr/lib/gcc/avr/4.8.1/../../../avr/lib/avr5/libc.a(fputc.o)
.note.gnu.build-id
*(.note.gnu.build-id)
.debug
*(.debug)
.line
*(.line)
.debug_srcinfo
*(.debug_srcinfo)
.debug_sfnames
*(.debug_sfnames)
.debug_aranges
*(.debug_aranges)
.debug_pubnames
*(.debug_pubnames)
.debug_info
*(.debug_info .gnu.linkonce.wi.*)
.debug_abbrev
*(.debug_abbrev)
.debug_line
*(.debug_line .debug_line.* .debug_line_end)
.debug_frame
*(.debug_frame)
.debug_str
*(.debug_str)
.debug_loc
*(.debug_loc)
.debug_macinfo
*(.debug_macinfo)
.debug_weaknames
*(.debug_weaknames)
.debug_funcnames
*(.debug_funcnames)
.debug_typenames
*(.debug_typenames)
.debug_varnames
*(.debug_varnames)
.debug_pubtypes
*(.debug_pubtypes)
.debug_ranges
*(.debug_ranges)
.debug_macro
*(.debug_macro)
OUTPUT(main.elf elf32-avr)
LOAD linker stubs
avr-gcc -g -Wall -Os -mmcu=atmega328p -DF_CPU=16000000UL -std=c99 -D_XOPEN_SOURCE -D_ATS_CCOMP_EXCEPTION_NONE -D_ATSTYPE_VAR_SIZE=0X000F -Wno-unused-variable -Wno-unused-label -Wno-unused-but-set-variable -I. -I/home/kiwamu/src/ATS-Postiats -I/home/kiwamu/src/ATS-Postiats/ccomp/runtime -I../../_arduino -I../../_dummy -c -o wiring_digital.o wiring_digital.c
patsopt -o DATS/lcd_dats.c -d DATS/lcd.dats
avr-gcc -g -Wall -Os -mmcu=atmega328p -DF_CPU=16000000UL -std=c99 -D_XOPEN_SOURCE -D_ATS_CCOMP_EXCEPTION_NONE -D_ATSTYPE_VAR_SIZE=0X000F -Wno-unused-variable -Wno-unused-label -Wno-unused-but-set-variable -I. -I/home/kiwamu/src/ATS-Postiats -I/home/kiwamu/src/ATS-Postiats/ccomp/runtime -I../../_arduino -I../../_dummy -c -o DATS/lcd_dats.o DATS/lcd_dats.c
patsopt -o DATS/main_dats.c -d DATS/main.dats
avr-gcc -g -Wall -Os -mmcu=atmega328p -DF_CPU=16000000UL -std=c99 -D_XOPEN_SOURCE -D_ATS_CCOMP_EXCEPTION_NONE -D_ATSTYPE_VAR_SIZE=0X000F -Wno-unused-variable -Wno-unused-label -Wno-unused-but-set-variable -I. -I/home/kiwamu/src/ATS-Postiats -I/home/kiwamu/src/ATS-Postiats/ccomp/runtime -I../../_arduino -I../../_dummy -c -o DATS/main_dats.o DATS/main_dats.c
avr-gcc -g -Wall -Os -mmcu=atmega328p -DF_CPU=16000000UL -std=c99 -D_XOPEN_SOURCE -D_ATS_CCOMP_EXCEPTION_NONE -D_ATSTYPE_VAR_SIZE=0X000F -Wno-unused-variable -Wno-unused-label -Wno-unused-but-set-variable -I. -I/home/kiwamu/src/ATS-Postiats -I/home/kiwamu/src/ATS-Postiats/ccomp/runtime -I../../_arduino -I../../_dummy -Wl,-Map,main.map -o main.elf wiring_digital.o DATS/lcd_dats.o DATS/main_dats.o
avr-objdump -h -S main.elf > main.lst
avr-objcopy -j .text -j .data -O ihex main.elf main.hex
avr-objcopy -j .text -j .data -O binary main.elf main.bin
avr-objcopy -j .text -j .data -O srec main.elf main.srec
avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O ihex main.elf main_eeprom.hex \
|| { echo empty main_eeprom.hex not generated; exit 0; }
avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O binary main.elf main_eeprom.bin \
|| { echo empty main_eeprom.bin not generated; exit 0; }
avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O srec main.elf main_eeprom.srec \
|| { echo empty main_eeprom.srec not generated; exit 0; }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment