From e9a73bbb3c14af340999f70146747787785f4fee Mon Sep 17 00:00:00 2001 From: Tim Redfern Date: Mon, 19 Dec 2011 18:20:33 +0000 Subject: initial commit --- ESS1995test_328p/ESS1995test_328p.cbp | 107 + ESS1995test_328p/ESS1995test_328p.depend | 130 + ESS1995test_328p/ESS1995test_328p.layout | 22 + ESS1995test_328p/adapticsBT.cpp | 50 + ESS1995test_328p/adapticsBT.h | 14 + ESS1995test_328p/bin/Debug/ESS1995test_328p.elf | Bin 0 -> 20266 bytes .../bin/Debug/ESS1995test_328p.elf.eep.hex | 1 + .../bin/Debug/ESS1995test_328p.elf.hex | 85 + .../bin/Debug/ESS1995test_328p.elf.lss | 672 ++ .../bin/Debug/ESS1995test_328p.elf.map | 506 ++ ESS1995test_328p/bin/Release/ESS1995test_328p.elf | Bin 0 -> 44843 bytes .../bin/Release/ESS1995test_328p.elf.eep.hex | 1 + .../bin/Release/ESS1995test_328p.elf.hex | 1122 +++ .../bin/Release/ESS1995test_328p.elf.lss | 8524 ++++++++++++++++++++ .../bin/Release/ESS1995test_328p.elf.map | 1399 ++++ ESS1995test_328p/burn | 1 + ESS1995test_328p/electic.h | 72 + ESS1995test_328p/main.cpp | 254 + ESS1995test_328p/obj/Debug/main.o | Bin 0 -> 9640 bytes .../obj/Release/ESS1995test_328p/adapticsBT.o | Bin 0 -> 832 bytes ESS1995test_328p/obj/Release/adapticsBT.o | Bin 0 -> 1608 bytes .../obj/Release/arduinoSrc0022/HardwareSerial.o | Bin 0 -> 3524 bytes .../obj/Release/arduinoSrc0022/Print.o | Bin 0 -> 4344 bytes ESS1995test_328p/obj/Release/arduinoSrc0022/Tone.o | Bin 0 -> 4724 bytes .../obj/Release/arduinoSrc0022/WInterrupts.o | Bin 0 -> 1412 bytes .../obj/Release/arduinoSrc0022/WMath.o | Bin 0 -> 1372 bytes .../obj/Release/arduinoSrc0022/WString.o | Bin 0 -> 10132 bytes ESS1995test_328p/obj/Release/arduinoSrc0022/main.o | Bin 0 -> 816 bytes .../obj/Release/arduinoSrc0022/pins_arduino.o | Bin 0 -> 1011 bytes .../obj/Release/arduinoSrc0022/wiring.o | Bin 0 -> 1892 bytes .../obj/Release/arduinoSrc0022/wiring_analog.o | Bin 0 -> 1536 bytes .../obj/Release/arduinoSrc0022/wiring_digital.o | Bin 0 -> 1924 bytes .../obj/Release/arduinoSrc0022/wiring_pulse.o | Bin 0 -> 1492 bytes .../obj/Release/arduinoSrc0022/wiring_shift.o | Bin 0 -> 1296 bytes ESS1995test_328p/obj/Release/main.o | Bin 0 -> 4912 bytes arduinoSrc0022/HardwareSerial.cpp | 303 + arduinoSrc0022/HardwareSerial.h | 76 + arduinoSrc0022/Print.cpp | 220 + arduinoSrc0022/Print.h | 66 + arduinoSrc0022/Stream.h | 35 + arduinoSrc0022/Tone.cpp | 601 ++ arduinoSrc0022/WCharacter.h | 168 + arduinoSrc0022/WConstants.h | 1 + arduinoSrc0022/WInterrupts.c | 249 + arduinoSrc0022/WMath.cpp | 60 + arduinoSrc0022/WProgram.h | 63 + arduinoSrc0022/WString.cpp | 443 + arduinoSrc0022/WString.h | 112 + arduinoSrc0022/binary.h | 515 ++ arduinoSrc0022/main.cpp | 14 + arduinoSrc0022/pins_arduino.c | 465 ++ arduinoSrc0022/pins_arduino.h | 88 + arduinoSrc0022/wiring.c | 289 + arduinoSrc0022/wiring.h | 135 + arduinoSrc0022/wiring_analog.c | 259 + arduinoSrc0022/wiring_digital.c | 166 + arduinoSrc0022/wiring_private.h | 68 + arduinoSrc0022/wiring_pulse.c | 69 + arduinoSrc0022/wiring_shift.c | 55 + arduino_libs/ArduinoSerialManager.zip | Bin 0 -> 18962 bytes arduino_libs/ByteBuffer/.svn/all-wcprops | 17 + arduino_libs/ByteBuffer/.svn/entries | 120 + .../.svn/text-base/ByteBuffer.cpp.svn-base | 205 + .../.svn/text-base/ByteBuffer.h.svn-base | 57 + arduino_libs/ByteBuffer/ByteBuffer.cpp | 212 + arduino_libs/ByteBuffer/ByteBuffer.h | 74 + .../NewSoftSerialTest/NewSoftSerialTest.pde | 25 + .../Examples/TwoNSSTest/TwoNSSTest.pde | 33 + arduino_libs/NewSoftSerial/NewSoftSerial.cpp | 539 ++ arduino_libs/NewSoftSerial/NewSoftSerial.h | 107 + arduino_libs/NewSoftSerial/keywords.txt | 30 + arduino_libs/SerialManager/.DS_Store | Bin 0 -> 6148 bytes arduino_libs/SerialManager/.svn/all-wcprops | 17 + arduino_libs/SerialManager/.svn/entries | 144 + .../.svn/text-base/SerialManager.cpp.svn-base | 197 + .../.svn/text-base/SerialManager.h.svn-base | 63 + arduino_libs/SerialManager/SerialManager.cpp | 193 + arduino_libs/SerialManager/SerialManager.h | 62 + arduino_libs/core0022_2560.a | Bin 0 -> 172446 bytes arduino_libs/core0022_328p.a | Bin 0 -> 66168 bytes avr_libs/uartlib/doxygen.css | 49 + avr_libs/uartlib/doxygen.png | Bin 0 -> 1281 bytes avr_libs/uartlib/group__pfleury__uart.html | 560 ++ avr_libs/uartlib/makefile | 508 ++ avr_libs/uartlib/test_uart.c | 130 + avr_libs/uartlib/uart.c | 651 ++ avr_libs/uartlib/uart.h | 194 + .../bin/Debug/blinktest_328p.elf.eep.hex | 1 + blinktest_328p/bin/Debug/blinktest_328p.elf.hex | 71 + blinktest_328p/bin/Debug/blinktest_328p.elf.lss | 539 ++ blinktest_328p/bin/Debug/blinktest_328p.elf.map | 501 ++ blinktest_328p/bin/Debug/electic_streaming.elf.map | 501 ++ blinktest_328p/bin/Release/blinktest_328p.elf | Bin 0 -> 12194 bytes .../bin/Release/blinktest_328p.elf.eep.hex | 1 + blinktest_328p/bin/Release/blinktest_328p.elf.hex | 70 + blinktest_328p/bin/Release/blinktest_328p.elf.lss | 518 ++ blinktest_328p/bin/Release/blinktest_328p.elf.map | 499 ++ blinktest_328p/blinktest_328p.cbp | 66 + blinktest_328p/blinktest_328p.depend | 43 + blinktest_328p/blinktest_328p.layout | 10 + blinktest_328p/burn | 1 + blinktest_328p/main.cpp | 28 + blinktest_328p/obj/Release/main.o | Bin 0 -> 924 bytes electicAndroid/.classpath | 7 + electicAndroid/.project | 33 + electicAndroid/AndroidManifest.xml | 38 + electicAndroid/bin/classes.dex | Bin 0 -> 24576 bytes .../electic/AdapticsBluetooth$ConnectThread.class | Bin 0 -> 2641 bytes .../AdapticsBluetooth$ConnectedThread.class | Bin 0 -> 3061 bytes .../adaptics/electic/AdapticsBluetooth.class | Bin 0 -> 5490 bytes .../adaptics/electic/DeviceListActivity$1.class | Bin 0 -> 2079 bytes .../adaptics/electic/DeviceListActivity$2.class | Bin 0 -> 2522 bytes .../adaptics/electic/DeviceListActivity$3.class | Bin 0 -> 950 bytes .../adaptics/electic/DeviceListActivity.class | Bin 0 -> 5381 bytes .../futureproof/adaptics/electic/Electic$1.class | Bin 0 -> 4136 bytes .../futureproof/adaptics/electic/Electic$2.class | Bin 0 -> 1084 bytes .../com/futureproof/adaptics/electic/Electic.class | Bin 0 -> 7925 bytes .../com/futureproof/adaptics/electic/R$attr.class | Bin 0 -> 382 bytes .../futureproof/adaptics/electic/R$drawable.class | Bin 0 -> 446 bytes .../com/futureproof/adaptics/electic/R$id.class | Bin 0 -> 1611 bytes .../futureproof/adaptics/electic/R$layout.class | Bin 0 -> 542 bytes .../com/futureproof/adaptics/electic/R$menu.class | Bin 0 -> 437 bytes .../futureproof/adaptics/electic/R$string.class | Bin 0 -> 1388 bytes .../bin/com/futureproof/adaptics/electic/R.class | Bin 0 -> 689 bytes electicAndroid/bin/electicAndroid.apk | Bin 0 -> 28259 bytes electicAndroid/bin/resources.ap_ | Bin 0 -> 14541 bytes electicAndroid/default.properties | 11 + .../gen/com/futureproof/adaptics/electic/R.java | 97 + electicAndroid/res/drawable-hdpi/app_icon.png | Bin 0 -> 5589 bytes electicAndroid/res/drawable/app_icon.png | Bin 0 -> 4182 bytes electicAndroid/res/layout/custom_title.xml | 39 + electicAndroid/res/layout/device_list.xml | 56 + electicAndroid/res/layout/device_name.xml | 21 + electicAndroid/res/layout/main.xml | 62 + electicAndroid/res/menu/option_menu.xml | 26 + electicAndroid/res/values/strings.xml | 51 + .../adaptics/electic/AdapticsBluetooth.java | 520 ++ .../adaptics/electic/DeviceListActivity.java | 213 + .../com/futureproof/adaptics/electic/Electic.java | 393 + .../bin/Debug/electic_streaming.elf.eep.hex | 1 + .../bin/Debug/electic_streaming.elf.hex | 364 + .../bin/Debug/electic_streaming.elf.lss | 3038 +++++++ .../bin/Debug/electic_streaming.elf.map | 1643 ++++ .../bin/Release/electic_streaming.elf | Bin 0 -> 30357 bytes .../bin/Release/electic_streaming.elf.eep.hex | 1 + .../bin/Release/electic_streaming.elf.hex | 328 + .../bin/Release/electic_streaming.elf.lss | 2665 ++++++ .../bin/Release/electic_streaming.elf.map | 897 ++ electic_streaming2560/burn | 1 + electic_streaming2560/electic_streaming2560.cbp | 66 + electic_streaming2560/electic_streaming2560.layout | 7 + electic_streaming2560/main.c | 83 + electic_streaming2560/main.cpp | 80 + electic_streaming2560/obj/Debug/main.o | Bin 0 -> 11264 bytes .../arduino libs/NewSoftSerial/NewSoftSerial.o | Bin 0 -> 6212 bytes electic_streaming2560/obj/Release/main.o | Bin 0 -> 2208 bytes electic_streaming2560/obj/Release/uart.o | Bin 0 -> 1976 bytes electic_streaming2560/uart.c | 651 ++ electic_streaming2560/uart.h | 195 + .../bin/Debug/electic_streaming.elf | Bin 0 -> 39258 bytes .../bin/Debug/electic_streaming.elf.eep.hex | 1 + .../bin/Debug/electic_streaming.elf.hex | 364 + .../bin/Debug/electic_streaming.elf.lss | 3038 +++++++ .../bin/Debug/electic_streaming.elf.map | 912 +++ .../bin/Release/electic_streaming.elf | Bin 0 -> 30357 bytes .../bin/Release/electic_streaming.elf.eep.hex | 1 + .../bin/Release/electic_streaming.elf.hex | 328 + .../bin/Release/electic_streaming.elf.lss | 2665 ++++++ .../bin/Release/electic_streaming.elf.map | 897 ++ electic_streaming328p/burn | 1 + electic_streaming328p/electic_streaming328p.cbp | 66 + electic_streaming328p/electic_streaming328p.depend | 43 + electic_streaming328p/electic_streaming328p.layout | 7 + electic_streaming328p/main.c | 83 + electic_streaming328p/main.cpp | 80 + electic_streaming328p/obj/Debug/main.o | Bin 0 -> 11096 bytes .../arduino libs/NewSoftSerial/NewSoftSerial.o | Bin 0 -> 6212 bytes electic_streaming328p/obj/Release/main.o | Bin 0 -> 2208 bytes electic_streaming328p/obj/Release/uart.o | Bin 0 -> 1976 bytes electic_streaming328p/uart.c | 651 ++ electic_streaming328p/uart.h | 195 + pyBTlatency/data.csv | 273 + pyBTlatency/pyBTlatency.py | 53 + pyBTlatency/pySerialGraph.py | 64 + pyDMM/pyDMM.py | 25 + pyDMM/pyRFCLIENT.py | 25 + pyDMM/pyRFSERVER.py | 30 + pybluez/advanced/inquiry-with-rssi.py | 148 + pybluez/advanced/l2-mtu.py | 60 + pybluez/advanced/l2-unreliable-client.py | 76 + pybluez/advanced/l2-unreliable-server.py | 34 + pybluez/advanced/read-local-bdaddr.py | 35 + pybluez/advanced/write-inquiry-scan.py | 90 + pybluez/bluezchat/bluezchat.glade | 138 + pybluez/bluezchat/bluezchat.py | 191 + pybluez/simple/asynchronous-inquiry.py | 65 + pybluez/simple/inquiry.py | 17 + pybluez/simple/l2capclient.py | 28 + pybluez/simple/l2capserver.py | 32 + pybluez/simple/rfcomm-client.py | 45 + pybluez/simple/rfcomm-server.py | 41 + pybluez/simple/sdp-browse.py | 35 + timer1/Makefile | 152 + timer1/burn | 1 + timer1/uart.c | 651 ++ timer1/uart.c.map | 355 + timer1/uart.h | 194 + timer1/uart.o | Bin 0 -> 7852 bytes 208 files changed, 48293 insertions(+) create mode 100644 ESS1995test_328p/ESS1995test_328p.cbp create mode 100644 ESS1995test_328p/ESS1995test_328p.depend create mode 100644 ESS1995test_328p/ESS1995test_328p.layout create mode 100644 ESS1995test_328p/adapticsBT.cpp create mode 100644 ESS1995test_328p/adapticsBT.h create mode 100755 ESS1995test_328p/bin/Debug/ESS1995test_328p.elf create mode 100644 ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.eep.hex create mode 100644 ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.hex create mode 100644 ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.lss create mode 100644 ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.map create mode 100755 ESS1995test_328p/bin/Release/ESS1995test_328p.elf create mode 100644 ESS1995test_328p/bin/Release/ESS1995test_328p.elf.eep.hex create mode 100644 ESS1995test_328p/bin/Release/ESS1995test_328p.elf.hex create mode 100644 ESS1995test_328p/bin/Release/ESS1995test_328p.elf.lss create mode 100644 ESS1995test_328p/bin/Release/ESS1995test_328p.elf.map create mode 100755 ESS1995test_328p/burn create mode 100644 ESS1995test_328p/electic.h create mode 100644 ESS1995test_328p/main.cpp create mode 100644 ESS1995test_328p/obj/Debug/main.o create mode 100644 ESS1995test_328p/obj/Release/ESS1995test_328p/adapticsBT.o create mode 100644 ESS1995test_328p/obj/Release/adapticsBT.o create mode 100644 ESS1995test_328p/obj/Release/arduinoSrc0022/HardwareSerial.o create mode 100644 ESS1995test_328p/obj/Release/arduinoSrc0022/Print.o create mode 100644 ESS1995test_328p/obj/Release/arduinoSrc0022/Tone.o create mode 100644 ESS1995test_328p/obj/Release/arduinoSrc0022/WInterrupts.o create mode 100644 ESS1995test_328p/obj/Release/arduinoSrc0022/WMath.o create mode 100644 ESS1995test_328p/obj/Release/arduinoSrc0022/WString.o create mode 100644 ESS1995test_328p/obj/Release/arduinoSrc0022/main.o create mode 100644 ESS1995test_328p/obj/Release/arduinoSrc0022/pins_arduino.o create mode 100644 ESS1995test_328p/obj/Release/arduinoSrc0022/wiring.o create mode 100644 ESS1995test_328p/obj/Release/arduinoSrc0022/wiring_analog.o create mode 100644 ESS1995test_328p/obj/Release/arduinoSrc0022/wiring_digital.o create mode 100644 ESS1995test_328p/obj/Release/arduinoSrc0022/wiring_pulse.o create mode 100644 ESS1995test_328p/obj/Release/arduinoSrc0022/wiring_shift.o create mode 100644 ESS1995test_328p/obj/Release/main.o create mode 100644 arduinoSrc0022/HardwareSerial.cpp create mode 100644 arduinoSrc0022/HardwareSerial.h create mode 100644 arduinoSrc0022/Print.cpp create mode 100644 arduinoSrc0022/Print.h create mode 100644 arduinoSrc0022/Stream.h create mode 100644 arduinoSrc0022/Tone.cpp create mode 100644 arduinoSrc0022/WCharacter.h create mode 100644 arduinoSrc0022/WConstants.h create mode 100644 arduinoSrc0022/WInterrupts.c create mode 100644 arduinoSrc0022/WMath.cpp create mode 100644 arduinoSrc0022/WProgram.h create mode 100644 arduinoSrc0022/WString.cpp create mode 100644 arduinoSrc0022/WString.h create mode 100644 arduinoSrc0022/binary.h create mode 100644 arduinoSrc0022/main.cpp create mode 100644 arduinoSrc0022/pins_arduino.c create mode 100644 arduinoSrc0022/pins_arduino.h create mode 100644 arduinoSrc0022/wiring.c create mode 100644 arduinoSrc0022/wiring.h create mode 100644 arduinoSrc0022/wiring_analog.c create mode 100644 arduinoSrc0022/wiring_digital.c create mode 100644 arduinoSrc0022/wiring_private.h create mode 100644 arduinoSrc0022/wiring_pulse.c create mode 100644 arduinoSrc0022/wiring_shift.c create mode 100644 arduino_libs/ArduinoSerialManager.zip create mode 100755 arduino_libs/ByteBuffer/.svn/all-wcprops create mode 100755 arduino_libs/ByteBuffer/.svn/entries create mode 100755 arduino_libs/ByteBuffer/.svn/text-base/ByteBuffer.cpp.svn-base create mode 100755 arduino_libs/ByteBuffer/.svn/text-base/ByteBuffer.h.svn-base create mode 100755 arduino_libs/ByteBuffer/ByteBuffer.cpp create mode 100755 arduino_libs/ByteBuffer/ByteBuffer.h create mode 100644 arduino_libs/NewSoftSerial/Examples/NewSoftSerialTest/NewSoftSerialTest.pde create mode 100644 arduino_libs/NewSoftSerial/Examples/TwoNSSTest/TwoNSSTest.pde create mode 100644 arduino_libs/NewSoftSerial/NewSoftSerial.cpp create mode 100644 arduino_libs/NewSoftSerial/NewSoftSerial.h create mode 100644 arduino_libs/NewSoftSerial/keywords.txt create mode 100755 arduino_libs/SerialManager/.DS_Store create mode 100755 arduino_libs/SerialManager/.svn/all-wcprops create mode 100755 arduino_libs/SerialManager/.svn/entries create mode 100755 arduino_libs/SerialManager/.svn/text-base/SerialManager.cpp.svn-base create mode 100755 arduino_libs/SerialManager/.svn/text-base/SerialManager.h.svn-base create mode 100755 arduino_libs/SerialManager/SerialManager.cpp create mode 100755 arduino_libs/SerialManager/SerialManager.h create mode 100644 arduino_libs/core0022_2560.a create mode 100644 arduino_libs/core0022_328p.a create mode 100644 avr_libs/uartlib/doxygen.css create mode 100644 avr_libs/uartlib/doxygen.png create mode 100644 avr_libs/uartlib/group__pfleury__uart.html create mode 100644 avr_libs/uartlib/makefile create mode 100644 avr_libs/uartlib/test_uart.c create mode 100644 avr_libs/uartlib/uart.c create mode 100644 avr_libs/uartlib/uart.h create mode 100644 blinktest_328p/bin/Debug/blinktest_328p.elf.eep.hex create mode 100644 blinktest_328p/bin/Debug/blinktest_328p.elf.hex create mode 100644 blinktest_328p/bin/Debug/blinktest_328p.elf.lss create mode 100644 blinktest_328p/bin/Debug/blinktest_328p.elf.map create mode 100644 blinktest_328p/bin/Debug/electic_streaming.elf.map create mode 100755 blinktest_328p/bin/Release/blinktest_328p.elf create mode 100644 blinktest_328p/bin/Release/blinktest_328p.elf.eep.hex create mode 100644 blinktest_328p/bin/Release/blinktest_328p.elf.hex create mode 100644 blinktest_328p/bin/Release/blinktest_328p.elf.lss create mode 100644 blinktest_328p/bin/Release/blinktest_328p.elf.map create mode 100644 blinktest_328p/blinktest_328p.cbp create mode 100644 blinktest_328p/blinktest_328p.depend create mode 100644 blinktest_328p/blinktest_328p.layout create mode 100755 blinktest_328p/burn create mode 100644 blinktest_328p/main.cpp create mode 100644 blinktest_328p/obj/Release/main.o create mode 100644 electicAndroid/.classpath create mode 100644 electicAndroid/.project create mode 100644 electicAndroid/AndroidManifest.xml create mode 100644 electicAndroid/bin/classes.dex create mode 100644 electicAndroid/bin/com/futureproof/adaptics/electic/AdapticsBluetooth$ConnectThread.class create mode 100644 electicAndroid/bin/com/futureproof/adaptics/electic/AdapticsBluetooth$ConnectedThread.class create mode 100644 electicAndroid/bin/com/futureproof/adaptics/electic/AdapticsBluetooth.class create mode 100644 electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity$1.class create mode 100644 electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity$2.class create mode 100644 electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity$3.class create mode 100644 electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity.class create mode 100644 electicAndroid/bin/com/futureproof/adaptics/electic/Electic$1.class create mode 100644 electicAndroid/bin/com/futureproof/adaptics/electic/Electic$2.class create mode 100644 electicAndroid/bin/com/futureproof/adaptics/electic/Electic.class create mode 100644 electicAndroid/bin/com/futureproof/adaptics/electic/R$attr.class create mode 100644 electicAndroid/bin/com/futureproof/adaptics/electic/R$drawable.class create mode 100644 electicAndroid/bin/com/futureproof/adaptics/electic/R$id.class create mode 100644 electicAndroid/bin/com/futureproof/adaptics/electic/R$layout.class create mode 100644 electicAndroid/bin/com/futureproof/adaptics/electic/R$menu.class create mode 100644 electicAndroid/bin/com/futureproof/adaptics/electic/R$string.class create mode 100644 electicAndroid/bin/com/futureproof/adaptics/electic/R.class create mode 100644 electicAndroid/bin/electicAndroid.apk create mode 100644 electicAndroid/bin/resources.ap_ create mode 100644 electicAndroid/default.properties create mode 100644 electicAndroid/gen/com/futureproof/adaptics/electic/R.java create mode 100644 electicAndroid/res/drawable-hdpi/app_icon.png create mode 100644 electicAndroid/res/drawable/app_icon.png create mode 100644 electicAndroid/res/layout/custom_title.xml create mode 100644 electicAndroid/res/layout/device_list.xml create mode 100644 electicAndroid/res/layout/device_name.xml create mode 100644 electicAndroid/res/layout/main.xml create mode 100644 electicAndroid/res/menu/option_menu.xml create mode 100644 electicAndroid/res/values/strings.xml create mode 100644 electicAndroid/src/com/futureproof/adaptics/electic/AdapticsBluetooth.java create mode 100644 electicAndroid/src/com/futureproof/adaptics/electic/DeviceListActivity.java create mode 100644 electicAndroid/src/com/futureproof/adaptics/electic/Electic.java create mode 100644 electic_streaming2560/bin/Debug/electic_streaming.elf.eep.hex create mode 100644 electic_streaming2560/bin/Debug/electic_streaming.elf.hex create mode 100644 electic_streaming2560/bin/Debug/electic_streaming.elf.lss create mode 100644 electic_streaming2560/bin/Debug/electic_streaming.elf.map create mode 100755 electic_streaming2560/bin/Release/electic_streaming.elf create mode 100644 electic_streaming2560/bin/Release/electic_streaming.elf.eep.hex create mode 100644 electic_streaming2560/bin/Release/electic_streaming.elf.hex create mode 100644 electic_streaming2560/bin/Release/electic_streaming.elf.lss create mode 100644 electic_streaming2560/bin/Release/electic_streaming.elf.map create mode 100755 electic_streaming2560/burn create mode 100644 electic_streaming2560/electic_streaming2560.cbp create mode 100644 electic_streaming2560/electic_streaming2560.layout create mode 100644 electic_streaming2560/main.c create mode 100644 electic_streaming2560/main.cpp create mode 100644 electic_streaming2560/obj/Debug/main.o create mode 100644 electic_streaming2560/obj/Release/arduino libs/NewSoftSerial/NewSoftSerial.o create mode 100644 electic_streaming2560/obj/Release/main.o create mode 100644 electic_streaming2560/obj/Release/uart.o create mode 100644 electic_streaming2560/uart.c create mode 100644 electic_streaming2560/uart.h create mode 100755 electic_streaming328p/bin/Debug/electic_streaming.elf create mode 100644 electic_streaming328p/bin/Debug/electic_streaming.elf.eep.hex create mode 100644 electic_streaming328p/bin/Debug/electic_streaming.elf.hex create mode 100644 electic_streaming328p/bin/Debug/electic_streaming.elf.lss create mode 100644 electic_streaming328p/bin/Debug/electic_streaming.elf.map create mode 100755 electic_streaming328p/bin/Release/electic_streaming.elf create mode 100644 electic_streaming328p/bin/Release/electic_streaming.elf.eep.hex create mode 100644 electic_streaming328p/bin/Release/electic_streaming.elf.hex create mode 100644 electic_streaming328p/bin/Release/electic_streaming.elf.lss create mode 100644 electic_streaming328p/bin/Release/electic_streaming.elf.map create mode 100755 electic_streaming328p/burn create mode 100644 electic_streaming328p/electic_streaming328p.cbp create mode 100644 electic_streaming328p/electic_streaming328p.depend create mode 100644 electic_streaming328p/electic_streaming328p.layout create mode 100644 electic_streaming328p/main.c create mode 100644 electic_streaming328p/main.cpp create mode 100644 electic_streaming328p/obj/Debug/main.o create mode 100644 electic_streaming328p/obj/Release/arduino libs/NewSoftSerial/NewSoftSerial.o create mode 100644 electic_streaming328p/obj/Release/main.o create mode 100644 electic_streaming328p/obj/Release/uart.o create mode 100644 electic_streaming328p/uart.c create mode 100644 electic_streaming328p/uart.h create mode 100644 pyBTlatency/data.csv create mode 100755 pyBTlatency/pyBTlatency.py create mode 100755 pyBTlatency/pySerialGraph.py create mode 100755 pyDMM/pyDMM.py create mode 100755 pyDMM/pyRFCLIENT.py create mode 100755 pyDMM/pyRFSERVER.py create mode 100644 pybluez/advanced/inquiry-with-rssi.py create mode 100644 pybluez/advanced/l2-mtu.py create mode 100644 pybluez/advanced/l2-unreliable-client.py create mode 100644 pybluez/advanced/l2-unreliable-server.py create mode 100644 pybluez/advanced/read-local-bdaddr.py create mode 100644 pybluez/advanced/write-inquiry-scan.py create mode 100644 pybluez/bluezchat/bluezchat.glade create mode 100755 pybluez/bluezchat/bluezchat.py create mode 100644 pybluez/simple/asynchronous-inquiry.py create mode 100644 pybluez/simple/inquiry.py create mode 100644 pybluez/simple/l2capclient.py create mode 100644 pybluez/simple/l2capserver.py create mode 100644 pybluez/simple/rfcomm-client.py create mode 100644 pybluez/simple/rfcomm-server.py create mode 100644 pybluez/simple/sdp-browse.py create mode 100644 timer1/Makefile create mode 100755 timer1/burn create mode 100644 timer1/uart.c create mode 100644 timer1/uart.c.map create mode 100644 timer1/uart.h create mode 100644 timer1/uart.o diff --git a/ESS1995test_328p/ESS1995test_328p.cbp b/ESS1995test_328p/ESS1995test_328p.cbp new file mode 100644 index 0000000..e559c31 --- /dev/null +++ b/ESS1995test_328p/ESS1995test_328p.cbp @@ -0,0 +1,107 @@ + + + + + + diff --git a/ESS1995test_328p/ESS1995test_328p.depend b/ESS1995test_328p/ESS1995test_328p.depend new file mode 100644 index 0000000..52f4c69 --- /dev/null +++ b/ESS1995test_328p/ESS1995test_328p.depend @@ -0,0 +1,130 @@ +# depslib dependency file v1.0 +1322661310 source:/home/tim/workspace/electic_AVR/ESS1995test_328p/main.cpp + "electic.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/WProgram.h + + + + + "wiring.h" + "WCharacter.h" + "WString.h" + "HardwareSerial.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/wiring.h + + + "binary.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/binary.h + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/WCharacter.h + + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/WString.h + + + + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/HardwareSerial.h + + "Stream.h" + "usb_api.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/Stream.h + + "Print.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/Print.h + + + "WString.h" + +1322661364 /home/tim/workspace/electic_AVR/ESS1995test_328p/electic.h + + "adapticsBT.h" + +1322574717 /home/tim/workspace/electic_AVR/ESS1995test_328p/adapticsBT.h + + +1322574642 source:/home/tim/workspace/electic_AVR/ESS1995test_328p/adapticsBT.cpp + "adapticsBT.h" + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/HardwareSerial.cpp + + + + + "wiring.h" + "wiring_private.h" + "HardwareSerial.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/wiring_private.h + + + + + + "wiring.h" + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/Print.cpp + + + + + "wiring.h" + "Print.h" + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/Tone.cpp + + + "wiring.h" + "pins_arduino.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/pins_arduino.h + + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/WInterrupts.c + + + + + + "WConstants.h" + "wiring_private.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/WConstants.h + "wiring.h" + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/WMath.cpp + "stdlib.h" + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/WString.cpp + + "WProgram.h" + "WString.h" + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/pins_arduino.c + + "wiring_private.h" + "pins_arduino.h" + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/wiring.c + "wiring_private.h" + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/wiring_analog.c + "wiring_private.h" + "pins_arduino.h" + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/wiring_digital.c + "wiring_private.h" + "pins_arduino.h" + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/wiring_pulse.c + "wiring_private.h" + "pins_arduino.h" + +1319029257 source:/home/tim/workspace/electic_AVR/arduinoSrc0022/wiring_shift.c + "wiring_private.h" + diff --git a/ESS1995test_328p/ESS1995test_328p.layout b/ESS1995test_328p/ESS1995test_328p.layout new file mode 100644 index 0000000..389db27 --- /dev/null +++ b/ESS1995test_328p/ESS1995test_328p.layout @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/ESS1995test_328p/adapticsBT.cpp b/ESS1995test_328p/adapticsBT.cpp new file mode 100644 index 0000000..c5113f9 --- /dev/null +++ b/ESS1995test_328p/adapticsBT.cpp @@ -0,0 +1,50 @@ +/* + Adaptics BT platform + +11/11/11 + persistent connection with a BT serial module + this WAS working well with precompiled library and setting the baudrate artificially to 76800 (because F_CPU not working) + although println(unsigned long) was causing an error. + what's changed :-( + +15/11/11 + using 38400 and non precomiled- sucessfully enters inquiry + can only seem to connect straight after pairing, which is annoying + when connected the BT module sends some fragments of commands ie.e "+STOAU\0xf4" + it only seems to stay connected for 1/2 second. Voltage issue? + + yep- it works on 0v-3v but ont on -3v-0v + -3v seems to kind of work at 9600bps - received junk + at 19200 it stays on for a few seconds but received junk + +*/ + +#include "adapticsBT.h" + +void setupBlueTooth(){ + + pinMode(BTC,INPUT); //connection indicator + + Serial.begin(38400); //Set BluetoothBee BaudRate to default baud rate 38400 + + Serial.print("\r\n+STWMOD=0\r\n"); //set the bluetooth work in slave mode + Serial.print("\r\n+STNA=AdapticsElectic\r\n"); //set the bluetooth name + Serial.print("\r\n+STOAUT=1\r\n"); // Permit Paired device to connect me + Serial.print("\r\n+STAUTO=0\r\n"); // Auto-connection should be forbidden here + + //necessary? + Serial.print("\r\n +STPIN=0000\r\n"); //"\r\n+DLPIN\r\n"); + Serial.print("\r\n+LOSSRECONN=0\r\n"); //setting this to 1 seems to stop it working + + advertise(); + +} +void advertise(){ + delay(2000); // This delay is required - its really 2 seconds + Serial.print("\r\n+INQ=1\r\n"); //make the slave bluetooth inquirable + + delay(2000); // This delay is required. + + Serial.flush(); + +} diff --git a/ESS1995test_328p/adapticsBT.h b/ESS1995test_328p/adapticsBT.h new file mode 100644 index 0000000..8cb87e3 --- /dev/null +++ b/ESS1995test_328p/adapticsBT.h @@ -0,0 +1,14 @@ +#ifndef ADAPTICSBT_H_INCLUDED +#define ADAPTICSBT_H_INCLUDED + +extern "C" void __cxa_pure_virtual(void); //for C++ defines + +#define BTC 6 + +#include //main Arduino header file + +void setupBlueTooth(); +void advertise(); + +#endif // ADAPTICSBT_H_INCLUDED + diff --git a/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf b/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf new file mode 100755 index 0000000..bdf3e38 Binary files /dev/null and b/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf differ diff --git a/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.eep.hex b/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.eep.hex new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.eep.hex @@ -0,0 +1 @@ +:00000001FF diff --git a/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.hex b/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.hex new file mode 100644 index 0000000..0d962de --- /dev/null +++ b/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.hex @@ -0,0 +1,85 @@ +:100000000C945A000C9477000C9477000C947700B1 +:100010000C9477000C9477000C9477000C94770084 +:100020000C9477000C9477000C9477000C94770074 +:100030000C9477000C9477000C9477000C94770064 +:100040000C9406010C9477000C9477000C947700C4 +:100050000C9477000C9477000C9477000C94770044 +:100060000C9477000C947700000024272A000025C8 +:10007000282B000023262904040404040404040299 +:100080000202020202030303030303010204081035 +:100090002040800102040810200102040810200002 +:1000A0000000070002010000030406000000000039 +:1000B0000000000011241FBECFEFD8E0DEBFCDBF8F +:1000C00011E0A0E0B1E0E4E3F5E002C005900D929C +:1000D000A030B107D9F711E0A0E0B1E001C01D9256 +:1000E000A830B107E1F70E94A3000C9498020C9489 +:1000F0000000DF93CF9300D0CDB7DEB78A8384E0D2 +:1001000061E00E94E301198216C08A81282F30E045 +:100110008981882F90E0A90102C0559547958A955D +:10012000E2F7CA01982F917084E0692F0E940102C2 +:1001300089818F5F89838981883038F30F900F9090 +:10014000CF91DF910895DF93CF9300D0CDB7DEB785 +:1001500082E060E00E94E30183E061E00E94E3014D +:100160008CE061E00E94E3018DE061E00E94E30128 +:100170000E94A90182E00E944C021A8281309105FE +:1001800011F481E08A838A818823B1F08CE061E0F8 +:100190000E94010288EC0E94790082E00E944C02D9 +:1001A0001982009711F481E089838981882321F0E5 +:1001B0008DE061E00E94010264EF71E080E090E078 +:1001C0000E9471018CE060E00E9401028CE060E01E +:1001D0000E940102CFCFDF93CF93CDB7DEB783E08C +:1001E00061E00E9401026AE070E080E090E00E941D +:1001F000710183E060E00E9401026AE070E080E04B +:1002000090E00E947101CF91DF9108951F920F92AB +:100210000FB60F9211242F938F939F93AF93BF9399 +:100220008091000190910101A0910201B091030120 +:100230008050904CAF4FBF4F8093000190930101CD +:10024000A0930201B093030127C080910001909117 +:100250000101A0910201B091030180589E43A0408A +:10026000B0408093000190930101A0930201B093EC +:1002700003018091040190910501A0910601B091C4 +:1002800007010196A11DB11D809304019093050102 +:10029000A0930601B09307018091000190910101A4 +:1002A000A0910201B091030181589E43A040B0404B +:1002B00060F6BF91AF919F918F912F910F900FBEDC +:1002C0000F901F9018958FB7F894209104013091EA +:1002D000050140910601509107018FBFB901CA0184 +:1002E0000895EF92FF920F931F937B018C018FB7BC +:1002F000F8944091040150910501609106017091BC +:1003000007018FBF2FB7F8948091040190910501E8 +:10031000A0910601B09107012FBF841B950BA60B7E +:10032000B70B8E159F05A007B10760F31F910F91C2 +:10033000FF90EF900895019759F0FC01EE0FFF1F19 +:10034000EE0FFF1F32978FB7F8943197F1F78FBFF9 +:100350000895789484B5826084BD84B5816084BD3D +:1003600085B5826085BD85B5816085BDEEE6F0E02E +:10037000808181608083E1E8F0E080818260808319 +:10038000808181608083E0E8F0E08081816080830B +:10039000E1EBF0E0808184608083E0EBF0E080813D +:1003A00081608083EAE7F0E08081846080838081DF +:1003B0008260808380818160808380818068808387 +:1003C0001092C1000895282F30E0C90185579F4F32 +:1003D000FC01949129583F4FF9018491882381F0C1 +:1003E000E82FF0E0E859FF4FE491F0E0662329F4AC +:1003F000808190958923808308958081892B8083D3 +:100400000895482F50E0CA0181569F4FFC01249166 +:10041000CA0185579F4FFC01949149585F4FFA01DB +:1004200034913323C1F1222331F1233021F480911F +:1004300080008F7705C0243031F4809180008F7D5B +:100440008093800018C0213019F484B58F7704C0E0 +:10045000223021F484B58F7D84BD0DC0263021F477 +:100460008091B0008F7705C0273029F48091B000CB +:100470008F7D8093B000E32FF0E0E359FF4FE491CC +:10048000F0E0662329F48081909589238083089584 +:100490008081892B80830895482F50E0CA018156BE +:1004A0009F4FFC012491CA0185579F4FFC019491F5 +:1004B00049585F4FFA013491332319F420E030E0BA +:1004C00035C0222331F1233021F4809180008F77D1 +:1004D00005C0243031F4809180008F7D80938000AE +:1004E00018C0213019F484B58F7704C0223021F46C +:1004F00084B58F7D84BD0DC0263021F48091B0007D +:100500008F7705C0273029F48091B0008F7D8093CC +:10051000B000E32FF0E0EE58FF4FE491F0E080816F +:1005200020E030E0892311F021E030E0C901089596 +:04053000F894FFCF6D +:00000001FF diff --git a/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.lss b/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.lss new file mode 100644 index 0000000..b9c4942 --- /dev/null +++ b/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.lss @@ -0,0 +1,672 @@ + +bin/Debug/ESS1995test_328p.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000534 00000000 00000000 00000074 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .bss 00000008 00800100 00800100 000005a8 2**0 + ALLOC + 2 .stab 00000c9c 00000000 00000000 000005a8 2**2 + CONTENTS, READONLY, DEBUGGING + 3 .stabstr 000018d2 00000000 00000000 00001244 2**0 + CONTENTS, READONLY, DEBUGGING + 4 .debug_aranges 00000040 00000000 00000000 00002b16 2**0 + CONTENTS, READONLY, DEBUGGING + 5 .debug_pubnames 0000016c 00000000 00000000 00002b56 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_info 000006f2 00000000 00000000 00002cc2 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_abbrev 000002e1 00000000 00000000 000033b4 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 00000551 00000000 00000000 00003695 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_frame 000000a0 00000000 00000000 00003be8 2**2 + CONTENTS, READONLY, DEBUGGING + 10 .debug_str 00000227 00000000 00000000 00003c88 2**0 + CONTENTS, READONLY, DEBUGGING + 11 .debug_loc 000001fa 00000000 00000000 00003eaf 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 5a 00 jmp 0xb4 ; 0xb4 <__ctors_end> + 4: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 8: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 10: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 14: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 18: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 1c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 20: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 24: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 28: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 2c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 30: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 34: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 38: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 3c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 40: 0c 94 06 01 jmp 0x20c ; 0x20c <__vector_16> + 44: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 48: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 4c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 50: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 54: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 58: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 5c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 60: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 64: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + +00000068 : + 68: 00 00 24 27 2a ..$'* + +0000006d : + 6d: 00 00 25 28 2b ..%(+ + +00000072 : + 72: 00 00 23 26 29 ..#&) + +00000077 : + 77: 04 04 04 04 04 04 04 04 02 02 02 02 02 02 03 03 ................ + 87: 03 03 03 03 .... + +0000008b : + 8b: 01 02 04 08 10 20 40 80 01 02 04 08 10 20 01 02 ..... @...... .. + 9b: 04 08 10 20 ... + +0000009f : + 9f: 00 00 00 07 00 02 01 00 00 03 04 06 00 00 00 00 ................ + af: 00 00 00 00 00 ..... + +000000b4 <__ctors_end>: + b4: 11 24 eor r1, r1 + b6: 1f be out 0x3f, r1 ; 63 + b8: cf ef ldi r28, 0xFF ; 255 + ba: d8 e0 ldi r29, 0x08 ; 8 + bc: de bf out 0x3e, r29 ; 62 + be: cd bf out 0x3d, r28 ; 61 + +000000c0 <__do_copy_data>: + c0: 11 e0 ldi r17, 0x01 ; 1 + c2: a0 e0 ldi r26, 0x00 ; 0 + c4: b1 e0 ldi r27, 0x01 ; 1 + c6: e4 e3 ldi r30, 0x34 ; 52 + c8: f5 e0 ldi r31, 0x05 ; 5 + ca: 02 c0 rjmp .+4 ; 0xd0 <.do_copy_data_start> + +000000cc <.do_copy_data_loop>: + cc: 05 90 lpm r0, Z+ + ce: 0d 92 st X+, r0 + +000000d0 <.do_copy_data_start>: + d0: a0 30 cpi r26, 0x00 ; 0 + d2: b1 07 cpc r27, r17 + d4: d9 f7 brne .-10 ; 0xcc <.do_copy_data_loop> + +000000d6 <__do_clear_bss>: + d6: 11 e0 ldi r17, 0x01 ; 1 + d8: a0 e0 ldi r26, 0x00 ; 0 + da: b1 e0 ldi r27, 0x01 ; 1 + dc: 01 c0 rjmp .+2 ; 0xe0 <.do_clear_bss_start> + +000000de <.do_clear_bss_loop>: + de: 1d 92 st X+, r1 + +000000e0 <.do_clear_bss_start>: + e0: a8 30 cpi r26, 0x08 ; 8 + e2: b1 07 cpc r27, r17 + e4: e1 f7 brne .-8 ; 0xde <.do_clear_bss_loop> + e6: 0e 94 a3 00 call 0x146 ; 0x146
+ ea: 0c 94 98 02 jmp 0x530 ; 0x530 <_exit> + +000000ee <__bad_interrupt>: + ee: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +000000f2 <_Z9writeByteh>: + digitalWrite(SCLK, HIGH); + delay(10); + digitalWrite(SCLK, LOW); + delay(10); +} +void writeByte(uint8_t data){ + f2: df 93 push r29 + f4: cf 93 push r28 + f6: 00 d0 rcall .+0 ; 0xf8 <_Z9writeByteh+0x6> + f8: cd b7 in r28, 0x3d ; 61 + fa: de b7 in r29, 0x3e ; 62 + fc: 8a 83 std Y+2, r24 ; 0x02 + pinMode(SDATA,OUTPUT); + fe: 84 e0 ldi r24, 0x04 ; 4 + 100: 61 e0 ldi r22, 0x01 ; 1 + 102: 0e 94 e3 01 call 0x3c6 ; 0x3c6 + for (uint8_t bit=0;bit<8;bit++) { + 106: 19 82 std Y+1, r1 ; 0x01 + 108: 16 c0 rjmp .+44 ; 0x136 <_Z9writeByteh+0x44> + digitalWrite(SDATA,(data>>bit)&0b01); + 10a: 8a 81 ldd r24, Y+2 ; 0x02 + 10c: 28 2f mov r18, r24 + 10e: 30 e0 ldi r19, 0x00 ; 0 + 110: 89 81 ldd r24, Y+1 ; 0x01 + 112: 88 2f mov r24, r24 + 114: 90 e0 ldi r25, 0x00 ; 0 + 116: a9 01 movw r20, r18 + 118: 02 c0 rjmp .+4 ; 0x11e <_Z9writeByteh+0x2c> + 11a: 55 95 asr r21 + 11c: 47 95 ror r20 + 11e: 8a 95 dec r24 + 120: e2 f7 brpl .-8 ; 0x11a <_Z9writeByteh+0x28> + 122: ca 01 movw r24, r20 + 124: 98 2f mov r25, r24 + 126: 91 70 andi r25, 0x01 ; 1 + 128: 84 e0 ldi r24, 0x04 ; 4 + 12a: 69 2f mov r22, r25 + 12c: 0e 94 01 02 call 0x402 ; 0x402 + digitalWrite(SCLK, LOW); + delay(10); +} +void writeByte(uint8_t data){ + pinMode(SDATA,OUTPUT); + for (uint8_t bit=0;bit<8;bit++) { + 130: 89 81 ldd r24, Y+1 ; 0x01 + 132: 8f 5f subi r24, 0xFF ; 255 + 134: 89 83 std Y+1, r24 ; 0x01 + 136: 89 81 ldd r24, Y+1 ; 0x01 + 138: 88 30 cpi r24, 0x08 ; 8 + 13a: 38 f3 brcs .-50 ; 0x10a <_Z9writeByteh+0x18> + digitalWrite(SDATA,(data>>bit)&0b01); + } +} + 13c: 0f 90 pop r0 + 13e: 0f 90 pop r0 + 140: cf 91 pop r28 + 142: df 91 pop r29 + 144: 08 95 ret + +00000146
: +int main(){ + 146: df 93 push r29 + 148: cf 93 push r28 + 14a: 00 d0 rcall .+0 ; 0x14c + 14c: cd b7 in r28, 0x3d ; 61 + 14e: de b7 in r29, 0x3e ; 62 + pinMode(DATA_NEW,INPUT); + 150: 82 e0 ldi r24, 0x02 ; 2 + 152: 60 e0 ldi r22, 0x00 ; 0 + 154: 0e 94 e3 01 call 0x3c6 ; 0x3c6 + pinMode(SCLK,OUTPUT); + 158: 83 e0 ldi r24, 0x03 ; 3 + 15a: 61 e0 ldi r22, 0x01 ; 1 + 15c: 0e 94 e3 01 call 0x3c6 ; 0x3c6 + + pinMode(OUTPUT1, OUTPUT); + 160: 8c e0 ldi r24, 0x0C ; 12 + 162: 61 e0 ldi r22, 0x01 ; 1 + 164: 0e 94 e3 01 call 0x3c6 ; 0x3c6 + pinMode(OUTPUT2, OUTPUT); + 168: 8d e0 ldi r24, 0x0D ; 13 + 16a: 61 e0 ldi r22, 0x01 ; 1 + 16c: 0e 94 e3 01 call 0x3c6 ; 0x3c6 + + init(); //-- init Arduino library - delay, PWM setup messes with timers, millis(), micros() etc don't work without it + 170: 0e 94 a9 01 call 0x352 ; 0x352 + + while(1) { + if (digitalRead(DATA_NEW)==HIGH){ //DMM is ready to receive data + 174: 82 e0 ldi r24, 0x02 ; 2 + 176: 0e 94 4c 02 call 0x498 ; 0x498 + 17a: 1a 82 std Y+2, r1 ; 0x02 + 17c: 81 30 cpi r24, 0x01 ; 1 + 17e: 91 05 cpc r25, r1 + 180: 11 f4 brne .+4 ; 0x186 + 182: 81 e0 ldi r24, 0x01 ; 1 + 184: 8a 83 std Y+2, r24 ; 0x02 + 186: 8a 81 ldd r24, Y+2 ; 0x02 + 188: 88 23 and r24, r24 + 18a: b1 f0 breq .+44 ; 0x1b8 + digitalWrite(OUTPUT1,HIGH); + 18c: 8c e0 ldi r24, 0x0C ; 12 + 18e: 61 e0 ldi r22, 0x01 ; 1 + 190: 0e 94 01 02 call 0x402 ; 0x402 + writeByte(WRITE_ID); + 194: 88 ec ldi r24, 0xC8 ; 200 + 196: 0e 94 79 00 call 0xf2 ; 0xf2 <_Z9writeByteh> + if (digitalRead(DATA_NEW)==LOW){ //ACK + 19a: 82 e0 ldi r24, 0x02 ; 2 + 19c: 0e 94 4c 02 call 0x498 ; 0x498 + 1a0: 19 82 std Y+1, r1 ; 0x01 + 1a2: 00 97 sbiw r24, 0x00 ; 0 + 1a4: 11 f4 brne .+4 ; 0x1aa + 1a6: 81 e0 ldi r24, 0x01 ; 1 + 1a8: 89 83 std Y+1, r24 ; 0x01 + 1aa: 89 81 ldd r24, Y+1 ; 0x01 + 1ac: 88 23 and r24, r24 + 1ae: 21 f0 breq .+8 ; 0x1b8 + digitalWrite(OUTPUT2,HIGH); + 1b0: 8d e0 ldi r24, 0x0D ; 13 + 1b2: 61 e0 ldi r22, 0x01 ; 1 + 1b4: 0e 94 01 02 call 0x402 ; 0x402 + } + } + delay(500); + 1b8: 64 ef ldi r22, 0xF4 ; 244 + 1ba: 71 e0 ldi r23, 0x01 ; 1 + 1bc: 80 e0 ldi r24, 0x00 ; 0 + 1be: 90 e0 ldi r25, 0x00 ; 0 + 1c0: 0e 94 71 01 call 0x2e2 ; 0x2e2 + digitalWrite(OUTPUT1,LOW); + 1c4: 8c e0 ldi r24, 0x0C ; 12 + 1c6: 60 e0 ldi r22, 0x00 ; 0 + 1c8: 0e 94 01 02 call 0x402 ; 0x402 + digitalWrite(OUTPUT1,LOW); + 1cc: 8c e0 ldi r24, 0x0C ; 12 + 1ce: 60 e0 ldi r22, 0x00 ; 0 + 1d0: 0e 94 01 02 call 0x402 ; 0x402 + 1d4: cf cf rjmp .-98 ; 0x174 + +000001d6 <_Z9SCLKcyclev>: +#define OUTPUT2 13 + +#define WRITE_ID 0b11001000 +#define READ_ID 0b11001001 + +void SCLKcycle() { + 1d6: df 93 push r29 + 1d8: cf 93 push r28 + 1da: cd b7 in r28, 0x3d ; 61 + 1dc: de b7 in r29, 0x3e ; 62 + digitalWrite(SCLK, HIGH); + 1de: 83 e0 ldi r24, 0x03 ; 3 + 1e0: 61 e0 ldi r22, 0x01 ; 1 + 1e2: 0e 94 01 02 call 0x402 ; 0x402 + delay(10); + 1e6: 6a e0 ldi r22, 0x0A ; 10 + 1e8: 70 e0 ldi r23, 0x00 ; 0 + 1ea: 80 e0 ldi r24, 0x00 ; 0 + 1ec: 90 e0 ldi r25, 0x00 ; 0 + 1ee: 0e 94 71 01 call 0x2e2 ; 0x2e2 + digitalWrite(SCLK, LOW); + 1f2: 83 e0 ldi r24, 0x03 ; 3 + 1f4: 60 e0 ldi r22, 0x00 ; 0 + 1f6: 0e 94 01 02 call 0x402 ; 0x402 + delay(10); + 1fa: 6a e0 ldi r22, 0x0A ; 10 + 1fc: 70 e0 ldi r23, 0x00 ; 0 + 1fe: 80 e0 ldi r24, 0x00 ; 0 + 200: 90 e0 ldi r25, 0x00 ; 0 + 202: 0e 94 71 01 call 0x2e2 ; 0x2e2 +} + 206: cf 91 pop r28 + 208: df 91 pop r29 + 20a: 08 95 ret + +0000020c <__vector_16>: + 20c: 1f 92 push r1 + 20e: 0f 92 push r0 + 210: 0f b6 in r0, 0x3f ; 63 + 212: 0f 92 push r0 + 214: 11 24 eor r1, r1 + 216: 2f 93 push r18 + 218: 8f 93 push r24 + 21a: 9f 93 push r25 + 21c: af 93 push r26 + 21e: bf 93 push r27 + 220: 80 91 00 01 lds r24, 0x0100 + 224: 90 91 01 01 lds r25, 0x0101 + 228: a0 91 02 01 lds r26, 0x0102 + 22c: b0 91 03 01 lds r27, 0x0103 + 230: 80 50 subi r24, 0x00 ; 0 + 232: 90 4c sbci r25, 0xC0 ; 192 + 234: af 4f sbci r26, 0xFF ; 255 + 236: bf 4f sbci r27, 0xFF ; 255 + 238: 80 93 00 01 sts 0x0100, r24 + 23c: 90 93 01 01 sts 0x0101, r25 + 240: a0 93 02 01 sts 0x0102, r26 + 244: b0 93 03 01 sts 0x0103, r27 + 248: 27 c0 rjmp .+78 ; 0x298 <__vector_16+0x8c> + 24a: 80 91 00 01 lds r24, 0x0100 + 24e: 90 91 01 01 lds r25, 0x0101 + 252: a0 91 02 01 lds r26, 0x0102 + 256: b0 91 03 01 lds r27, 0x0103 + 25a: 80 58 subi r24, 0x80 ; 128 + 25c: 9e 43 sbci r25, 0x3E ; 62 + 25e: a0 40 sbci r26, 0x00 ; 0 + 260: b0 40 sbci r27, 0x00 ; 0 + 262: 80 93 00 01 sts 0x0100, r24 + 266: 90 93 01 01 sts 0x0101, r25 + 26a: a0 93 02 01 sts 0x0102, r26 + 26e: b0 93 03 01 sts 0x0103, r27 + 272: 80 91 04 01 lds r24, 0x0104 + 276: 90 91 05 01 lds r25, 0x0105 + 27a: a0 91 06 01 lds r26, 0x0106 + 27e: b0 91 07 01 lds r27, 0x0107 + 282: 01 96 adiw r24, 0x01 ; 1 + 284: a1 1d adc r26, r1 + 286: b1 1d adc r27, r1 + 288: 80 93 04 01 sts 0x0104, r24 + 28c: 90 93 05 01 sts 0x0105, r25 + 290: a0 93 06 01 sts 0x0106, r26 + 294: b0 93 07 01 sts 0x0107, r27 + 298: 80 91 00 01 lds r24, 0x0100 + 29c: 90 91 01 01 lds r25, 0x0101 + 2a0: a0 91 02 01 lds r26, 0x0102 + 2a4: b0 91 03 01 lds r27, 0x0103 + 2a8: 81 58 subi r24, 0x81 ; 129 + 2aa: 9e 43 sbci r25, 0x3E ; 62 + 2ac: a0 40 sbci r26, 0x00 ; 0 + 2ae: b0 40 sbci r27, 0x00 ; 0 + 2b0: 60 f6 brcc .-104 ; 0x24a <__vector_16+0x3e> + 2b2: bf 91 pop r27 + 2b4: af 91 pop r26 + 2b6: 9f 91 pop r25 + 2b8: 8f 91 pop r24 + 2ba: 2f 91 pop r18 + 2bc: 0f 90 pop r0 + 2be: 0f be out 0x3f, r0 ; 63 + 2c0: 0f 90 pop r0 + 2c2: 1f 90 pop r1 + 2c4: 18 95 reti + +000002c6 : + 2c6: 8f b7 in r24, 0x3f ; 63 + 2c8: f8 94 cli + 2ca: 20 91 04 01 lds r18, 0x0104 + 2ce: 30 91 05 01 lds r19, 0x0105 + 2d2: 40 91 06 01 lds r20, 0x0106 + 2d6: 50 91 07 01 lds r21, 0x0107 + 2da: 8f bf out 0x3f, r24 ; 63 + 2dc: b9 01 movw r22, r18 + 2de: ca 01 movw r24, r20 + 2e0: 08 95 ret + +000002e2 : + 2e2: ef 92 push r14 + 2e4: ff 92 push r15 + 2e6: 0f 93 push r16 + 2e8: 1f 93 push r17 + 2ea: 7b 01 movw r14, r22 + 2ec: 8c 01 movw r16, r24 + 2ee: 8f b7 in r24, 0x3f ; 63 + 2f0: f8 94 cli + 2f2: 40 91 04 01 lds r20, 0x0104 + 2f6: 50 91 05 01 lds r21, 0x0105 + 2fa: 60 91 06 01 lds r22, 0x0106 + 2fe: 70 91 07 01 lds r23, 0x0107 + 302: 8f bf out 0x3f, r24 ; 63 + 304: 2f b7 in r18, 0x3f ; 63 + 306: f8 94 cli + 308: 80 91 04 01 lds r24, 0x0104 + 30c: 90 91 05 01 lds r25, 0x0105 + 310: a0 91 06 01 lds r26, 0x0106 + 314: b0 91 07 01 lds r27, 0x0107 + 318: 2f bf out 0x3f, r18 ; 63 + 31a: 84 1b sub r24, r20 + 31c: 95 0b sbc r25, r21 + 31e: a6 0b sbc r26, r22 + 320: b7 0b sbc r27, r23 + 322: 8e 15 cp r24, r14 + 324: 9f 05 cpc r25, r15 + 326: a0 07 cpc r26, r16 + 328: b1 07 cpc r27, r17 + 32a: 60 f3 brcs .-40 ; 0x304 + 32c: 1f 91 pop r17 + 32e: 0f 91 pop r16 + 330: ff 90 pop r15 + 332: ef 90 pop r14 + 334: 08 95 ret + +00000336 : + 336: 01 97 sbiw r24, 0x01 ; 1 + 338: 59 f0 breq .+22 ; 0x350 + 33a: fc 01 movw r30, r24 + 33c: ee 0f add r30, r30 + 33e: ff 1f adc r31, r31 + 340: ee 0f add r30, r30 + 342: ff 1f adc r31, r31 + 344: 32 97 sbiw r30, 0x02 ; 2 + 346: 8f b7 in r24, 0x3f ; 63 + 348: f8 94 cli + 34a: 31 97 sbiw r30, 0x01 ; 1 + 34c: f1 f7 brne .-4 ; 0x34a + 34e: 8f bf out 0x3f, r24 ; 63 + 350: 08 95 ret + +00000352 : + 352: 78 94 sei + 354: 84 b5 in r24, 0x24 ; 36 + 356: 82 60 ori r24, 0x02 ; 2 + 358: 84 bd out 0x24, r24 ; 36 + 35a: 84 b5 in r24, 0x24 ; 36 + 35c: 81 60 ori r24, 0x01 ; 1 + 35e: 84 bd out 0x24, r24 ; 36 + 360: 85 b5 in r24, 0x25 ; 37 + 362: 82 60 ori r24, 0x02 ; 2 + 364: 85 bd out 0x25, r24 ; 37 + 366: 85 b5 in r24, 0x25 ; 37 + 368: 81 60 ori r24, 0x01 ; 1 + 36a: 85 bd out 0x25, r24 ; 37 + 36c: ee e6 ldi r30, 0x6E ; 110 + 36e: f0 e0 ldi r31, 0x00 ; 0 + 370: 80 81 ld r24, Z + 372: 81 60 ori r24, 0x01 ; 1 + 374: 80 83 st Z, r24 + 376: e1 e8 ldi r30, 0x81 ; 129 + 378: f0 e0 ldi r31, 0x00 ; 0 + 37a: 80 81 ld r24, Z + 37c: 82 60 ori r24, 0x02 ; 2 + 37e: 80 83 st Z, r24 + 380: 80 81 ld r24, Z + 382: 81 60 ori r24, 0x01 ; 1 + 384: 80 83 st Z, r24 + 386: e0 e8 ldi r30, 0x80 ; 128 + 388: f0 e0 ldi r31, 0x00 ; 0 + 38a: 80 81 ld r24, Z + 38c: 81 60 ori r24, 0x01 ; 1 + 38e: 80 83 st Z, r24 + 390: e1 eb ldi r30, 0xB1 ; 177 + 392: f0 e0 ldi r31, 0x00 ; 0 + 394: 80 81 ld r24, Z + 396: 84 60 ori r24, 0x04 ; 4 + 398: 80 83 st Z, r24 + 39a: e0 eb ldi r30, 0xB0 ; 176 + 39c: f0 e0 ldi r31, 0x00 ; 0 + 39e: 80 81 ld r24, Z + 3a0: 81 60 ori r24, 0x01 ; 1 + 3a2: 80 83 st Z, r24 + 3a4: ea e7 ldi r30, 0x7A ; 122 + 3a6: f0 e0 ldi r31, 0x00 ; 0 + 3a8: 80 81 ld r24, Z + 3aa: 84 60 ori r24, 0x04 ; 4 + 3ac: 80 83 st Z, r24 + 3ae: 80 81 ld r24, Z + 3b0: 82 60 ori r24, 0x02 ; 2 + 3b2: 80 83 st Z, r24 + 3b4: 80 81 ld r24, Z + 3b6: 81 60 ori r24, 0x01 ; 1 + 3b8: 80 83 st Z, r24 + 3ba: 80 81 ld r24, Z + 3bc: 80 68 ori r24, 0x80 ; 128 + 3be: 80 83 st Z, r24 + 3c0: 10 92 c1 00 sts 0x00C1, r1 + 3c4: 08 95 ret + +000003c6 : + 3c6: 28 2f mov r18, r24 + 3c8: 30 e0 ldi r19, 0x00 ; 0 + 3ca: c9 01 movw r24, r18 + 3cc: 85 57 subi r24, 0x75 ; 117 + 3ce: 9f 4f sbci r25, 0xFF ; 255 + 3d0: fc 01 movw r30, r24 + 3d2: 94 91 lpm r25, Z+ + 3d4: 29 58 subi r18, 0x89 ; 137 + 3d6: 3f 4f sbci r19, 0xFF ; 255 + 3d8: f9 01 movw r30, r18 + 3da: 84 91 lpm r24, Z+ + 3dc: 88 23 and r24, r24 + 3de: 81 f0 breq .+32 ; 0x400 + 3e0: e8 2f mov r30, r24 + 3e2: f0 e0 ldi r31, 0x00 ; 0 + 3e4: e8 59 subi r30, 0x98 ; 152 + 3e6: ff 4f sbci r31, 0xFF ; 255 + 3e8: e4 91 lpm r30, Z+ + 3ea: f0 e0 ldi r31, 0x00 ; 0 + 3ec: 66 23 and r22, r22 + 3ee: 29 f4 brne .+10 ; 0x3fa + 3f0: 80 81 ld r24, Z + 3f2: 90 95 com r25 + 3f4: 89 23 and r24, r25 + 3f6: 80 83 st Z, r24 + 3f8: 08 95 ret + 3fa: 80 81 ld r24, Z + 3fc: 89 2b or r24, r25 + 3fe: 80 83 st Z, r24 + 400: 08 95 ret + +00000402 : + 402: 48 2f mov r20, r24 + 404: 50 e0 ldi r21, 0x00 ; 0 + 406: ca 01 movw r24, r20 + 408: 81 56 subi r24, 0x61 ; 97 + 40a: 9f 4f sbci r25, 0xFF ; 255 + 40c: fc 01 movw r30, r24 + 40e: 24 91 lpm r18, Z+ + 410: ca 01 movw r24, r20 + 412: 85 57 subi r24, 0x75 ; 117 + 414: 9f 4f sbci r25, 0xFF ; 255 + 416: fc 01 movw r30, r24 + 418: 94 91 lpm r25, Z+ + 41a: 49 58 subi r20, 0x89 ; 137 + 41c: 5f 4f sbci r21, 0xFF ; 255 + 41e: fa 01 movw r30, r20 + 420: 34 91 lpm r19, Z+ + 422: 33 23 and r19, r19 + 424: c1 f1 breq .+112 ; 0x496 + 426: 22 23 and r18, r18 + 428: 31 f1 breq .+76 ; 0x476 + 42a: 23 30 cpi r18, 0x03 ; 3 + 42c: 21 f4 brne .+8 ; 0x436 + 42e: 80 91 80 00 lds r24, 0x0080 + 432: 8f 77 andi r24, 0x7F ; 127 + 434: 05 c0 rjmp .+10 ; 0x440 + 436: 24 30 cpi r18, 0x04 ; 4 + 438: 31 f4 brne .+12 ; 0x446 + 43a: 80 91 80 00 lds r24, 0x0080 + 43e: 8f 7d andi r24, 0xDF ; 223 + 440: 80 93 80 00 sts 0x0080, r24 + 444: 18 c0 rjmp .+48 ; 0x476 + 446: 21 30 cpi r18, 0x01 ; 1 + 448: 19 f4 brne .+6 ; 0x450 + 44a: 84 b5 in r24, 0x24 ; 36 + 44c: 8f 77 andi r24, 0x7F ; 127 + 44e: 04 c0 rjmp .+8 ; 0x458 + 450: 22 30 cpi r18, 0x02 ; 2 + 452: 21 f4 brne .+8 ; 0x45c + 454: 84 b5 in r24, 0x24 ; 36 + 456: 8f 7d andi r24, 0xDF ; 223 + 458: 84 bd out 0x24, r24 ; 36 + 45a: 0d c0 rjmp .+26 ; 0x476 + 45c: 26 30 cpi r18, 0x06 ; 6 + 45e: 21 f4 brne .+8 ; 0x468 + 460: 80 91 b0 00 lds r24, 0x00B0 + 464: 8f 77 andi r24, 0x7F ; 127 + 466: 05 c0 rjmp .+10 ; 0x472 + 468: 27 30 cpi r18, 0x07 ; 7 + 46a: 29 f4 brne .+10 ; 0x476 + 46c: 80 91 b0 00 lds r24, 0x00B0 + 470: 8f 7d andi r24, 0xDF ; 223 + 472: 80 93 b0 00 sts 0x00B0, r24 + 476: e3 2f mov r30, r19 + 478: f0 e0 ldi r31, 0x00 ; 0 + 47a: e3 59 subi r30, 0x93 ; 147 + 47c: ff 4f sbci r31, 0xFF ; 255 + 47e: e4 91 lpm r30, Z+ + 480: f0 e0 ldi r31, 0x00 ; 0 + 482: 66 23 and r22, r22 + 484: 29 f4 brne .+10 ; 0x490 + 486: 80 81 ld r24, Z + 488: 90 95 com r25 + 48a: 89 23 and r24, r25 + 48c: 80 83 st Z, r24 + 48e: 08 95 ret + 490: 80 81 ld r24, Z + 492: 89 2b or r24, r25 + 494: 80 83 st Z, r24 + 496: 08 95 ret + +00000498 : + 498: 48 2f mov r20, r24 + 49a: 50 e0 ldi r21, 0x00 ; 0 + 49c: ca 01 movw r24, r20 + 49e: 81 56 subi r24, 0x61 ; 97 + 4a0: 9f 4f sbci r25, 0xFF ; 255 + 4a2: fc 01 movw r30, r24 + 4a4: 24 91 lpm r18, Z+ + 4a6: ca 01 movw r24, r20 + 4a8: 85 57 subi r24, 0x75 ; 117 + 4aa: 9f 4f sbci r25, 0xFF ; 255 + 4ac: fc 01 movw r30, r24 + 4ae: 94 91 lpm r25, Z+ + 4b0: 49 58 subi r20, 0x89 ; 137 + 4b2: 5f 4f sbci r21, 0xFF ; 255 + 4b4: fa 01 movw r30, r20 + 4b6: 34 91 lpm r19, Z+ + 4b8: 33 23 and r19, r19 + 4ba: 19 f4 brne .+6 ; 0x4c2 + 4bc: 20 e0 ldi r18, 0x00 ; 0 + 4be: 30 e0 ldi r19, 0x00 ; 0 + 4c0: 35 c0 rjmp .+106 ; 0x52c + 4c2: 22 23 and r18, r18 + 4c4: 31 f1 breq .+76 ; 0x512 + 4c6: 23 30 cpi r18, 0x03 ; 3 + 4c8: 21 f4 brne .+8 ; 0x4d2 + 4ca: 80 91 80 00 lds r24, 0x0080 + 4ce: 8f 77 andi r24, 0x7F ; 127 + 4d0: 05 c0 rjmp .+10 ; 0x4dc + 4d2: 24 30 cpi r18, 0x04 ; 4 + 4d4: 31 f4 brne .+12 ; 0x4e2 + 4d6: 80 91 80 00 lds r24, 0x0080 + 4da: 8f 7d andi r24, 0xDF ; 223 + 4dc: 80 93 80 00 sts 0x0080, r24 + 4e0: 18 c0 rjmp .+48 ; 0x512 + 4e2: 21 30 cpi r18, 0x01 ; 1 + 4e4: 19 f4 brne .+6 ; 0x4ec + 4e6: 84 b5 in r24, 0x24 ; 36 + 4e8: 8f 77 andi r24, 0x7F ; 127 + 4ea: 04 c0 rjmp .+8 ; 0x4f4 + 4ec: 22 30 cpi r18, 0x02 ; 2 + 4ee: 21 f4 brne .+8 ; 0x4f8 + 4f0: 84 b5 in r24, 0x24 ; 36 + 4f2: 8f 7d andi r24, 0xDF ; 223 + 4f4: 84 bd out 0x24, r24 ; 36 + 4f6: 0d c0 rjmp .+26 ; 0x512 + 4f8: 26 30 cpi r18, 0x06 ; 6 + 4fa: 21 f4 brne .+8 ; 0x504 + 4fc: 80 91 b0 00 lds r24, 0x00B0 + 500: 8f 77 andi r24, 0x7F ; 127 + 502: 05 c0 rjmp .+10 ; 0x50e + 504: 27 30 cpi r18, 0x07 ; 7 + 506: 29 f4 brne .+10 ; 0x512 + 508: 80 91 b0 00 lds r24, 0x00B0 + 50c: 8f 7d andi r24, 0xDF ; 223 + 50e: 80 93 b0 00 sts 0x00B0, r24 + 512: e3 2f mov r30, r19 + 514: f0 e0 ldi r31, 0x00 ; 0 + 516: ee 58 subi r30, 0x8E ; 142 + 518: ff 4f sbci r31, 0xFF ; 255 + 51a: e4 91 lpm r30, Z+ + 51c: f0 e0 ldi r31, 0x00 ; 0 + 51e: 80 81 ld r24, Z + 520: 20 e0 ldi r18, 0x00 ; 0 + 522: 30 e0 ldi r19, 0x00 ; 0 + 524: 89 23 and r24, r25 + 526: 11 f0 breq .+4 ; 0x52c + 528: 21 e0 ldi r18, 0x01 ; 1 + 52a: 30 e0 ldi r19, 0x00 ; 0 + 52c: c9 01 movw r24, r18 + 52e: 08 95 ret + +00000530 <_exit>: + 530: f8 94 cli + +00000532 <__stop_program>: + 532: ff cf rjmp .-2 ; 0x532 <__stop_program> diff --git a/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.map b/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.map new file mode 100644 index 0000000..57d6f9c --- /dev/null +++ b/ESS1995test_328p/bin/Debug/ESS1995test_328p.elf.map @@ -0,0 +1,506 @@ +Archive member included because of file (symbol) + +../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Debug/main.o (delay) +../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Debug/main.o (pinMode) +../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) (port_to_mode_PGM) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o (exit) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) (__do_copy_data) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) (__do_clear_bss) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +LOAD obj/Debug/main.o +LOAD ../arduino_libs/core0022_328p.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a + +.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 0x00000000 0x534 + *(.vectors) + .vectors 0x00000000 0x68 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + *(.progmem*) + .progmem.data 0x00000068 0x4b ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + 0x00000068 port_to_mode_PGM + 0x0000006d port_to_output_PGM + 0x00000072 port_to_input_PGM + 0x00000077 digital_pin_to_port_PGM + 0x0000008b digital_pin_to_bit_mask_PGM + 0x0000009f digital_pin_to_timer_PGM + 0x000000b4 . = ALIGN (0x2) + *fill* 0x000000b3 0x1 00 + 0x000000b4 __trampolines_start = . + *(.trampolines) + .trampolines 0x000000b4 0x0 linker stubs + *(.trampolines*) + 0x000000b4 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x000000b4 __ctors_start = . + *(.ctors) + 0x000000b4 __ctors_end = . + 0x000000b4 __dtors_start = . + *(.dtors) + 0x000000b4 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x000000b4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x000000b4 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x000000b4 0xc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x000000c0 0x16 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + 0x000000c0 __do_copy_data + .init4 0x000000d6 0x10 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x000000d6 __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x000000e6 0x8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init9) + *(.text) + .text 0x000000ee 0x4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x000000ee __vector_22 + 0x000000ee __vector_1 + 0x000000ee __vector_24 + 0x000000ee __vector_12 + 0x000000ee __bad_interrupt + 0x000000ee __vector_6 + 0x000000ee __vector_3 + 0x000000ee __vector_23 + 0x000000ee __vector_25 + 0x000000ee __vector_11 + 0x000000ee __vector_13 + 0x000000ee __vector_17 + 0x000000ee __vector_19 + 0x000000ee __vector_7 + 0x000000ee __vector_5 + 0x000000ee __vector_4 + 0x000000ee __vector_9 + 0x000000ee __vector_2 + 0x000000ee __vector_21 + 0x000000ee __vector_15 + 0x000000ee __vector_8 + 0x000000ee __vector_14 + 0x000000ee __vector_10 + 0x000000ee __vector_18 + 0x000000ee __vector_20 + .text 0x000000f2 0x11a obj/Debug/main.o + 0x000000f2 writeByte(unsigned char) + 0x00000146 main + 0x000001d6 SCLKcycle() + .text 0x0000020c 0x1ba ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x0000020c __vector_16 + 0x000002c6 millis + 0x000002e2 delay + 0x00000336 delayMicroseconds + 0x00000352 init + .text 0x000003c6 0x16a ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + 0x000003c6 pinMode + 0x00000402 digitalWrite + 0x00000498 digitalRead + .text 0x00000530 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .text 0x00000530 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text 0x00000530 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text 0x00000530 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x00000530 . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x00000530 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text.libgcc 0x00000530 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x00000530 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x00000530 . = ALIGN (0x2) + *(.fini9) + .fini9 0x00000530 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + 0x00000530 exit + 0x00000530 _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x00000530 0x4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x00000534 _etext = . + +.data 0x00800100 0x0 load address 0x00000534 + 0x00800100 PROVIDE (__data_start, .) + *(.data) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .data 0x00800100 0x0 obj/Debug/main.o + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(wiring.c.o) + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x00800100 . = ALIGN (0x2) + 0x00800100 _edata = . + 0x00800100 PROVIDE (__data_end, .) + +.bss 0x00800100 0x8 + 0x00800100 PROVIDE (__bss_start, .) + *(.bss) + .bss 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .bss 0x00800100 0x0 obj/Debug/main.o + .bss 0x00800100 0x8 ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x00800100 timer0_clock_cycles + 0x00800104 timer0_millis + .bss 0x00800108 0x0 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .bss 0x00800108 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + *(.bss*) + *(COMMON) + 0x00800108 PROVIDE (__bss_end, .) + 0x00000534 __data_load_start = LOADADDR (.data) + 0x00000534 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800108 0x0 + 0x00800108 PROVIDE (__noinit_start, .) + *(.noinit*) + 0x00800108 PROVIDE (__noinit_end, .) + 0x00800108 _end = . + 0x00800108 PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0xc9c + *(.stab) + .stab 0x00000000 0x6b4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .stab 0x000006b4 0x5e8 obj/Debug/main.o + 0x5f4 (size before relaxing) + +.stabstr 0x00000000 0x18d2 + *(.stabstr) + .stabstr 0x00000000 0x18d2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment + *(.comment) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0x40 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x20 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_aranges + 0x00000020 0x20 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_pubnames + 0x00000000 0x16c + *(.debug_pubnames) + .debug_pubnames + 0x00000000 0x80 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_pubnames + 0x00000080 0x3f ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_pubnames + 0x000000bf 0xad ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_info 0x00000000 0x6f2 + *(.debug_info) + .debug_info 0x00000000 0x1dd ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_info 0x000001dd 0x3f6 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_info 0x000005d3 0x11f ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + *(.gnu.linkonce.wi.*) + +.debug_abbrev 0x00000000 0x2e1 + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x117 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_abbrev 0x00000117 0x162 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_abbrev 0x00000279 0x68 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_line 0x00000000 0x551 + *(.debug_line) + .debug_line 0x00000000 0x251 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_line 0x00000251 0x233 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_line 0x00000484 0xcd ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_frame 0x00000000 0xa0 + *(.debug_frame) + .debug_frame 0x00000000 0x60 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_frame 0x00000060 0x40 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_str 0x00000000 0x227 + *(.debug_str) + .debug_str 0x00000000 0xd5 ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x115 (size before relaxing) + .debug_str 0x000000d5 0x117 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + 0x197 (size before relaxing) + .debug_str 0x000001ec 0x3b ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + 0x13e (size before relaxing) + +.debug_loc 0x00000000 0x1fa + *(.debug_loc) + .debug_loc 0x00000000 0xb6 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_loc 0x000000b6 0x144 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(bin/Debug/ESS1995test_328p.elf elf32-avr) +LOAD linker stubs + +Cross Reference Table + +Symbol File +SCLKcycle() obj/Debug/main.o +__bad_interrupt /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__bss_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__bss_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__data_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_load_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__do_clear_bss /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) +__do_copy_data /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) +__heap_end /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__init /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__stack /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_1 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_11 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_12 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_13 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_14 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_15 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_16 ../arduino_libs/core0022_328p.a(wiring.c.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_17 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_18 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_19 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_20 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_21 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_23 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_24 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_25 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_3 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_5 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_7 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_9 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_default /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vectors /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +_exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) +delay ../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Debug/main.o +delayMicroseconds ../arduino_libs/core0022_328p.a(wiring.c.o) +digitalRead ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Debug/main.o +digitalWrite ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Debug/main.o +digital_pin_to_bit_mask_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +digital_pin_to_port_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +digital_pin_to_timer_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +init ../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Debug/main.o +main obj/Debug/main.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +millis ../arduino_libs/core0022_328p.a(wiring.c.o) +pinMode ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Debug/main.o +port_to_input_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +port_to_mode_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +port_to_output_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +timer0_clock_cycles ../arduino_libs/core0022_328p.a(wiring.c.o) +timer0_millis ../arduino_libs/core0022_328p.a(wiring.c.o) +writeByte(unsigned char) obj/Debug/main.o diff --git a/ESS1995test_328p/bin/Release/ESS1995test_328p.elf b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf new file mode 100755 index 0000000..8759771 Binary files /dev/null and b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf differ diff --git a/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.eep.hex b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.eep.hex new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.eep.hex @@ -0,0 +1 @@ +:00000001FF diff --git a/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.hex b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.hex new file mode 100644 index 0000000..a6cb0f1 --- /dev/null +++ b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.hex @@ -0,0 +1,1122 @@ +:100000000C9463000C94930A0C94C00A0C948B001B +:100010000C948B000C948B000C948B000C94EC07CC +:100020000C948B000C948B000C948B000C948B0024 +:100030000C948B000C948B000C948B000C948B0014 +:100040000C94A4130C948B000C9414030C948B004C +:100050000C948B000C948B000C948B000C948B00F4 +:100060000C948B000C948B000200000000240027ED +:10007000002A0000000000250028002B00000000DE +:1000800000230026002900040404040404040402DC +:100090000202020202030303030303010204081025 +:1000A00020408001020408102001020408102000F2 +:1000B0000000070002010000030406000000000029 +:1000C00000000000A10411241FBECFEFD8E0DEBF66 +:1000D000CDBF12E0A0E0B1E0E0E5F4E402C005909D +:1000E0000D92AA3BB107D9F713E0AAEBB2E001C029 +:1000F0001D92A239B107E1F710E0C6ECD0E004C0D0 +:100100002297FE010E94881EC43CD107C9F70E94B5 +:10011000EF010C9426220C9400000F931F9360EDC6 +:1001200077E080E090E00E942C1408E513E0C8011D +:1001300060E071E00E94120560ED77E080E090E001 +:100140000E942C14C8010E9482041F910F910895EF +:100150000F931F9386E060E00E941C1508E513E0F2 +:10016000C80140E056E960E070E00E94A503C801C4 +:100170006BE071E00E941205C80169E171E00E9424 +:100180001205C80163E371E00E941205C80161E431 +:1001900071E00E941205C8016FE471E00E9412052F +:1001A000C80160E671E00E9412050E948D001F9157 +:1001B0000F910895F894FFCF84E061E00E946F15DD +:1001C00083E061E00E946F158AE090E00E94521483 +:1001D00084E060E00E946F158AE090E00E94521473 +:1001E00083E060E00E946F158AE090E00E94521464 +:1001F000089584E060E00E946F158AE090E00E941C +:10020000521483E061E00E946F158AE090E00E9442 +:10021000521484E061E00E946F1508958AE090E036 +:100220000E94521483E060E00E946F1584E190E028 +:100230000E94521483E061E00E946F158AE090E012 +:100240000E94521408950F931F938AE090E00E9439 +:10025000521400E017E084E00E94A415682F90E09B +:10026000012E02C0880F991F0A94E2F7082B8CE038 +:100270000E946F150E940E01115068F70E940E0136 +:10028000802F1F910F9108958AE090E00E945214F0 +:1002900083E061E00E946F1584E190E00E945214B7 +:1002A00083E060E00E946F158AE090E00E945214A3 +:1002B00008951F93CF93DF9317E0C82FD0E0BE01BE +:1002C000012E02C0759567950A94E2F7617084E08B +:1002D0000E946F150E944401115088F784E061E08C +:1002E0000E946F150E944401DF91CF911F910895E4 +:1002F00084E060E00E941C1583E061E00E946F15BD +:10030000089584E061E00E941C1583E061E00E9492 +:100310006F150895EF92FF920F931F938091C5027E +:10032000879588278795F090C602FF0CFF0CFF0C7D +:10033000F82A8091C702F82A8091C9028295880F15 +:10034000807E0091CA02000F000F000F082B8091E1 +:10035000C802082B9091CB02979599279795809189 +:10036000CF028295807F892B9091D102892B909129 +:10037000D302990F990F990F982BE090CE02EE0CB3 +:10038000E92A9091CC029795992797958091CD0273 +:100390008295880F880F807C892B9091D202892BBF +:1003A0001091D002110F110F182B0E9481010E9491 +:1003B000DC0088EC0E9459018F2D0E945901802F8A +:1003C0000E9459018E2D0E945901812F0E945901CE +:1003D0000E94F9001F910F91FF90EF9008958F9266 +:1003E0009F92AF92BF92CF92DF92EF92FF920F93C4 +:1003F0001F93DF93CF93CDB7DEB727970FB6F8944F +:10040000DEBF0FBECDBF0E945C1485E061E00E949C +:100410001C1585E060E00E946F150E94A80082E034 +:1004200060E00E941C1583E061E00E941C1586E0DC +:1004300060E00E941C158CE061E00E941C158DE0BC +:1004400061E00E941C158DE061E00E946F1585E05F +:1004500061E00E946F156AEF70E080E090E00E941A +:100460002C140E948A01AAEFEA2EF12C4E01089466 +:10047000811C911CF4E0AF2EB12CAC0EBD1EE2E04D +:10048000CE2ED12CCC0EDD1E82E00E94A415019749 +:1004900009F0BCC08CE061E00E946F158DE060E067 +:1004A0000E946F150E9481010E94DC0089EC0E946D +:1004B000590182E00E94A415892B09F0A7C08DE0A4 +:1004C00061E00E946F150E9478010BEB12E00E9420 +:1004D0002301F80181938F01F2E0053C1F07B9F772 +:1004E0000E9481010E94F9008091BB0289832091C2 +:1004F000BD0230E040E050E0542F432F322F22273E +:100500008091BE0290E0A0E0B0E0282B392B4A2B6E +:100510005B2B8091BC0290E0A0E0B0E0877090700F +:10052000A070B070DC0199278827282B392B4A2B23 +:100530005B2B2C833D834E835F832091C0022295E9 +:1005400026952695237030E08091BF0290E0880FB9 +:10055000991F880F991F282B392B3B832A8317C09B +:1005600088E593E00E945E04823029F0833061F0D8 +:10057000813069F404C02AEFE22EF12C08C098EE15 +:10058000E92E93E0F92E03C082E3E82EF12C88E5F2 +:1005900093E00E9433041816190614F386E00E94B3 +:1005A000A4152091BA02892B59F1222319F481E074 +:1005B0008093BA0288E593E063E771E042E050E09F +:1005C0000E94F30488E593E062E771E041E050E0C7 +:1005D0000E94F30488E593E0B40141E050E00E94FA +:1005E000F30488E593E0B50144E050E00E94F30491 +:1005F00088E593E0B60142E050E00E94F30406C0B3 +:10060000222321F00E948D001092BA02B70180E0EF +:1006100090E00E942C148CE060E00E946F158DE049 +:1006200060E00E946F1530CF1F920F920FB60F92AD +:1006300011242F933F934F938F939F93EF93FF93A7 +:100640004091C600E0915403F091550331969F010B +:100650002F77307031978091560390915703281768 +:10066000390739F0EC52FD4F408330935503209306 +:100670005403FF91EF919F918F914F913F912F9153 +:100680000F900FBE0F901F9018958F92AF92CF9240 +:10069000DF92EF92FF920F931F93DF93CF93CDB72B +:1006A000DEB7FC0189E791E09183808373836283E5 +:1006B000558344833783268311870087F386E28638 +:1006C000D586C486A68687868D85808B8E85818B10 +:1006D0008F85828BCF91DF911F910F91FF90EF90CB +:1006E000DF90CF90AF908F9008958F92AF92CF927E +:1006F000DF92EF92FF920F931F93DF93CF93CDB7CB +:10070000DEB7FC0189E791E0918380837383628384 +:10071000558344833783268311870087F386E286D7 +:10072000D586C486A68687868D85808B8E85818BAF +:100730008F85828BCF91DF911F910F91FF90EF906A +:10074000DF90CF90AF908F900895EF92FF920F932C +:100750001F938C019A01AB01DC011896ED91FC917D +:10076000199791E0E92EF12CC70152960C9002C026 +:10077000880F991F0A94E2F7808360E874E88EE19D +:1007800090E00E94121E215030404040504056954B +:10079000479537952795D8011496ED91FC911597BB +:1007A00030831696ED91FC91179720831A96ED9160 +:1007B000FC911B972081C7011E960C901E9702C0CA +:1007C000880F991F0A94E2F7282B20831A96ED913F +:1007D000FC911B972081C7011F960C901F9702C0A8 +:1007E000880F991F0A94E2F7282B20831A96ED911F +:1007F000FC911B97808150960C9002C0EE0CFF1C60 +:100800000A94E2F78E2980831F910F91FF90EF9059 +:100810000895FC01A285B3854C9121E030E0C90127 +:10082000068402C0880F991F0A94E2F780958423FA +:100830008C93A285B3854C91C901078402C0880FAF +:10084000991F0A94E2F7809584238C93A285B3853F +:100850008C91008802C0220F331F0A94E2F7209582 +:1008600028232C930895DC011296ED91FC911397A7 +:10087000E058FF4F2191319180819181281B390BE4 +:100880002F773070C9010895DC011296ED91FC912B +:100890001397EE57FF4F2081318192918291E0585A +:1008A000F0408217930719F42FEF3FEF05C0E20FD6 +:1008B000F31F8081282F30E0C9010895DC011296D2 +:1008C000ED91FC911397DF01AE57BF4F2D913C91F5 +:1008D0001197E058FF4F80819181E058F0408217D6 +:1008E000930719F42FEF3FEF0BC0E20FF31F808146 +:1008F0002F5F3F4F2F7730702D933C93282F30E0A0 +:10090000C9010895DC011296ED91FC911397EE5701 +:10091000FF4F80819181929382930895FC01A0857D +:10092000B18521898C9190E0022E02C09595879522 +:100930000A94E2F780FFF6CF0484F585E02D60830A +:10094000089589E791E0909359038093580384EDCB +:1009500092E090935B0380935A0385EC90E0909330 +:100960005D0380935C0384EC90E090935F0380933D +:100970005E0380EC90E0909361038093600381ECD0 +:1009800090E0909363038093620386EC90E09093F1 +:1009900065038093640384E08093660383E080931F +:1009A000670387E08093680385E08093690381E0B3 +:1009B00080936A0308950F931F93CF93DF938C0165 +:1009C000EB0109C02196D801ED91FC910190F081D5 +:1009D000E02DC801099568816623A1F7DF91CF91C9 +:1009E0001F910F910895EF92FF920F931F93CF9352 +:1009F000DF938C017B01EA010CC0D7016D917D0171 +:100A0000D801ED91FC910190F081E02DC80109958C +:100A10002197209791F7DF91CF911F910F91FF9030 +:100A2000EF900895DC01ED91FC910280F381E02DBF +:100A300009950895CF92DF92EF92FF920F931F9343 +:100A4000CF93DF936C017B01C0E0D0E00EC0D601F4 +:100A5000ED91FC9100811181C701BE010E94B40B90 +:100A6000682FC601F80109952196F70184819581C7 +:100A7000C817D90760F3DF91CF911F910F91FF90B5 +:100A8000EF90DF90CF9008952F923F924F925F9218 +:100A90006F927F928F929F92AF92BF92CF92DF928E +:100AA000EF92FF920F931F93DF93CF93CDB7DEB7F3 +:100AB000A0970FB6F894DEBF0FBECDBF1C016A0130 +:100AC0007B01411551056105710549F440E350E092 +:100AD00060E070E020E030E00E94100656C08824FC +:100AE00099245401422E55246624772401E010E015 +:100AF0000C0F1D1F080D191DC701B601A30192019E +:100B00000E94121EF80160830894811C911CA11C94 +:100B1000B11CC701B601A30192010E94121EC901B6 +:100B2000DA016C017D01C114D104E104F104F1F694 +:100B300081E0E82EF12CEC0EFD1EE80CF91C3E01C4 +:100B40000894611C711CD501C4010197A109B10968 +:100B50006C01C818D90816C0F601EE0DFF1D4081C2 +:100B60004A3010F4405D01C0495C552747FD50955F +:100B7000652F752FC10120E030E00E941006089417 +:100B8000E108F1086E147F0439F7A0960FB6F894C7 +:100B9000DEBF0FBECDBFCF91DF911F910F91FF90B0 +:100BA000EF90DF90CF90BF90AF909F908F907F900D +:100BB0006F905F904F903F902F900895DC0121152A +:100BC000310541F4ED91FC910190F081E02D642F0D +:100BD000099508950E9444050895EF92FF920F939E +:100BE0001F939A017B0100E010E0B801A7010E9469 +:100BF000DE051F910F91FF90EF900895EF92FF9205 +:100C00000F931F939A01E62EFF2400E010E0B80135 +:100C1000A7010E94DE051F910F91FF90EF900895AC +:100C2000EF92FF920F931F93CF93DF93EC017A0122 +:100C30008B012115310541F4E881F9810190F081A2 +:100C4000E02D642F09951BC02A303105B1F477FFE0 +:100C500010C04DE250E060E070E020E030E00E9423 +:100C6000100610950095F094E094E11CF11C011D14 +:100C7000111DCE01B801A7012AE00E944405DF91B1 +:100C8000CF911F910F91FF90EF900895EF92FF92F7 +:100C90000F931F937B019A010027F7FC0095102FFB +:100CA000B801A7010E9410061F910F91FF90EF90CD +:100CB0000895EF92FF920F931F93E62E9A01FF245F +:100CC000E7FCF0940F2D1F2DB801A7010E9410061C +:100CD0001F910F91FF90EF9008950F931F938C0138 +:100CE0004DE050E060E070E020E030E00E9410064F +:100CF000C8014AE050E060E070E020E030E00E948F +:100D000010061F910F9108950F931F938C010E945D +:100D1000DE05C8010E946D061F910F910895CF92C4 +:100D2000DF92EF92FF920F931F938C019A016B0158 +:100D3000EE24FF24B701A6010E94DE05C8010E942F +:100D40006D061F910F91FF90EF90DF90CF90089567 +:100D5000CF92DF92EF92FF920F931F938C019A0133 +:100D6000C62EDD24EE24FF24B701A6010E94DE0575 +:100D7000C8010E946D061F910F91FF90EF90DF90C8 +:100D8000CF9008950F931F938C010E941205C80104 +:100D90000E946D061F910F9108950F931F938C0170 +:100DA0000E941A05C8010E946D061F910F910895B7 +:100DB0000F931F938C010E941006C8010E946D06BC +:100DC0001F910F910895CF92DF92EF92FF920F93B0 +:100DD0001F938C016B019A01EE24D7FCE094FE2C4A +:100DE000B701A6010E941006C8010E946D061F915E +:100DF0000F91FF90EF90DF90CF900895CF92DF9208 +:100E0000EF92FF920F931F938C01C62E9A01DD245F +:100E1000C7FCD094ED2CFD2CB701A6010E94100652 +:100E2000C8010E946D061F910F91FF90EF90DF9017 +:100E3000CF9008959F92AF92BF92CF92DF92EF92A0 +:100E4000FF920F931F93CF93DF93EC017A018B01F5 +:100E5000922ECB01BA0120E030E040E050E00E9449 +:100E6000A31A88236CF4CE014DE250E060E070E0FC +:100E700020E030E00E94100617FB109517F910953E +:100E800020E030E040E05FE3AA240BC0CA01B901D2 +:100E900020E030E040E251E40E94C7199B01AC0120 +:100EA000A394A91498F3C801B7010E94A0185B018C +:100EB0006C010E94F7167B018C01CE01B801A701DD +:100EC0002AE030E00E94DE05992029F0CE0169E990 +:100ED00071E00E941205C801B7010E94851B9B01A9 +:100EE000AC01C601B5010E946F1822C020E030E0BD +:100EF00040E251E40E94CD187B018C010E94311B1D +:100F00005B016C01CC24B7FCC094DC2CCE01B60193 +:100F1000A5012AE030E00E941006C601B5010E943A +:100F2000D31A9B01AC01C801B7010E946F189A94B3 +:100F30009920E1F6DF91CF911F910F91FF90EF90F3 +:100F4000DF90CF90BF90AF909F9008950E941A07B6 +:100F500008950F931F938C010E941A07C8010E94E5 +:100F60006D061F910F910895813041F0813018F086 +:100F70008230D1F409C010926E00089580916F0004 +:100F80008D7F80936F000895809170008D7F809396 +:100F9000700081E08093B0008091B100887F846010 +:100FA0008093B1001092B30008951F93182F809181 +:100FB000A501811711F09FEF06C0E8E6F0E09491DB +:100FC0008FEF8093A501892F0E94B407812F60E0E5 +:100FD0000E946F151F9108951F920F920FB60F92E6 +:100FE00011242F933F934F935F936F937F938F932E +:100FF0009F93AF93BF93EF93FF9380917903909169 +:101000007A03A0917B03B0917C030097A105B10501 +:1010100051F1E0917D03F0917E03808190917F03F7 +:10102000892780838091790390917A03A0917B0333 +:10103000B0917C03181619061A061B06C4F4809199 +:10104000790390917A03A0917B03B0917C0301977F +:10105000A109B1098093790390937A03A0937B034C +:10106000B0937C0304C08091A5010E94D507FF9135 +:10107000EF91BF91AF919F918F917F916F915F9110 +:101080004F913F912F910F900FBE0F901F90189589 +:101090002F923F925F926F927F928F929F92AF9228 +:1010A000BF92CF92DF92EF92FF920F931F93DF9345 +:1010B000CF9300D000D0CDB7DEB7A82F1B01298376 +:1010C0003A834B835C838091A5018A1721F4E8E67B +:1010D000F0E0549082C08F3F09F0D9C1A093A501E0 +:1010E000E8E6F0E054902FEF521609F4D0C181E009 +:1010F000581639F192E0591609F449C0552009F003 +:101100006CC014BC15BC84B5826084BD85B581609B +:1011100085BD2A2F30E0F901E957FF4FE491F0E057 +:10112000EE0FFF1FED58FF4F859194919093700340 +:1011300080936F0325563F4FF9018491809371038B +:101140004EC01092800010928100809181008860D2 +:1011500080938100809181008160809381002A2F9B +:1011600030E0F901E957FF4FE491F0E0EE0FFF1F87 +:10117000ED58FF4F85919491909377038093760378 +:1011800025563F4FF90184918093780328C010922F +:10119000B0001092B1008091B00082608093B000E6 +:1011A0008091B10081608093B1002A2F30E0F90175 +:1011B000E957FF4FE491F0E0EE0FFF1FED58FF4FAE +:1011C0008591949190937E0380937D0325563F4FA4 +:1011D000F901849180937F0302C057FC58C18A2F84 +:1011E00061E00E941C15552021F0F2E05F1609F025 +:1011F000BDC031018824992460E079E08DE390E05E +:10120000A40193010E94121E59016A018601750111 +:101210000894E108F108010911092FEFE216F10421 +:101220000105110509F008F498C060E271EA87E051 +:1012300090E0A40193010E94121E79018A01089492 +:10124000E108F1080109110982E05816C1F49FEF85 +:10125000E916F1040105110509F008F483C068E4FA +:1012600078EE81E090E0A40193010E94121E7901C2 +:101270008A010894E108F1080109110983E0AFEF40 +:10128000EA16F1040105110509F008F467C064E2EB +:1012900074EF80E090E0A40193010E94121E790196 +:1012A0008A010894E108F10801091109552011F497 +:1012B00083E01DC0B2E05B1611F084E018C0EFEFD0 +:1012C000EE16F1040105110509F008F4DEC062E133 +:1012D0007AE780E090E0A40193010E94121E790158 +:1012E0008A010894E108F1080109110985E0FFEF7E +:1012F000EF16F1040105110589F180F169E07DE344 +:1013000080E090E0A40193010E94121E79018A01FD +:101310000894E108F10801091109552011F086E04F +:1013200001C084E02FEFE216F10401051105B1F0D0 +:10133000A8F0860175019AE016950795F794E79451 +:101340009A95D1F70894E108F1080109110955208F +:1013500011F087E008C085E003C081E0552019F452 +:1013600085BD3AC082E08093B10036C05101CC24E3 +:10137000DD2460E079E08DE390E0A60195010E9414 +:10138000121E79018A010894E108F1080109110986 +:1013900080E0E81680E0F80681E0080780E01807A2 +:1013A00010F491E010C064E274EF80E090E0A601D8 +:1013B00095010E94121E79018A010894E108F10842 +:1013C0000109110993E0A1E05A1631F480918100DE +:1013D000887F982B9093810089819A81AB81BC8111 +:1013E0000097A105B10529F48FEF9FEFAFEFBFEF95 +:1013F00013C0220C331CB10180E090E029813A81B6 +:101400004B815C810E94F31D28EE33E040E050E008 +:101410000E94121EC901DA01E1E05E16A1F0F2E0BD +:101420005F1619F1552099F5E7BC80936B039093F3 +:101430006C03A0936D03B0936E0380916E00826085 +:1014400080936E0024C0F0928900E092880080931F +:10145000720390937303A0937403B0937503809108 +:101460006F00826080936F0012C0E092B30080939F +:10147000790390937A03A0937B03B0937C038091CC +:10148000700082608093700002C084E06CCF0F9087 +:101490000F900F900F90CF91DF911F910F91FF90C0 +:1014A000EF90DF90CF90BF90AF909F908F907F9004 +:1014B0006F905F903F902F900895823000F5E82F55 +:1014C000F0E0EE0FFF1FE058FC4F7183608388232C +:1014D00019F08130A1F408C0809169008C7F842BC1 +:1014E00080936900E89A089580916900440F551F20 +:1014F000440F551F837F842B80936900E99A0895D8 +:10150000823080F4882319F0813021F402C0E898F9 +:1015100001C0E998E82FF0E0EE0FFF1FE058FC4F04 +:101520001182108208951F920F920FB60F9211240C +:101530002F933F934F935F936F937F938F939F93DB +:10154000AF93BF93EF93FF938091800390918103BA +:10155000892B29F0E0918003F09181030995FF9197 +:10156000EF91BF91AF919F918F917F916F915F911B +:101570004F913F912F910F900FBE0F901F90189594 +:101580001F920F920FB60F9211242F933F934F93F8 +:101590005F936F937F938F939F93AF93BF93EF93DB +:1015A000FF938091820390918303892B29F0E0912E +:1015B0008203F09183030995FF91EF91BF91AF9161 +:1015C0009F918F917F916F915F914F913F912F915B +:1015D0000F900FBE0F901F9018952F923F924F9231 +:1015E0005F926F927F928F929F92AF92BF92CF92B3 +:1015F000DF92EF92FF920F931F93DF93CF93CDB7BC +:10160000DEB73B014C0119012A016D897E898F8962 +:10161000988D6A197B098C099D09621A730A840ADC +:10162000950AA40193010E94F31DE218F30804092E +:101630001509A80197010E94341E2A0D3B1D4C1D5F +:101640005D1DB901CA01CF91DF911F910F91FF90EC +:10165000EF90DF90CF90BF90AF909F908F907F9052 +:101660006F905F904F903F902F900895089570E095 +:10167000382F20E0622B732BCB010895EF92FF925D +:101680000F931F937B018C016115710581059105F5 +:1016900029F420E030E040E050E00BC00E94E41F5D +:1016A000A80197010E94341EAC01CB01DA019C0114 +:1016B000AD01B901CA011F910F91FF90EF900895FC +:1016C000EF92FF920F931F937B018C0162177307B8 +:1016D0008407950764F4261B370B480B590BCA0186 +:1016E000B9010E943E0BE60EF71E081F191FB70135 +:1016F000C8011F910F91FF90EF900895009729F076 +:10170000BC0180E090E00E94E91F0895FC01019077 +:10171000F081E02DE60FF71F80810895DC01ED9147 +:10172000FC911197309751F014968D919C911597DB +:101730006817790718F4E60FF71F40830895FC0136 +:101740009B01848195816817790728F460817181F4 +:101750006115710529F41092840364E873E002C0F6 +:10176000620F731FCB010895FC010190F081E02D01 +:10177000E60FF71F80810895FC01808191810E940E +:10178000C02008950F931F93CF93DF93FC018B012B +:1017900041155105A1F06115710589F0848195818C +:1017A000EA0121978C179D0708F4EC016081718193 +:1017B000C801AE010E943C21C00FD11F1882DF91E9 +:1017C000CF911F910F9108950F931F93CF93DF93A4 +:1017D000FC018B0141155105A1F06115710589F0DE +:1017E00084819581EA0121978C179D0708F4EC010B +:1017F00060817181C801AE010E943C21C00FD11FE0 +:101800001882DF91CF911F910F9108950F931F932D +:101810008C01FC01808191810E94391FF8011382A3 +:101820001282158214821F910F910895FC01DB0131 +:1018300014962D913C91159784819581821B930B71 +:101840008417950710F480E00895808191816D914F +:101850007C91840F951FA9010E942E219C0180E09C +:10186000232B09F481E00895FC01DB0124813581FB +:1018700014968D919C9115972817390710F480E0E4 +:101880000895CF0140E050E00E94160C0895DF92C9 +:10189000EF92FF920F931F93CF93DF93EC018C8114 +:1018A0009D8148175907C8F47A010894E11CF11C7E +:1018B000E881F981EE0DFF1DD08010820881198129 +:1018C000772767FD7095C8010E944B219C010E0D82 +:1018D0001F1DF801D082009719F4EFEFFFEF05C04C +:1018E00088819981F901E81BF90BCF01DF91CF9134 +:1018F0001F910F91FF90EF90DF900895FC014481BC +:101900005581415050400E94470C0895CF93DF937A +:10191000FC01DB01848195814817590760F4C0817F +:10192000D1816D917C91CE01840F951F0E9456212B +:101930009C01009719F42FEF3FEF02C02C1B3D0BC9 +:10194000C901DF91CF91089540E050E00E94860CDC +:101950000895CF93DF93FC0184819581481759073F +:1019600068F4C081D181772767FD7095CE01840F1F +:10197000951F0E9413219C01009719F42FEF3FEF50 +:1019800002C02C1B3D0BC901DF91CF91089540E0AF +:1019900050E00E94A90C0895DC01FB0114962D91E2 +:1019A0003C911597848195812817390711F080E0C3 +:1019B0000895608171818D919C910E941E219C01EE +:1019C00080E0232B09F481E00895FC01DB012481F0 +:1019D000358114968D919C9115972817390710F42D +:1019E00080E00895281B390B808191816D917C9155 +:1019F000820F931F0E941E219C0180E0232B09F47B +:101A000081E00895DC01FB01608171818D919C91E1 +:101A10000E941E21292F332727FD309520953095D0 +:101A20002227330F221F3327C9010895DC01FB0150 +:101A3000608171818D919C910E941E2140E050E057 +:101A40001816190614F041E050E0CA010895DC01AF +:101A5000FB01608171818D919C910E941E2140E06B +:101A600050E01816190614F441E050E0CA01089538 +:101A7000DC01FB01608171818D919C910E941E218E +:101A8000292F332727FD30952227330F221F332795 +:101A9000C9010895DC01FB0114962D913C91159725 +:101AA000848195812817390751F4608171818D9166 +:101AB0009C910E941E219C0180E0232B09F081E073 +:101AC00090E00895DC01FB0114962D913C9115974F +:101AD000848195812817390711F080E00BC060815F +:101AE00071818D919C910E941E219C0180E0232B8D +:101AF00009F481E090E00895FC01DB016D917C9197 +:101B0000808191810E941E2108950F931F93CF938E +:101B1000DF93EC018B01FB01648175818C819D81D8 +:101B2000680F791F7D836C838A819B818617970755 +:101B3000B8F46F5F7F4F888199810E94F21F4C81BA +:101B40005D81009729F0998388835B834A8308C06D +:101B5000F80184819581481B590B5D834C8307C034 +:101B6000F80160817181888199810E940821CE01EC +:101B7000DF91CF911F910F9108950E94850D0895D7 +:101B8000CF93DF93EC01CB017B836A8301960E94A4 +:101B90008C1E99838883009721F41B821A821D82F0 +:101BA0001C82DF91CF9108950F931F93CF93DF9302 +:101BB000EC018B018617970709F1FB012481358120 +:101BC0008C819D818217930750F4888199810E94AE +:101BD000391FF80164817581CE010E94C00D2881F2 +:101BE00039812115310551F0F801848195819D835A +:101BF0008C8360817181C9010E942721CE01DF9110 +:101C0000CF911F910F9108951F93CF93DF93EC0114 +:101C1000162F81E090E09D838C83CE0161E070E01F +:101C20000E94C00DE881F981309721F01083E8818E +:101C3000F9811182DF91CF911F9108951F93CF9366 +:101C4000DF93EC01162F81E090E09D838C83CE0121 +:101C500061E070E00E94C00DE881F981309721F0C9 +:101C60001083E881F9811182DF91CF911F9108954E +:101C70001F93CF93DF93EC01162F81E090E09D83BB +:101C80008C83CE0161E070E00E94C00DE881F98193 +:101C9000309721F01083E881F9811182DF91CF9193 +:101CA0001F9108951F93CF93DF93EC01162F81E0CE +:101CB00090E09D838C83CE0161E070E00E94C00DB6 +:101CC000E881F981309721F01083E881F981118250 +:101CD000DF91CF911F9108950F931F93CF93DF93BF +:101CE0008C01EB016C817D81FC01758364830E9412 +:101CF000C00DF80180819181009721F06881798180 +:101D00000E942721DF91CF911F910F9108950F938A +:101D10001F93CF93DF938C01EB016C817D81FC01DC +:101D2000758364830E94C00DF801808191810097C2 +:101D300021F0688179810E942721DF91CF911F9145 +:101D40000F910895EF92FF920F931F93DF93CF931C +:101D5000CDB7DEB7A1970FB6F894DEBF0FBECDBFEB +:101D60008C01CB01BA017E010894E11CF11CA70192 +:101D70002AE030E00E94DA21F70101900020E9F723 +:101D80003197EE19FF09D8011596FC93EE9314973D +:101D9000C801BF010E94C00DF801808191810097A8 +:101DA00019F0B7010E942721A1960FB6F894DEBF63 +:101DB0000FBECDBFCF91DF911F910F91FF90EF909C +:101DC0000895EF92FF920F931F93DF93CF93CDB7B8 +:101DD000DEB7A1970FB6F894DEBF0FBECDBF8C0162 +:101DE000CB01BA017E010894E11CF11CA7012AE095 +:101DF00030E00E94DA21F70101900020E9F73197E5 +:101E0000EE19FF09D8011596FC93EE931497C801BB +:101E1000BF010E94C00DF80180819181009719F0E7 +:101E2000B7010E942721A1960FB6F894DEBF0FBE1E +:101E3000CDBFCF91DF911F910F91FF90EF9008954B +:101E4000EF92FF920F931F93DF93CF93CDB7DEB73F +:101E5000A1970FB6F894DEBF0FBECDBF8C019A01DB +:101E600080E090E07E010894E11CF11CA7010E9433 +:101E7000DA21F70101900020E9F73197EE19FF0907 +:101E8000D8011596FC93EE931497C801BF010E94E8 +:101E9000C00DF80180819181009719F0B7010E946F +:101EA0002721A1960FB6F894DEBF0FBECDBFCF910C +:101EB000DF911F910F91FF90EF900895EF92FF92A5 +:101EC0000F931F93DF93CF93CDB7DEB7A1970FB6D4 +:101ED000F894DEBF0FBECDBF8C019A0180E090E088 +:101EE0007E010894E11CF11CA7010E94DA21F70190 +:101EF00001900020E9F73197EE19FF09D8011596F6 +:101F0000FC93EE931497C801BF010E94C00DF80125 +:101F100080819181009719F0B7010E942721A19635 +:101F20000FB6F894DEBF0FBECDBFCF91DF911F91EA +:101F30000F91FF90EF9008950F931F93CF93DF932E +:101F40008C01EB016115710511F4C6EAD1E0FE01C7 +:101F500001900020E9F73197EC1BFD0BD801159695 +:101F6000FC93EE931497C801BF010E94C00DF801C5 +:101F700080819181009719F0BE010E942721DF9195 +:101F8000CF911F910F910895AF92BF92CF92DF92A0 +:101F9000EF92FF920F931F93CF93DF93B82EA92E4A +:101FA0006B01C82FD92FFB0160817181CE010E9486 +:101FB0009C0FEE24FF2410C0088119810E0D1F1DF7 +:101FC000F8018081992787FD90950E94F720F801FC +:101FD00080830894E11CF11CF60184819581E81648 +:101FE000F90650F38B2D9A2DDF91CF911F910F9110 +:101FF000FF90EF90DF90CF90BF90AF900895AF9299 +:10200000BF92CF92DF92EF92FF920F931F93CF93E5 +:10201000DF93B82EA92E6B01C82FD92FFB01608149 +:102020007181CE010E949C0FEE24FF2410C0088114 +:1020300019810E0D1F1DF8018081992787FD90954C +:102040000E94EF20F80180830894E11CF11CF60146 +:1020500084819581E816F90650F38B2D9A2DDF9136 +:10206000CF911F910F91FF90EF90DF90CF90BF9095 +:10207000AF900895EF92FF920F931F93DF93CF934A +:10208000CDB7DEB72C970FB6F894DEBF0FBECDBF2D +:10209000FC017B018617970711F401E029C0248118 +:1020A0003581DB0114968D919C911597281739077E +:1020B00011F000E01DC0CE010196BF010E94FF0F8C +:1020C00009811A81CE010796B7010E94FF0F6F8127 +:1020D0007885C8010E941E2100E0009709F401E004 +:1020E000CE0107960E94060CCE0101960E94060CB6 +:1020F000802F2C960FB6F894DEBF0FBECDBFCF91C8 +:10210000DF911F910F91FF90EF900895CF92DF9292 +:10211000EF92FF921F93CF93DF936C017B01B90184 +:102120002417350710F4BA01A901D70114968D912F +:102130009C911597EB018617970708F4EC01D701DE +:10214000ED91FC911197EC0FFD1F108110826D91A4 +:102150007C91640F751FC6010E949C0FD701ED9101 +:10216000FC91EC0FFD1F1083C601DF91CF911F91F1 +:10217000FF90EF90DF90CF9008950F931F938C0105 +:10218000FB01248135810E948610C8011F910F91A7 +:1021900008958F929F92AF92BF92CF92DF92EF926B +:1021A000FF920F931F93DF93CF9300D000D000D006 +:1021B000CDB7DEB75C016B01DB0114968D919C916C +:1021C00015970097A1F101974817590780F1F5017C +:1021D000848195814817590750F5ED91FC91008154 +:1021E0007A014E010894811C911C1FC0D501ED910C +:1021F000FC91EE0DFF1D80818017A1F4F601248172 +:1022000035812E0D3F1DC401B501A7010E94861026 +:10221000C401B6010E94CC0C182FC4010E94060C08 +:10222000112341F40894E108F108F7FEDFCFEE2412 +:10223000EA94FE2CC70126960FB6F894DEBF0FBEB7 +:10224000CDBFCF91DF911F910F91FF90EF90DF9065 +:10225000CF90BF90AF909F908F900895FC01DB01CD +:102260004481558114968D919C911597481B590B6B +:10227000CF010E94C9100895AF92BF92CF92DF9212 +:10228000EF92FF920F931F93DF93CF9300D000D074 +:1022900000D0CDB7DEB75C018B01DB016D917C9185 +:1022A0006115710521F4B8010E946C0E42C0CE0187 +:1022B00001960E949C0FF801E480F580CC24DD2477 +:1022C00010C0D801ED91FC91EC0DFD1D8081992786 +:1022D00087FD90950E94E720892B31F00894C11C5E +:1022E000D11CCE14DF0468F3ED80FE800DC0D80150 +:1022F000ED91FC91EE0DFF1D8081992787FD909552 +:102300000E94E720892B31F00894E108F108CE14EF +:10231000DF0468F30894E11CF11CC5018E010F5F16 +:102320001F4FB801A60197010E948610C8010E94A4 +:10233000060CC50126960FB6F894DEBF0FBECDBFC2 +:10234000CF91DF911F910F91FF90EF90DF90CF9091 +:10235000BF90AF9008952F923F924F925F926F92ED +:102360007F928F929F92AF92BF92CF92DF92EF9225 +:10237000FF920F931F93DF93CF93CDB7DEB768978C +:102380000FB6F894DEBF0FBECDBF3C01FB012A01A2 +:102390001901608171816115710521F4BF010E94ED +:1023A0006C0E5AC07E010894E11CF11CC7010E940A +:1023B0009C0F8E01095F1F4FC80166EA71E00E9401 +:1023C0009C0FD02EC12E3DE0832E912C8C0E9D1E95 +:1023D00023E1A22EB12CAC0EBD1E24C0C401B70156 +:1023E00040E050E098010E9486108D2D9C2DB40194 +:1023F0000E94850DC4010E94060C8D2D9C2DB101FB +:102400000E94850DF20144815581400F511FC50185 +:10241000B7010E94BD10C701B5010E94D40DC501CE +:102420000E94060CC701B2010E94A40C8C01FFEFB0 +:102430008F3F9F0799F68D2D9C2DB7010E94850D2A +:10244000C3016D2D7C2D0E946C0E8D2D9C2D0E9444 +:10245000060CC7010E94060CC30168960FB6F894DB +:10246000DEBF0FBECDBFCF91DF911F910F91FF90C7 +:10247000EF90DF90CF90BF90AF909F908F907F9024 +:102480006F905F904F903F902F900895DF92EF9262 +:10249000FF920F931F93DF93CF9300D000D000D013 +:1024A000CDB7DEB77C01FB01142FD22E6081718184 +:1024B0006115710521F4BF010E946C0E1CC0CE0194 +:1024C00001960E949C0F89819A81012F112707FD97 +:1024D000109501C0D082B8010E941321FC01009721 +:1024E000C9F7C7018E010F5F1F4FB8010E946C0E24 +:1024F000C8010E94060CC70126960FB6F894DEBFED +:102500000FBECDBFCF91DF911F910F91FF90EF9044 +:10251000DF9008950F931F93CF93DF938C01EB010E +:102520006115710511F4C6EAD1E0FE0101900020A9 +:10253000E9F73197EC1BFD0BD8011596FC93EE9350 +:102540001497C801BF010E94C00DF80180819181DC +:10255000009719F0BE010E942721DF91CF911F91B2 +:102560000F910895EF92FF920F931F93DF93CF93F4 +:10257000CDB7DEB7A1970FB6F894DEBF0FBECDBFC3 +:102580008C01CB01BA017E010894E11CF11CA7016A +:102590000E949121F70101900020E9F73197EE198F +:1025A000FF09D8011596FC93EE931497C801BF015B +:1025B0000E94C00DF80180819181009719F0B70148 +:1025C0000E942721A1960FB6F894DEBF0FBECDBFA3 +:1025D000CF91DF911F910F91FF90EF900895EF92AF +:1025E000FF920F931F93DF93CF93CDB7DEB7A197E1 +:1025F0000FB6F894DEBF0FBECDBF8C01CB01BA0180 +:102600007E010894E11CF11CA7010E949121F701B1 +:1026100001900020E9F73197EE19FF09D8011596CE +:10262000FC93EE931497C801BF010E94C00DF801FE +:1026300080819181009719F0B7010E942721A1960E +:102640000FB6F894DEBF0FBECDBFCF91DF911F91C3 +:102650000F91FF90EF900895EF92FF920F931F93C9 +:10266000DF93CF93CDB7DEB7A1970FB6F894DEBF57 +:102670000FBECDBF8C01CB017E010894E11CF11C83 +:10268000B7010E947021F70101900020E9F731970E +:10269000EE19FF09D8011596FC93EE931497C80123 +:1026A000BF010E94C00DF80180819181009719F04F +:1026B000B7010E942721A1960FB6F894DEBF0FBE86 +:1026C000CDBFCF91DF911F910F91FF90EF900895B3 +:1026D000EF92FF920F931F93DF93CF93CDB7DEB7A7 +:1026E000A1970FB6F894DEBF0FBECDBF8C01CB0112 +:1026F0007E010894E11CF11CB7010E947021F701D2 +:1027000001900020E9F73197EE19FF09D8011596DD +:10271000FC93EE931497C801BF010E94C00DF8010D +:1027200080819181009719F0B7010E942721A1961D +:102730000FB6F894DEBF0FBECDBFCF91DF911F91D2 +:102740000F91FF90EF9008951F920F920FB60F9286 +:1027500011242F933F934F935F936F937F938F93A6 +:102760009F93AF93BF932091890330918A03409147 +:102770008B0350918C0370918D03DA01C90102968D +:10278000A11DB11D672F6A5F6D3730F06D57DA01FB +:10279000C9010396A11DB11D60938D038093890328 +:1027A00090938A03A0938B03B0938C03809185034D +:1027B00090918603A0918703B09188030196A11D93 +:1027C000B11D8093850390938603A0938703B093F4 +:1027D0008803BF91AF919F918F917F916F915F918E +:1027E0004F913F912F910F900FBE0F901F90189512 +:1027F0008FB7F8942091890330918A0340918B031D +:1028000050918C038FBFB901CA0108959FB7F89406 +:10281000209185033091860340918703509188036E +:1028200086B5A89B06C08F3F21F02F5F3F4F4F4FCB +:102830005F4F9FBF542F432F322F2227280F311D68 +:10284000411D511D83E0220F331F441F551F8A95E0 +:10285000D1F7B901CA010895EF92FF920F931F9328 +:10286000CF93DF937B018C010E940614EB010EC015 +:102870000E9406146C1B7D0B685E7340C8F30894BD +:10288000E108F10801091109C851DC4FE114F10414 +:102890000105110569F7DF91CF911F910F91FF900D +:1028A000EF900895019739F0019729F0880F991F4B +:1028B00001970197F1F70895789484B5826084BDFB +:1028C00084B5816084BD85B5826085BD85B5816034 +:1028D00085BDEEE6F0E0808181608083E1E8F0E094 +:1028E0001082808182608083808181608083E0E8C3 +:1028F000F0E0808181608083E1EBF0E080818460A2 +:102900008083E0EBF0E0808181608083EAE7F0E0A3 +:102910008081846080838081826080838081816007 +:1029200080838081806880831092C10008958093A5 +:10293000A7010895982F8E3008F09E5097708091CF +:10294000A7018295880F880F807C892B80937C005B +:1029500080917A00806480937A0080917A0086FD6D +:10296000FCCF2091780040917900942F80E030E0F6 +:10297000282B392BC90108951F93CF93DF93182F6C +:10298000EB0161E00E941C15209709F44AC0CF3F7B +:10299000D10509F449C0E12FF0E0E155FF4F8491E2 +:1029A0008330C1F0843028F4813051F08230B1F5A9 +:1029B0000CC0863019F1873049F1843079F514C0A4 +:1029C00084B5806884BDC7BD33C084B5806284BDD2 +:1029D000C8BD2EC080918000806880938000D09315 +:1029E0008900C093880024C0809180008062809319 +:1029F0008000D0938B00C0938A001AC08091B000F1 +:102A000080688093B000C093B30012C08091B00082 +:102A100080628093B000C093B4000AC0C038D10572 +:102A20001CF4812F60E002C0812F61E00E946F15CD +:102A3000DF91CF911F910895482F50E0CA0185562C +:102A40009F4FFC01249149575F4FFA0184918823DD +:102A5000C1F0E82FF0E0EE0FFF1FE759FF4FA591FF +:102A6000B491662341F49FB7F8948C91209582230A +:102A70008C939FBF08959FB7F8948C91822B8C9371 +:102A80009FBF0895833071F0843028F48130A1F025 +:102A9000823021F514C08630B1F08730D1F0843017 +:102AA000E9F404C0809180008F7703C0809180009A +:102AB0008F7D80938000089584B58F7702C084B5A0 +:102AC0008F7D84BD08958091B0008F778093B00092 +:102AD00008958091B0008F7D8093B0000895FF929B +:102AE0000F931F93F62E482F50E0CA0181559F4F38 +:102AF000FC012491CA0185569F4FFC01149149574E +:102B00005F4FFA0104910023D9F0222319F0822F9C +:102B10000E944215E02FF0E0EE0FFF1FED58FF4F2F +:102B2000A591B491FF2031F49FB7F8948C91109542 +:102B3000812304C09FB7F8948C91812B8C939FBF05 +:102B40001F910F91FF9008950F931F93482F50E00E +:102B5000CA0181559F4FFC012491CA0185569F4FA0 +:102B6000FC01049149575F4FFA011491112319F4A4 +:102B700020E030E015C0222319F0822F0E94421578 +:102B8000812F90E0880F991F83589F4FFC01A591DA +:102B9000B4918C9120E030E0802311F021E030E00E +:102BA000C9011F910F9108958F929F92AF92BF928A +:102BB000CF92DF92EF92FF920F931F93CF93DF9309 +:102BC000A82FB0E0CD0185569F4FFC018490A957F6 +:102BD000BF4FFD01D490662311F4992401C0982CB5 +:102BE000CA01B90120E43FE140E050E00E94F31D3A +:102BF00020E83EE340E050E00E94121E79018A0185 +:102C00006D2D70E0660F771F63587F4FAA24BB2499 +:102C10006501FB01A591B4910BC0AE14BF04C006C1 +:102C2000D10609F44FC00894A11CB11CC11CD11CD1 +:102C30008C918821891589F30CC0AE14BF04C0069D +:102C4000D10609F43FC00894A11CB11CC11CD11CC1 +:102C500003C0FB01A591B4918C918821891569F776 +:102C600020E030E040E050E0FB01C591D4910FC07E +:102C7000DA01C9018A0D9B1DAC1DBD1D8E159F0576 +:102C8000A007B107F9F02F5F3F4F4F4F5F4F88818B +:102C90008821891569F3CA01B90128E032E540E0CD +:102CA00050E00E94F31D6058714C8F4F9F4F20E4FD +:102CB0003FE140E050E00E94121EC901DA019C0190 +:102CC000AD0104C020E030E040E050E0B901CA01AD +:102CD000DF91CF911F910F91FF90EF90DF90CF90F8 +:102CE000BF90AF909F908F900895BF92CF92DF9248 +:102CF000EF92FF920F931F93CF93DF93E82EF62E60 +:102D0000B42EC7E0D0E0022F10E087E0C82ED12C0F +:102D1000BB2059F4B6016C1B7D0BC80102C0959510 +:102D200087956A95E2F7BC0107C0B8010C2E02C076 +:102D3000759567950A94E2F761708E2D0E946F1564 +:102D40008F2D61E00E946F158F2D60E00E946F153E +:102D500021979FEFCF3FD907D9F6DF91CF911F91F0 +:102D60000F91FF90EF90DF90CF90BF900895CF929A +:102D7000DF92EF92FF920F931F93CF93DF93F82E82 +:102D8000062FE42E10E0C7E0D0E097E0C92ED12C4A +:102D9000802F61E00E946F15EE2061F48F2D0E945C +:102DA000A41596012C1B3D0B02C0880F991F2A9574 +:102DB000E2F709C08F2D0E94A4150C2E02C0880FC7 +:102DC000991F0A94E2F7182B802F60E00E946F157C +:102DD00021978FEFCF3FD807D9F6812FDF91CF9181 +:102DE0001F910F91FF90EF90DF90CF900895EF9299 +:102DF000FF920F931F937B018C0120E030E040E0B5 +:102E00005FE40E94731A88238CF0C801B70120E0A8 +:102E100030E040E05FE40E946F180E94311B9B018C +:102E2000AC01205030404040504806C0C801B701B6 +:102E30000E94311B9B01AC01B901CA011F910F9186 +:102E4000FF90EF900895A0E0B0E0E9E2F7E10C9484 +:102E50004F1EDC012B01FA019C91923008F439C11C +:102E6000EB018881823008F433C1943069F48430F6 +:102E700009F02FC111969C9111978981981709F437 +:102E800028C1A8EAB1E025C1843009F421C182300B +:102E9000A9F4923009F01DC19A01AD0188E0EA0160 +:102EA0000990AE01E90109929E018150C1F7E2014A +:102EB000898111969C918923818308C1923009F4FC +:102EC00007C112962D903C901397EB018A819B814C +:102ED0001496AD90BD90CD90DC901797EC80FD805E +:102EE0000E811F819101281B390BB90137FF04C0E6 +:102EF00066277727621B730B603271050CF061C087 +:102F0000121613066CF537014801062E04C096947C +:102F10008794779467940A94D2F721E030E040E0F8 +:102F200050E004C0220F331F441F551F6A95D2F78B +:102F300021503040404050402E213F21402351231A +:102F4000211531054105510521F021E030E040E037 +:102F500050E079018A01E628F728082919293CC0A0 +:102F6000232BD1F1260E371E35014601062E04C053 +:102F700096948794779467940A94D2F721E030E08E +:102F800040E050E004C0220F331F441F551F6A95D4 +:102F9000D2F721503040404050402A213B214C2163 +:102FA0005D21211531054105510521F021E030E079 +:102FB00040E050E059016A01A628B728C828D9285E +:102FC0000BC0821593052CF01C01AA24BB246501BB +:102FD00003C0EE24FF24870111969C91D201119623 +:102FE0008C91981709F445C0992339F0A8019701ED +:102FF0002A193B094C095D0906C0A60195012E1945 +:103000003F09400B510B57FD08C0118233822282C9 +:1030100024833583468357831DC081E081833382B7 +:10302000228288279927DC01821B930BA40BB50B06 +:1030300084839583A683B7830DC0220F331F441F5B +:10304000551F24833583468357838281938101975B +:10305000938382832481358146815781DA01C901B6 +:103060000197A109B1098F5F9F4FAF4FBF4328F36D +:103070000BC0918333822282EA0CFB1C0C1D1D1DA8 +:10308000E482F5820683178383E08083248135817F +:103090004681578157FF1AC0C901AA2797FDA095FD +:1030A000BA2F81709070A070B07056954795379583 +:1030B0002795822B932BA42BB52B84839583A683F2 +:1030C000B78382819381019693838283DF0101C05C +:1030D000D201CD01CDB7DEB7E2E10C946B1EA0E2C8 +:1030E000B0E0E5E7F8E10C945B1E69837A838B839B +:1030F0009C832D833E834F835887E9E0EE2EF12C8D +:10310000EC0EFD1ECE010196B7010E94221D8E011C +:103110000F5E1F4FCE010596B8010E94221D8A89BD +:1031200091E089278A8BC701B801AE01475E5F4FE6 +:103130000E9423170E944D1CA096E6E00C94771E77 +:10314000A0E2B0E0E6EAF8E10C945B1E69837A83C2 +:103150008B839C832D833E834F835887F9E0EF2E2A +:10316000F12CEC0EFD1ECE010196B7010E94221D2E +:103170008E010F5E1F4FCE010596B8010E94221DE1 +:10318000C701B801AE01475E5F4F0E9423170E943E +:103190004D1CA096E6E00C94771EA0E2B0E0E3EDB3 +:1031A000F8E10C944F1E69837A838B839C832D8373 +:1031B0003E834F835887CE010196BE01675F7F4FE4 +:1031C0000E94221DCE010596BE016F5E7F4F0E94B8 +:1031D000221D9985923088F089898230C8F0943018 +:1031E00019F4823051F404C0843029F4923081F40F +:1031F00088EA91E0C6C0923049F420E09A858A8935 +:10320000981321E02A87CE010996BBC0823049F489 +:1032100020E09A858A89981321E02A8BCE01419675 +:10322000B0C02D843E844F8458886D887E888F88F6 +:10323000988CEE24FF248701AA24BB24650140E07A +:1032400050E060E070E0E0E0F0E0C101817090707B +:10325000892BE9F0E60CF71C081D191D9A01AB013A +:103260002A0D3B1D4C1D5D1D80E090E0A0E0B0E00C +:10327000E614F7040805190520F481E090E0A0E0C9 +:10328000B0E0BA01A901480F591F6A1F7B1FAA0CA1 +:10329000BB1CCC1CDD1C97FE08C081E090E0A0E0C8 +:1032A000B0E0A82AB92ACA2ADB2A3196E032F10511 +:1032B00049F0660C771C881C991C569447943794E7 +:1032C0002794C3CFFA85EA892B893C898B859C8515 +:1032D000280F391F2E5F3F4F17C0CA0181709070B1 +:1032E000892B61F016950795F794E79480E090E0BC +:1032F000A0E0B0E8E82AF92A0A2B1B2B76956795FF +:10330000579547952F5F3F4F77FDE7CF0CC0440F90 +:10331000551F661F771F17FD4160EE0CFF1C001F35 +:10332000111F21503040403090E0590790E069076C +:1033300090E4790760F32B8F3C8FDB01CA018F7714 +:103340009070A070B07080349105A105B10561F452 +:1033500047FD0AC0E114F1040105110529F0405CA4 +:103360005F4F6F4F7F4F40781A8EFE1711F081E04C +:103370008A8F4D8F5E8F6F8F78A383E0898FCE0108 +:1033800049960E944D1CA096E2E10C946B1EA8E1A8 +:10339000B0E0EDECF9E10C94571E69837A838B83DE +:1033A0009C832D833E834F835887B9E0EB2EF12C0D +:1033B000EC0EFD1ECE010196B7010E94221D8E016A +:1033C0000F5E1F4FCE010596B8010E94221D298570 +:1033D000223008F47EC03989323010F4B8017CC044 +:1033E0008A859A8989278A87243011F0223031F41E +:1033F000231709F06EC068EA71E06EC0343039F40A +:103400001D861E861F86188A1C861B8604C03230C5 +:1034100021F484E08987B7015FC02B853C858B89C7 +:103420009C89281B390B3C872B87ED84FE840F85F4 +:103430001889AD88BE88CF88D88CEA14FB040C05A7 +:103440001D0540F4EE0CFF1C001F111F21503040E1 +:103450003C872B8720E030E040E050E080E090E0C7 +:10346000A0E0B0E460E070E0EA14FB040C051D0588 +:1034700040F0282B392B4A2B5B2BEA18FB080C0950 +:103480001D09B695A79597958795EE0CFF1C001F13 +:10349000111F6F5F7F4F6F31710531F7DA01C9017D +:1034A0008F779070A070B07080349105A105B10540 +:1034B00061F427FD0AC0E114F1040105110529F0AA +:1034C000205C3F4F4F4F5F4F20782D873E874F87BF +:1034D000588BBE01675F7F4FCB010E944D1C6896E1 +:1034E000EAE00C94731EA8E1B0E0E9E7FAE10C947D +:1034F0005B1E69837A838B839C832D833E834F83FA +:10350000588789E0E82EF12CEC0EFD1ECE010196C5 +:10351000B7010E94221D8E010F5E1F4FCE0105963E +:10352000B8010E94221D8985823040F0898982304D +:1035300028F0C701B8010E949A1D01C08FEF68965C +:10354000E6E00C94771EA8E1B0E0E9EAFAE10C9419 +:103550005B1E69837A838B839C832D833E834F8399 +:10356000588789E0E82EF12CEC0EFD1ECE01019665 +:10357000B7010E94221D8E010F5E1F4FCE010596DE +:10358000B8010E94221D8985823040F089898230ED +:1035900028F0C701B8010E949A1D01C081E0689619 +:1035A000E6E00C94771EA8E0B0E0E9EDFAE10C94B7 +:1035B000581E9B01AC0183E08983DA01C901882789 +:1035C000B7FD83959927AA27BB27B82E211531056A +:1035D0004105510519F482E089833AC08823A9F096 +:1035E000203080E0380780E0480780E8580729F459 +:1035F00060E070E080E09FEC30C0EE24FF248701A3 +:10360000E21AF30A040B150B02C079018A018EE15C +:10361000C82ED12CDC82CB82ED82FE820F831887EC +:10362000C801B7010E94FE1B01971816190684F401 +:10363000082E04C0EE0CFF1C001F111F0A94D2F7C5 +:10364000ED82FE820F831887C81AD90ADC82CB82EA +:10365000BA82CE0101960E944D1C2896E9E00C9496 +:10366000741EACE0B0E0E7E3FBE10C945F1E6983FD +:103670007A838B839C83CE010196BE016B5F7F4F63 +:103680000E94221D8D81823061F1823050F18430A0 +:1036900021F48E81882351F12EC02F81388537FD8A +:1036A00020C06E812F3131051CF06623F9F023C054 +:1036B0008EE190E0821B930B29853A854B855C85D2 +:1036C00004C056954795379527958A95D2F7662376 +:1036D000B1F050954095309521953F4F4F4F5F4F3A +:1036E0000EC020E030E040E050E009C02FEF3FEF97 +:1036F0004FEF5FE704C020E030E040E050E8B90160 +:10370000CA012C96E2E00C947B1EA8E0B0E0EBE846 +:10371000FBE10C94571E7B018C016115710581053D +:10372000910519F482E0898360C083E089838EE18A +:10373000C82ED12CDC82CB82ED82FE820F831887CB +:10374000C801B7010E94FE1BFC013197F7FF3BC087 +:10375000222733272E1B3F0B57016801022E04C07E +:10376000D694C794B794A7940A94D2F740E050E057 +:1037700060E070E081E090E0A0E0B0E004C0880F7D +:10378000991FAA1FBB1F2A95D2F70197A109B1095A +:103790008E219F21A023B1230097A105B10521F01F +:1037A00041E050E060E070E04A295B296C297D2906 +:1037B0004D835E836F8378878EE190E08E1B9F0B35 +:1037C0009C838B8312C0309781F00E2E04C0EE0CC8 +:1037D000FF1C001F111F0A94D2F7ED82FE820F8397 +:1037E0001887CE1ADF0ADC82CB821A82CE010196BC +:1037F0000E944D1C2896EAE00C94731EEF92FF92F3 +:103800000F931F937B018C0180E0E81680E0F8069F +:1038100081E0080780E0180788F48FEFE816F104CC +:103820000105110531F028F088E090E0A0E0B0E05B +:1038300017C080E090E0A0E0B0E012C080E0E816A1 +:1038400080E0F80680E0080781E0180728F088E1AA +:1038500090E0A0E0B0E004C080E190E0A0E0B0E043 +:1038600020E230E040E050E0281B390B4A0B5B0BB4 +:1038700004C016950795F794E7948A95D2F7F70157 +:10388000E055FE4F8081281B310941095109C901CA +:103890001F910F91FF90EF900895DF92EF92FF92AA +:1038A0000F931F93FC01E480F58006811781D1807E +:1038B0008081823048F480E090E0A0E1B0E0E82A26 +:1038C000F92A0A2B1B2BA5C0843009F49FC0823033 +:1038D00021F4EE24FF24870105C0E114F104010561 +:1038E000110519F4E0E0F0E096C0628173819FEF6A +:1038F000623879070CF05BC022E83FEF261B370BDC +:103900002A3131052CF020E030E040E050E02AC0C0 +:10391000B801A701022E04C0769567955795479583 +:103920000A94D2F781E090E0A0E0B0E004C0880FF4 +:10393000991FAA1FBB1F2A95D2F70197A109B109A8 +:103940008E219F21A023B1230097A105B10521F06D +:1039500081E090E0A0E0B0E09A01AB01282B392B88 +:103960004A2B5B2BDA01C9018F779070A070B07081 +:1039700080349105A105B10539F427FF09C0205C09 +:103980003F4F4F4F5F4F04C0215C3F4F4F4F5F4F42 +:10399000E0E0F0E02030A0E03A07A0E04A07A0E431 +:1039A0005A0710F0E1E0F0E079018A0127C06038A1 +:1039B000710564F5FB01E158FF4FD801C7018F770E +:1039C0009070A070B07080349105A105B10539F4F4 +:1039D000E7FE0DC080E490E0A0E0B0E004C08FE31B +:1039E00090E0A0E0B0E0E80EF91E0A1F1B1F17FFD1 +:1039F00005C016950795F794E794319687E01695DC +:103A00000795F794E7948A95D1F705C0EE24FF2433 +:103A10008701EFEFF0E06E2F679566276795902F8F +:103A20009F77D794DD24D7948E2F8695492F462BE8 +:103A3000582F5D29B701CA011F910F91FF90EF9098 +:103A4000DF900895FC01DB01408151812281622FCA +:103A50006F7770E0221F2227221F9381892F880F02 +:103A6000822B282F30E0991F9927991F11969C933C +:103A7000119721153105A9F541155105610571050C +:103A800011F482E037C082E89FEF13969C938E93E7 +:103A900012979A01AB0167E0220F331F441F551F95 +:103AA0006A95D1F783E08C930DC0220F331F441F1A +:103AB000551F12968D919C911397019713969C9385 +:103AC0008E931297203080E0380780E0480780E42A +:103AD000580758F314962D933D934D935C93179785 +:103AE00008952F3F310579F44115510561057105A0 +:103AF00019F484E08C93089564FF03C081E08C93F3 +:103B000012C01C9210C02F57304013963C932E9336 +:103B1000129783E08C9387E0440F551F661F771F31 +:103B20008A95D1F7706414964D935D936D937C9351 +:103B3000179708951F93DC01FB019C91923008F4C4 +:103B400047C08081823008F443C0943051F411960C +:103B50001C91843099F58181682F70E0611B710997 +:103B60003FC0843021F0923031F48230B9F181814C +:103B7000882389F12DC011961C9111978230F1F0A4 +:103B800081811817D9F412962D913C911397828157 +:103B900093818217930794F028173907BCF0149685 +:103BA0008D919D910D90BC91A02D248135814681F0 +:103BB0005781281739074A075B0718F4112341F08A +:103BC0000AC082179307A407B50740F4112319F020 +:103BD00061E070E005C06FEF7FEF02C060E070E071 +:103BE000CB011F910895629FD001739FF001829FC6 +:103BF000E00DF11D649FE00DF11D929FF00D839F7C +:103C0000F00D749FF00D659FF00D9927729FB00D18 +:103C1000E11DF91F639FB00DE11DF91FBD01CF012B +:103C200011240895A1E21A2EAA1BBB1BFD010DC091 +:103C3000AA1FBB1FEE1FFF1FA217B307E407F5075C +:103C400020F0A21BB30BE40BF50B661F771F881F38 +:103C5000991F1A9469F760957095809590959B01CE +:103C6000AC01BD01CF01089597FB092E05260ED0AA +:103C700057FD04D0D7DF0AD0001C38F4509540958A +:103C8000309521953F4F4F4F5F4F0895F6F7909530 +:103C90008095709561957F4F8F4F9F4F08952F921C +:103CA0003F924F925F926F927F928F929F92AF92CC +:103CB000BF92CF92DF92EF92FF920F931F93CF9319 +:103CC000DF93CDB7DEB7CA1BDB0B0FB6F894DEBFB0 +:103CD0000FBECDBF09942A88398848885F846E84D6 +:103CE0007D848C849B84AA84B984C884DF80EE8020 +:103CF000FD800C811B81AA81B981CE0FD11D0FB629 +:103D0000F894DEBF0FBECDBFED010895EE0FFF1F8B +:103D10000590F491E02D0994CF93DF93BC0182309C +:103D2000910510F462E070E0A0919003B0919103CE +:103D3000ED01E0E0F0E040E050E021C088819981B1 +:103D40008617970769F48A819B81309719F09383CE +:103D5000828304C09093910380939003FE0134C04A +:103D60006817790738F44115510519F0841795073C +:103D700008F4AC01FE018A819B819C01E901209736 +:103D8000E9F641155105A9F1CA01861B970B049765 +:103D900008F4BA01E0E0F0E02AC08D919C911197FF +:103DA00084179507F9F46417750781F412968D91BD +:103DB0009C911397309719F09383828304C090935A +:103DC000910380939003FD0132964FC0CA01861B78 +:103DD000970BFD01E80FF91F6193719302978D9383 +:103DE0009C9343C0FD01828193819C01D90110976E +:103DF000A1F680918E0390918F03892B41F48091DD +:103E0000B2029091B30290938F0380938E034091FE +:103E1000B4025091B5024115510541F44DB75EB75A +:103E20008091B0029091B102481B590B20918E03F2 +:103E300030918F0324173507B0F4CA01821B930B0E +:103E40008617970780F0AB014E5F5F4F8417950789 +:103E500050F0420F531F50938F0340938E03F9018C +:103E60006193719302C0E0E0F0E0CF01DF91CF9168 +:103E70000895CF93DF93009709F450C0EC01229787 +:103E80001B821A82A0919003B0919103109709F1BF +:103E900040E050E0AC17BD0708F1BB83AA83FE01E8 +:103EA00021913191E20FF31FAE17BF0779F48D9185 +:103EB0009C911197280F391F2E5F3F4F398328831C +:103EC00012968D919C9113979B838A83411551057E +:103ED00071F4D0939103C093900320C012968D91FA +:103EE0009C911397AD01009711F0DC01D3CFFA013B +:103EF000D383C28321913191E20FF31FCE17DF07E5 +:103F000069F488819981280F391F2E5F3F4FFA018C +:103F1000318320838A819B8193838283DF91CF9138 +:103F20000895A0E0B0E0E7E9FFE10C94571EEC0132 +:103F3000A880B980CA80DB80A114B104C104D10477 +:103F400041F484E2A82E89EDB82E8BE5C82E87E0D7 +:103F5000D82EC601B5012DE133EF41E050E00E94BB +:103F6000341E27EA31E440E050E00E94F31D7B015B +:103F70008C01C601B5012DE133EF41E050E00E9414 +:103F8000341ECA01B9012CEE34EF4FEF5FEF0E94EF +:103F9000F31D6E0D7F1D801F911F97FF04C06150A0 +:103FA000704080409048688379838A839B839B011B +:103FB000AC015F77B901CA01CDB7DEB7EAE00C9476 +:103FC000731E0E94911F089586EB92E00E94911F3C +:103FD00008956093B6027093B7028093B8029093ED +:103FE000B9020895A0E0B0E0E8EFFFE10C94551E9F +:103FF0008C01009729F4CB010E948C1E8C01BAC061 +:104000009EEFE92E9FEFF92EE00EF11E5801A60E4D +:10401000B71EAE14BF0408F4ABC08EEF882E8FEF2E +:10402000982E8A0C9B1CE701488159814617570737 +:10403000B8F04530510508F49DC0CA0104978617B1 +:10404000970708F497C042505040461B570BF401A5 +:104050005183408379836883C5010E94391F8AC0D8 +:104060006B01C41AD50AE0919003F0919103A0E08E +:10407000B0E0C0E0D0E042C0E815F905A1F520812C +:1040800031812C153D0578F1C90102968C159D05ED +:10409000A8F04E5F5F4F420F531FE70159834883DB +:1040A00022813381109729F013963C932E93129717 +:1040B00061C030939103209390035CC02250304044 +:1040C0002C193D0931832083109729F01396FC9316 +:1040D000EE93129704C0F0939103E0939003F701DD +:1040E0007183608347C080819181C817D90708F424 +:1040F000EC01DF01828193819C01F901309709F085 +:10410000BBCF400F511F80918E0390918F03841776 +:104110009507E9F4C617D707D0F42091B40230917F +:10412000B5022115310541F42DB73EB78091B0029B +:104130009091B102281B390BA216B306C8F4B092B5 +:104140008F03A0928E03E7017983688313C0CB01AC +:104150000E948C1EEC01009759F0F70140815181BB +:10416000B8010E94FF20C8010E94391F8E0102C0C1 +:1041700000E010E0C801CDB7DEB7ECE00C94711E92 +:104180001F93FC0199278827BC01E89411911032F4 +:10419000E9F3193010F01E30C8F31B3251F01D3214 +:1041A00049F4689406C00E94C521610F711D811DEC +:1041B000911D119110531A30B0F33EF490958095F3 +:1041C000709561957F4F8F4F9F4F1F91089591116B +:1041D00016C1803219F089508550D0F70895911199 +:1041E000089581548A5108F4805E855A089591118A +:1041F000089581568A5108F4805285580895FB012C +:10420000DC0102C001900D9241505040D8F7089552 +:10421000FB01DC010D900020E9F7119701900D9250 +:104220000020E1F70895FC018191861721F0882391 +:10423000D9F7992708953197CF010895FB01DC0143 +:104240008D91019080190110D9F3990B0895FB010C +:10425000DC0101900D920020E1F70895FB01DC01E3 +:104260004150504030F08D910190801919F4002098 +:10427000B9F7881B990B0895FB01DC0141505040B0 +:1042800048F001900D920020C9F701C01D924150E5 +:104290005040E0F70895FC0181E090E0019006169F +:1042A00009F4CF010020D1F701970895FB01519146 +:1042B0005523A9F0BF01DC014D9145174111E1F7EC +:1042C00059F4CD010190002049F04D914015411164 +:1042D000C9F3FB014111EFCF81E090E00197089510 +:1042E000FB019F01E8944230C4F04532B4F44A30F7 +:1042F00029F497FB1EF4909581959F4F642F7727A3 +:104300000E941222805D8A330CF0895D8193CB017B +:104310000097A1F716F45DE251931082C9010C9445 +:104320000222FA01CF93FF93EF93223044F125321A +:1043300034F5C22FE894CA3049F497FB3EF49095C7 +:104340008095709561957F4F8F4F9F4F2C2F33270E +:1043500044275527FF93EF930E94121EEF91FF9180 +:10436000605D6A330CF0695D6193B901CA01605008 +:1043700070408040904051F716F4CDE2C193108216 +:104380008F919F91CF910C940222592F482F372F54 +:10439000262F660F771F881F991F660F771F881FAC +:1043A000991F620F731F841F951F660F771F881F49 +:1043B000991F0895FA01CF93FF93EF932230CCF029 +:1043C0002532BCF4C22F2C2F332744275527FF93C7 +:1043D000EF930E94121EEF91FF91605D6A330CF023 +:1043E000695D6193B901CA0160507040804090409E +:1043F00051F710828F919F91CF910C9402229927AF +:1044000088270895DC01FC01672F71917723E1F77C +:10441000329704C07C916D9370836291AE17BF0791 +:10442000C8F30895AA1BBB1B51E107C0AA1FBB1FFD +:10443000A617B70710F0A61BB70B881F991F5A9530 +:10444000A9F780959095BC01CD010895F894FFCF10 +:104450000D0A2B494E513D310D0A000D0A2B5354C4 +:10446000574D4F443D300D0A000D0A2B53544E4119 +:104470003D4164617074696373456C65637469631D +:104480000D0A000D0A2B53544F4155543D310D0A6E +:10449000000D0A2B53544155544F3D300D0A000D69 +:1044A0000A202B535450494E3D303030300D0A0015 +:1044B0000D0A2B4C4F53535245434F4E4E3D300D3A +:1044C0000A0007F000000000008E04DB04F3043350 +:1044D000045E044404820400000000DA00DB04F3FC +:1044E00004DA00DA00DA00DA002E0000000000DA58 +:1044F00000DB04F304FF00010000000000000000E6 +:10450000000102020303030304040404040404047A +:10451000050505050505050505050505050505054B +:10452000060606060606060606060606060606062B +:10453000060606060606060606060606060606061B +:1045400007070707070707070707070707070707FB +:1045500007070707070707070707070707070707EB +:1045600007070707070707070707070707070707DB +:1045700007070707070707070707070707070707CB +:1045800008080808080808080808080808080808AB +:10459000080808080808080808080808080808089B +:1045A000080808080808080808080808080808088B +:1045B000080808080808080808080808080808087B +:1045C000080808080808080808080808080808086B +:1045D000080808080808080808080808080808085B +:1045E000080808080808080808080808080808084B +:1045F000080808080808080808080808080808083B +:0A46000020009203000001000000FA +:00000001FF diff --git a/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.lss b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.lss new file mode 100644 index 0000000..2efb687 --- /dev/null +++ b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.lss @@ -0,0 +1,8524 @@ + +bin/Release/ESS1995test_328p.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .data 000001ba 00800100 00004450 000044e4 2**0 + CONTENTS, ALLOC, LOAD, DATA + 1 .text 00004450 00000000 00000000 00000094 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .bss 000000d8 008002ba 008002ba 0000469e 2**0 + ALLOC + 3 .stab 0000267c 00000000 00000000 000046a0 2**2 + CONTENTS, READONLY, DEBUGGING + 4 .stabstr 00000cf1 00000000 00000000 00006d1c 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 63 00 jmp 0xc6 ; 0xc6 <__ctors_end> + 4: 0c 94 93 0a jmp 0x1526 ; 0x1526 <__vector_1> + 8: 0c 94 c0 0a jmp 0x1580 ; 0x1580 <__vector_2> + c: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 10: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 14: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 18: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 1c: 0c 94 ec 07 jmp 0xfd8 ; 0xfd8 <__vector_7> + 20: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 24: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 28: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 2c: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 30: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 34: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 38: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 3c: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 40: 0c 94 a4 13 jmp 0x2748 ; 0x2748 <__vector_16> + 44: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 48: 0c 94 14 03 jmp 0x628 ; 0x628 <__vector_18> + 4c: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 50: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 54: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 58: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 5c: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 60: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + 64: 0c 94 8b 00 jmp 0x116 ; 0x116 <__bad_interrupt> + +00000068 <_ZL21tone_pin_to_timer_PGM>: + 68: 02 . + +00000069 : + 69: 00 00 00 00 24 00 27 00 2a 00 ....$.'.*. + +00000073 : + 73: 00 00 00 00 25 00 28 00 2b 00 ....%.(.+. + +0000007d : + 7d: 00 00 00 00 23 00 26 00 29 00 ....#.&.). + +00000087 : + 87: 04 04 04 04 04 04 04 04 02 02 02 02 02 02 03 03 ................ + 97: 03 03 03 03 .... + +0000009b : + 9b: 01 02 04 08 10 20 40 80 01 02 04 08 10 20 01 02 ..... @...... .. + ab: 04 08 10 20 ... + +000000af : + af: 00 00 00 07 00 02 01 00 00 03 04 06 00 00 00 00 ................ + bf: 00 00 00 00 00 ..... + +000000c4 <__ctors_start>: + c4: a1 04 cpc r10, r1 + +000000c6 <__ctors_end>: + c6: 11 24 eor r1, r1 + c8: 1f be out 0x3f, r1 ; 63 + ca: cf ef ldi r28, 0xFF ; 255 + cc: d8 e0 ldi r29, 0x08 ; 8 + ce: de bf out 0x3e, r29 ; 62 + d0: cd bf out 0x3d, r28 ; 61 + +000000d2 <__do_copy_data>: + d2: 12 e0 ldi r17, 0x02 ; 2 + d4: a0 e0 ldi r26, 0x00 ; 0 + d6: b1 e0 ldi r27, 0x01 ; 1 + d8: e0 e5 ldi r30, 0x50 ; 80 + da: f4 e4 ldi r31, 0x44 ; 68 + dc: 02 c0 rjmp .+4 ; 0xe2 <.do_copy_data_start> + +000000de <.do_copy_data_loop>: + de: 05 90 lpm r0, Z+ + e0: 0d 92 st X+, r0 + +000000e2 <.do_copy_data_start>: + e2: aa 3b cpi r26, 0xBA ; 186 + e4: b1 07 cpc r27, r17 + e6: d9 f7 brne .-10 ; 0xde <.do_copy_data_loop> + +000000e8 <__do_clear_bss>: + e8: 13 e0 ldi r17, 0x03 ; 3 + ea: aa eb ldi r26, 0xBA ; 186 + ec: b2 e0 ldi r27, 0x02 ; 2 + ee: 01 c0 rjmp .+2 ; 0xf2 <.do_clear_bss_start> + +000000f0 <.do_clear_bss_loop>: + f0: 1d 92 st X+, r1 + +000000f2 <.do_clear_bss_start>: + f2: a2 39 cpi r26, 0x92 ; 146 + f4: b1 07 cpc r27, r17 + f6: e1 f7 brne .-8 ; 0xf0 <.do_clear_bss_loop> + +000000f8 <__do_global_ctors>: + f8: 10 e0 ldi r17, 0x00 ; 0 + fa: c6 ec ldi r28, 0xC6 ; 198 + fc: d0 e0 ldi r29, 0x00 ; 0 + fe: 04 c0 rjmp .+8 ; 0x108 <.do_global_ctors_start> + +00000100 <.do_global_ctors_loop>: + 100: 22 97 sbiw r28, 0x02 ; 2 + 102: fe 01 movw r30, r28 + 104: 0e 94 88 1e call 0x3d10 ; 0x3d10 <__tablejump__> + +00000108 <.do_global_ctors_start>: + 108: c4 3c cpi r28, 0xC4 ; 196 + 10a: d1 07 cpc r29, r17 + 10c: c9 f7 brne .-14 ; 0x100 <.do_global_ctors_loop> + 10e: 0e 94 ef 01 call 0x3de ; 0x3de
+ 112: 0c 94 26 22 jmp 0x444c ; 0x444c <_exit> + +00000116 <__bad_interrupt>: + 116: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +0000011a <_Z9advertisev>: + 11a: 0f 93 push r16 + 11c: 1f 93 push r17 + 11e: 60 ed ldi r22, 0xD0 ; 208 + 120: 77 e0 ldi r23, 0x07 ; 7 + 122: 80 e0 ldi r24, 0x00 ; 0 + 124: 90 e0 ldi r25, 0x00 ; 0 + 126: 0e 94 2c 14 call 0x2858 ; 0x2858 + 12a: 08 e5 ldi r16, 0x58 ; 88 + 12c: 13 e0 ldi r17, 0x03 ; 3 + 12e: c8 01 movw r24, r16 + 130: 60 e0 ldi r22, 0x00 ; 0 + 132: 71 e0 ldi r23, 0x01 ; 1 + 134: 0e 94 12 05 call 0xa24 ; 0xa24 <_ZN5Print5printEPKc> + 138: 60 ed ldi r22, 0xD0 ; 208 + 13a: 77 e0 ldi r23, 0x07 ; 7 + 13c: 80 e0 ldi r24, 0x00 ; 0 + 13e: 90 e0 ldi r25, 0x00 ; 0 + 140: 0e 94 2c 14 call 0x2858 ; 0x2858 + 144: c8 01 movw r24, r16 + 146: 0e 94 82 04 call 0x904 ; 0x904 <_ZN14HardwareSerial5flushEv> + 14a: 1f 91 pop r17 + 14c: 0f 91 pop r16 + 14e: 08 95 ret + +00000150 <_Z14setupBlueToothv>: + 150: 0f 93 push r16 + 152: 1f 93 push r17 + 154: 86 e0 ldi r24, 0x06 ; 6 + 156: 60 e0 ldi r22, 0x00 ; 0 + 158: 0e 94 1c 15 call 0x2a38 ; 0x2a38 + 15c: 08 e5 ldi r16, 0x58 ; 88 + 15e: 13 e0 ldi r17, 0x03 ; 3 + 160: c8 01 movw r24, r16 + 162: 40 e0 ldi r20, 0x00 ; 0 + 164: 56 e9 ldi r21, 0x96 ; 150 + 166: 60 e0 ldi r22, 0x00 ; 0 + 168: 70 e0 ldi r23, 0x00 ; 0 + 16a: 0e 94 a5 03 call 0x74a ; 0x74a <_ZN14HardwareSerial5beginEl> + 16e: c8 01 movw r24, r16 + 170: 6b e0 ldi r22, 0x0B ; 11 + 172: 71 e0 ldi r23, 0x01 ; 1 + 174: 0e 94 12 05 call 0xa24 ; 0xa24 <_ZN5Print5printEPKc> + 178: c8 01 movw r24, r16 + 17a: 69 e1 ldi r22, 0x19 ; 25 + 17c: 71 e0 ldi r23, 0x01 ; 1 + 17e: 0e 94 12 05 call 0xa24 ; 0xa24 <_ZN5Print5printEPKc> + 182: c8 01 movw r24, r16 + 184: 63 e3 ldi r22, 0x33 ; 51 + 186: 71 e0 ldi r23, 0x01 ; 1 + 188: 0e 94 12 05 call 0xa24 ; 0xa24 <_ZN5Print5printEPKc> + 18c: c8 01 movw r24, r16 + 18e: 61 e4 ldi r22, 0x41 ; 65 + 190: 71 e0 ldi r23, 0x01 ; 1 + 192: 0e 94 12 05 call 0xa24 ; 0xa24 <_ZN5Print5printEPKc> + 196: c8 01 movw r24, r16 + 198: 6f e4 ldi r22, 0x4F ; 79 + 19a: 71 e0 ldi r23, 0x01 ; 1 + 19c: 0e 94 12 05 call 0xa24 ; 0xa24 <_ZN5Print5printEPKc> + 1a0: c8 01 movw r24, r16 + 1a2: 60 e6 ldi r22, 0x60 ; 96 + 1a4: 71 e0 ldi r23, 0x01 ; 1 + 1a6: 0e 94 12 05 call 0xa24 ; 0xa24 <_ZN5Print5printEPKc> + 1aa: 0e 94 8d 00 call 0x11a ; 0x11a <_Z9advertisev> + 1ae: 1f 91 pop r17 + 1b0: 0f 91 pop r16 + 1b2: 08 95 ret + +000001b4 <__cxa_pure_virtual>: + 1b4: f8 94 cli + 1b6: ff cf rjmp .-2 ; 0x1b6 <__cxa_pure_virtual+0x2> + +000001b8 <_Z13writeStartBitv>: + 1b8: 84 e0 ldi r24, 0x04 ; 4 + 1ba: 61 e0 ldi r22, 0x01 ; 1 + 1bc: 0e 94 6f 15 call 0x2ade ; 0x2ade + 1c0: 83 e0 ldi r24, 0x03 ; 3 + 1c2: 61 e0 ldi r22, 0x01 ; 1 + 1c4: 0e 94 6f 15 call 0x2ade ; 0x2ade + 1c8: 8a e0 ldi r24, 0x0A ; 10 + 1ca: 90 e0 ldi r25, 0x00 ; 0 + 1cc: 0e 94 52 14 call 0x28a4 ; 0x28a4 + 1d0: 84 e0 ldi r24, 0x04 ; 4 + 1d2: 60 e0 ldi r22, 0x00 ; 0 + 1d4: 0e 94 6f 15 call 0x2ade ; 0x2ade + 1d8: 8a e0 ldi r24, 0x0A ; 10 + 1da: 90 e0 ldi r25, 0x00 ; 0 + 1dc: 0e 94 52 14 call 0x28a4 ; 0x28a4 + 1e0: 83 e0 ldi r24, 0x03 ; 3 + 1e2: 60 e0 ldi r22, 0x00 ; 0 + 1e4: 0e 94 6f 15 call 0x2ade ; 0x2ade + 1e8: 8a e0 ldi r24, 0x0A ; 10 + 1ea: 90 e0 ldi r25, 0x00 ; 0 + 1ec: 0e 94 52 14 call 0x28a4 ; 0x28a4 + 1f0: 08 95 ret + +000001f2 <_Z12writeStopBitv>: + 1f2: 84 e0 ldi r24, 0x04 ; 4 + 1f4: 60 e0 ldi r22, 0x00 ; 0 + 1f6: 0e 94 6f 15 call 0x2ade ; 0x2ade + 1fa: 8a e0 ldi r24, 0x0A ; 10 + 1fc: 90 e0 ldi r25, 0x00 ; 0 + 1fe: 0e 94 52 14 call 0x28a4 ; 0x28a4 + 202: 83 e0 ldi r24, 0x03 ; 3 + 204: 61 e0 ldi r22, 0x01 ; 1 + 206: 0e 94 6f 15 call 0x2ade ; 0x2ade + 20a: 8a e0 ldi r24, 0x0A ; 10 + 20c: 90 e0 ldi r25, 0x00 ; 0 + 20e: 0e 94 52 14 call 0x28a4 ; 0x28a4 + 212: 84 e0 ldi r24, 0x04 ; 4 + 214: 61 e0 ldi r22, 0x01 ; 1 + 216: 0e 94 6f 15 call 0x2ade ; 0x2ade + 21a: 08 95 ret + +0000021c <_Z11SCLKcycle_Rv>: + 21c: 8a e0 ldi r24, 0x0A ; 10 + 21e: 90 e0 ldi r25, 0x00 ; 0 + 220: 0e 94 52 14 call 0x28a4 ; 0x28a4 + 224: 83 e0 ldi r24, 0x03 ; 3 + 226: 60 e0 ldi r22, 0x00 ; 0 + 228: 0e 94 6f 15 call 0x2ade ; 0x2ade + 22c: 84 e1 ldi r24, 0x14 ; 20 + 22e: 90 e0 ldi r25, 0x00 ; 0 + 230: 0e 94 52 14 call 0x28a4 ; 0x28a4 + 234: 83 e0 ldi r24, 0x03 ; 3 + 236: 61 e0 ldi r22, 0x01 ; 1 + 238: 0e 94 6f 15 call 0x2ade ; 0x2ade + 23c: 8a e0 ldi r24, 0x0A ; 10 + 23e: 90 e0 ldi r25, 0x00 ; 0 + 240: 0e 94 52 14 call 0x28a4 ; 0x28a4 + 244: 08 95 ret + +00000246 <_Z8readBytev>: + 246: 0f 93 push r16 + 248: 1f 93 push r17 + 24a: 8a e0 ldi r24, 0x0A ; 10 + 24c: 90 e0 ldi r25, 0x00 ; 0 + 24e: 0e 94 52 14 call 0x28a4 ; 0x28a4 + 252: 00 e0 ldi r16, 0x00 ; 0 + 254: 17 e0 ldi r17, 0x07 ; 7 + 256: 84 e0 ldi r24, 0x04 ; 4 + 258: 0e 94 a4 15 call 0x2b48 ; 0x2b48 + 25c: 68 2f mov r22, r24 + 25e: 90 e0 ldi r25, 0x00 ; 0 + 260: 01 2e mov r0, r17 + 262: 02 c0 rjmp .+4 ; 0x268 <_Z8readBytev+0x22> + 264: 88 0f add r24, r24 + 266: 99 1f adc r25, r25 + 268: 0a 94 dec r0 + 26a: e2 f7 brpl .-8 ; 0x264 <_Z8readBytev+0x1e> + 26c: 08 2b or r16, r24 + 26e: 8c e0 ldi r24, 0x0C ; 12 + 270: 0e 94 6f 15 call 0x2ade ; 0x2ade + 274: 0e 94 0e 01 call 0x21c ; 0x21c <_Z11SCLKcycle_Rv> + 278: 11 50 subi r17, 0x01 ; 1 + 27a: 68 f7 brcc .-38 ; 0x256 <_Z8readBytev+0x10> + 27c: 0e 94 0e 01 call 0x21c ; 0x21c <_Z11SCLKcycle_Rv> + 280: 80 2f mov r24, r16 + 282: 1f 91 pop r17 + 284: 0f 91 pop r16 + 286: 08 95 ret + +00000288 <_Z11SCLKcycle_Wv>: + 288: 8a e0 ldi r24, 0x0A ; 10 + 28a: 90 e0 ldi r25, 0x00 ; 0 + 28c: 0e 94 52 14 call 0x28a4 ; 0x28a4 + 290: 83 e0 ldi r24, 0x03 ; 3 + 292: 61 e0 ldi r22, 0x01 ; 1 + 294: 0e 94 6f 15 call 0x2ade ; 0x2ade + 298: 84 e1 ldi r24, 0x14 ; 20 + 29a: 90 e0 ldi r25, 0x00 ; 0 + 29c: 0e 94 52 14 call 0x28a4 ; 0x28a4 + 2a0: 83 e0 ldi r24, 0x03 ; 3 + 2a2: 60 e0 ldi r22, 0x00 ; 0 + 2a4: 0e 94 6f 15 call 0x2ade ; 0x2ade + 2a8: 8a e0 ldi r24, 0x0A ; 10 + 2aa: 90 e0 ldi r25, 0x00 ; 0 + 2ac: 0e 94 52 14 call 0x28a4 ; 0x28a4 + 2b0: 08 95 ret + +000002b2 <_Z9writeByteh>: + 2b2: 1f 93 push r17 + 2b4: cf 93 push r28 + 2b6: df 93 push r29 + 2b8: 17 e0 ldi r17, 0x07 ; 7 + 2ba: c8 2f mov r28, r24 + 2bc: d0 e0 ldi r29, 0x00 ; 0 + 2be: be 01 movw r22, r28 + 2c0: 01 2e mov r0, r17 + 2c2: 02 c0 rjmp .+4 ; 0x2c8 <_Z9writeByteh+0x16> + 2c4: 75 95 asr r23 + 2c6: 67 95 ror r22 + 2c8: 0a 94 dec r0 + 2ca: e2 f7 brpl .-8 ; 0x2c4 <_Z9writeByteh+0x12> + 2cc: 61 70 andi r22, 0x01 ; 1 + 2ce: 84 e0 ldi r24, 0x04 ; 4 + 2d0: 0e 94 6f 15 call 0x2ade ; 0x2ade + 2d4: 0e 94 44 01 call 0x288 ; 0x288 <_Z11SCLKcycle_Wv> + 2d8: 11 50 subi r17, 0x01 ; 1 + 2da: 88 f7 brcc .-30 ; 0x2be <_Z9writeByteh+0xc> + 2dc: 84 e0 ldi r24, 0x04 ; 4 + 2de: 61 e0 ldi r22, 0x01 ; 1 + 2e0: 0e 94 6f 15 call 0x2ade ; 0x2ade + 2e4: 0e 94 44 01 call 0x288 ; 0x288 <_Z11SCLKcycle_Wv> + 2e8: df 91 pop r29 + 2ea: cf 91 pop r28 + 2ec: 1f 91 pop r17 + 2ee: 08 95 ret + +000002f0 <_Z9startReadv>: + 2f0: 84 e0 ldi r24, 0x04 ; 4 + 2f2: 60 e0 ldi r22, 0x00 ; 0 + 2f4: 0e 94 1c 15 call 0x2a38 ; 0x2a38 + 2f8: 83 e0 ldi r24, 0x03 ; 3 + 2fa: 61 e0 ldi r22, 0x01 ; 1 + 2fc: 0e 94 6f 15 call 0x2ade ; 0x2ade + 300: 08 95 ret + +00000302 <_Z10startWritev>: + 302: 84 e0 ldi r24, 0x04 ; 4 + 304: 61 e0 ldi r22, 0x01 ; 1 + 306: 0e 94 1c 15 call 0x2a38 ; 0x2a38 + 30a: 83 e0 ldi r24, 0x03 ; 3 + 30c: 61 e0 ldi r22, 0x01 ; 1 + 30e: 0e 94 6f 15 call 0x2ade ; 0x2ade + 312: 08 95 ret + +00000314 <_Z8writeDMMv>: + 314: ef 92 push r14 + 316: ff 92 push r15 + 318: 0f 93 push r16 + 31a: 1f 93 push r17 + 31c: 80 91 c5 02 lds r24, 0x02C5 + 320: 87 95 ror r24 + 322: 88 27 eor r24, r24 + 324: 87 95 ror r24 + 326: f0 90 c6 02 lds r15, 0x02C6 + 32a: ff 0c add r15, r15 + 32c: ff 0c add r15, r15 + 32e: ff 0c add r15, r15 + 330: f8 2a or r15, r24 + 332: 80 91 c7 02 lds r24, 0x02C7 + 336: f8 2a or r15, r24 + 338: 80 91 c9 02 lds r24, 0x02C9 + 33c: 82 95 swap r24 + 33e: 88 0f add r24, r24 + 340: 80 7e andi r24, 0xE0 ; 224 + 342: 00 91 ca 02 lds r16, 0x02CA + 346: 00 0f add r16, r16 + 348: 00 0f add r16, r16 + 34a: 00 0f add r16, r16 + 34c: 08 2b or r16, r24 + 34e: 80 91 c8 02 lds r24, 0x02C8 + 352: 08 2b or r16, r24 + 354: 90 91 cb 02 lds r25, 0x02CB + 358: 97 95 ror r25 + 35a: 99 27 eor r25, r25 + 35c: 97 95 ror r25 + 35e: 80 91 cf 02 lds r24, 0x02CF + 362: 82 95 swap r24 + 364: 80 7f andi r24, 0xF0 ; 240 + 366: 89 2b or r24, r25 + 368: 90 91 d1 02 lds r25, 0x02D1 + 36c: 89 2b or r24, r25 + 36e: 90 91 d3 02 lds r25, 0x02D3 + 372: 99 0f add r25, r25 + 374: 99 0f add r25, r25 + 376: 99 0f add r25, r25 + 378: 98 2b or r25, r24 + 37a: e0 90 ce 02 lds r14, 0x02CE + 37e: ee 0c add r14, r14 + 380: e9 2a or r14, r25 + 382: 90 91 cc 02 lds r25, 0x02CC + 386: 97 95 ror r25 + 388: 99 27 eor r25, r25 + 38a: 97 95 ror r25 + 38c: 80 91 cd 02 lds r24, 0x02CD + 390: 82 95 swap r24 + 392: 88 0f add r24, r24 + 394: 88 0f add r24, r24 + 396: 80 7c andi r24, 0xC0 ; 192 + 398: 89 2b or r24, r25 + 39a: 90 91 d2 02 lds r25, 0x02D2 + 39e: 89 2b or r24, r25 + 3a0: 10 91 d0 02 lds r17, 0x02D0 + 3a4: 11 0f add r17, r17 + 3a6: 11 0f add r17, r17 + 3a8: 18 2b or r17, r24 + 3aa: 0e 94 81 01 call 0x302 ; 0x302 <_Z10startWritev> + 3ae: 0e 94 dc 00 call 0x1b8 ; 0x1b8 <_Z13writeStartBitv> + 3b2: 88 ec ldi r24, 0xC8 ; 200 + 3b4: 0e 94 59 01 call 0x2b2 ; 0x2b2 <_Z9writeByteh> + 3b8: 8f 2d mov r24, r15 + 3ba: 0e 94 59 01 call 0x2b2 ; 0x2b2 <_Z9writeByteh> + 3be: 80 2f mov r24, r16 + 3c0: 0e 94 59 01 call 0x2b2 ; 0x2b2 <_Z9writeByteh> + 3c4: 8e 2d mov r24, r14 + 3c6: 0e 94 59 01 call 0x2b2 ; 0x2b2 <_Z9writeByteh> + 3ca: 81 2f mov r24, r17 + 3cc: 0e 94 59 01 call 0x2b2 ; 0x2b2 <_Z9writeByteh> + 3d0: 0e 94 f9 00 call 0x1f2 ; 0x1f2 <_Z12writeStopBitv> + 3d4: 1f 91 pop r17 + 3d6: 0f 91 pop r16 + 3d8: ff 90 pop r15 + 3da: ef 90 pop r14 + 3dc: 08 95 ret + +000003de
: + 3de: 8f 92 push r8 + 3e0: 9f 92 push r9 + 3e2: af 92 push r10 + 3e4: bf 92 push r11 + 3e6: cf 92 push r12 + 3e8: df 92 push r13 + 3ea: ef 92 push r14 + 3ec: ff 92 push r15 + 3ee: 0f 93 push r16 + 3f0: 1f 93 push r17 + 3f2: df 93 push r29 + 3f4: cf 93 push r28 + 3f6: cd b7 in r28, 0x3d ; 61 + 3f8: de b7 in r29, 0x3e ; 62 + 3fa: 27 97 sbiw r28, 0x07 ; 7 + 3fc: 0f b6 in r0, 0x3f ; 63 + 3fe: f8 94 cli + 400: de bf out 0x3e, r29 ; 62 + 402: 0f be out 0x3f, r0 ; 63 + 404: cd bf out 0x3d, r28 ; 61 + 406: 0e 94 5c 14 call 0x28b8 ; 0x28b8 + 40a: 85 e0 ldi r24, 0x05 ; 5 + 40c: 61 e0 ldi r22, 0x01 ; 1 + 40e: 0e 94 1c 15 call 0x2a38 ; 0x2a38 + 412: 85 e0 ldi r24, 0x05 ; 5 + 414: 60 e0 ldi r22, 0x00 ; 0 + 416: 0e 94 6f 15 call 0x2ade ; 0x2ade + 41a: 0e 94 a8 00 call 0x150 ; 0x150 <_Z14setupBlueToothv> + 41e: 82 e0 ldi r24, 0x02 ; 2 + 420: 60 e0 ldi r22, 0x00 ; 0 + 422: 0e 94 1c 15 call 0x2a38 ; 0x2a38 + 426: 83 e0 ldi r24, 0x03 ; 3 + 428: 61 e0 ldi r22, 0x01 ; 1 + 42a: 0e 94 1c 15 call 0x2a38 ; 0x2a38 + 42e: 86 e0 ldi r24, 0x06 ; 6 + 430: 60 e0 ldi r22, 0x00 ; 0 + 432: 0e 94 1c 15 call 0x2a38 ; 0x2a38 + 436: 8c e0 ldi r24, 0x0C ; 12 + 438: 61 e0 ldi r22, 0x01 ; 1 + 43a: 0e 94 1c 15 call 0x2a38 ; 0x2a38 + 43e: 8d e0 ldi r24, 0x0D ; 13 + 440: 61 e0 ldi r22, 0x01 ; 1 + 442: 0e 94 1c 15 call 0x2a38 ; 0x2a38 + 446: 8d e0 ldi r24, 0x0D ; 13 + 448: 61 e0 ldi r22, 0x01 ; 1 + 44a: 0e 94 6f 15 call 0x2ade ; 0x2ade + 44e: 85 e0 ldi r24, 0x05 ; 5 + 450: 61 e0 ldi r22, 0x01 ; 1 + 452: 0e 94 6f 15 call 0x2ade ; 0x2ade + 456: 6a ef ldi r22, 0xFA ; 250 + 458: 70 e0 ldi r23, 0x00 ; 0 + 45a: 80 e0 ldi r24, 0x00 ; 0 + 45c: 90 e0 ldi r25, 0x00 ; 0 + 45e: 0e 94 2c 14 call 0x2858 ; 0x2858 + 462: 0e 94 8a 01 call 0x314 ; 0x314 <_Z8writeDMMv> + 466: aa ef ldi r26, 0xFA ; 250 + 468: ea 2e mov r14, r26 + 46a: f1 2c mov r15, r1 + 46c: 4e 01 movw r8, r28 + 46e: 08 94 sec + 470: 81 1c adc r8, r1 + 472: 91 1c adc r9, r1 + 474: f4 e0 ldi r31, 0x04 ; 4 + 476: af 2e mov r10, r31 + 478: b1 2c mov r11, r1 + 47a: ac 0e add r10, r28 + 47c: bd 1e adc r11, r29 + 47e: e2 e0 ldi r30, 0x02 ; 2 + 480: ce 2e mov r12, r30 + 482: d1 2c mov r13, r1 + 484: cc 0e add r12, r28 + 486: dd 1e adc r13, r29 + 488: 82 e0 ldi r24, 0x02 ; 2 + 48a: 0e 94 a4 15 call 0x2b48 ; 0x2b48 + 48e: 01 97 sbiw r24, 0x01 ; 1 + 490: 09 f0 breq .+2 ; 0x494 + 492: bc c0 rjmp .+376 ; 0x60c + 494: 8c e0 ldi r24, 0x0C ; 12 + 496: 61 e0 ldi r22, 0x01 ; 1 + 498: 0e 94 6f 15 call 0x2ade ; 0x2ade + 49c: 8d e0 ldi r24, 0x0D ; 13 + 49e: 60 e0 ldi r22, 0x00 ; 0 + 4a0: 0e 94 6f 15 call 0x2ade ; 0x2ade + 4a4: 0e 94 81 01 call 0x302 ; 0x302 <_Z10startWritev> + 4a8: 0e 94 dc 00 call 0x1b8 ; 0x1b8 <_Z13writeStartBitv> + 4ac: 89 ec ldi r24, 0xC9 ; 201 + 4ae: 0e 94 59 01 call 0x2b2 ; 0x2b2 <_Z9writeByteh> + 4b2: 82 e0 ldi r24, 0x02 ; 2 + 4b4: 0e 94 a4 15 call 0x2b48 ; 0x2b48 + 4b8: 89 2b or r24, r25 + 4ba: 09 f0 breq .+2 ; 0x4be + 4bc: a7 c0 rjmp .+334 ; 0x60c + 4be: 8d e0 ldi r24, 0x0D ; 13 + 4c0: 61 e0 ldi r22, 0x01 ; 1 + 4c2: 0e 94 6f 15 call 0x2ade ; 0x2ade + 4c6: 0e 94 78 01 call 0x2f0 ; 0x2f0 <_Z9startReadv> + 4ca: 0b eb ldi r16, 0xBB ; 187 + 4cc: 12 e0 ldi r17, 0x02 ; 2 + 4ce: 0e 94 23 01 call 0x246 ; 0x246 <_Z8readBytev> + 4d2: f8 01 movw r30, r16 + 4d4: 81 93 st Z+, r24 + 4d6: 8f 01 movw r16, r30 + 4d8: f2 e0 ldi r31, 0x02 ; 2 + 4da: 05 3c cpi r16, 0xC5 ; 197 + 4dc: 1f 07 cpc r17, r31 + 4de: b9 f7 brne .-18 ; 0x4ce + 4e0: 0e 94 81 01 call 0x302 ; 0x302 <_Z10startWritev> + 4e4: 0e 94 f9 00 call 0x1f2 ; 0x1f2 <_Z12writeStopBitv> + 4e8: 80 91 bb 02 lds r24, 0x02BB + 4ec: 89 83 std Y+1, r24 ; 0x01 + 4ee: 20 91 bd 02 lds r18, 0x02BD + 4f2: 30 e0 ldi r19, 0x00 ; 0 + 4f4: 40 e0 ldi r20, 0x00 ; 0 + 4f6: 50 e0 ldi r21, 0x00 ; 0 + 4f8: 54 2f mov r21, r20 + 4fa: 43 2f mov r20, r19 + 4fc: 32 2f mov r19, r18 + 4fe: 22 27 eor r18, r18 + 500: 80 91 be 02 lds r24, 0x02BE + 504: 90 e0 ldi r25, 0x00 ; 0 + 506: a0 e0 ldi r26, 0x00 ; 0 + 508: b0 e0 ldi r27, 0x00 ; 0 + 50a: 28 2b or r18, r24 + 50c: 39 2b or r19, r25 + 50e: 4a 2b or r20, r26 + 510: 5b 2b or r21, r27 + 512: 80 91 bc 02 lds r24, 0x02BC + 516: 90 e0 ldi r25, 0x00 ; 0 + 518: a0 e0 ldi r26, 0x00 ; 0 + 51a: b0 e0 ldi r27, 0x00 ; 0 + 51c: 87 70 andi r24, 0x07 ; 7 + 51e: 90 70 andi r25, 0x00 ; 0 + 520: a0 70 andi r26, 0x00 ; 0 + 522: b0 70 andi r27, 0x00 ; 0 + 524: dc 01 movw r26, r24 + 526: 99 27 eor r25, r25 + 528: 88 27 eor r24, r24 + 52a: 28 2b or r18, r24 + 52c: 39 2b or r19, r25 + 52e: 4a 2b or r20, r26 + 530: 5b 2b or r21, r27 + 532: 2c 83 std Y+4, r18 ; 0x04 + 534: 3d 83 std Y+5, r19 ; 0x05 + 536: 4e 83 std Y+6, r20 ; 0x06 + 538: 5f 83 std Y+7, r21 ; 0x07 + 53a: 20 91 c0 02 lds r18, 0x02C0 + 53e: 22 95 swap r18 + 540: 26 95 lsr r18 + 542: 26 95 lsr r18 + 544: 23 70 andi r18, 0x03 ; 3 + 546: 30 e0 ldi r19, 0x00 ; 0 + 548: 80 91 bf 02 lds r24, 0x02BF + 54c: 90 e0 ldi r25, 0x00 ; 0 + 54e: 88 0f add r24, r24 + 550: 99 1f adc r25, r25 + 552: 88 0f add r24, r24 + 554: 99 1f adc r25, r25 + 556: 28 2b or r18, r24 + 558: 39 2b or r19, r25 + 55a: 3b 83 std Y+3, r19 ; 0x03 + 55c: 2a 83 std Y+2, r18 ; 0x02 + 55e: 17 c0 rjmp .+46 ; 0x58e + 560: 88 e5 ldi r24, 0x58 ; 88 + 562: 93 e0 ldi r25, 0x03 ; 3 + 564: 0e 94 5e 04 call 0x8bc ; 0x8bc <_ZN14HardwareSerial4readEv> + 568: 82 30 cpi r24, 0x02 ; 2 + 56a: 29 f0 breq .+10 ; 0x576 + 56c: 83 30 cpi r24, 0x03 ; 3 + 56e: 61 f0 breq .+24 ; 0x588 + 570: 81 30 cpi r24, 0x01 ; 1 + 572: 69 f4 brne .+26 ; 0x58e + 574: 04 c0 rjmp .+8 ; 0x57e + 576: 2a ef ldi r18, 0xFA ; 250 + 578: e2 2e mov r14, r18 + 57a: f1 2c mov r15, r1 + 57c: 08 c0 rjmp .+16 ; 0x58e + 57e: 98 ee ldi r25, 0xE8 ; 232 + 580: e9 2e mov r14, r25 + 582: 93 e0 ldi r25, 0x03 ; 3 + 584: f9 2e mov r15, r25 + 586: 03 c0 rjmp .+6 ; 0x58e + 588: 82 e3 ldi r24, 0x32 ; 50 + 58a: e8 2e mov r14, r24 + 58c: f1 2c mov r15, r1 + 58e: 88 e5 ldi r24, 0x58 ; 88 + 590: 93 e0 ldi r25, 0x03 ; 3 + 592: 0e 94 33 04 call 0x866 ; 0x866 <_ZN14HardwareSerial9availableEv> + 596: 18 16 cp r1, r24 + 598: 19 06 cpc r1, r25 + 59a: 14 f3 brlt .-60 ; 0x560 + 59c: 86 e0 ldi r24, 0x06 ; 6 + 59e: 0e 94 a4 15 call 0x2b48 ; 0x2b48 + 5a2: 20 91 ba 02 lds r18, 0x02BA + 5a6: 89 2b or r24, r25 + 5a8: 59 f1 breq .+86 ; 0x600 + 5aa: 22 23 and r18, r18 + 5ac: 19 f4 brne .+6 ; 0x5b4 + 5ae: 81 e0 ldi r24, 0x01 ; 1 + 5b0: 80 93 ba 02 sts 0x02BA, r24 + 5b4: 88 e5 ldi r24, 0x58 ; 88 + 5b6: 93 e0 ldi r25, 0x03 ; 3 + 5b8: 63 e7 ldi r22, 0x73 ; 115 + 5ba: 71 e0 ldi r23, 0x01 ; 1 + 5bc: 42 e0 ldi r20, 0x02 ; 2 + 5be: 50 e0 ldi r21, 0x00 ; 0 + 5c0: 0e 94 f3 04 call 0x9e6 ; 0x9e6 <_ZN5Print5writeEPKhj> + 5c4: 88 e5 ldi r24, 0x58 ; 88 + 5c6: 93 e0 ldi r25, 0x03 ; 3 + 5c8: 62 e7 ldi r22, 0x72 ; 114 + 5ca: 71 e0 ldi r23, 0x01 ; 1 + 5cc: 41 e0 ldi r20, 0x01 ; 1 + 5ce: 50 e0 ldi r21, 0x00 ; 0 + 5d0: 0e 94 f3 04 call 0x9e6 ; 0x9e6 <_ZN5Print5writeEPKhj> + 5d4: 88 e5 ldi r24, 0x58 ; 88 + 5d6: 93 e0 ldi r25, 0x03 ; 3 + 5d8: b4 01 movw r22, r8 + 5da: 41 e0 ldi r20, 0x01 ; 1 + 5dc: 50 e0 ldi r21, 0x00 ; 0 + 5de: 0e 94 f3 04 call 0x9e6 ; 0x9e6 <_ZN5Print5writeEPKhj> + 5e2: 88 e5 ldi r24, 0x58 ; 88 + 5e4: 93 e0 ldi r25, 0x03 ; 3 + 5e6: b5 01 movw r22, r10 + 5e8: 44 e0 ldi r20, 0x04 ; 4 + 5ea: 50 e0 ldi r21, 0x00 ; 0 + 5ec: 0e 94 f3 04 call 0x9e6 ; 0x9e6 <_ZN5Print5writeEPKhj> + 5f0: 88 e5 ldi r24, 0x58 ; 88 + 5f2: 93 e0 ldi r25, 0x03 ; 3 + 5f4: b6 01 movw r22, r12 + 5f6: 42 e0 ldi r20, 0x02 ; 2 + 5f8: 50 e0 ldi r21, 0x00 ; 0 + 5fa: 0e 94 f3 04 call 0x9e6 ; 0x9e6 <_ZN5Print5writeEPKhj> + 5fe: 06 c0 rjmp .+12 ; 0x60c + 600: 22 23 and r18, r18 + 602: 21 f0 breq .+8 ; 0x60c + 604: 0e 94 8d 00 call 0x11a ; 0x11a <_Z9advertisev> + 608: 10 92 ba 02 sts 0x02BA, r1 + 60c: b7 01 movw r22, r14 + 60e: 80 e0 ldi r24, 0x00 ; 0 + 610: 90 e0 ldi r25, 0x00 ; 0 + 612: 0e 94 2c 14 call 0x2858 ; 0x2858 + 616: 8c e0 ldi r24, 0x0C ; 12 + 618: 60 e0 ldi r22, 0x00 ; 0 + 61a: 0e 94 6f 15 call 0x2ade ; 0x2ade + 61e: 8d e0 ldi r24, 0x0D ; 13 + 620: 60 e0 ldi r22, 0x00 ; 0 + 622: 0e 94 6f 15 call 0x2ade ; 0x2ade + 626: 30 cf rjmp .-416 ; 0x488 + +00000628 <__vector_18>: + 628: 1f 92 push r1 + 62a: 0f 92 push r0 + 62c: 0f b6 in r0, 0x3f ; 63 + 62e: 0f 92 push r0 + 630: 11 24 eor r1, r1 + 632: 2f 93 push r18 + 634: 3f 93 push r19 + 636: 4f 93 push r20 + 638: 8f 93 push r24 + 63a: 9f 93 push r25 + 63c: ef 93 push r30 + 63e: ff 93 push r31 + 640: 40 91 c6 00 lds r20, 0x00C6 + 644: e0 91 54 03 lds r30, 0x0354 + 648: f0 91 55 03 lds r31, 0x0355 + 64c: 31 96 adiw r30, 0x01 ; 1 + 64e: 9f 01 movw r18, r30 + 650: 2f 77 andi r18, 0x7F ; 127 + 652: 30 70 andi r19, 0x00 ; 0 + 654: 31 97 sbiw r30, 0x01 ; 1 + 656: 80 91 56 03 lds r24, 0x0356 + 65a: 90 91 57 03 lds r25, 0x0357 + 65e: 28 17 cp r18, r24 + 660: 39 07 cpc r19, r25 + 662: 39 f0 breq .+14 ; 0x672 <__vector_18+0x4a> + 664: ec 52 subi r30, 0x2C ; 44 + 666: fd 4f sbci r31, 0xFD ; 253 + 668: 40 83 st Z, r20 + 66a: 30 93 55 03 sts 0x0355, r19 + 66e: 20 93 54 03 sts 0x0354, r18 + 672: ff 91 pop r31 + 674: ef 91 pop r30 + 676: 9f 91 pop r25 + 678: 8f 91 pop r24 + 67a: 4f 91 pop r20 + 67c: 3f 91 pop r19 + 67e: 2f 91 pop r18 + 680: 0f 90 pop r0 + 682: 0f be out 0x3f, r0 ; 63 + 684: 0f 90 pop r0 + 686: 1f 90 pop r1 + 688: 18 95 reti + +0000068a <_ZN14HardwareSerialC2EP11ring_bufferPVhS3_S3_S3_S3_hhhhh>: + 68a: 8f 92 push r8 + 68c: af 92 push r10 + 68e: cf 92 push r12 + 690: df 92 push r13 + 692: ef 92 push r14 + 694: ff 92 push r15 + 696: 0f 93 push r16 + 698: 1f 93 push r17 + 69a: df 93 push r29 + 69c: cf 93 push r28 + 69e: cd b7 in r28, 0x3d ; 61 + 6a0: de b7 in r29, 0x3e ; 62 + 6a2: fc 01 movw r30, r24 + 6a4: 89 e7 ldi r24, 0x79 ; 121 + 6a6: 91 e0 ldi r25, 0x01 ; 1 + 6a8: 91 83 std Z+1, r25 ; 0x01 + 6aa: 80 83 st Z, r24 + 6ac: 73 83 std Z+3, r23 ; 0x03 + 6ae: 62 83 std Z+2, r22 ; 0x02 + 6b0: 55 83 std Z+5, r21 ; 0x05 + 6b2: 44 83 std Z+4, r20 ; 0x04 + 6b4: 37 83 std Z+7, r19 ; 0x07 + 6b6: 26 83 std Z+6, r18 ; 0x06 + 6b8: 11 87 std Z+9, r17 ; 0x09 + 6ba: 00 87 std Z+8, r16 ; 0x08 + 6bc: f3 86 std Z+11, r15 ; 0x0b + 6be: e2 86 std Z+10, r14 ; 0x0a + 6c0: d5 86 std Z+13, r13 ; 0x0d + 6c2: c4 86 std Z+12, r12 ; 0x0c + 6c4: a6 86 std Z+14, r10 ; 0x0e + 6c6: 87 86 std Z+15, r8 ; 0x0f + 6c8: 8d 85 ldd r24, Y+13 ; 0x0d + 6ca: 80 8b std Z+16, r24 ; 0x10 + 6cc: 8e 85 ldd r24, Y+14 ; 0x0e + 6ce: 81 8b std Z+17, r24 ; 0x11 + 6d0: 8f 85 ldd r24, Y+15 ; 0x0f + 6d2: 82 8b std Z+18, r24 ; 0x12 + 6d4: cf 91 pop r28 + 6d6: df 91 pop r29 + 6d8: 1f 91 pop r17 + 6da: 0f 91 pop r16 + 6dc: ff 90 pop r15 + 6de: ef 90 pop r14 + 6e0: df 90 pop r13 + 6e2: cf 90 pop r12 + 6e4: af 90 pop r10 + 6e6: 8f 90 pop r8 + 6e8: 08 95 ret + +000006ea <_ZN14HardwareSerialC1EP11ring_bufferPVhS3_S3_S3_S3_hhhhh>: + 6ea: 8f 92 push r8 + 6ec: af 92 push r10 + 6ee: cf 92 push r12 + 6f0: df 92 push r13 + 6f2: ef 92 push r14 + 6f4: ff 92 push r15 + 6f6: 0f 93 push r16 + 6f8: 1f 93 push r17 + 6fa: df 93 push r29 + 6fc: cf 93 push r28 + 6fe: cd b7 in r28, 0x3d ; 61 + 700: de b7 in r29, 0x3e ; 62 + 702: fc 01 movw r30, r24 + 704: 89 e7 ldi r24, 0x79 ; 121 + 706: 91 e0 ldi r25, 0x01 ; 1 + 708: 91 83 std Z+1, r25 ; 0x01 + 70a: 80 83 st Z, r24 + 70c: 73 83 std Z+3, r23 ; 0x03 + 70e: 62 83 std Z+2, r22 ; 0x02 + 710: 55 83 std Z+5, r21 ; 0x05 + 712: 44 83 std Z+4, r20 ; 0x04 + 714: 37 83 std Z+7, r19 ; 0x07 + 716: 26 83 std Z+6, r18 ; 0x06 + 718: 11 87 std Z+9, r17 ; 0x09 + 71a: 00 87 std Z+8, r16 ; 0x08 + 71c: f3 86 std Z+11, r15 ; 0x0b + 71e: e2 86 std Z+10, r14 ; 0x0a + 720: d5 86 std Z+13, r13 ; 0x0d + 722: c4 86 std Z+12, r12 ; 0x0c + 724: a6 86 std Z+14, r10 ; 0x0e + 726: 87 86 std Z+15, r8 ; 0x0f + 728: 8d 85 ldd r24, Y+13 ; 0x0d + 72a: 80 8b std Z+16, r24 ; 0x10 + 72c: 8e 85 ldd r24, Y+14 ; 0x0e + 72e: 81 8b std Z+17, r24 ; 0x11 + 730: 8f 85 ldd r24, Y+15 ; 0x0f + 732: 82 8b std Z+18, r24 ; 0x12 + 734: cf 91 pop r28 + 736: df 91 pop r29 + 738: 1f 91 pop r17 + 73a: 0f 91 pop r16 + 73c: ff 90 pop r15 + 73e: ef 90 pop r14 + 740: df 90 pop r13 + 742: cf 90 pop r12 + 744: af 90 pop r10 + 746: 8f 90 pop r8 + 748: 08 95 ret + +0000074a <_ZN14HardwareSerial5beginEl>: + 74a: ef 92 push r14 + 74c: ff 92 push r15 + 74e: 0f 93 push r16 + 750: 1f 93 push r17 + 752: 8c 01 movw r16, r24 + 754: 9a 01 movw r18, r20 + 756: ab 01 movw r20, r22 + 758: dc 01 movw r26, r24 + 75a: 18 96 adiw r26, 0x08 ; 8 + 75c: ed 91 ld r30, X+ + 75e: fc 91 ld r31, X + 760: 19 97 sbiw r26, 0x09 ; 9 + 762: 91 e0 ldi r25, 0x01 ; 1 + 764: e9 2e mov r14, r25 + 766: f1 2c mov r15, r1 + 768: c7 01 movw r24, r14 + 76a: 52 96 adiw r26, 0x12 ; 18 + 76c: 0c 90 ld r0, X + 76e: 02 c0 rjmp .+4 ; 0x774 <_ZN14HardwareSerial5beginEl+0x2a> + 770: 88 0f add r24, r24 + 772: 99 1f adc r25, r25 + 774: 0a 94 dec r0 + 776: e2 f7 brpl .-8 ; 0x770 <_ZN14HardwareSerial5beginEl+0x26> + 778: 80 83 st Z, r24 + 77a: 60 e8 ldi r22, 0x80 ; 128 + 77c: 74 e8 ldi r23, 0x84 ; 132 + 77e: 8e e1 ldi r24, 0x1E ; 30 + 780: 90 e0 ldi r25, 0x00 ; 0 + 782: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 786: 21 50 subi r18, 0x01 ; 1 + 788: 30 40 sbci r19, 0x00 ; 0 + 78a: 40 40 sbci r20, 0x00 ; 0 + 78c: 50 40 sbci r21, 0x00 ; 0 + 78e: 56 95 lsr r21 + 790: 47 95 ror r20 + 792: 37 95 ror r19 + 794: 27 95 ror r18 + 796: d8 01 movw r26, r16 + 798: 14 96 adiw r26, 0x04 ; 4 + 79a: ed 91 ld r30, X+ + 79c: fc 91 ld r31, X + 79e: 15 97 sbiw r26, 0x05 ; 5 + 7a0: 30 83 st Z, r19 + 7a2: 16 96 adiw r26, 0x06 ; 6 + 7a4: ed 91 ld r30, X+ + 7a6: fc 91 ld r31, X + 7a8: 17 97 sbiw r26, 0x07 ; 7 + 7aa: 20 83 st Z, r18 + 7ac: 1a 96 adiw r26, 0x0a ; 10 + 7ae: ed 91 ld r30, X+ + 7b0: fc 91 ld r31, X + 7b2: 1b 97 sbiw r26, 0x0b ; 11 + 7b4: 20 81 ld r18, Z + 7b6: c7 01 movw r24, r14 + 7b8: 1e 96 adiw r26, 0x0e ; 14 + 7ba: 0c 90 ld r0, X + 7bc: 1e 97 sbiw r26, 0x0e ; 14 + 7be: 02 c0 rjmp .+4 ; 0x7c4 <_ZN14HardwareSerial5beginEl+0x7a> + 7c0: 88 0f add r24, r24 + 7c2: 99 1f adc r25, r25 + 7c4: 0a 94 dec r0 + 7c6: e2 f7 brpl .-8 ; 0x7c0 <_ZN14HardwareSerial5beginEl+0x76> + 7c8: 28 2b or r18, r24 + 7ca: 20 83 st Z, r18 + 7cc: 1a 96 adiw r26, 0x0a ; 10 + 7ce: ed 91 ld r30, X+ + 7d0: fc 91 ld r31, X + 7d2: 1b 97 sbiw r26, 0x0b ; 11 + 7d4: 20 81 ld r18, Z + 7d6: c7 01 movw r24, r14 + 7d8: 1f 96 adiw r26, 0x0f ; 15 + 7da: 0c 90 ld r0, X + 7dc: 1f 97 sbiw r26, 0x0f ; 15 + 7de: 02 c0 rjmp .+4 ; 0x7e4 <_ZN14HardwareSerial5beginEl+0x9a> + 7e0: 88 0f add r24, r24 + 7e2: 99 1f adc r25, r25 + 7e4: 0a 94 dec r0 + 7e6: e2 f7 brpl .-8 ; 0x7e0 <_ZN14HardwareSerial5beginEl+0x96> + 7e8: 28 2b or r18, r24 + 7ea: 20 83 st Z, r18 + 7ec: 1a 96 adiw r26, 0x0a ; 10 + 7ee: ed 91 ld r30, X+ + 7f0: fc 91 ld r31, X + 7f2: 1b 97 sbiw r26, 0x0b ; 11 + 7f4: 80 81 ld r24, Z + 7f6: 50 96 adiw r26, 0x10 ; 16 + 7f8: 0c 90 ld r0, X + 7fa: 02 c0 rjmp .+4 ; 0x800 <_ZN14HardwareSerial5beginEl+0xb6> + 7fc: ee 0c add r14, r14 + 7fe: ff 1c adc r15, r15 + 800: 0a 94 dec r0 + 802: e2 f7 brpl .-8 ; 0x7fc <_ZN14HardwareSerial5beginEl+0xb2> + 804: 8e 29 or r24, r14 + 806: 80 83 st Z, r24 + 808: 1f 91 pop r17 + 80a: 0f 91 pop r16 + 80c: ff 90 pop r15 + 80e: ef 90 pop r14 + 810: 08 95 ret + +00000812 <_ZN14HardwareSerial3endEv>: + 812: fc 01 movw r30, r24 + 814: a2 85 ldd r26, Z+10 ; 0x0a + 816: b3 85 ldd r27, Z+11 ; 0x0b + 818: 4c 91 ld r20, X + 81a: 21 e0 ldi r18, 0x01 ; 1 + 81c: 30 e0 ldi r19, 0x00 ; 0 + 81e: c9 01 movw r24, r18 + 820: 06 84 ldd r0, Z+14 ; 0x0e + 822: 02 c0 rjmp .+4 ; 0x828 <_ZN14HardwareSerial3endEv+0x16> + 824: 88 0f add r24, r24 + 826: 99 1f adc r25, r25 + 828: 0a 94 dec r0 + 82a: e2 f7 brpl .-8 ; 0x824 <_ZN14HardwareSerial3endEv+0x12> + 82c: 80 95 com r24 + 82e: 84 23 and r24, r20 + 830: 8c 93 st X, r24 + 832: a2 85 ldd r26, Z+10 ; 0x0a + 834: b3 85 ldd r27, Z+11 ; 0x0b + 836: 4c 91 ld r20, X + 838: c9 01 movw r24, r18 + 83a: 07 84 ldd r0, Z+15 ; 0x0f + 83c: 02 c0 rjmp .+4 ; 0x842 <_ZN14HardwareSerial3endEv+0x30> + 83e: 88 0f add r24, r24 + 840: 99 1f adc r25, r25 + 842: 0a 94 dec r0 + 844: e2 f7 brpl .-8 ; 0x83e <_ZN14HardwareSerial3endEv+0x2c> + 846: 80 95 com r24 + 848: 84 23 and r24, r20 + 84a: 8c 93 st X, r24 + 84c: a2 85 ldd r26, Z+10 ; 0x0a + 84e: b3 85 ldd r27, Z+11 ; 0x0b + 850: 8c 91 ld r24, X + 852: 00 88 ldd r0, Z+16 ; 0x10 + 854: 02 c0 rjmp .+4 ; 0x85a <_ZN14HardwareSerial3endEv+0x48> + 856: 22 0f add r18, r18 + 858: 33 1f adc r19, r19 + 85a: 0a 94 dec r0 + 85c: e2 f7 brpl .-8 ; 0x856 <_ZN14HardwareSerial3endEv+0x44> + 85e: 20 95 com r18 + 860: 28 23 and r18, r24 + 862: 2c 93 st X, r18 + 864: 08 95 ret + +00000866 <_ZN14HardwareSerial9availableEv>: + 866: dc 01 movw r26, r24 + 868: 12 96 adiw r26, 0x02 ; 2 + 86a: ed 91 ld r30, X+ + 86c: fc 91 ld r31, X + 86e: 13 97 sbiw r26, 0x03 ; 3 + 870: e0 58 subi r30, 0x80 ; 128 + 872: ff 4f sbci r31, 0xFF ; 255 + 874: 21 91 ld r18, Z+ + 876: 31 91 ld r19, Z+ + 878: 80 81 ld r24, Z + 87a: 91 81 ldd r25, Z+1 ; 0x01 + 87c: 28 1b sub r18, r24 + 87e: 39 0b sbc r19, r25 + 880: 2f 77 andi r18, 0x7F ; 127 + 882: 30 70 andi r19, 0x00 ; 0 + 884: c9 01 movw r24, r18 + 886: 08 95 ret + +00000888 <_ZN14HardwareSerial4peekEv>: + 888: dc 01 movw r26, r24 + 88a: 12 96 adiw r26, 0x02 ; 2 + 88c: ed 91 ld r30, X+ + 88e: fc 91 ld r31, X + 890: 13 97 sbiw r26, 0x03 ; 3 + 892: ee 57 subi r30, 0x7E ; 126 + 894: ff 4f sbci r31, 0xFF ; 255 + 896: 20 81 ld r18, Z + 898: 31 81 ldd r19, Z+1 ; 0x01 + 89a: 92 91 ld r25, -Z + 89c: 82 91 ld r24, -Z + 89e: e0 58 subi r30, 0x80 ; 128 + 8a0: f0 40 sbci r31, 0x00 ; 0 + 8a2: 82 17 cp r24, r18 + 8a4: 93 07 cpc r25, r19 + 8a6: 19 f4 brne .+6 ; 0x8ae <_ZN14HardwareSerial4peekEv+0x26> + 8a8: 2f ef ldi r18, 0xFF ; 255 + 8aa: 3f ef ldi r19, 0xFF ; 255 + 8ac: 05 c0 rjmp .+10 ; 0x8b8 <_ZN14HardwareSerial4peekEv+0x30> + 8ae: e2 0f add r30, r18 + 8b0: f3 1f adc r31, r19 + 8b2: 80 81 ld r24, Z + 8b4: 28 2f mov r18, r24 + 8b6: 30 e0 ldi r19, 0x00 ; 0 + 8b8: c9 01 movw r24, r18 + 8ba: 08 95 ret + +000008bc <_ZN14HardwareSerial4readEv>: + 8bc: dc 01 movw r26, r24 + 8be: 12 96 adiw r26, 0x02 ; 2 + 8c0: ed 91 ld r30, X+ + 8c2: fc 91 ld r31, X + 8c4: 13 97 sbiw r26, 0x03 ; 3 + 8c6: df 01 movw r26, r30 + 8c8: ae 57 subi r26, 0x7E ; 126 + 8ca: bf 4f sbci r27, 0xFF ; 255 + 8cc: 2d 91 ld r18, X+ + 8ce: 3c 91 ld r19, X + 8d0: 11 97 sbiw r26, 0x01 ; 1 + 8d2: e0 58 subi r30, 0x80 ; 128 + 8d4: ff 4f sbci r31, 0xFF ; 255 + 8d6: 80 81 ld r24, Z + 8d8: 91 81 ldd r25, Z+1 ; 0x01 + 8da: e0 58 subi r30, 0x80 ; 128 + 8dc: f0 40 sbci r31, 0x00 ; 0 + 8de: 82 17 cp r24, r18 + 8e0: 93 07 cpc r25, r19 + 8e2: 19 f4 brne .+6 ; 0x8ea <_ZN14HardwareSerial4readEv+0x2e> + 8e4: 2f ef ldi r18, 0xFF ; 255 + 8e6: 3f ef ldi r19, 0xFF ; 255 + 8e8: 0b c0 rjmp .+22 ; 0x900 <__stack+0x1> + 8ea: e2 0f add r30, r18 + 8ec: f3 1f adc r31, r19 + 8ee: 80 81 ld r24, Z + 8f0: 2f 5f subi r18, 0xFF ; 255 + 8f2: 3f 4f sbci r19, 0xFF ; 255 + 8f4: 2f 77 andi r18, 0x7F ; 127 + 8f6: 30 70 andi r19, 0x00 ; 0 + 8f8: 2d 93 st X+, r18 + 8fa: 3c 93 st X, r19 + 8fc: 28 2f mov r18, r24 + 8fe: 30 e0 ldi r19, 0x00 ; 0 + 900: c9 01 movw r24, r18 + 902: 08 95 ret + +00000904 <_ZN14HardwareSerial5flushEv>: + 904: dc 01 movw r26, r24 + 906: 12 96 adiw r26, 0x02 ; 2 + 908: ed 91 ld r30, X+ + 90a: fc 91 ld r31, X + 90c: 13 97 sbiw r26, 0x03 ; 3 + 90e: ee 57 subi r30, 0x7E ; 126 + 910: ff 4f sbci r31, 0xFF ; 255 + 912: 80 81 ld r24, Z + 914: 91 81 ldd r25, Z+1 ; 0x01 + 916: 92 93 st -Z, r25 + 918: 82 93 st -Z, r24 + 91a: 08 95 ret + +0000091c <_ZN14HardwareSerial5writeEh>: + 91c: fc 01 movw r30, r24 + 91e: a0 85 ldd r26, Z+8 ; 0x08 + 920: b1 85 ldd r27, Z+9 ; 0x09 + 922: 21 89 ldd r18, Z+17 ; 0x11 + 924: 8c 91 ld r24, X + 926: 90 e0 ldi r25, 0x00 ; 0 + 928: 02 2e mov r0, r18 + 92a: 02 c0 rjmp .+4 ; 0x930 <_ZN14HardwareSerial5writeEh+0x14> + 92c: 95 95 asr r25 + 92e: 87 95 ror r24 + 930: 0a 94 dec r0 + 932: e2 f7 brpl .-8 ; 0x92c <_ZN14HardwareSerial5writeEh+0x10> + 934: 80 ff sbrs r24, 0 + 936: f6 cf rjmp .-20 ; 0x924 <_ZN14HardwareSerial5writeEh+0x8> + 938: 04 84 ldd r0, Z+12 ; 0x0c + 93a: f5 85 ldd r31, Z+13 ; 0x0d + 93c: e0 2d mov r30, r0 + 93e: 60 83 st Z, r22 + 940: 08 95 ret + +00000942 <_GLOBAL__I_rx_buffer>: + 942: 89 e7 ldi r24, 0x79 ; 121 + 944: 91 e0 ldi r25, 0x01 ; 1 + 946: 90 93 59 03 sts 0x0359, r25 + 94a: 80 93 58 03 sts 0x0358, r24 + 94e: 84 ed ldi r24, 0xD4 ; 212 + 950: 92 e0 ldi r25, 0x02 ; 2 + 952: 90 93 5b 03 sts 0x035B, r25 + 956: 80 93 5a 03 sts 0x035A, r24 + 95a: 85 ec ldi r24, 0xC5 ; 197 + 95c: 90 e0 ldi r25, 0x00 ; 0 + 95e: 90 93 5d 03 sts 0x035D, r25 + 962: 80 93 5c 03 sts 0x035C, r24 + 966: 84 ec ldi r24, 0xC4 ; 196 + 968: 90 e0 ldi r25, 0x00 ; 0 + 96a: 90 93 5f 03 sts 0x035F, r25 + 96e: 80 93 5e 03 sts 0x035E, r24 + 972: 80 ec ldi r24, 0xC0 ; 192 + 974: 90 e0 ldi r25, 0x00 ; 0 + 976: 90 93 61 03 sts 0x0361, r25 + 97a: 80 93 60 03 sts 0x0360, r24 + 97e: 81 ec ldi r24, 0xC1 ; 193 + 980: 90 e0 ldi r25, 0x00 ; 0 + 982: 90 93 63 03 sts 0x0363, r25 + 986: 80 93 62 03 sts 0x0362, r24 + 98a: 86 ec ldi r24, 0xC6 ; 198 + 98c: 90 e0 ldi r25, 0x00 ; 0 + 98e: 90 93 65 03 sts 0x0365, r25 + 992: 80 93 64 03 sts 0x0364, r24 + 996: 84 e0 ldi r24, 0x04 ; 4 + 998: 80 93 66 03 sts 0x0366, r24 + 99c: 83 e0 ldi r24, 0x03 ; 3 + 99e: 80 93 67 03 sts 0x0367, r24 + 9a2: 87 e0 ldi r24, 0x07 ; 7 + 9a4: 80 93 68 03 sts 0x0368, r24 + 9a8: 85 e0 ldi r24, 0x05 ; 5 + 9aa: 80 93 69 03 sts 0x0369, r24 + 9ae: 81 e0 ldi r24, 0x01 ; 1 + 9b0: 80 93 6a 03 sts 0x036A, r24 + 9b4: 08 95 ret + +000009b6 <_ZN5Print5writeEPKc>: + 9b6: 0f 93 push r16 + 9b8: 1f 93 push r17 + 9ba: cf 93 push r28 + 9bc: df 93 push r29 + 9be: 8c 01 movw r16, r24 + 9c0: eb 01 movw r28, r22 + 9c2: 09 c0 rjmp .+18 ; 0x9d6 <_ZN5Print5writeEPKc+0x20> + 9c4: 21 96 adiw r28, 0x01 ; 1 + 9c6: d8 01 movw r26, r16 + 9c8: ed 91 ld r30, X+ + 9ca: fc 91 ld r31, X + 9cc: 01 90 ld r0, Z+ + 9ce: f0 81 ld r31, Z + 9d0: e0 2d mov r30, r0 + 9d2: c8 01 movw r24, r16 + 9d4: 09 95 icall + 9d6: 68 81 ld r22, Y + 9d8: 66 23 and r22, r22 + 9da: a1 f7 brne .-24 ; 0x9c4 <_ZN5Print5writeEPKc+0xe> + 9dc: df 91 pop r29 + 9de: cf 91 pop r28 + 9e0: 1f 91 pop r17 + 9e2: 0f 91 pop r16 + 9e4: 08 95 ret + +000009e6 <_ZN5Print5writeEPKhj>: + 9e6: ef 92 push r14 + 9e8: ff 92 push r15 + 9ea: 0f 93 push r16 + 9ec: 1f 93 push r17 + 9ee: cf 93 push r28 + 9f0: df 93 push r29 + 9f2: 8c 01 movw r16, r24 + 9f4: 7b 01 movw r14, r22 + 9f6: ea 01 movw r28, r20 + 9f8: 0c c0 rjmp .+24 ; 0xa12 <_ZN5Print5writeEPKhj+0x2c> + 9fa: d7 01 movw r26, r14 + 9fc: 6d 91 ld r22, X+ + 9fe: 7d 01 movw r14, r26 + a00: d8 01 movw r26, r16 + a02: ed 91 ld r30, X+ + a04: fc 91 ld r31, X + a06: 01 90 ld r0, Z+ + a08: f0 81 ld r31, Z + a0a: e0 2d mov r30, r0 + a0c: c8 01 movw r24, r16 + a0e: 09 95 icall + a10: 21 97 sbiw r28, 0x01 ; 1 + a12: 20 97 sbiw r28, 0x00 ; 0 + a14: 91 f7 brne .-28 ; 0x9fa <_ZN5Print5writeEPKhj+0x14> + a16: df 91 pop r29 + a18: cf 91 pop r28 + a1a: 1f 91 pop r17 + a1c: 0f 91 pop r16 + a1e: ff 90 pop r15 + a20: ef 90 pop r14 + a22: 08 95 ret + +00000a24 <_ZN5Print5printEPKc>: + a24: dc 01 movw r26, r24 + a26: ed 91 ld r30, X+ + a28: fc 91 ld r31, X + a2a: 02 80 ldd r0, Z+2 ; 0x02 + a2c: f3 81 ldd r31, Z+3 ; 0x03 + a2e: e0 2d mov r30, r0 + a30: 09 95 icall + a32: 08 95 ret + +00000a34 <_ZN5Print5printERK6String>: + a34: cf 92 push r12 + a36: df 92 push r13 + a38: ef 92 push r14 + a3a: ff 92 push r15 + a3c: 0f 93 push r16 + a3e: 1f 93 push r17 + a40: cf 93 push r28 + a42: df 93 push r29 + a44: 6c 01 movw r12, r24 + a46: 7b 01 movw r14, r22 + a48: c0 e0 ldi r28, 0x00 ; 0 + a4a: d0 e0 ldi r29, 0x00 ; 0 + a4c: 0e c0 rjmp .+28 ; 0xa6a <_ZN5Print5printERK6String+0x36> + a4e: d6 01 movw r26, r12 + a50: ed 91 ld r30, X+ + a52: fc 91 ld r31, X + a54: 00 81 ld r16, Z + a56: 11 81 ldd r17, Z+1 ; 0x01 + a58: c7 01 movw r24, r14 + a5a: be 01 movw r22, r28 + a5c: 0e 94 b4 0b call 0x1768 ; 0x1768 <_ZNK6StringixEj> + a60: 68 2f mov r22, r24 + a62: c6 01 movw r24, r12 + a64: f8 01 movw r30, r16 + a66: 09 95 icall + a68: 21 96 adiw r28, 0x01 ; 1 + a6a: f7 01 movw r30, r14 + a6c: 84 81 ldd r24, Z+4 ; 0x04 + a6e: 95 81 ldd r25, Z+5 ; 0x05 + a70: c8 17 cp r28, r24 + a72: d9 07 cpc r29, r25 + a74: 60 f3 brcs .-40 ; 0xa4e <_ZN5Print5printERK6String+0x1a> + a76: df 91 pop r29 + a78: cf 91 pop r28 + a7a: 1f 91 pop r17 + a7c: 0f 91 pop r16 + a7e: ff 90 pop r15 + a80: ef 90 pop r14 + a82: df 90 pop r13 + a84: cf 90 pop r12 + a86: 08 95 ret + +00000a88 <_ZN5Print11printNumberEmh>: + a88: 2f 92 push r2 + a8a: 3f 92 push r3 + a8c: 4f 92 push r4 + a8e: 5f 92 push r5 + a90: 6f 92 push r6 + a92: 7f 92 push r7 + a94: 8f 92 push r8 + a96: 9f 92 push r9 + a98: af 92 push r10 + a9a: bf 92 push r11 + a9c: cf 92 push r12 + a9e: df 92 push r13 + aa0: ef 92 push r14 + aa2: ff 92 push r15 + aa4: 0f 93 push r16 + aa6: 1f 93 push r17 + aa8: df 93 push r29 + aaa: cf 93 push r28 + aac: cd b7 in r28, 0x3d ; 61 + aae: de b7 in r29, 0x3e ; 62 + ab0: a0 97 sbiw r28, 0x20 ; 32 + ab2: 0f b6 in r0, 0x3f ; 63 + ab4: f8 94 cli + ab6: de bf out 0x3e, r29 ; 62 + ab8: 0f be out 0x3f, r0 ; 63 + aba: cd bf out 0x3d, r28 ; 61 + abc: 1c 01 movw r2, r24 + abe: 6a 01 movw r12, r20 + ac0: 7b 01 movw r14, r22 + ac2: 41 15 cp r20, r1 + ac4: 51 05 cpc r21, r1 + ac6: 61 05 cpc r22, r1 + ac8: 71 05 cpc r23, r1 + aca: 49 f4 brne .+18 ; 0xade <_ZN5Print11printNumberEmh+0x56> + acc: 40 e3 ldi r20, 0x30 ; 48 + ace: 50 e0 ldi r21, 0x00 ; 0 + ad0: 60 e0 ldi r22, 0x00 ; 0 + ad2: 70 e0 ldi r23, 0x00 ; 0 + ad4: 20 e0 ldi r18, 0x00 ; 0 + ad6: 30 e0 ldi r19, 0x00 ; 0 + ad8: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + adc: 56 c0 rjmp .+172 ; 0xb8a <_ZN5Print11printNumberEmh+0x102> + ade: 88 24 eor r8, r8 + ae0: 99 24 eor r9, r9 + ae2: 54 01 movw r10, r8 + ae4: 42 2e mov r4, r18 + ae6: 55 24 eor r5, r5 + ae8: 66 24 eor r6, r6 + aea: 77 24 eor r7, r7 + aec: 01 e0 ldi r16, 0x01 ; 1 + aee: 10 e0 ldi r17, 0x00 ; 0 + af0: 0c 0f add r16, r28 + af2: 1d 1f adc r17, r29 + af4: 08 0d add r16, r8 + af6: 19 1d adc r17, r9 + af8: c7 01 movw r24, r14 + afa: b6 01 movw r22, r12 + afc: a3 01 movw r20, r6 + afe: 92 01 movw r18, r4 + b00: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + b04: f8 01 movw r30, r16 + b06: 60 83 st Z, r22 + b08: 08 94 sec + b0a: 81 1c adc r8, r1 + b0c: 91 1c adc r9, r1 + b0e: a1 1c adc r10, r1 + b10: b1 1c adc r11, r1 + b12: c7 01 movw r24, r14 + b14: b6 01 movw r22, r12 + b16: a3 01 movw r20, r6 + b18: 92 01 movw r18, r4 + b1a: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + b1e: c9 01 movw r24, r18 + b20: da 01 movw r26, r20 + b22: 6c 01 movw r12, r24 + b24: 7d 01 movw r14, r26 + b26: c1 14 cp r12, r1 + b28: d1 04 cpc r13, r1 + b2a: e1 04 cpc r14, r1 + b2c: f1 04 cpc r15, r1 + b2e: f1 f6 brne .-68 ; 0xaec <_ZN5Print11printNumberEmh+0x64> + b30: 81 e0 ldi r24, 0x01 ; 1 + b32: e8 2e mov r14, r24 + b34: f1 2c mov r15, r1 + b36: ec 0e add r14, r28 + b38: fd 1e adc r15, r29 + b3a: e8 0c add r14, r8 + b3c: f9 1c adc r15, r9 + b3e: 3e 01 movw r6, r28 + b40: 08 94 sec + b42: 61 1c adc r6, r1 + b44: 71 1c adc r7, r1 + b46: d5 01 movw r26, r10 + b48: c4 01 movw r24, r8 + b4a: 01 97 sbiw r24, 0x01 ; 1 + b4c: a1 09 sbc r26, r1 + b4e: b1 09 sbc r27, r1 + b50: 6c 01 movw r12, r24 + b52: c8 18 sub r12, r8 + b54: d9 08 sbc r13, r9 + b56: 16 c0 rjmp .+44 ; 0xb84 <_ZN5Print11printNumberEmh+0xfc> + b58: f6 01 movw r30, r12 + b5a: ee 0d add r30, r14 + b5c: ff 1d adc r31, r15 + b5e: 40 81 ld r20, Z + b60: 4a 30 cpi r20, 0x0A ; 10 + b62: 10 f4 brcc .+4 ; 0xb68 <_ZN5Print11printNumberEmh+0xe0> + b64: 40 5d subi r20, 0xD0 ; 208 + b66: 01 c0 rjmp .+2 ; 0xb6a <_ZN5Print11printNumberEmh+0xe2> + b68: 49 5c subi r20, 0xC9 ; 201 + b6a: 55 27 eor r21, r21 + b6c: 47 fd sbrc r20, 7 + b6e: 50 95 com r21 + b70: 65 2f mov r22, r21 + b72: 75 2f mov r23, r21 + b74: c1 01 movw r24, r2 + b76: 20 e0 ldi r18, 0x00 ; 0 + b78: 30 e0 ldi r19, 0x00 ; 0 + b7a: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + b7e: 08 94 sec + b80: e1 08 sbc r14, r1 + b82: f1 08 sbc r15, r1 + b84: 6e 14 cp r6, r14 + b86: 7f 04 cpc r7, r15 + b88: 39 f7 brne .-50 ; 0xb58 <_ZN5Print11printNumberEmh+0xd0> + b8a: a0 96 adiw r28, 0x20 ; 32 + b8c: 0f b6 in r0, 0x3f ; 63 + b8e: f8 94 cli + b90: de bf out 0x3e, r29 ; 62 + b92: 0f be out 0x3f, r0 ; 63 + b94: cd bf out 0x3d, r28 ; 61 + b96: cf 91 pop r28 + b98: df 91 pop r29 + b9a: 1f 91 pop r17 + b9c: 0f 91 pop r16 + b9e: ff 90 pop r15 + ba0: ef 90 pop r14 + ba2: df 90 pop r13 + ba4: cf 90 pop r12 + ba6: bf 90 pop r11 + ba8: af 90 pop r10 + baa: 9f 90 pop r9 + bac: 8f 90 pop r8 + bae: 7f 90 pop r7 + bb0: 6f 90 pop r6 + bb2: 5f 90 pop r5 + bb4: 4f 90 pop r4 + bb6: 3f 90 pop r3 + bb8: 2f 90 pop r2 + bba: 08 95 ret + +00000bbc <_ZN5Print5printEmi>: + bbc: dc 01 movw r26, r24 + bbe: 21 15 cp r18, r1 + bc0: 31 05 cpc r19, r1 + bc2: 41 f4 brne .+16 ; 0xbd4 <_ZN5Print5printEmi+0x18> + bc4: ed 91 ld r30, X+ + bc6: fc 91 ld r31, X + bc8: 01 90 ld r0, Z+ + bca: f0 81 ld r31, Z + bcc: e0 2d mov r30, r0 + bce: 64 2f mov r22, r20 + bd0: 09 95 icall + bd2: 08 95 ret + bd4: 0e 94 44 05 call 0xa88 ; 0xa88 <_ZN5Print11printNumberEmh> + bd8: 08 95 ret + +00000bda <_ZN5Print5printEji>: + bda: ef 92 push r14 + bdc: ff 92 push r15 + bde: 0f 93 push r16 + be0: 1f 93 push r17 + be2: 9a 01 movw r18, r20 + be4: 7b 01 movw r14, r22 + be6: 00 e0 ldi r16, 0x00 ; 0 + be8: 10 e0 ldi r17, 0x00 ; 0 + bea: b8 01 movw r22, r16 + bec: a7 01 movw r20, r14 + bee: 0e 94 de 05 call 0xbbc ; 0xbbc <_ZN5Print5printEmi> + bf2: 1f 91 pop r17 + bf4: 0f 91 pop r16 + bf6: ff 90 pop r15 + bf8: ef 90 pop r14 + bfa: 08 95 ret + +00000bfc <_ZN5Print5printEhi>: + bfc: ef 92 push r14 + bfe: ff 92 push r15 + c00: 0f 93 push r16 + c02: 1f 93 push r17 + c04: 9a 01 movw r18, r20 + c06: e6 2e mov r14, r22 + c08: ff 24 eor r15, r15 + c0a: 00 e0 ldi r16, 0x00 ; 0 + c0c: 10 e0 ldi r17, 0x00 ; 0 + c0e: b8 01 movw r22, r16 + c10: a7 01 movw r20, r14 + c12: 0e 94 de 05 call 0xbbc ; 0xbbc <_ZN5Print5printEmi> + c16: 1f 91 pop r17 + c18: 0f 91 pop r16 + c1a: ff 90 pop r15 + c1c: ef 90 pop r14 + c1e: 08 95 ret + +00000c20 <_ZN5Print5printEli>: + c20: ef 92 push r14 + c22: ff 92 push r15 + c24: 0f 93 push r16 + c26: 1f 93 push r17 + c28: cf 93 push r28 + c2a: df 93 push r29 + c2c: ec 01 movw r28, r24 + c2e: 7a 01 movw r14, r20 + c30: 8b 01 movw r16, r22 + c32: 21 15 cp r18, r1 + c34: 31 05 cpc r19, r1 + c36: 41 f4 brne .+16 ; 0xc48 <_ZN5Print5printEli+0x28> + c38: e8 81 ld r30, Y + c3a: f9 81 ldd r31, Y+1 ; 0x01 + c3c: 01 90 ld r0, Z+ + c3e: f0 81 ld r31, Z + c40: e0 2d mov r30, r0 + c42: 64 2f mov r22, r20 + c44: 09 95 icall + c46: 1b c0 rjmp .+54 ; 0xc7e <_ZN5Print5printEli+0x5e> + c48: 2a 30 cpi r18, 0x0A ; 10 + c4a: 31 05 cpc r19, r1 + c4c: b1 f4 brne .+44 ; 0xc7a <_ZN5Print5printEli+0x5a> + c4e: 77 ff sbrs r23, 7 + c50: 10 c0 rjmp .+32 ; 0xc72 <_ZN5Print5printEli+0x52> + c52: 4d e2 ldi r20, 0x2D ; 45 + c54: 50 e0 ldi r21, 0x00 ; 0 + c56: 60 e0 ldi r22, 0x00 ; 0 + c58: 70 e0 ldi r23, 0x00 ; 0 + c5a: 20 e0 ldi r18, 0x00 ; 0 + c5c: 30 e0 ldi r19, 0x00 ; 0 + c5e: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + c62: 10 95 com r17 + c64: 00 95 com r16 + c66: f0 94 com r15 + c68: e0 94 com r14 + c6a: e1 1c adc r14, r1 + c6c: f1 1c adc r15, r1 + c6e: 01 1d adc r16, r1 + c70: 11 1d adc r17, r1 + c72: ce 01 movw r24, r28 + c74: b8 01 movw r22, r16 + c76: a7 01 movw r20, r14 + c78: 2a e0 ldi r18, 0x0A ; 10 + c7a: 0e 94 44 05 call 0xa88 ; 0xa88 <_ZN5Print11printNumberEmh> + c7e: df 91 pop r29 + c80: cf 91 pop r28 + c82: 1f 91 pop r17 + c84: 0f 91 pop r16 + c86: ff 90 pop r15 + c88: ef 90 pop r14 + c8a: 08 95 ret + +00000c8c <_ZN5Print5printEii>: + c8c: ef 92 push r14 + c8e: ff 92 push r15 + c90: 0f 93 push r16 + c92: 1f 93 push r17 + c94: 7b 01 movw r14, r22 + c96: 9a 01 movw r18, r20 + c98: 00 27 eor r16, r16 + c9a: f7 fc sbrc r15, 7 + c9c: 00 95 com r16 + c9e: 10 2f mov r17, r16 + ca0: b8 01 movw r22, r16 + ca2: a7 01 movw r20, r14 + ca4: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + ca8: 1f 91 pop r17 + caa: 0f 91 pop r16 + cac: ff 90 pop r15 + cae: ef 90 pop r14 + cb0: 08 95 ret + +00000cb2 <_ZN5Print5printEci>: + cb2: ef 92 push r14 + cb4: ff 92 push r15 + cb6: 0f 93 push r16 + cb8: 1f 93 push r17 + cba: e6 2e mov r14, r22 + cbc: 9a 01 movw r18, r20 + cbe: ff 24 eor r15, r15 + cc0: e7 fc sbrc r14, 7 + cc2: f0 94 com r15 + cc4: 0f 2d mov r16, r15 + cc6: 1f 2d mov r17, r15 + cc8: b8 01 movw r22, r16 + cca: a7 01 movw r20, r14 + ccc: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + cd0: 1f 91 pop r17 + cd2: 0f 91 pop r16 + cd4: ff 90 pop r15 + cd6: ef 90 pop r14 + cd8: 08 95 ret + +00000cda <_ZN5Print7printlnEv>: + cda: 0f 93 push r16 + cdc: 1f 93 push r17 + cde: 8c 01 movw r16, r24 + ce0: 4d e0 ldi r20, 0x0D ; 13 + ce2: 50 e0 ldi r21, 0x00 ; 0 + ce4: 60 e0 ldi r22, 0x00 ; 0 + ce6: 70 e0 ldi r23, 0x00 ; 0 + ce8: 20 e0 ldi r18, 0x00 ; 0 + cea: 30 e0 ldi r19, 0x00 ; 0 + cec: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + cf0: c8 01 movw r24, r16 + cf2: 4a e0 ldi r20, 0x0A ; 10 + cf4: 50 e0 ldi r21, 0x00 ; 0 + cf6: 60 e0 ldi r22, 0x00 ; 0 + cf8: 70 e0 ldi r23, 0x00 ; 0 + cfa: 20 e0 ldi r18, 0x00 ; 0 + cfc: 30 e0 ldi r19, 0x00 ; 0 + cfe: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + d02: 1f 91 pop r17 + d04: 0f 91 pop r16 + d06: 08 95 ret + +00000d08 <_ZN5Print7printlnEmi>: + d08: 0f 93 push r16 + d0a: 1f 93 push r17 + d0c: 8c 01 movw r16, r24 + d0e: 0e 94 de 05 call 0xbbc ; 0xbbc <_ZN5Print5printEmi> + d12: c8 01 movw r24, r16 + d14: 0e 94 6d 06 call 0xcda ; 0xcda <_ZN5Print7printlnEv> + d18: 1f 91 pop r17 + d1a: 0f 91 pop r16 + d1c: 08 95 ret + +00000d1e <_ZN5Print7printlnEji>: + d1e: cf 92 push r12 + d20: df 92 push r13 + d22: ef 92 push r14 + d24: ff 92 push r15 + d26: 0f 93 push r16 + d28: 1f 93 push r17 + d2a: 8c 01 movw r16, r24 + d2c: 9a 01 movw r18, r20 + d2e: 6b 01 movw r12, r22 + d30: ee 24 eor r14, r14 + d32: ff 24 eor r15, r15 + d34: b7 01 movw r22, r14 + d36: a6 01 movw r20, r12 + d38: 0e 94 de 05 call 0xbbc ; 0xbbc <_ZN5Print5printEmi> + d3c: c8 01 movw r24, r16 + d3e: 0e 94 6d 06 call 0xcda ; 0xcda <_ZN5Print7printlnEv> + d42: 1f 91 pop r17 + d44: 0f 91 pop r16 + d46: ff 90 pop r15 + d48: ef 90 pop r14 + d4a: df 90 pop r13 + d4c: cf 90 pop r12 + d4e: 08 95 ret + +00000d50 <_ZN5Print7printlnEhi>: + d50: cf 92 push r12 + d52: df 92 push r13 + d54: ef 92 push r14 + d56: ff 92 push r15 + d58: 0f 93 push r16 + d5a: 1f 93 push r17 + d5c: 8c 01 movw r16, r24 + d5e: 9a 01 movw r18, r20 + d60: c6 2e mov r12, r22 + d62: dd 24 eor r13, r13 + d64: ee 24 eor r14, r14 + d66: ff 24 eor r15, r15 + d68: b7 01 movw r22, r14 + d6a: a6 01 movw r20, r12 + d6c: 0e 94 de 05 call 0xbbc ; 0xbbc <_ZN5Print5printEmi> + d70: c8 01 movw r24, r16 + d72: 0e 94 6d 06 call 0xcda ; 0xcda <_ZN5Print7printlnEv> + d76: 1f 91 pop r17 + d78: 0f 91 pop r16 + d7a: ff 90 pop r15 + d7c: ef 90 pop r14 + d7e: df 90 pop r13 + d80: cf 90 pop r12 + d82: 08 95 ret + +00000d84 <_ZN5Print7printlnEPKc>: + d84: 0f 93 push r16 + d86: 1f 93 push r17 + d88: 8c 01 movw r16, r24 + d8a: 0e 94 12 05 call 0xa24 ; 0xa24 <_ZN5Print5printEPKc> + d8e: c8 01 movw r24, r16 + d90: 0e 94 6d 06 call 0xcda ; 0xcda <_ZN5Print7printlnEv> + d94: 1f 91 pop r17 + d96: 0f 91 pop r16 + d98: 08 95 ret + +00000d9a <_ZN5Print7printlnERK6String>: + d9a: 0f 93 push r16 + d9c: 1f 93 push r17 + d9e: 8c 01 movw r16, r24 + da0: 0e 94 1a 05 call 0xa34 ; 0xa34 <_ZN5Print5printERK6String> + da4: c8 01 movw r24, r16 + da6: 0e 94 6d 06 call 0xcda ; 0xcda <_ZN5Print7printlnEv> + daa: 1f 91 pop r17 + dac: 0f 91 pop r16 + dae: 08 95 ret + +00000db0 <_ZN5Print7printlnEli>: + db0: 0f 93 push r16 + db2: 1f 93 push r17 + db4: 8c 01 movw r16, r24 + db6: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + dba: c8 01 movw r24, r16 + dbc: 0e 94 6d 06 call 0xcda ; 0xcda <_ZN5Print7printlnEv> + dc0: 1f 91 pop r17 + dc2: 0f 91 pop r16 + dc4: 08 95 ret + +00000dc6 <_ZN5Print7printlnEii>: + dc6: cf 92 push r12 + dc8: df 92 push r13 + dca: ef 92 push r14 + dcc: ff 92 push r15 + dce: 0f 93 push r16 + dd0: 1f 93 push r17 + dd2: 8c 01 movw r16, r24 + dd4: 6b 01 movw r12, r22 + dd6: 9a 01 movw r18, r20 + dd8: ee 24 eor r14, r14 + dda: d7 fc sbrc r13, 7 + ddc: e0 94 com r14 + dde: fe 2c mov r15, r14 + de0: b7 01 movw r22, r14 + de2: a6 01 movw r20, r12 + de4: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + de8: c8 01 movw r24, r16 + dea: 0e 94 6d 06 call 0xcda ; 0xcda <_ZN5Print7printlnEv> + dee: 1f 91 pop r17 + df0: 0f 91 pop r16 + df2: ff 90 pop r15 + df4: ef 90 pop r14 + df6: df 90 pop r13 + df8: cf 90 pop r12 + dfa: 08 95 ret + +00000dfc <_ZN5Print7printlnEci>: + dfc: cf 92 push r12 + dfe: df 92 push r13 + e00: ef 92 push r14 + e02: ff 92 push r15 + e04: 0f 93 push r16 + e06: 1f 93 push r17 + e08: 8c 01 movw r16, r24 + e0a: c6 2e mov r12, r22 + e0c: 9a 01 movw r18, r20 + e0e: dd 24 eor r13, r13 + e10: c7 fc sbrc r12, 7 + e12: d0 94 com r13 + e14: ed 2c mov r14, r13 + e16: fd 2c mov r15, r13 + e18: b7 01 movw r22, r14 + e1a: a6 01 movw r20, r12 + e1c: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + e20: c8 01 movw r24, r16 + e22: 0e 94 6d 06 call 0xcda ; 0xcda <_ZN5Print7printlnEv> + e26: 1f 91 pop r17 + e28: 0f 91 pop r16 + e2a: ff 90 pop r15 + e2c: ef 90 pop r14 + e2e: df 90 pop r13 + e30: cf 90 pop r12 + e32: 08 95 ret + +00000e34 <_ZN5Print10printFloatEdh>: + e34: 9f 92 push r9 + e36: af 92 push r10 + e38: bf 92 push r11 + e3a: cf 92 push r12 + e3c: df 92 push r13 + e3e: ef 92 push r14 + e40: ff 92 push r15 + e42: 0f 93 push r16 + e44: 1f 93 push r17 + e46: cf 93 push r28 + e48: df 93 push r29 + e4a: ec 01 movw r28, r24 + e4c: 7a 01 movw r14, r20 + e4e: 8b 01 movw r16, r22 + e50: 92 2e mov r9, r18 + e52: cb 01 movw r24, r22 + e54: ba 01 movw r22, r20 + e56: 20 e0 ldi r18, 0x00 ; 0 + e58: 30 e0 ldi r19, 0x00 ; 0 + e5a: 40 e0 ldi r20, 0x00 ; 0 + e5c: 50 e0 ldi r21, 0x00 ; 0 + e5e: 0e 94 a3 1a call 0x3546 ; 0x3546 <__ltsf2> + e62: 88 23 and r24, r24 + e64: 6c f4 brge .+26 ; 0xe80 <_ZN5Print10printFloatEdh+0x4c> + e66: ce 01 movw r24, r28 + e68: 4d e2 ldi r20, 0x2D ; 45 + e6a: 50 e0 ldi r21, 0x00 ; 0 + e6c: 60 e0 ldi r22, 0x00 ; 0 + e6e: 70 e0 ldi r23, 0x00 ; 0 + e70: 20 e0 ldi r18, 0x00 ; 0 + e72: 30 e0 ldi r19, 0x00 ; 0 + e74: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + e78: 17 fb bst r17, 7 + e7a: 10 95 com r17 + e7c: 17 f9 bld r17, 7 + e7e: 10 95 com r17 + e80: 20 e0 ldi r18, 0x00 ; 0 + e82: 30 e0 ldi r19, 0x00 ; 0 + e84: 40 e0 ldi r20, 0x00 ; 0 + e86: 5f e3 ldi r21, 0x3F ; 63 + e88: aa 24 eor r10, r10 + e8a: 0b c0 rjmp .+22 ; 0xea2 <_ZN5Print10printFloatEdh+0x6e> + e8c: ca 01 movw r24, r20 + e8e: b9 01 movw r22, r18 + e90: 20 e0 ldi r18, 0x00 ; 0 + e92: 30 e0 ldi r19, 0x00 ; 0 + e94: 40 e2 ldi r20, 0x20 ; 32 + e96: 51 e4 ldi r21, 0x41 ; 65 + e98: 0e 94 c7 19 call 0x338e ; 0x338e <__divsf3> + e9c: 9b 01 movw r18, r22 + e9e: ac 01 movw r20, r24 + ea0: a3 94 inc r10 + ea2: a9 14 cp r10, r9 + ea4: 98 f3 brcs .-26 ; 0xe8c <_ZN5Print10printFloatEdh+0x58> + ea6: c8 01 movw r24, r16 + ea8: b7 01 movw r22, r14 + eaa: 0e 94 a0 18 call 0x3140 ; 0x3140 <__addsf3> + eae: 5b 01 movw r10, r22 + eb0: 6c 01 movw r12, r24 + eb2: 0e 94 f7 16 call 0x2dee ; 0x2dee <__fixunssfsi> + eb6: 7b 01 movw r14, r22 + eb8: 8c 01 movw r16, r24 + eba: ce 01 movw r24, r28 + ebc: b8 01 movw r22, r16 + ebe: a7 01 movw r20, r14 + ec0: 2a e0 ldi r18, 0x0A ; 10 + ec2: 30 e0 ldi r19, 0x00 ; 0 + ec4: 0e 94 de 05 call 0xbbc ; 0xbbc <_ZN5Print5printEmi> + ec8: 99 20 and r9, r9 + eca: 29 f0 breq .+10 ; 0xed6 <_ZN5Print10printFloatEdh+0xa2> + ecc: ce 01 movw r24, r28 + ece: 69 e9 ldi r22, 0x99 ; 153 + ed0: 71 e0 ldi r23, 0x01 ; 1 + ed2: 0e 94 12 05 call 0xa24 ; 0xa24 <_ZN5Print5printEPKc> + ed6: c8 01 movw r24, r16 + ed8: b7 01 movw r22, r14 + eda: 0e 94 85 1b call 0x370a ; 0x370a <__floatunsisf> + ede: 9b 01 movw r18, r22 + ee0: ac 01 movw r20, r24 + ee2: c6 01 movw r24, r12 + ee4: b5 01 movw r22, r10 + ee6: 0e 94 6f 18 call 0x30de ; 0x30de <__subsf3> + eea: 22 c0 rjmp .+68 ; 0xf30 <_ZN5Print10printFloatEdh+0xfc> + eec: 20 e0 ldi r18, 0x00 ; 0 + eee: 30 e0 ldi r19, 0x00 ; 0 + ef0: 40 e2 ldi r20, 0x20 ; 32 + ef2: 51 e4 ldi r21, 0x41 ; 65 + ef4: 0e 94 cd 18 call 0x319a ; 0x319a <__mulsf3> + ef8: 7b 01 movw r14, r22 + efa: 8c 01 movw r16, r24 + efc: 0e 94 31 1b call 0x3662 ; 0x3662 <__fixsfsi> + f00: 5b 01 movw r10, r22 + f02: 6c 01 movw r12, r24 + f04: cc 24 eor r12, r12 + f06: b7 fc sbrc r11, 7 + f08: c0 94 com r12 + f0a: dc 2c mov r13, r12 + f0c: ce 01 movw r24, r28 + f0e: b6 01 movw r22, r12 + f10: a5 01 movw r20, r10 + f12: 2a e0 ldi r18, 0x0A ; 10 + f14: 30 e0 ldi r19, 0x00 ; 0 + f16: 0e 94 10 06 call 0xc20 ; 0xc20 <_ZN5Print5printEli> + f1a: c6 01 movw r24, r12 + f1c: b5 01 movw r22, r10 + f1e: 0e 94 d3 1a call 0x35a6 ; 0x35a6 <__floatsisf> + f22: 9b 01 movw r18, r22 + f24: ac 01 movw r20, r24 + f26: c8 01 movw r24, r16 + f28: b7 01 movw r22, r14 + f2a: 0e 94 6f 18 call 0x30de ; 0x30de <__subsf3> + f2e: 9a 94 dec r9 + f30: 99 20 and r9, r9 + f32: e1 f6 brne .-72 ; 0xeec <_ZN5Print10printFloatEdh+0xb8> + f34: df 91 pop r29 + f36: cf 91 pop r28 + f38: 1f 91 pop r17 + f3a: 0f 91 pop r16 + f3c: ff 90 pop r15 + f3e: ef 90 pop r14 + f40: df 90 pop r13 + f42: cf 90 pop r12 + f44: bf 90 pop r11 + f46: af 90 pop r10 + f48: 9f 90 pop r9 + f4a: 08 95 ret + +00000f4c <_ZN5Print5printEdi>: + f4c: 0e 94 1a 07 call 0xe34 ; 0xe34 <_ZN5Print10printFloatEdh> + f50: 08 95 ret + +00000f52 <_ZN5Print7printlnEdi>: + f52: 0f 93 push r16 + f54: 1f 93 push r17 + f56: 8c 01 movw r16, r24 + f58: 0e 94 1a 07 call 0xe34 ; 0xe34 <_ZN5Print10printFloatEdh> + f5c: c8 01 movw r24, r16 + f5e: 0e 94 6d 06 call 0xcda ; 0xcda <_ZN5Print7printlnEv> + f62: 1f 91 pop r17 + f64: 0f 91 pop r16 + f66: 08 95 ret + +00000f68 <_Z12disableTimerh>: + f68: 81 30 cpi r24, 0x01 ; 1 + f6a: 41 f0 breq .+16 ; 0xf7c <_Z12disableTimerh+0x14> + f6c: 81 30 cpi r24, 0x01 ; 1 + f6e: 18 f0 brcs .+6 ; 0xf76 <_Z12disableTimerh+0xe> + f70: 82 30 cpi r24, 0x02 ; 2 + f72: d1 f4 brne .+52 ; 0xfa8 <_Z12disableTimerh+0x40> + f74: 09 c0 rjmp .+18 ; 0xf88 <_Z12disableTimerh+0x20> + f76: 10 92 6e 00 sts 0x006E, r1 + f7a: 08 95 ret + f7c: 80 91 6f 00 lds r24, 0x006F + f80: 8d 7f andi r24, 0xFD ; 253 + f82: 80 93 6f 00 sts 0x006F, r24 + f86: 08 95 ret + f88: 80 91 70 00 lds r24, 0x0070 + f8c: 8d 7f andi r24, 0xFD ; 253 + f8e: 80 93 70 00 sts 0x0070, r24 + f92: 81 e0 ldi r24, 0x01 ; 1 + f94: 80 93 b0 00 sts 0x00B0, r24 + f98: 80 91 b1 00 lds r24, 0x00B1 + f9c: 88 7f andi r24, 0xF8 ; 248 + f9e: 84 60 ori r24, 0x04 ; 4 + fa0: 80 93 b1 00 sts 0x00B1, r24 + fa4: 10 92 b3 00 sts 0x00B3, r1 + fa8: 08 95 ret + +00000faa <_Z6noToneh>: + faa: 1f 93 push r17 + fac: 18 2f mov r17, r24 + fae: 80 91 a5 01 lds r24, 0x01A5 + fb2: 81 17 cp r24, r17 + fb4: 11 f0 breq .+4 ; 0xfba <_Z6noToneh+0x10> + fb6: 9f ef ldi r25, 0xFF ; 255 + fb8: 06 c0 rjmp .+12 ; 0xfc6 <_Z6noToneh+0x1c> + fba: e8 e6 ldi r30, 0x68 ; 104 + fbc: f0 e0 ldi r31, 0x00 ; 0 + fbe: 94 91 lpm r25, Z+ + fc0: 8f ef ldi r24, 0xFF ; 255 + fc2: 80 93 a5 01 sts 0x01A5, r24 + fc6: 89 2f mov r24, r25 + fc8: 0e 94 b4 07 call 0xf68 ; 0xf68 <_Z12disableTimerh> + fcc: 81 2f mov r24, r17 + fce: 60 e0 ldi r22, 0x00 ; 0 + fd0: 0e 94 6f 15 call 0x2ade ; 0x2ade + fd4: 1f 91 pop r17 + fd6: 08 95 ret + +00000fd8 <__vector_7>: + fd8: 1f 92 push r1 + fda: 0f 92 push r0 + fdc: 0f b6 in r0, 0x3f ; 63 + fde: 0f 92 push r0 + fe0: 11 24 eor r1, r1 + fe2: 2f 93 push r18 + fe4: 3f 93 push r19 + fe6: 4f 93 push r20 + fe8: 5f 93 push r21 + fea: 6f 93 push r22 + fec: 7f 93 push r23 + fee: 8f 93 push r24 + ff0: 9f 93 push r25 + ff2: af 93 push r26 + ff4: bf 93 push r27 + ff6: ef 93 push r30 + ff8: ff 93 push r31 + ffa: 80 91 79 03 lds r24, 0x0379 + ffe: 90 91 7a 03 lds r25, 0x037A + 1002: a0 91 7b 03 lds r26, 0x037B + 1006: b0 91 7c 03 lds r27, 0x037C + 100a: 00 97 sbiw r24, 0x00 ; 0 + 100c: a1 05 cpc r26, r1 + 100e: b1 05 cpc r27, r1 + 1010: 51 f1 breq .+84 ; 0x1066 <__vector_7+0x8e> + 1012: e0 91 7d 03 lds r30, 0x037D + 1016: f0 91 7e 03 lds r31, 0x037E + 101a: 80 81 ld r24, Z + 101c: 90 91 7f 03 lds r25, 0x037F + 1020: 89 27 eor r24, r25 + 1022: 80 83 st Z, r24 + 1024: 80 91 79 03 lds r24, 0x0379 + 1028: 90 91 7a 03 lds r25, 0x037A + 102c: a0 91 7b 03 lds r26, 0x037B + 1030: b0 91 7c 03 lds r27, 0x037C + 1034: 18 16 cp r1, r24 + 1036: 19 06 cpc r1, r25 + 1038: 1a 06 cpc r1, r26 + 103a: 1b 06 cpc r1, r27 + 103c: c4 f4 brge .+48 ; 0x106e <__vector_7+0x96> + 103e: 80 91 79 03 lds r24, 0x0379 + 1042: 90 91 7a 03 lds r25, 0x037A + 1046: a0 91 7b 03 lds r26, 0x037B + 104a: b0 91 7c 03 lds r27, 0x037C + 104e: 01 97 sbiw r24, 0x01 ; 1 + 1050: a1 09 sbc r26, r1 + 1052: b1 09 sbc r27, r1 + 1054: 80 93 79 03 sts 0x0379, r24 + 1058: 90 93 7a 03 sts 0x037A, r25 + 105c: a0 93 7b 03 sts 0x037B, r26 + 1060: b0 93 7c 03 sts 0x037C, r27 + 1064: 04 c0 rjmp .+8 ; 0x106e <__vector_7+0x96> + 1066: 80 91 a5 01 lds r24, 0x01A5 + 106a: 0e 94 d5 07 call 0xfaa ; 0xfaa <_Z6noToneh> + 106e: ff 91 pop r31 + 1070: ef 91 pop r30 + 1072: bf 91 pop r27 + 1074: af 91 pop r26 + 1076: 9f 91 pop r25 + 1078: 8f 91 pop r24 + 107a: 7f 91 pop r23 + 107c: 6f 91 pop r22 + 107e: 5f 91 pop r21 + 1080: 4f 91 pop r20 + 1082: 3f 91 pop r19 + 1084: 2f 91 pop r18 + 1086: 0f 90 pop r0 + 1088: 0f be out 0x3f, r0 ; 63 + 108a: 0f 90 pop r0 + 108c: 1f 90 pop r1 + 108e: 18 95 reti + +00001090 <_Z4tonehjm>: + 1090: 2f 92 push r2 + 1092: 3f 92 push r3 + 1094: 5f 92 push r5 + 1096: 6f 92 push r6 + 1098: 7f 92 push r7 + 109a: 8f 92 push r8 + 109c: 9f 92 push r9 + 109e: af 92 push r10 + 10a0: bf 92 push r11 + 10a2: cf 92 push r12 + 10a4: df 92 push r13 + 10a6: ef 92 push r14 + 10a8: ff 92 push r15 + 10aa: 0f 93 push r16 + 10ac: 1f 93 push r17 + 10ae: df 93 push r29 + 10b0: cf 93 push r28 + 10b2: 00 d0 rcall .+0 ; 0x10b4 <_Z4tonehjm+0x24> + 10b4: 00 d0 rcall .+0 ; 0x10b6 <_Z4tonehjm+0x26> + 10b6: cd b7 in r28, 0x3d ; 61 + 10b8: de b7 in r29, 0x3e ; 62 + 10ba: a8 2f mov r26, r24 + 10bc: 1b 01 movw r2, r22 + 10be: 29 83 std Y+1, r18 ; 0x01 + 10c0: 3a 83 std Y+2, r19 ; 0x02 + 10c2: 4b 83 std Y+3, r20 ; 0x03 + 10c4: 5c 83 std Y+4, r21 ; 0x04 + 10c6: 80 91 a5 01 lds r24, 0x01A5 + 10ca: 8a 17 cp r24, r26 + 10cc: 21 f4 brne .+8 ; 0x10d6 <_Z4tonehjm+0x46> + 10ce: e8 e6 ldi r30, 0x68 ; 104 + 10d0: f0 e0 ldi r31, 0x00 ; 0 + 10d2: 54 90 lpm r5, Z+ + 10d4: 82 c0 rjmp .+260 ; 0x11da <_Z4tonehjm+0x14a> + 10d6: 8f 3f cpi r24, 0xFF ; 255 + 10d8: 09 f0 breq .+2 ; 0x10dc <_Z4tonehjm+0x4c> + 10da: d9 c1 rjmp .+946 ; 0x148e <_Z4tonehjm+0x3fe> + 10dc: a0 93 a5 01 sts 0x01A5, r26 + 10e0: e8 e6 ldi r30, 0x68 ; 104 + 10e2: f0 e0 ldi r31, 0x00 ; 0 + 10e4: 54 90 lpm r5, Z+ + 10e6: 2f ef ldi r18, 0xFF ; 255 + 10e8: 52 16 cp r5, r18 + 10ea: 09 f4 brne .+2 ; 0x10ee <_Z4tonehjm+0x5e> + 10ec: d0 c1 rjmp .+928 ; 0x148e <_Z4tonehjm+0x3fe> + 10ee: 81 e0 ldi r24, 0x01 ; 1 + 10f0: 58 16 cp r5, r24 + 10f2: 39 f1 breq .+78 ; 0x1142 <_Z4tonehjm+0xb2> + 10f4: 92 e0 ldi r25, 0x02 ; 2 + 10f6: 59 16 cp r5, r25 + 10f8: 09 f4 brne .+2 ; 0x10fc <_Z4tonehjm+0x6c> + 10fa: 49 c0 rjmp .+146 ; 0x118e <_Z4tonehjm+0xfe> + 10fc: 55 20 and r5, r5 + 10fe: 09 f0 breq .+2 ; 0x1102 <_Z4tonehjm+0x72> + 1100: 6c c0 rjmp .+216 ; 0x11da <_Z4tonehjm+0x14a> + 1102: 14 bc out 0x24, r1 ; 36 + 1104: 15 bc out 0x25, r1 ; 37 + 1106: 84 b5 in r24, 0x24 ; 36 + 1108: 82 60 ori r24, 0x02 ; 2 + 110a: 84 bd out 0x24, r24 ; 36 + 110c: 85 b5 in r24, 0x25 ; 37 + 110e: 81 60 ori r24, 0x01 ; 1 + 1110: 85 bd out 0x25, r24 ; 37 + 1112: 2a 2f mov r18, r26 + 1114: 30 e0 ldi r19, 0x00 ; 0 + 1116: f9 01 movw r30, r18 + 1118: e9 57 subi r30, 0x79 ; 121 + 111a: ff 4f sbci r31, 0xFF ; 255 + 111c: e4 91 lpm r30, Z+ + 111e: f0 e0 ldi r31, 0x00 ; 0 + 1120: ee 0f add r30, r30 + 1122: ff 1f adc r31, r31 + 1124: ed 58 subi r30, 0x8D ; 141 + 1126: ff 4f sbci r31, 0xFF ; 255 + 1128: 85 91 lpm r24, Z+ + 112a: 94 91 lpm r25, Z+ + 112c: 90 93 70 03 sts 0x0370, r25 + 1130: 80 93 6f 03 sts 0x036F, r24 + 1134: 25 56 subi r18, 0x65 ; 101 + 1136: 3f 4f sbci r19, 0xFF ; 255 + 1138: f9 01 movw r30, r18 + 113a: 84 91 lpm r24, Z+ + 113c: 80 93 71 03 sts 0x0371, r24 + 1140: 4e c0 rjmp .+156 ; 0x11de <_Z4tonehjm+0x14e> + 1142: 10 92 80 00 sts 0x0080, r1 + 1146: 10 92 81 00 sts 0x0081, r1 + 114a: 80 91 81 00 lds r24, 0x0081 + 114e: 88 60 ori r24, 0x08 ; 8 + 1150: 80 93 81 00 sts 0x0081, r24 + 1154: 80 91 81 00 lds r24, 0x0081 + 1158: 81 60 ori r24, 0x01 ; 1 + 115a: 80 93 81 00 sts 0x0081, r24 + 115e: 2a 2f mov r18, r26 + 1160: 30 e0 ldi r19, 0x00 ; 0 + 1162: f9 01 movw r30, r18 + 1164: e9 57 subi r30, 0x79 ; 121 + 1166: ff 4f sbci r31, 0xFF ; 255 + 1168: e4 91 lpm r30, Z+ + 116a: f0 e0 ldi r31, 0x00 ; 0 + 116c: ee 0f add r30, r30 + 116e: ff 1f adc r31, r31 + 1170: ed 58 subi r30, 0x8D ; 141 + 1172: ff 4f sbci r31, 0xFF ; 255 + 1174: 85 91 lpm r24, Z+ + 1176: 94 91 lpm r25, Z+ + 1178: 90 93 77 03 sts 0x0377, r25 + 117c: 80 93 76 03 sts 0x0376, r24 + 1180: 25 56 subi r18, 0x65 ; 101 + 1182: 3f 4f sbci r19, 0xFF ; 255 + 1184: f9 01 movw r30, r18 + 1186: 84 91 lpm r24, Z+ + 1188: 80 93 78 03 sts 0x0378, r24 + 118c: 28 c0 rjmp .+80 ; 0x11de <_Z4tonehjm+0x14e> + 118e: 10 92 b0 00 sts 0x00B0, r1 + 1192: 10 92 b1 00 sts 0x00B1, r1 + 1196: 80 91 b0 00 lds r24, 0x00B0 + 119a: 82 60 ori r24, 0x02 ; 2 + 119c: 80 93 b0 00 sts 0x00B0, r24 + 11a0: 80 91 b1 00 lds r24, 0x00B1 + 11a4: 81 60 ori r24, 0x01 ; 1 + 11a6: 80 93 b1 00 sts 0x00B1, r24 + 11aa: 2a 2f mov r18, r26 + 11ac: 30 e0 ldi r19, 0x00 ; 0 + 11ae: f9 01 movw r30, r18 + 11b0: e9 57 subi r30, 0x79 ; 121 + 11b2: ff 4f sbci r31, 0xFF ; 255 + 11b4: e4 91 lpm r30, Z+ + 11b6: f0 e0 ldi r31, 0x00 ; 0 + 11b8: ee 0f add r30, r30 + 11ba: ff 1f adc r31, r31 + 11bc: ed 58 subi r30, 0x8D ; 141 + 11be: ff 4f sbci r31, 0xFF ; 255 + 11c0: 85 91 lpm r24, Z+ + 11c2: 94 91 lpm r25, Z+ + 11c4: 90 93 7e 03 sts 0x037E, r25 + 11c8: 80 93 7d 03 sts 0x037D, r24 + 11cc: 25 56 subi r18, 0x65 ; 101 + 11ce: 3f 4f sbci r19, 0xFF ; 255 + 11d0: f9 01 movw r30, r18 + 11d2: 84 91 lpm r24, Z+ + 11d4: 80 93 7f 03 sts 0x037F, r24 + 11d8: 02 c0 rjmp .+4 ; 0x11de <_Z4tonehjm+0x14e> + 11da: 57 fc sbrc r5, 7 + 11dc: 58 c1 rjmp .+688 ; 0x148e <_Z4tonehjm+0x3fe> + 11de: 8a 2f mov r24, r26 + 11e0: 61 e0 ldi r22, 0x01 ; 1 + 11e2: 0e 94 1c 15 call 0x2a38 ; 0x2a38 + 11e6: 55 20 and r5, r5 + 11e8: 21 f0 breq .+8 ; 0x11f2 <_Z4tonehjm+0x162> + 11ea: f2 e0 ldi r31, 0x02 ; 2 + 11ec: 5f 16 cp r5, r31 + 11ee: 09 f0 breq .+2 ; 0x11f2 <_Z4tonehjm+0x162> + 11f0: bd c0 rjmp .+378 ; 0x136c <_Z4tonehjm+0x2dc> + 11f2: 31 01 movw r6, r2 + 11f4: 88 24 eor r8, r8 + 11f6: 99 24 eor r9, r9 + 11f8: 60 e0 ldi r22, 0x00 ; 0 + 11fa: 79 e0 ldi r23, 0x09 ; 9 + 11fc: 8d e3 ldi r24, 0x3D ; 61 + 11fe: 90 e0 ldi r25, 0x00 ; 0 + 1200: a4 01 movw r20, r8 + 1202: 93 01 movw r18, r6 + 1204: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 1208: 59 01 movw r10, r18 + 120a: 6a 01 movw r12, r20 + 120c: 86 01 movw r16, r12 + 120e: 75 01 movw r14, r10 + 1210: 08 94 sec + 1212: e1 08 sbc r14, r1 + 1214: f1 08 sbc r15, r1 + 1216: 01 09 sbc r16, r1 + 1218: 11 09 sbc r17, r1 + 121a: 2f ef ldi r18, 0xFF ; 255 + 121c: e2 16 cp r14, r18 + 121e: f1 04 cpc r15, r1 + 1220: 01 05 cpc r16, r1 + 1222: 11 05 cpc r17, r1 + 1224: 09 f0 breq .+2 ; 0x1228 <_Z4tonehjm+0x198> + 1226: 08 f4 brcc .+2 ; 0x122a <_Z4tonehjm+0x19a> + 1228: 98 c0 rjmp .+304 ; 0x135a <_Z4tonehjm+0x2ca> + 122a: 60 e2 ldi r22, 0x20 ; 32 + 122c: 71 ea ldi r23, 0xA1 ; 161 + 122e: 87 e0 ldi r24, 0x07 ; 7 + 1230: 90 e0 ldi r25, 0x00 ; 0 + 1232: a4 01 movw r20, r8 + 1234: 93 01 movw r18, r6 + 1236: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 123a: 79 01 movw r14, r18 + 123c: 8a 01 movw r16, r20 + 123e: 08 94 sec + 1240: e1 08 sbc r14, r1 + 1242: f1 08 sbc r15, r1 + 1244: 01 09 sbc r16, r1 + 1246: 11 09 sbc r17, r1 + 1248: 82 e0 ldi r24, 0x02 ; 2 + 124a: 58 16 cp r5, r24 + 124c: c1 f4 brne .+48 ; 0x127e <_Z4tonehjm+0x1ee> + 124e: 9f ef ldi r25, 0xFF ; 255 + 1250: e9 16 cp r14, r25 + 1252: f1 04 cpc r15, r1 + 1254: 01 05 cpc r16, r1 + 1256: 11 05 cpc r17, r1 + 1258: 09 f0 breq .+2 ; 0x125c <_Z4tonehjm+0x1cc> + 125a: 08 f4 brcc .+2 ; 0x125e <_Z4tonehjm+0x1ce> + 125c: 83 c0 rjmp .+262 ; 0x1364 <_Z4tonehjm+0x2d4> + 125e: 68 e4 ldi r22, 0x48 ; 72 + 1260: 78 ee ldi r23, 0xE8 ; 232 + 1262: 81 e0 ldi r24, 0x01 ; 1 + 1264: 90 e0 ldi r25, 0x00 ; 0 + 1266: a4 01 movw r20, r8 + 1268: 93 01 movw r18, r6 + 126a: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 126e: 79 01 movw r14, r18 + 1270: 8a 01 movw r16, r20 + 1272: 08 94 sec + 1274: e1 08 sbc r14, r1 + 1276: f1 08 sbc r15, r1 + 1278: 01 09 sbc r16, r1 + 127a: 11 09 sbc r17, r1 + 127c: 83 e0 ldi r24, 0x03 ; 3 + 127e: af ef ldi r26, 0xFF ; 255 + 1280: ea 16 cp r14, r26 + 1282: f1 04 cpc r15, r1 + 1284: 01 05 cpc r16, r1 + 1286: 11 05 cpc r17, r1 + 1288: 09 f0 breq .+2 ; 0x128c <_Z4tonehjm+0x1fc> + 128a: 08 f4 brcc .+2 ; 0x128e <_Z4tonehjm+0x1fe> + 128c: 67 c0 rjmp .+206 ; 0x135c <_Z4tonehjm+0x2cc> + 128e: 64 e2 ldi r22, 0x24 ; 36 + 1290: 74 ef ldi r23, 0xF4 ; 244 + 1292: 80 e0 ldi r24, 0x00 ; 0 + 1294: 90 e0 ldi r25, 0x00 ; 0 + 1296: a4 01 movw r20, r8 + 1298: 93 01 movw r18, r6 + 129a: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 129e: 79 01 movw r14, r18 + 12a0: 8a 01 movw r16, r20 + 12a2: 08 94 sec + 12a4: e1 08 sbc r14, r1 + 12a6: f1 08 sbc r15, r1 + 12a8: 01 09 sbc r16, r1 + 12aa: 11 09 sbc r17, r1 + 12ac: 55 20 and r5, r5 + 12ae: 11 f4 brne .+4 ; 0x12b4 <_Z4tonehjm+0x224> + 12b0: 83 e0 ldi r24, 0x03 ; 3 + 12b2: 1d c0 rjmp .+58 ; 0x12ee <_Z4tonehjm+0x25e> + 12b4: b2 e0 ldi r27, 0x02 ; 2 + 12b6: 5b 16 cp r5, r27 + 12b8: 11 f0 breq .+4 ; 0x12be <_Z4tonehjm+0x22e> + 12ba: 84 e0 ldi r24, 0x04 ; 4 + 12bc: 18 c0 rjmp .+48 ; 0x12ee <_Z4tonehjm+0x25e> + 12be: ef ef ldi r30, 0xFF ; 255 + 12c0: ee 16 cp r14, r30 + 12c2: f1 04 cpc r15, r1 + 12c4: 01 05 cpc r16, r1 + 12c6: 11 05 cpc r17, r1 + 12c8: 09 f0 breq .+2 ; 0x12cc <_Z4tonehjm+0x23c> + 12ca: 08 f4 brcc .+2 ; 0x12ce <_Z4tonehjm+0x23e> + 12cc: de c0 rjmp .+444 ; 0x148a <_Z4tonehjm+0x3fa> + 12ce: 62 e1 ldi r22, 0x12 ; 18 + 12d0: 7a e7 ldi r23, 0x7A ; 122 + 12d2: 80 e0 ldi r24, 0x00 ; 0 + 12d4: 90 e0 ldi r25, 0x00 ; 0 + 12d6: a4 01 movw r20, r8 + 12d8: 93 01 movw r18, r6 + 12da: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 12de: 79 01 movw r14, r18 + 12e0: 8a 01 movw r16, r20 + 12e2: 08 94 sec + 12e4: e1 08 sbc r14, r1 + 12e6: f1 08 sbc r15, r1 + 12e8: 01 09 sbc r16, r1 + 12ea: 11 09 sbc r17, r1 + 12ec: 85 e0 ldi r24, 0x05 ; 5 + 12ee: ff ef ldi r31, 0xFF ; 255 + 12f0: ef 16 cp r14, r31 + 12f2: f1 04 cpc r15, r1 + 12f4: 01 05 cpc r16, r1 + 12f6: 11 05 cpc r17, r1 + 12f8: 89 f1 breq .+98 ; 0x135c <_Z4tonehjm+0x2cc> + 12fa: 80 f1 brcs .+96 ; 0x135c <_Z4tonehjm+0x2cc> + 12fc: 69 e0 ldi r22, 0x09 ; 9 + 12fe: 7d e3 ldi r23, 0x3D ; 61 + 1300: 80 e0 ldi r24, 0x00 ; 0 + 1302: 90 e0 ldi r25, 0x00 ; 0 + 1304: a4 01 movw r20, r8 + 1306: 93 01 movw r18, r6 + 1308: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 130c: 79 01 movw r14, r18 + 130e: 8a 01 movw r16, r20 + 1310: 08 94 sec + 1312: e1 08 sbc r14, r1 + 1314: f1 08 sbc r15, r1 + 1316: 01 09 sbc r16, r1 + 1318: 11 09 sbc r17, r1 + 131a: 55 20 and r5, r5 + 131c: 11 f0 breq .+4 ; 0x1322 <_Z4tonehjm+0x292> + 131e: 86 e0 ldi r24, 0x06 ; 6 + 1320: 01 c0 rjmp .+2 ; 0x1324 <_Z4tonehjm+0x294> + 1322: 84 e0 ldi r24, 0x04 ; 4 + 1324: 2f ef ldi r18, 0xFF ; 255 + 1326: e2 16 cp r14, r18 + 1328: f1 04 cpc r15, r1 + 132a: 01 05 cpc r16, r1 + 132c: 11 05 cpc r17, r1 + 132e: b1 f0 breq .+44 ; 0x135c <_Z4tonehjm+0x2cc> + 1330: a8 f0 brcs .+42 ; 0x135c <_Z4tonehjm+0x2cc> + 1332: 86 01 movw r16, r12 + 1334: 75 01 movw r14, r10 + 1336: 9a e0 ldi r25, 0x0A ; 10 + 1338: 16 95 lsr r17 + 133a: 07 95 ror r16 + 133c: f7 94 ror r15 + 133e: e7 94 ror r14 + 1340: 9a 95 dec r25 + 1342: d1 f7 brne .-12 ; 0x1338 <_Z4tonehjm+0x2a8> + 1344: 08 94 sec + 1346: e1 08 sbc r14, r1 + 1348: f1 08 sbc r15, r1 + 134a: 01 09 sbc r16, r1 + 134c: 11 09 sbc r17, r1 + 134e: 55 20 and r5, r5 + 1350: 11 f0 breq .+4 ; 0x1356 <_Z4tonehjm+0x2c6> + 1352: 87 e0 ldi r24, 0x07 ; 7 + 1354: 08 c0 rjmp .+16 ; 0x1366 <_Z4tonehjm+0x2d6> + 1356: 85 e0 ldi r24, 0x05 ; 5 + 1358: 03 c0 rjmp .+6 ; 0x1360 <_Z4tonehjm+0x2d0> + 135a: 81 e0 ldi r24, 0x01 ; 1 + 135c: 55 20 and r5, r5 + 135e: 19 f4 brne .+6 ; 0x1366 <_Z4tonehjm+0x2d6> + 1360: 85 bd out 0x25, r24 ; 37 + 1362: 3a c0 rjmp .+116 ; 0x13d8 <_Z4tonehjm+0x348> + 1364: 82 e0 ldi r24, 0x02 ; 2 + 1366: 80 93 b1 00 sts 0x00B1, r24 + 136a: 36 c0 rjmp .+108 ; 0x13d8 <_Z4tonehjm+0x348> + 136c: 51 01 movw r10, r2 + 136e: cc 24 eor r12, r12 + 1370: dd 24 eor r13, r13 + 1372: 60 e0 ldi r22, 0x00 ; 0 + 1374: 79 e0 ldi r23, 0x09 ; 9 + 1376: 8d e3 ldi r24, 0x3D ; 61 + 1378: 90 e0 ldi r25, 0x00 ; 0 + 137a: a6 01 movw r20, r12 + 137c: 95 01 movw r18, r10 + 137e: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 1382: 79 01 movw r14, r18 + 1384: 8a 01 movw r16, r20 + 1386: 08 94 sec + 1388: e1 08 sbc r14, r1 + 138a: f1 08 sbc r15, r1 + 138c: 01 09 sbc r16, r1 + 138e: 11 09 sbc r17, r1 + 1390: 80 e0 ldi r24, 0x00 ; 0 + 1392: e8 16 cp r14, r24 + 1394: 80 e0 ldi r24, 0x00 ; 0 + 1396: f8 06 cpc r15, r24 + 1398: 81 e0 ldi r24, 0x01 ; 1 + 139a: 08 07 cpc r16, r24 + 139c: 80 e0 ldi r24, 0x00 ; 0 + 139e: 18 07 cpc r17, r24 + 13a0: 10 f4 brcc .+4 ; 0x13a6 <_Z4tonehjm+0x316> + 13a2: 91 e0 ldi r25, 0x01 ; 1 + 13a4: 10 c0 rjmp .+32 ; 0x13c6 <_Z4tonehjm+0x336> + 13a6: 64 e2 ldi r22, 0x24 ; 36 + 13a8: 74 ef ldi r23, 0xF4 ; 244 + 13aa: 80 e0 ldi r24, 0x00 ; 0 + 13ac: 90 e0 ldi r25, 0x00 ; 0 + 13ae: a6 01 movw r20, r12 + 13b0: 95 01 movw r18, r10 + 13b2: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 13b6: 79 01 movw r14, r18 + 13b8: 8a 01 movw r16, r20 + 13ba: 08 94 sec + 13bc: e1 08 sbc r14, r1 + 13be: f1 08 sbc r15, r1 + 13c0: 01 09 sbc r16, r1 + 13c2: 11 09 sbc r17, r1 + 13c4: 93 e0 ldi r25, 0x03 ; 3 + 13c6: a1 e0 ldi r26, 0x01 ; 1 + 13c8: 5a 16 cp r5, r26 + 13ca: 31 f4 brne .+12 ; 0x13d8 <_Z4tonehjm+0x348> + 13cc: 80 91 81 00 lds r24, 0x0081 + 13d0: 88 7f andi r24, 0xF8 ; 248 + 13d2: 98 2b or r25, r24 + 13d4: 90 93 81 00 sts 0x0081, r25 + 13d8: 89 81 ldd r24, Y+1 ; 0x01 + 13da: 9a 81 ldd r25, Y+2 ; 0x02 + 13dc: ab 81 ldd r26, Y+3 ; 0x03 + 13de: bc 81 ldd r27, Y+4 ; 0x04 + 13e0: 00 97 sbiw r24, 0x00 ; 0 + 13e2: a1 05 cpc r26, r1 + 13e4: b1 05 cpc r27, r1 + 13e6: 29 f4 brne .+10 ; 0x13f2 <_Z4tonehjm+0x362> + 13e8: 8f ef ldi r24, 0xFF ; 255 + 13ea: 9f ef ldi r25, 0xFF ; 255 + 13ec: af ef ldi r26, 0xFF ; 255 + 13ee: bf ef ldi r27, 0xFF ; 255 + 13f0: 13 c0 rjmp .+38 ; 0x1418 <_Z4tonehjm+0x388> + 13f2: 22 0c add r2, r2 + 13f4: 33 1c adc r3, r3 + 13f6: b1 01 movw r22, r2 + 13f8: 80 e0 ldi r24, 0x00 ; 0 + 13fa: 90 e0 ldi r25, 0x00 ; 0 + 13fc: 29 81 ldd r18, Y+1 ; 0x01 + 13fe: 3a 81 ldd r19, Y+2 ; 0x02 + 1400: 4b 81 ldd r20, Y+3 ; 0x03 + 1402: 5c 81 ldd r21, Y+4 ; 0x04 + 1404: 0e 94 f3 1d call 0x3be6 ; 0x3be6 <__mulsi3> + 1408: 28 ee ldi r18, 0xE8 ; 232 + 140a: 33 e0 ldi r19, 0x03 ; 3 + 140c: 40 e0 ldi r20, 0x00 ; 0 + 140e: 50 e0 ldi r21, 0x00 ; 0 + 1410: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 1414: c9 01 movw r24, r18 + 1416: da 01 movw r26, r20 + 1418: e1 e0 ldi r30, 0x01 ; 1 + 141a: 5e 16 cp r5, r30 + 141c: a1 f0 breq .+40 ; 0x1446 <_Z4tonehjm+0x3b6> + 141e: f2 e0 ldi r31, 0x02 ; 2 + 1420: 5f 16 cp r5, r31 + 1422: 19 f1 breq .+70 ; 0x146a <_Z4tonehjm+0x3da> + 1424: 55 20 and r5, r5 + 1426: 99 f5 brne .+102 ; 0x148e <_Z4tonehjm+0x3fe> + 1428: e7 bc out 0x27, r14 ; 39 + 142a: 80 93 6b 03 sts 0x036B, r24 + 142e: 90 93 6c 03 sts 0x036C, r25 + 1432: a0 93 6d 03 sts 0x036D, r26 + 1436: b0 93 6e 03 sts 0x036E, r27 + 143a: 80 91 6e 00 lds r24, 0x006E + 143e: 82 60 ori r24, 0x02 ; 2 + 1440: 80 93 6e 00 sts 0x006E, r24 + 1444: 24 c0 rjmp .+72 ; 0x148e <_Z4tonehjm+0x3fe> + 1446: f0 92 89 00 sts 0x0089, r15 + 144a: e0 92 88 00 sts 0x0088, r14 + 144e: 80 93 72 03 sts 0x0372, r24 + 1452: 90 93 73 03 sts 0x0373, r25 + 1456: a0 93 74 03 sts 0x0374, r26 + 145a: b0 93 75 03 sts 0x0375, r27 + 145e: 80 91 6f 00 lds r24, 0x006F + 1462: 82 60 ori r24, 0x02 ; 2 + 1464: 80 93 6f 00 sts 0x006F, r24 + 1468: 12 c0 rjmp .+36 ; 0x148e <_Z4tonehjm+0x3fe> + 146a: e0 92 b3 00 sts 0x00B3, r14 + 146e: 80 93 79 03 sts 0x0379, r24 + 1472: 90 93 7a 03 sts 0x037A, r25 + 1476: a0 93 7b 03 sts 0x037B, r26 + 147a: b0 93 7c 03 sts 0x037C, r27 + 147e: 80 91 70 00 lds r24, 0x0070 + 1482: 82 60 ori r24, 0x02 ; 2 + 1484: 80 93 70 00 sts 0x0070, r24 + 1488: 02 c0 rjmp .+4 ; 0x148e <_Z4tonehjm+0x3fe> + 148a: 84 e0 ldi r24, 0x04 ; 4 + 148c: 6c cf rjmp .-296 ; 0x1366 <_Z4tonehjm+0x2d6> + 148e: 0f 90 pop r0 + 1490: 0f 90 pop r0 + 1492: 0f 90 pop r0 + 1494: 0f 90 pop r0 + 1496: cf 91 pop r28 + 1498: df 91 pop r29 + 149a: 1f 91 pop r17 + 149c: 0f 91 pop r16 + 149e: ff 90 pop r15 + 14a0: ef 90 pop r14 + 14a2: df 90 pop r13 + 14a4: cf 90 pop r12 + 14a6: bf 90 pop r11 + 14a8: af 90 pop r10 + 14aa: 9f 90 pop r9 + 14ac: 8f 90 pop r8 + 14ae: 7f 90 pop r7 + 14b0: 6f 90 pop r6 + 14b2: 5f 90 pop r5 + 14b4: 3f 90 pop r3 + 14b6: 2f 90 pop r2 + 14b8: 08 95 ret + +000014ba : + 14ba: 82 30 cpi r24, 0x02 ; 2 + 14bc: 00 f5 brcc .+64 ; 0x14fe + 14be: e8 2f mov r30, r24 + 14c0: f0 e0 ldi r31, 0x00 ; 0 + 14c2: ee 0f add r30, r30 + 14c4: ff 1f adc r31, r31 + 14c6: e0 58 subi r30, 0x80 ; 128 + 14c8: fc 4f sbci r31, 0xFC ; 252 + 14ca: 71 83 std Z+1, r23 ; 0x01 + 14cc: 60 83 st Z, r22 + 14ce: 88 23 and r24, r24 + 14d0: 19 f0 breq .+6 ; 0x14d8 + 14d2: 81 30 cpi r24, 0x01 ; 1 + 14d4: a1 f4 brne .+40 ; 0x14fe + 14d6: 08 c0 rjmp .+16 ; 0x14e8 + 14d8: 80 91 69 00 lds r24, 0x0069 + 14dc: 8c 7f andi r24, 0xFC ; 252 + 14de: 84 2b or r24, r20 + 14e0: 80 93 69 00 sts 0x0069, r24 + 14e4: e8 9a sbi 0x1d, 0 ; 29 + 14e6: 08 95 ret + 14e8: 80 91 69 00 lds r24, 0x0069 + 14ec: 44 0f add r20, r20 + 14ee: 55 1f adc r21, r21 + 14f0: 44 0f add r20, r20 + 14f2: 55 1f adc r21, r21 + 14f4: 83 7f andi r24, 0xF3 ; 243 + 14f6: 84 2b or r24, r20 + 14f8: 80 93 69 00 sts 0x0069, r24 + 14fc: e9 9a sbi 0x1d, 1 ; 29 + 14fe: 08 95 ret + +00001500 : + 1500: 82 30 cpi r24, 0x02 ; 2 + 1502: 80 f4 brcc .+32 ; 0x1524 + 1504: 88 23 and r24, r24 + 1506: 19 f0 breq .+6 ; 0x150e + 1508: 81 30 cpi r24, 0x01 ; 1 + 150a: 21 f4 brne .+8 ; 0x1514 + 150c: 02 c0 rjmp .+4 ; 0x1512 + 150e: e8 98 cbi 0x1d, 0 ; 29 + 1510: 01 c0 rjmp .+2 ; 0x1514 + 1512: e9 98 cbi 0x1d, 1 ; 29 + 1514: e8 2f mov r30, r24 + 1516: f0 e0 ldi r31, 0x00 ; 0 + 1518: ee 0f add r30, r30 + 151a: ff 1f adc r31, r31 + 151c: e0 58 subi r30, 0x80 ; 128 + 151e: fc 4f sbci r31, 0xFC ; 252 + 1520: 11 82 std Z+1, r1 ; 0x01 + 1522: 10 82 st Z, r1 + 1524: 08 95 ret + +00001526 <__vector_1>: + 1526: 1f 92 push r1 + 1528: 0f 92 push r0 + 152a: 0f b6 in r0, 0x3f ; 63 + 152c: 0f 92 push r0 + 152e: 11 24 eor r1, r1 + 1530: 2f 93 push r18 + 1532: 3f 93 push r19 + 1534: 4f 93 push r20 + 1536: 5f 93 push r21 + 1538: 6f 93 push r22 + 153a: 7f 93 push r23 + 153c: 8f 93 push r24 + 153e: 9f 93 push r25 + 1540: af 93 push r26 + 1542: bf 93 push r27 + 1544: ef 93 push r30 + 1546: ff 93 push r31 + 1548: 80 91 80 03 lds r24, 0x0380 + 154c: 90 91 81 03 lds r25, 0x0381 + 1550: 89 2b or r24, r25 + 1552: 29 f0 breq .+10 ; 0x155e <__vector_1+0x38> + 1554: e0 91 80 03 lds r30, 0x0380 + 1558: f0 91 81 03 lds r31, 0x0381 + 155c: 09 95 icall + 155e: ff 91 pop r31 + 1560: ef 91 pop r30 + 1562: bf 91 pop r27 + 1564: af 91 pop r26 + 1566: 9f 91 pop r25 + 1568: 8f 91 pop r24 + 156a: 7f 91 pop r23 + 156c: 6f 91 pop r22 + 156e: 5f 91 pop r21 + 1570: 4f 91 pop r20 + 1572: 3f 91 pop r19 + 1574: 2f 91 pop r18 + 1576: 0f 90 pop r0 + 1578: 0f be out 0x3f, r0 ; 63 + 157a: 0f 90 pop r0 + 157c: 1f 90 pop r1 + 157e: 18 95 reti + +00001580 <__vector_2>: + 1580: 1f 92 push r1 + 1582: 0f 92 push r0 + 1584: 0f b6 in r0, 0x3f ; 63 + 1586: 0f 92 push r0 + 1588: 11 24 eor r1, r1 + 158a: 2f 93 push r18 + 158c: 3f 93 push r19 + 158e: 4f 93 push r20 + 1590: 5f 93 push r21 + 1592: 6f 93 push r22 + 1594: 7f 93 push r23 + 1596: 8f 93 push r24 + 1598: 9f 93 push r25 + 159a: af 93 push r26 + 159c: bf 93 push r27 + 159e: ef 93 push r30 + 15a0: ff 93 push r31 + 15a2: 80 91 82 03 lds r24, 0x0382 + 15a6: 90 91 83 03 lds r25, 0x0383 + 15aa: 89 2b or r24, r25 + 15ac: 29 f0 breq .+10 ; 0x15b8 <__vector_2+0x38> + 15ae: e0 91 82 03 lds r30, 0x0382 + 15b2: f0 91 83 03 lds r31, 0x0383 + 15b6: 09 95 icall + 15b8: ff 91 pop r31 + 15ba: ef 91 pop r30 + 15bc: bf 91 pop r27 + 15be: af 91 pop r26 + 15c0: 9f 91 pop r25 + 15c2: 8f 91 pop r24 + 15c4: 7f 91 pop r23 + 15c6: 6f 91 pop r22 + 15c8: 5f 91 pop r21 + 15ca: 4f 91 pop r20 + 15cc: 3f 91 pop r19 + 15ce: 2f 91 pop r18 + 15d0: 0f 90 pop r0 + 15d2: 0f be out 0x3f, r0 ; 63 + 15d4: 0f 90 pop r0 + 15d6: 1f 90 pop r1 + 15d8: 18 95 reti + +000015da <_Z3maplllll>: + 15da: 2f 92 push r2 + 15dc: 3f 92 push r3 + 15de: 4f 92 push r4 + 15e0: 5f 92 push r5 + 15e2: 6f 92 push r6 + 15e4: 7f 92 push r7 + 15e6: 8f 92 push r8 + 15e8: 9f 92 push r9 + 15ea: af 92 push r10 + 15ec: bf 92 push r11 + 15ee: cf 92 push r12 + 15f0: df 92 push r13 + 15f2: ef 92 push r14 + 15f4: ff 92 push r15 + 15f6: 0f 93 push r16 + 15f8: 1f 93 push r17 + 15fa: df 93 push r29 + 15fc: cf 93 push r28 + 15fe: cd b7 in r28, 0x3d ; 61 + 1600: de b7 in r29, 0x3e ; 62 + 1602: 3b 01 movw r6, r22 + 1604: 4c 01 movw r8, r24 + 1606: 19 01 movw r2, r18 + 1608: 2a 01 movw r4, r20 + 160a: 6d 89 ldd r22, Y+21 ; 0x15 + 160c: 7e 89 ldd r23, Y+22 ; 0x16 + 160e: 8f 89 ldd r24, Y+23 ; 0x17 + 1610: 98 8d ldd r25, Y+24 ; 0x18 + 1612: 6a 19 sub r22, r10 + 1614: 7b 09 sbc r23, r11 + 1616: 8c 09 sbc r24, r12 + 1618: 9d 09 sbc r25, r13 + 161a: 62 1a sub r6, r18 + 161c: 73 0a sbc r7, r19 + 161e: 84 0a sbc r8, r20 + 1620: 95 0a sbc r9, r21 + 1622: a4 01 movw r20, r8 + 1624: 93 01 movw r18, r6 + 1626: 0e 94 f3 1d call 0x3be6 ; 0x3be6 <__mulsi3> + 162a: e2 18 sub r14, r2 + 162c: f3 08 sbc r15, r3 + 162e: 04 09 sbc r16, r4 + 1630: 15 09 sbc r17, r5 + 1632: a8 01 movw r20, r16 + 1634: 97 01 movw r18, r14 + 1636: 0e 94 34 1e call 0x3c68 ; 0x3c68 <__divmodsi4> + 163a: 2a 0d add r18, r10 + 163c: 3b 1d adc r19, r11 + 163e: 4c 1d adc r20, r12 + 1640: 5d 1d adc r21, r13 + 1642: b9 01 movw r22, r18 + 1644: ca 01 movw r24, r20 + 1646: cf 91 pop r28 + 1648: df 91 pop r29 + 164a: 1f 91 pop r17 + 164c: 0f 91 pop r16 + 164e: ff 90 pop r15 + 1650: ef 90 pop r14 + 1652: df 90 pop r13 + 1654: cf 90 pop r12 + 1656: bf 90 pop r11 + 1658: af 90 pop r10 + 165a: 9f 90 pop r9 + 165c: 8f 90 pop r8 + 165e: 7f 90 pop r7 + 1660: 6f 90 pop r6 + 1662: 5f 90 pop r5 + 1664: 4f 90 pop r4 + 1666: 3f 90 pop r3 + 1668: 2f 90 pop r2 + 166a: 08 95 ret + +0000166c <_Z8makeWordj>: + 166c: 08 95 ret + +0000166e <_Z8makeWordhh>: + 166e: 70 e0 ldi r23, 0x00 ; 0 + 1670: 38 2f mov r19, r24 + 1672: 20 e0 ldi r18, 0x00 ; 0 + 1674: 62 2b or r22, r18 + 1676: 73 2b or r23, r19 + 1678: cb 01 movw r24, r22 + 167a: 08 95 ret + +0000167c <_Z6randoml>: + 167c: ef 92 push r14 + 167e: ff 92 push r15 + 1680: 0f 93 push r16 + 1682: 1f 93 push r17 + 1684: 7b 01 movw r14, r22 + 1686: 8c 01 movw r16, r24 + 1688: 61 15 cp r22, r1 + 168a: 71 05 cpc r23, r1 + 168c: 81 05 cpc r24, r1 + 168e: 91 05 cpc r25, r1 + 1690: 29 f4 brne .+10 ; 0x169c <_Z6randoml+0x20> + 1692: 20 e0 ldi r18, 0x00 ; 0 + 1694: 30 e0 ldi r19, 0x00 ; 0 + 1696: 40 e0 ldi r20, 0x00 ; 0 + 1698: 50 e0 ldi r21, 0x00 ; 0 + 169a: 0b c0 rjmp .+22 ; 0x16b2 <_Z6randoml+0x36> + 169c: 0e 94 e4 1f call 0x3fc8 ; 0x3fc8 + 16a0: a8 01 movw r20, r16 + 16a2: 97 01 movw r18, r14 + 16a4: 0e 94 34 1e call 0x3c68 ; 0x3c68 <__divmodsi4> + 16a8: ac 01 movw r20, r24 + 16aa: cb 01 movw r24, r22 + 16ac: da 01 movw r26, r20 + 16ae: 9c 01 movw r18, r24 + 16b0: ad 01 movw r20, r26 + 16b2: b9 01 movw r22, r18 + 16b4: ca 01 movw r24, r20 + 16b6: 1f 91 pop r17 + 16b8: 0f 91 pop r16 + 16ba: ff 90 pop r15 + 16bc: ef 90 pop r14 + 16be: 08 95 ret + +000016c0 <_Z6randomll>: + 16c0: ef 92 push r14 + 16c2: ff 92 push r15 + 16c4: 0f 93 push r16 + 16c6: 1f 93 push r17 + 16c8: 7b 01 movw r14, r22 + 16ca: 8c 01 movw r16, r24 + 16cc: 62 17 cp r22, r18 + 16ce: 73 07 cpc r23, r19 + 16d0: 84 07 cpc r24, r20 + 16d2: 95 07 cpc r25, r21 + 16d4: 64 f4 brge .+24 ; 0x16ee <_Z6randomll+0x2e> + 16d6: 26 1b sub r18, r22 + 16d8: 37 0b sbc r19, r23 + 16da: 48 0b sbc r20, r24 + 16dc: 59 0b sbc r21, r25 + 16de: ca 01 movw r24, r20 + 16e0: b9 01 movw r22, r18 + 16e2: 0e 94 3e 0b call 0x167c ; 0x167c <_Z6randoml> + 16e6: e6 0e add r14, r22 + 16e8: f7 1e adc r15, r23 + 16ea: 08 1f adc r16, r24 + 16ec: 19 1f adc r17, r25 + 16ee: b7 01 movw r22, r14 + 16f0: c8 01 movw r24, r16 + 16f2: 1f 91 pop r17 + 16f4: 0f 91 pop r16 + 16f6: ff 90 pop r15 + 16f8: ef 90 pop r14 + 16fa: 08 95 ret + +000016fc <_Z10randomSeedj>: + 16fc: 00 97 sbiw r24, 0x00 ; 0 + 16fe: 29 f0 breq .+10 ; 0x170a <_Z10randomSeedj+0xe> + 1700: bc 01 movw r22, r24 + 1702: 80 e0 ldi r24, 0x00 ; 0 + 1704: 90 e0 ldi r25, 0x00 ; 0 + 1706: 0e 94 e9 1f call 0x3fd2 ; 0x3fd2 + 170a: 08 95 ret + +0000170c <_ZNK6String6charAtEj>: + 170c: fc 01 movw r30, r24 + 170e: 01 90 ld r0, Z+ + 1710: f0 81 ld r31, Z + 1712: e0 2d mov r30, r0 + 1714: e6 0f add r30, r22 + 1716: f7 1f adc r31, r23 + 1718: 80 81 ld r24, Z + 171a: 08 95 ret + +0000171c <_ZN6String9setCharAtEjc>: + 171c: dc 01 movw r26, r24 + 171e: ed 91 ld r30, X+ + 1720: fc 91 ld r31, X + 1722: 11 97 sbiw r26, 0x01 ; 1 + 1724: 30 97 sbiw r30, 0x00 ; 0 + 1726: 51 f0 breq .+20 ; 0x173c <_ZN6String9setCharAtEjc+0x20> + 1728: 14 96 adiw r26, 0x04 ; 4 + 172a: 8d 91 ld r24, X+ + 172c: 9c 91 ld r25, X + 172e: 15 97 sbiw r26, 0x05 ; 5 + 1730: 68 17 cp r22, r24 + 1732: 79 07 cpc r23, r25 + 1734: 18 f4 brcc .+6 ; 0x173c <_ZN6String9setCharAtEjc+0x20> + 1736: e6 0f add r30, r22 + 1738: f7 1f adc r31, r23 + 173a: 40 83 st Z, r20 + 173c: 08 95 ret + +0000173e <_ZN6StringixEj>: + 173e: fc 01 movw r30, r24 + 1740: 9b 01 movw r18, r22 + 1742: 84 81 ldd r24, Z+4 ; 0x04 + 1744: 95 81 ldd r25, Z+5 ; 0x05 + 1746: 68 17 cp r22, r24 + 1748: 79 07 cpc r23, r25 + 174a: 28 f4 brcc .+10 ; 0x1756 <_ZN6StringixEj+0x18> + 174c: 60 81 ld r22, Z + 174e: 71 81 ldd r23, Z+1 ; 0x01 + 1750: 61 15 cp r22, r1 + 1752: 71 05 cpc r23, r1 + 1754: 29 f4 brne .+10 ; 0x1760 <_ZN6StringixEj+0x22> + 1756: 10 92 84 03 sts 0x0384, r1 + 175a: 64 e8 ldi r22, 0x84 ; 132 + 175c: 73 e0 ldi r23, 0x03 ; 3 + 175e: 02 c0 rjmp .+4 ; 0x1764 <_ZN6StringixEj+0x26> + 1760: 62 0f add r22, r18 + 1762: 73 1f adc r23, r19 + 1764: cb 01 movw r24, r22 + 1766: 08 95 ret + +00001768 <_ZNK6StringixEj>: + 1768: fc 01 movw r30, r24 + 176a: 01 90 ld r0, Z+ + 176c: f0 81 ld r31, Z + 176e: e0 2d mov r30, r0 + 1770: e6 0f add r30, r22 + 1772: f7 1f adc r31, r23 + 1774: 80 81 ld r24, Z + 1776: 08 95 ret + +00001778 <_ZN6String5toIntEv>: + 1778: fc 01 movw r30, r24 + 177a: 80 81 ld r24, Z + 177c: 91 81 ldd r25, Z+1 ; 0x01 + 177e: 0e 94 c0 20 call 0x4180 ; 0x4180 + 1782: 08 95 ret + +00001784 <_ZN6String11toCharArrayEPcj>: + 1784: 0f 93 push r16 + 1786: 1f 93 push r17 + 1788: cf 93 push r28 + 178a: df 93 push r29 + 178c: fc 01 movw r30, r24 + 178e: 8b 01 movw r16, r22 + 1790: 41 15 cp r20, r1 + 1792: 51 05 cpc r21, r1 + 1794: a1 f0 breq .+40 ; 0x17be <_ZN6String11toCharArrayEPcj+0x3a> + 1796: 61 15 cp r22, r1 + 1798: 71 05 cpc r23, r1 + 179a: 89 f0 breq .+34 ; 0x17be <_ZN6String11toCharArrayEPcj+0x3a> + 179c: 84 81 ldd r24, Z+4 ; 0x04 + 179e: 95 81 ldd r25, Z+5 ; 0x05 + 17a0: ea 01 movw r28, r20 + 17a2: 21 97 sbiw r28, 0x01 ; 1 + 17a4: 8c 17 cp r24, r28 + 17a6: 9d 07 cpc r25, r29 + 17a8: 08 f4 brcc .+2 ; 0x17ac <_ZN6String11toCharArrayEPcj+0x28> + 17aa: ec 01 movw r28, r24 + 17ac: 60 81 ld r22, Z + 17ae: 71 81 ldd r23, Z+1 ; 0x01 + 17b0: c8 01 movw r24, r16 + 17b2: ae 01 movw r20, r28 + 17b4: 0e 94 3c 21 call 0x4278 ; 0x4278 + 17b8: c0 0f add r28, r16 + 17ba: d1 1f adc r29, r17 + 17bc: 18 82 st Y, r1 + 17be: df 91 pop r29 + 17c0: cf 91 pop r28 + 17c2: 1f 91 pop r17 + 17c4: 0f 91 pop r16 + 17c6: 08 95 ret + +000017c8 <_ZN6String8getBytesEPhj>: + 17c8: 0f 93 push r16 + 17ca: 1f 93 push r17 + 17cc: cf 93 push r28 + 17ce: df 93 push r29 + 17d0: fc 01 movw r30, r24 + 17d2: 8b 01 movw r16, r22 + 17d4: 41 15 cp r20, r1 + 17d6: 51 05 cpc r21, r1 + 17d8: a1 f0 breq .+40 ; 0x1802 <_ZN6String8getBytesEPhj+0x3a> + 17da: 61 15 cp r22, r1 + 17dc: 71 05 cpc r23, r1 + 17de: 89 f0 breq .+34 ; 0x1802 <_ZN6String8getBytesEPhj+0x3a> + 17e0: 84 81 ldd r24, Z+4 ; 0x04 + 17e2: 95 81 ldd r25, Z+5 ; 0x05 + 17e4: ea 01 movw r28, r20 + 17e6: 21 97 sbiw r28, 0x01 ; 1 + 17e8: 8c 17 cp r24, r28 + 17ea: 9d 07 cpc r25, r29 + 17ec: 08 f4 brcc .+2 ; 0x17f0 <_ZN6String8getBytesEPhj+0x28> + 17ee: ec 01 movw r28, r24 + 17f0: 60 81 ld r22, Z + 17f2: 71 81 ldd r23, Z+1 ; 0x01 + 17f4: c8 01 movw r24, r16 + 17f6: ae 01 movw r20, r28 + 17f8: 0e 94 3c 21 call 0x4278 ; 0x4278 + 17fc: c0 0f add r28, r16 + 17fe: d1 1f adc r29, r17 + 1800: 18 82 st Y, r1 + 1802: df 91 pop r29 + 1804: cf 91 pop r28 + 1806: 1f 91 pop r17 + 1808: 0f 91 pop r16 + 180a: 08 95 ret + +0000180c <_ZN6StringD1Ev>: + 180c: 0f 93 push r16 + 180e: 1f 93 push r17 + 1810: 8c 01 movw r16, r24 + 1812: fc 01 movw r30, r24 + 1814: 80 81 ld r24, Z + 1816: 91 81 ldd r25, Z+1 ; 0x01 + 1818: 0e 94 39 1f call 0x3e72 ; 0x3e72 + 181c: f8 01 movw r30, r16 + 181e: 13 82 std Z+3, r1 ; 0x03 + 1820: 12 82 std Z+2, r1 ; 0x02 + 1822: 15 82 std Z+5, r1 ; 0x05 + 1824: 14 82 std Z+4, r1 ; 0x04 + 1826: 1f 91 pop r17 + 1828: 0f 91 pop r16 + 182a: 08 95 ret + +0000182c <_ZNK6String10startsWithERKS_j>: + 182c: fc 01 movw r30, r24 + 182e: db 01 movw r26, r22 + 1830: 14 96 adiw r26, 0x04 ; 4 + 1832: 2d 91 ld r18, X+ + 1834: 3c 91 ld r19, X + 1836: 15 97 sbiw r26, 0x05 ; 5 + 1838: 84 81 ldd r24, Z+4 ; 0x04 + 183a: 95 81 ldd r25, Z+5 ; 0x05 + 183c: 82 1b sub r24, r18 + 183e: 93 0b sbc r25, r19 + 1840: 84 17 cp r24, r20 + 1842: 95 07 cpc r25, r21 + 1844: 10 f4 brcc .+4 ; 0x184a <_ZNK6String10startsWithERKS_j+0x1e> + 1846: 80 e0 ldi r24, 0x00 ; 0 + 1848: 08 95 ret + 184a: 80 81 ld r24, Z + 184c: 91 81 ldd r25, Z+1 ; 0x01 + 184e: 6d 91 ld r22, X+ + 1850: 7c 91 ld r23, X + 1852: 84 0f add r24, r20 + 1854: 95 1f adc r25, r21 + 1856: a9 01 movw r20, r18 + 1858: 0e 94 2e 21 call 0x425c ; 0x425c + 185c: 9c 01 movw r18, r24 + 185e: 80 e0 ldi r24, 0x00 ; 0 + 1860: 23 2b or r18, r19 + 1862: 09 f4 brne .+2 ; 0x1866 <_ZNK6String10startsWithERKS_j+0x3a> + 1864: 81 e0 ldi r24, 0x01 ; 1 + 1866: 08 95 ret + +00001868 <_ZNK6String10startsWithERKS_>: + 1868: fc 01 movw r30, r24 + 186a: db 01 movw r26, r22 + 186c: 24 81 ldd r18, Z+4 ; 0x04 + 186e: 35 81 ldd r19, Z+5 ; 0x05 + 1870: 14 96 adiw r26, 0x04 ; 4 + 1872: 8d 91 ld r24, X+ + 1874: 9c 91 ld r25, X + 1876: 15 97 sbiw r26, 0x05 ; 5 + 1878: 28 17 cp r18, r24 + 187a: 39 07 cpc r19, r25 + 187c: 10 f4 brcc .+4 ; 0x1882 <_ZNK6String10startsWithERKS_+0x1a> + 187e: 80 e0 ldi r24, 0x00 ; 0 + 1880: 08 95 ret + 1882: cf 01 movw r24, r30 + 1884: 40 e0 ldi r20, 0x00 ; 0 + 1886: 50 e0 ldi r21, 0x00 ; 0 + 1888: 0e 94 16 0c call 0x182c ; 0x182c <_ZNK6String10startsWithERKS_j> + 188c: 08 95 ret + +0000188e <_ZNK6String11lastIndexOfEcj>: + 188e: df 92 push r13 + 1890: ef 92 push r14 + 1892: ff 92 push r15 + 1894: 0f 93 push r16 + 1896: 1f 93 push r17 + 1898: cf 93 push r28 + 189a: df 93 push r29 + 189c: ec 01 movw r28, r24 + 189e: 8c 81 ldd r24, Y+4 ; 0x04 + 18a0: 9d 81 ldd r25, Y+5 ; 0x05 + 18a2: 48 17 cp r20, r24 + 18a4: 59 07 cpc r21, r25 + 18a6: c8 f4 brcc .+50 ; 0x18da <_ZNK6String11lastIndexOfEcj+0x4c> + 18a8: 7a 01 movw r14, r20 + 18aa: 08 94 sec + 18ac: e1 1c adc r14, r1 + 18ae: f1 1c adc r15, r1 + 18b0: e8 81 ld r30, Y + 18b2: f9 81 ldd r31, Y+1 ; 0x01 + 18b4: ee 0d add r30, r14 + 18b6: ff 1d adc r31, r15 + 18b8: d0 80 ld r13, Z + 18ba: 10 82 st Z, r1 + 18bc: 08 81 ld r16, Y + 18be: 19 81 ldd r17, Y+1 ; 0x01 + 18c0: 77 27 eor r23, r23 + 18c2: 67 fd sbrc r22, 7 + 18c4: 70 95 com r23 + 18c6: c8 01 movw r24, r16 + 18c8: 0e 94 4b 21 call 0x4296 ; 0x4296 + 18cc: 9c 01 movw r18, r24 + 18ce: 0e 0d add r16, r14 + 18d0: 1f 1d adc r17, r15 + 18d2: f8 01 movw r30, r16 + 18d4: d0 82 st Z, r13 + 18d6: 00 97 sbiw r24, 0x00 ; 0 + 18d8: 19 f4 brne .+6 ; 0x18e0 <_ZNK6String11lastIndexOfEcj+0x52> + 18da: ef ef ldi r30, 0xFF ; 255 + 18dc: ff ef ldi r31, 0xFF ; 255 + 18de: 05 c0 rjmp .+10 ; 0x18ea <_ZNK6String11lastIndexOfEcj+0x5c> + 18e0: 88 81 ld r24, Y + 18e2: 99 81 ldd r25, Y+1 ; 0x01 + 18e4: f9 01 movw r30, r18 + 18e6: e8 1b sub r30, r24 + 18e8: f9 0b sbc r31, r25 + 18ea: cf 01 movw r24, r30 + 18ec: df 91 pop r29 + 18ee: cf 91 pop r28 + 18f0: 1f 91 pop r17 + 18f2: 0f 91 pop r16 + 18f4: ff 90 pop r15 + 18f6: ef 90 pop r14 + 18f8: df 90 pop r13 + 18fa: 08 95 ret + +000018fc <_ZNK6String11lastIndexOfEc>: + 18fc: fc 01 movw r30, r24 + 18fe: 44 81 ldd r20, Z+4 ; 0x04 + 1900: 55 81 ldd r21, Z+5 ; 0x05 + 1902: 41 50 subi r20, 0x01 ; 1 + 1904: 50 40 sbci r21, 0x00 ; 0 + 1906: 0e 94 47 0c call 0x188e ; 0x188e <_ZNK6String11lastIndexOfEcj> + 190a: 08 95 ret + +0000190c <_ZNK6String7indexOfERKS_j>: + 190c: cf 93 push r28 + 190e: df 93 push r29 + 1910: fc 01 movw r30, r24 + 1912: db 01 movw r26, r22 + 1914: 84 81 ldd r24, Z+4 ; 0x04 + 1916: 95 81 ldd r25, Z+5 ; 0x05 + 1918: 48 17 cp r20, r24 + 191a: 59 07 cpc r21, r25 + 191c: 60 f4 brcc .+24 ; 0x1936 <_ZNK6String7indexOfERKS_j+0x2a> + 191e: c0 81 ld r28, Z + 1920: d1 81 ldd r29, Z+1 ; 0x01 + 1922: 6d 91 ld r22, X+ + 1924: 7c 91 ld r23, X + 1926: ce 01 movw r24, r28 + 1928: 84 0f add r24, r20 + 192a: 95 1f adc r25, r21 + 192c: 0e 94 56 21 call 0x42ac ; 0x42ac + 1930: 9c 01 movw r18, r24 + 1932: 00 97 sbiw r24, 0x00 ; 0 + 1934: 19 f4 brne .+6 ; 0x193c <_ZNK6String7indexOfERKS_j+0x30> + 1936: 2f ef ldi r18, 0xFF ; 255 + 1938: 3f ef ldi r19, 0xFF ; 255 + 193a: 02 c0 rjmp .+4 ; 0x1940 <_ZNK6String7indexOfERKS_j+0x34> + 193c: 2c 1b sub r18, r28 + 193e: 3d 0b sbc r19, r29 + 1940: c9 01 movw r24, r18 + 1942: df 91 pop r29 + 1944: cf 91 pop r28 + 1946: 08 95 ret + +00001948 <_ZNK6String7indexOfERKS_>: + 1948: 40 e0 ldi r20, 0x00 ; 0 + 194a: 50 e0 ldi r21, 0x00 ; 0 + 194c: 0e 94 86 0c call 0x190c ; 0x190c <_ZNK6String7indexOfERKS_j> + 1950: 08 95 ret + +00001952 <_ZNK6String7indexOfEcj>: + 1952: cf 93 push r28 + 1954: df 93 push r29 + 1956: fc 01 movw r30, r24 + 1958: 84 81 ldd r24, Z+4 ; 0x04 + 195a: 95 81 ldd r25, Z+5 ; 0x05 + 195c: 48 17 cp r20, r24 + 195e: 59 07 cpc r21, r25 + 1960: 68 f4 brcc .+26 ; 0x197c <_ZNK6String7indexOfEcj+0x2a> + 1962: c0 81 ld r28, Z + 1964: d1 81 ldd r29, Z+1 ; 0x01 + 1966: 77 27 eor r23, r23 + 1968: 67 fd sbrc r22, 7 + 196a: 70 95 com r23 + 196c: ce 01 movw r24, r28 + 196e: 84 0f add r24, r20 + 1970: 95 1f adc r25, r21 + 1972: 0e 94 13 21 call 0x4226 ; 0x4226 + 1976: 9c 01 movw r18, r24 + 1978: 00 97 sbiw r24, 0x00 ; 0 + 197a: 19 f4 brne .+6 ; 0x1982 <_ZNK6String7indexOfEcj+0x30> + 197c: 2f ef ldi r18, 0xFF ; 255 + 197e: 3f ef ldi r19, 0xFF ; 255 + 1980: 02 c0 rjmp .+4 ; 0x1986 <_ZNK6String7indexOfEcj+0x34> + 1982: 2c 1b sub r18, r28 + 1984: 3d 0b sbc r19, r29 + 1986: c9 01 movw r24, r18 + 1988: df 91 pop r29 + 198a: cf 91 pop r28 + 198c: 08 95 ret + +0000198e <_ZNK6String7indexOfEc>: + 198e: 40 e0 ldi r20, 0x00 ; 0 + 1990: 50 e0 ldi r21, 0x00 ; 0 + 1992: 0e 94 a9 0c call 0x1952 ; 0x1952 <_ZNK6String7indexOfEcj> + 1996: 08 95 ret + +00001998 <_ZNK6String6equalsERKS_>: + 1998: dc 01 movw r26, r24 + 199a: fb 01 movw r30, r22 + 199c: 14 96 adiw r26, 0x04 ; 4 + 199e: 2d 91 ld r18, X+ + 19a0: 3c 91 ld r19, X + 19a2: 15 97 sbiw r26, 0x05 ; 5 + 19a4: 84 81 ldd r24, Z+4 ; 0x04 + 19a6: 95 81 ldd r25, Z+5 ; 0x05 + 19a8: 28 17 cp r18, r24 + 19aa: 39 07 cpc r19, r25 + 19ac: 11 f0 breq .+4 ; 0x19b2 <_ZNK6String6equalsERKS_+0x1a> + 19ae: 80 e0 ldi r24, 0x00 ; 0 + 19b0: 08 95 ret + 19b2: 60 81 ld r22, Z + 19b4: 71 81 ldd r23, Z+1 ; 0x01 + 19b6: 8d 91 ld r24, X+ + 19b8: 9c 91 ld r25, X + 19ba: 0e 94 1e 21 call 0x423c ; 0x423c + 19be: 9c 01 movw r18, r24 + 19c0: 80 e0 ldi r24, 0x00 ; 0 + 19c2: 23 2b or r18, r19 + 19c4: 09 f4 brne .+2 ; 0x19c8 <_ZNK6String6equalsERKS_+0x30> + 19c6: 81 e0 ldi r24, 0x01 ; 1 + 19c8: 08 95 ret + +000019ca <_ZNK6String8endsWithERKS_>: + 19ca: fc 01 movw r30, r24 + 19cc: db 01 movw r26, r22 + 19ce: 24 81 ldd r18, Z+4 ; 0x04 + 19d0: 35 81 ldd r19, Z+5 ; 0x05 + 19d2: 14 96 adiw r26, 0x04 ; 4 + 19d4: 8d 91 ld r24, X+ + 19d6: 9c 91 ld r25, X + 19d8: 15 97 sbiw r26, 0x05 ; 5 + 19da: 28 17 cp r18, r24 + 19dc: 39 07 cpc r19, r25 + 19de: 10 f4 brcc .+4 ; 0x19e4 <_ZNK6String8endsWithERKS_+0x1a> + 19e0: 80 e0 ldi r24, 0x00 ; 0 + 19e2: 08 95 ret + 19e4: 28 1b sub r18, r24 + 19e6: 39 0b sbc r19, r25 + 19e8: 80 81 ld r24, Z + 19ea: 91 81 ldd r25, Z+1 ; 0x01 + 19ec: 6d 91 ld r22, X+ + 19ee: 7c 91 ld r23, X + 19f0: 82 0f add r24, r18 + 19f2: 93 1f adc r25, r19 + 19f4: 0e 94 1e 21 call 0x423c ; 0x423c + 19f8: 9c 01 movw r18, r24 + 19fa: 80 e0 ldi r24, 0x00 ; 0 + 19fc: 23 2b or r18, r19 + 19fe: 09 f4 brne .+2 ; 0x1a02 <_ZNK6String8endsWithERKS_+0x38> + 1a00: 81 e0 ldi r24, 0x01 ; 1 + 1a02: 08 95 ret + +00001a04 <_ZNK6StringgeERKS_>: + 1a04: dc 01 movw r26, r24 + 1a06: fb 01 movw r30, r22 + 1a08: 60 81 ld r22, Z + 1a0a: 71 81 ldd r23, Z+1 ; 0x01 + 1a0c: 8d 91 ld r24, X+ + 1a0e: 9c 91 ld r25, X + 1a10: 0e 94 1e 21 call 0x423c ; 0x423c + 1a14: 29 2f mov r18, r25 + 1a16: 33 27 eor r19, r19 + 1a18: 27 fd sbrc r18, 7 + 1a1a: 30 95 com r19 + 1a1c: 20 95 com r18 + 1a1e: 30 95 com r19 + 1a20: 22 27 eor r18, r18 + 1a22: 33 0f add r19, r19 + 1a24: 22 1f adc r18, r18 + 1a26: 33 27 eor r19, r19 + 1a28: c9 01 movw r24, r18 + 1a2a: 08 95 ret + +00001a2c <_ZNK6StringleERKS_>: + 1a2c: dc 01 movw r26, r24 + 1a2e: fb 01 movw r30, r22 + 1a30: 60 81 ld r22, Z + 1a32: 71 81 ldd r23, Z+1 ; 0x01 + 1a34: 8d 91 ld r24, X+ + 1a36: 9c 91 ld r25, X + 1a38: 0e 94 1e 21 call 0x423c ; 0x423c + 1a3c: 40 e0 ldi r20, 0x00 ; 0 + 1a3e: 50 e0 ldi r21, 0x00 ; 0 + 1a40: 18 16 cp r1, r24 + 1a42: 19 06 cpc r1, r25 + 1a44: 14 f0 brlt .+4 ; 0x1a4a <_ZNK6StringleERKS_+0x1e> + 1a46: 41 e0 ldi r20, 0x01 ; 1 + 1a48: 50 e0 ldi r21, 0x00 ; 0 + 1a4a: ca 01 movw r24, r20 + 1a4c: 08 95 ret + +00001a4e <_ZNK6StringgtERKS_>: + 1a4e: dc 01 movw r26, r24 + 1a50: fb 01 movw r30, r22 + 1a52: 60 81 ld r22, Z + 1a54: 71 81 ldd r23, Z+1 ; 0x01 + 1a56: 8d 91 ld r24, X+ + 1a58: 9c 91 ld r25, X + 1a5a: 0e 94 1e 21 call 0x423c ; 0x423c + 1a5e: 40 e0 ldi r20, 0x00 ; 0 + 1a60: 50 e0 ldi r21, 0x00 ; 0 + 1a62: 18 16 cp r1, r24 + 1a64: 19 06 cpc r1, r25 + 1a66: 14 f4 brge .+4 ; 0x1a6c <_ZNK6StringgtERKS_+0x1e> + 1a68: 41 e0 ldi r20, 0x01 ; 1 + 1a6a: 50 e0 ldi r21, 0x00 ; 0 + 1a6c: ca 01 movw r24, r20 + 1a6e: 08 95 ret + +00001a70 <_ZNK6StringltERKS_>: + 1a70: dc 01 movw r26, r24 + 1a72: fb 01 movw r30, r22 + 1a74: 60 81 ld r22, Z + 1a76: 71 81 ldd r23, Z+1 ; 0x01 + 1a78: 8d 91 ld r24, X+ + 1a7a: 9c 91 ld r25, X + 1a7c: 0e 94 1e 21 call 0x423c ; 0x423c + 1a80: 29 2f mov r18, r25 + 1a82: 33 27 eor r19, r19 + 1a84: 27 fd sbrc r18, 7 + 1a86: 30 95 com r19 + 1a88: 22 27 eor r18, r18 + 1a8a: 33 0f add r19, r19 + 1a8c: 22 1f adc r18, r18 + 1a8e: 33 27 eor r19, r19 + 1a90: c9 01 movw r24, r18 + 1a92: 08 95 ret + +00001a94 <_ZNK6StringneERKS_>: + 1a94: dc 01 movw r26, r24 + 1a96: fb 01 movw r30, r22 + 1a98: 14 96 adiw r26, 0x04 ; 4 + 1a9a: 2d 91 ld r18, X+ + 1a9c: 3c 91 ld r19, X + 1a9e: 15 97 sbiw r26, 0x05 ; 5 + 1aa0: 84 81 ldd r24, Z+4 ; 0x04 + 1aa2: 95 81 ldd r25, Z+5 ; 0x05 + 1aa4: 28 17 cp r18, r24 + 1aa6: 39 07 cpc r19, r25 + 1aa8: 51 f4 brne .+20 ; 0x1abe <_ZNK6StringneERKS_+0x2a> + 1aaa: 60 81 ld r22, Z + 1aac: 71 81 ldd r23, Z+1 ; 0x01 + 1aae: 8d 91 ld r24, X+ + 1ab0: 9c 91 ld r25, X + 1ab2: 0e 94 1e 21 call 0x423c ; 0x423c + 1ab6: 9c 01 movw r18, r24 + 1ab8: 80 e0 ldi r24, 0x00 ; 0 + 1aba: 23 2b or r18, r19 + 1abc: 09 f0 breq .+2 ; 0x1ac0 <_ZNK6StringneERKS_+0x2c> + 1abe: 81 e0 ldi r24, 0x01 ; 1 + 1ac0: 90 e0 ldi r25, 0x00 ; 0 + 1ac2: 08 95 ret + +00001ac4 <_ZNK6StringeqERKS_>: + 1ac4: dc 01 movw r26, r24 + 1ac6: fb 01 movw r30, r22 + 1ac8: 14 96 adiw r26, 0x04 ; 4 + 1aca: 2d 91 ld r18, X+ + 1acc: 3c 91 ld r19, X + 1ace: 15 97 sbiw r26, 0x05 ; 5 + 1ad0: 84 81 ldd r24, Z+4 ; 0x04 + 1ad2: 95 81 ldd r25, Z+5 ; 0x05 + 1ad4: 28 17 cp r18, r24 + 1ad6: 39 07 cpc r19, r25 + 1ad8: 11 f0 breq .+4 ; 0x1ade <_ZNK6StringeqERKS_+0x1a> + 1ada: 80 e0 ldi r24, 0x00 ; 0 + 1adc: 0b c0 rjmp .+22 ; 0x1af4 <_ZNK6StringeqERKS_+0x30> + 1ade: 60 81 ld r22, Z + 1ae0: 71 81 ldd r23, Z+1 ; 0x01 + 1ae2: 8d 91 ld r24, X+ + 1ae4: 9c 91 ld r25, X + 1ae6: 0e 94 1e 21 call 0x423c ; 0x423c + 1aea: 9c 01 movw r18, r24 + 1aec: 80 e0 ldi r24, 0x00 ; 0 + 1aee: 23 2b or r18, r19 + 1af0: 09 f4 brne .+2 ; 0x1af4 <_ZNK6StringeqERKS_+0x30> + 1af2: 81 e0 ldi r24, 0x01 ; 1 + 1af4: 90 e0 ldi r25, 0x00 ; 0 + 1af6: 08 95 ret + +00001af8 <_ZNK6String9compareToERKS_>: + 1af8: fc 01 movw r30, r24 + 1afa: db 01 movw r26, r22 + 1afc: 6d 91 ld r22, X+ + 1afe: 7c 91 ld r23, X + 1b00: 80 81 ld r24, Z + 1b02: 91 81 ldd r25, Z+1 ; 0x01 + 1b04: 0e 94 1e 21 call 0x423c ; 0x423c + 1b08: 08 95 ret + +00001b0a <_ZN6StringpLERKS_>: + 1b0a: 0f 93 push r16 + 1b0c: 1f 93 push r17 + 1b0e: cf 93 push r28 + 1b10: df 93 push r29 + 1b12: ec 01 movw r28, r24 + 1b14: 8b 01 movw r16, r22 + 1b16: fb 01 movw r30, r22 + 1b18: 64 81 ldd r22, Z+4 ; 0x04 + 1b1a: 75 81 ldd r23, Z+5 ; 0x05 + 1b1c: 8c 81 ldd r24, Y+4 ; 0x04 + 1b1e: 9d 81 ldd r25, Y+5 ; 0x05 + 1b20: 68 0f add r22, r24 + 1b22: 79 1f adc r23, r25 + 1b24: 7d 83 std Y+5, r23 ; 0x05 + 1b26: 6c 83 std Y+4, r22 ; 0x04 + 1b28: 8a 81 ldd r24, Y+2 ; 0x02 + 1b2a: 9b 81 ldd r25, Y+3 ; 0x03 + 1b2c: 86 17 cp r24, r22 + 1b2e: 97 07 cpc r25, r23 + 1b30: b8 f4 brcc .+46 ; 0x1b60 <_ZN6StringpLERKS_+0x56> + 1b32: 6f 5f subi r22, 0xFF ; 255 + 1b34: 7f 4f sbci r23, 0xFF ; 255 + 1b36: 88 81 ld r24, Y + 1b38: 99 81 ldd r25, Y+1 ; 0x01 + 1b3a: 0e 94 f2 1f call 0x3fe4 ; 0x3fe4 + 1b3e: 4c 81 ldd r20, Y+4 ; 0x04 + 1b40: 5d 81 ldd r21, Y+5 ; 0x05 + 1b42: 00 97 sbiw r24, 0x00 ; 0 + 1b44: 29 f0 breq .+10 ; 0x1b50 <_ZN6StringpLERKS_+0x46> + 1b46: 99 83 std Y+1, r25 ; 0x01 + 1b48: 88 83 st Y, r24 + 1b4a: 5b 83 std Y+3, r21 ; 0x03 + 1b4c: 4a 83 std Y+2, r20 ; 0x02 + 1b4e: 08 c0 rjmp .+16 ; 0x1b60 <_ZN6StringpLERKS_+0x56> + 1b50: f8 01 movw r30, r16 + 1b52: 84 81 ldd r24, Z+4 ; 0x04 + 1b54: 95 81 ldd r25, Z+5 ; 0x05 + 1b56: 48 1b sub r20, r24 + 1b58: 59 0b sbc r21, r25 + 1b5a: 5d 83 std Y+5, r21 ; 0x05 + 1b5c: 4c 83 std Y+4, r20 ; 0x04 + 1b5e: 07 c0 rjmp .+14 ; 0x1b6e <_ZN6StringpLERKS_+0x64> + 1b60: f8 01 movw r30, r16 + 1b62: 60 81 ld r22, Z + 1b64: 71 81 ldd r23, Z+1 ; 0x01 + 1b66: 88 81 ld r24, Y + 1b68: 99 81 ldd r25, Y+1 ; 0x01 + 1b6a: 0e 94 08 21 call 0x4210 ; 0x4210 + 1b6e: ce 01 movw r24, r28 + 1b70: df 91 pop r29 + 1b72: cf 91 pop r28 + 1b74: 1f 91 pop r17 + 1b76: 0f 91 pop r16 + 1b78: 08 95 ret + +00001b7a <_ZN6String6concatERKS_>: + 1b7a: 0e 94 85 0d call 0x1b0a ; 0x1b0a <_ZN6StringpLERKS_> + 1b7e: 08 95 ret + +00001b80 <_ZN6String9getBufferEj>: + 1b80: cf 93 push r28 + 1b82: df 93 push r29 + 1b84: ec 01 movw r28, r24 + 1b86: cb 01 movw r24, r22 + 1b88: 7b 83 std Y+3, r23 ; 0x03 + 1b8a: 6a 83 std Y+2, r22 ; 0x02 + 1b8c: 01 96 adiw r24, 0x01 ; 1 + 1b8e: 0e 94 8c 1e call 0x3d18 ; 0x3d18 + 1b92: 99 83 std Y+1, r25 ; 0x01 + 1b94: 88 83 st Y, r24 + 1b96: 00 97 sbiw r24, 0x00 ; 0 + 1b98: 21 f4 brne .+8 ; 0x1ba2 <_ZN6String9getBufferEj+0x22> + 1b9a: 1b 82 std Y+3, r1 ; 0x03 + 1b9c: 1a 82 std Y+2, r1 ; 0x02 + 1b9e: 1d 82 std Y+5, r1 ; 0x05 + 1ba0: 1c 82 std Y+4, r1 ; 0x04 + 1ba2: df 91 pop r29 + 1ba4: cf 91 pop r28 + 1ba6: 08 95 ret + +00001ba8 <_ZN6StringaSERKS_>: + 1ba8: 0f 93 push r16 + 1baa: 1f 93 push r17 + 1bac: cf 93 push r28 + 1bae: df 93 push r29 + 1bb0: ec 01 movw r28, r24 + 1bb2: 8b 01 movw r16, r22 + 1bb4: 86 17 cp r24, r22 + 1bb6: 97 07 cpc r25, r23 + 1bb8: 09 f1 breq .+66 ; 0x1bfc <_ZN6StringaSERKS_+0x54> + 1bba: fb 01 movw r30, r22 + 1bbc: 24 81 ldd r18, Z+4 ; 0x04 + 1bbe: 35 81 ldd r19, Z+5 ; 0x05 + 1bc0: 8c 81 ldd r24, Y+4 ; 0x04 + 1bc2: 9d 81 ldd r25, Y+5 ; 0x05 + 1bc4: 82 17 cp r24, r18 + 1bc6: 93 07 cpc r25, r19 + 1bc8: 50 f4 brcc .+20 ; 0x1bde <_ZN6StringaSERKS_+0x36> + 1bca: 88 81 ld r24, Y + 1bcc: 99 81 ldd r25, Y+1 ; 0x01 + 1bce: 0e 94 39 1f call 0x3e72 ; 0x3e72 + 1bd2: f8 01 movw r30, r16 + 1bd4: 64 81 ldd r22, Z+4 ; 0x04 + 1bd6: 75 81 ldd r23, Z+5 ; 0x05 + 1bd8: ce 01 movw r24, r28 + 1bda: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1bde: 28 81 ld r18, Y + 1be0: 39 81 ldd r19, Y+1 ; 0x01 + 1be2: 21 15 cp r18, r1 + 1be4: 31 05 cpc r19, r1 + 1be6: 51 f0 breq .+20 ; 0x1bfc <_ZN6StringaSERKS_+0x54> + 1be8: f8 01 movw r30, r16 + 1bea: 84 81 ldd r24, Z+4 ; 0x04 + 1bec: 95 81 ldd r25, Z+5 ; 0x05 + 1bee: 9d 83 std Y+5, r25 ; 0x05 + 1bf0: 8c 83 std Y+4, r24 ; 0x04 + 1bf2: 60 81 ld r22, Z + 1bf4: 71 81 ldd r23, Z+1 ; 0x01 + 1bf6: c9 01 movw r24, r18 + 1bf8: 0e 94 27 21 call 0x424e ; 0x424e + 1bfc: ce 01 movw r24, r28 + 1bfe: df 91 pop r29 + 1c00: cf 91 pop r28 + 1c02: 1f 91 pop r17 + 1c04: 0f 91 pop r16 + 1c06: 08 95 ret + +00001c08 <_ZN6StringC1Eh>: + 1c08: 1f 93 push r17 + 1c0a: cf 93 push r28 + 1c0c: df 93 push r29 + 1c0e: ec 01 movw r28, r24 + 1c10: 16 2f mov r17, r22 + 1c12: 81 e0 ldi r24, 0x01 ; 1 + 1c14: 90 e0 ldi r25, 0x00 ; 0 + 1c16: 9d 83 std Y+5, r25 ; 0x05 + 1c18: 8c 83 std Y+4, r24 ; 0x04 + 1c1a: ce 01 movw r24, r28 + 1c1c: 61 e0 ldi r22, 0x01 ; 1 + 1c1e: 70 e0 ldi r23, 0x00 ; 0 + 1c20: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1c24: e8 81 ld r30, Y + 1c26: f9 81 ldd r31, Y+1 ; 0x01 + 1c28: 30 97 sbiw r30, 0x00 ; 0 + 1c2a: 21 f0 breq .+8 ; 0x1c34 <_ZN6StringC1Eh+0x2c> + 1c2c: 10 83 st Z, r17 + 1c2e: e8 81 ld r30, Y + 1c30: f9 81 ldd r31, Y+1 ; 0x01 + 1c32: 11 82 std Z+1, r1 ; 0x01 + 1c34: df 91 pop r29 + 1c36: cf 91 pop r28 + 1c38: 1f 91 pop r17 + 1c3a: 08 95 ret + +00001c3c <_ZN6StringC2Eh>: + 1c3c: 1f 93 push r17 + 1c3e: cf 93 push r28 + 1c40: df 93 push r29 + 1c42: ec 01 movw r28, r24 + 1c44: 16 2f mov r17, r22 + 1c46: 81 e0 ldi r24, 0x01 ; 1 + 1c48: 90 e0 ldi r25, 0x00 ; 0 + 1c4a: 9d 83 std Y+5, r25 ; 0x05 + 1c4c: 8c 83 std Y+4, r24 ; 0x04 + 1c4e: ce 01 movw r24, r28 + 1c50: 61 e0 ldi r22, 0x01 ; 1 + 1c52: 70 e0 ldi r23, 0x00 ; 0 + 1c54: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1c58: e8 81 ld r30, Y + 1c5a: f9 81 ldd r31, Y+1 ; 0x01 + 1c5c: 30 97 sbiw r30, 0x00 ; 0 + 1c5e: 21 f0 breq .+8 ; 0x1c68 <_ZN6StringC2Eh+0x2c> + 1c60: 10 83 st Z, r17 + 1c62: e8 81 ld r30, Y + 1c64: f9 81 ldd r31, Y+1 ; 0x01 + 1c66: 11 82 std Z+1, r1 ; 0x01 + 1c68: df 91 pop r29 + 1c6a: cf 91 pop r28 + 1c6c: 1f 91 pop r17 + 1c6e: 08 95 ret + +00001c70 <_ZN6StringC1Ec>: + 1c70: 1f 93 push r17 + 1c72: cf 93 push r28 + 1c74: df 93 push r29 + 1c76: ec 01 movw r28, r24 + 1c78: 16 2f mov r17, r22 + 1c7a: 81 e0 ldi r24, 0x01 ; 1 + 1c7c: 90 e0 ldi r25, 0x00 ; 0 + 1c7e: 9d 83 std Y+5, r25 ; 0x05 + 1c80: 8c 83 std Y+4, r24 ; 0x04 + 1c82: ce 01 movw r24, r28 + 1c84: 61 e0 ldi r22, 0x01 ; 1 + 1c86: 70 e0 ldi r23, 0x00 ; 0 + 1c88: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1c8c: e8 81 ld r30, Y + 1c8e: f9 81 ldd r31, Y+1 ; 0x01 + 1c90: 30 97 sbiw r30, 0x00 ; 0 + 1c92: 21 f0 breq .+8 ; 0x1c9c <_ZN6StringC1Ec+0x2c> + 1c94: 10 83 st Z, r17 + 1c96: e8 81 ld r30, Y + 1c98: f9 81 ldd r31, Y+1 ; 0x01 + 1c9a: 11 82 std Z+1, r1 ; 0x01 + 1c9c: df 91 pop r29 + 1c9e: cf 91 pop r28 + 1ca0: 1f 91 pop r17 + 1ca2: 08 95 ret + +00001ca4 <_ZN6StringC2Ec>: + 1ca4: 1f 93 push r17 + 1ca6: cf 93 push r28 + 1ca8: df 93 push r29 + 1caa: ec 01 movw r28, r24 + 1cac: 16 2f mov r17, r22 + 1cae: 81 e0 ldi r24, 0x01 ; 1 + 1cb0: 90 e0 ldi r25, 0x00 ; 0 + 1cb2: 9d 83 std Y+5, r25 ; 0x05 + 1cb4: 8c 83 std Y+4, r24 ; 0x04 + 1cb6: ce 01 movw r24, r28 + 1cb8: 61 e0 ldi r22, 0x01 ; 1 + 1cba: 70 e0 ldi r23, 0x00 ; 0 + 1cbc: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1cc0: e8 81 ld r30, Y + 1cc2: f9 81 ldd r31, Y+1 ; 0x01 + 1cc4: 30 97 sbiw r30, 0x00 ; 0 + 1cc6: 21 f0 breq .+8 ; 0x1cd0 <_ZN6StringC2Ec+0x2c> + 1cc8: 10 83 st Z, r17 + 1cca: e8 81 ld r30, Y + 1ccc: f9 81 ldd r31, Y+1 ; 0x01 + 1cce: 11 82 std Z+1, r1 ; 0x01 + 1cd0: df 91 pop r29 + 1cd2: cf 91 pop r28 + 1cd4: 1f 91 pop r17 + 1cd6: 08 95 ret + +00001cd8 <_ZN6StringC1ERKS_>: + 1cd8: 0f 93 push r16 + 1cda: 1f 93 push r17 + 1cdc: cf 93 push r28 + 1cde: df 93 push r29 + 1ce0: 8c 01 movw r16, r24 + 1ce2: eb 01 movw r28, r22 + 1ce4: 6c 81 ldd r22, Y+4 ; 0x04 + 1ce6: 7d 81 ldd r23, Y+5 ; 0x05 + 1ce8: fc 01 movw r30, r24 + 1cea: 75 83 std Z+5, r23 ; 0x05 + 1cec: 64 83 std Z+4, r22 ; 0x04 + 1cee: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1cf2: f8 01 movw r30, r16 + 1cf4: 80 81 ld r24, Z + 1cf6: 91 81 ldd r25, Z+1 ; 0x01 + 1cf8: 00 97 sbiw r24, 0x00 ; 0 + 1cfa: 21 f0 breq .+8 ; 0x1d04 <_ZN6StringC1ERKS_+0x2c> + 1cfc: 68 81 ld r22, Y + 1cfe: 79 81 ldd r23, Y+1 ; 0x01 + 1d00: 0e 94 27 21 call 0x424e ; 0x424e + 1d04: df 91 pop r29 + 1d06: cf 91 pop r28 + 1d08: 1f 91 pop r17 + 1d0a: 0f 91 pop r16 + 1d0c: 08 95 ret + +00001d0e <_ZN6StringC2ERKS_>: + 1d0e: 0f 93 push r16 + 1d10: 1f 93 push r17 + 1d12: cf 93 push r28 + 1d14: df 93 push r29 + 1d16: 8c 01 movw r16, r24 + 1d18: eb 01 movw r28, r22 + 1d1a: 6c 81 ldd r22, Y+4 ; 0x04 + 1d1c: 7d 81 ldd r23, Y+5 ; 0x05 + 1d1e: fc 01 movw r30, r24 + 1d20: 75 83 std Z+5, r23 ; 0x05 + 1d22: 64 83 std Z+4, r22 ; 0x04 + 1d24: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1d28: f8 01 movw r30, r16 + 1d2a: 80 81 ld r24, Z + 1d2c: 91 81 ldd r25, Z+1 ; 0x01 + 1d2e: 00 97 sbiw r24, 0x00 ; 0 + 1d30: 21 f0 breq .+8 ; 0x1d3a <_ZN6StringC2ERKS_+0x2c> + 1d32: 68 81 ld r22, Y + 1d34: 79 81 ldd r23, Y+1 ; 0x01 + 1d36: 0e 94 27 21 call 0x424e ; 0x424e + 1d3a: df 91 pop r29 + 1d3c: cf 91 pop r28 + 1d3e: 1f 91 pop r17 + 1d40: 0f 91 pop r16 + 1d42: 08 95 ret + +00001d44 <_ZN6StringC1Emi>: + 1d44: ef 92 push r14 + 1d46: ff 92 push r15 + 1d48: 0f 93 push r16 + 1d4a: 1f 93 push r17 + 1d4c: df 93 push r29 + 1d4e: cf 93 push r28 + 1d50: cd b7 in r28, 0x3d ; 61 + 1d52: de b7 in r29, 0x3e ; 62 + 1d54: a1 97 sbiw r28, 0x21 ; 33 + 1d56: 0f b6 in r0, 0x3f ; 63 + 1d58: f8 94 cli + 1d5a: de bf out 0x3e, r29 ; 62 + 1d5c: 0f be out 0x3f, r0 ; 63 + 1d5e: cd bf out 0x3d, r28 ; 61 + 1d60: 8c 01 movw r16, r24 + 1d62: cb 01 movw r24, r22 + 1d64: ba 01 movw r22, r20 + 1d66: 7e 01 movw r14, r28 + 1d68: 08 94 sec + 1d6a: e1 1c adc r14, r1 + 1d6c: f1 1c adc r15, r1 + 1d6e: a7 01 movw r20, r14 + 1d70: 2a e0 ldi r18, 0x0A ; 10 + 1d72: 30 e0 ldi r19, 0x00 ; 0 + 1d74: 0e 94 da 21 call 0x43b4 ; 0x43b4 + 1d78: f7 01 movw r30, r14 + 1d7a: 01 90 ld r0, Z+ + 1d7c: 00 20 and r0, r0 + 1d7e: e9 f7 brne .-6 ; 0x1d7a <_ZN6StringC1Emi+0x36> + 1d80: 31 97 sbiw r30, 0x01 ; 1 + 1d82: ee 19 sub r30, r14 + 1d84: ff 09 sbc r31, r15 + 1d86: d8 01 movw r26, r16 + 1d88: 15 96 adiw r26, 0x05 ; 5 + 1d8a: fc 93 st X, r31 + 1d8c: ee 93 st -X, r30 + 1d8e: 14 97 sbiw r26, 0x04 ; 4 + 1d90: c8 01 movw r24, r16 + 1d92: bf 01 movw r22, r30 + 1d94: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1d98: f8 01 movw r30, r16 + 1d9a: 80 81 ld r24, Z + 1d9c: 91 81 ldd r25, Z+1 ; 0x01 + 1d9e: 00 97 sbiw r24, 0x00 ; 0 + 1da0: 19 f0 breq .+6 ; 0x1da8 <_ZN6StringC1Emi+0x64> + 1da2: b7 01 movw r22, r14 + 1da4: 0e 94 27 21 call 0x424e ; 0x424e + 1da8: a1 96 adiw r28, 0x21 ; 33 + 1daa: 0f b6 in r0, 0x3f ; 63 + 1dac: f8 94 cli + 1dae: de bf out 0x3e, r29 ; 62 + 1db0: 0f be out 0x3f, r0 ; 63 + 1db2: cd bf out 0x3d, r28 ; 61 + 1db4: cf 91 pop r28 + 1db6: df 91 pop r29 + 1db8: 1f 91 pop r17 + 1dba: 0f 91 pop r16 + 1dbc: ff 90 pop r15 + 1dbe: ef 90 pop r14 + 1dc0: 08 95 ret + +00001dc2 <_ZN6StringC2Emi>: + 1dc2: ef 92 push r14 + 1dc4: ff 92 push r15 + 1dc6: 0f 93 push r16 + 1dc8: 1f 93 push r17 + 1dca: df 93 push r29 + 1dcc: cf 93 push r28 + 1dce: cd b7 in r28, 0x3d ; 61 + 1dd0: de b7 in r29, 0x3e ; 62 + 1dd2: a1 97 sbiw r28, 0x21 ; 33 + 1dd4: 0f b6 in r0, 0x3f ; 63 + 1dd6: f8 94 cli + 1dd8: de bf out 0x3e, r29 ; 62 + 1dda: 0f be out 0x3f, r0 ; 63 + 1ddc: cd bf out 0x3d, r28 ; 61 + 1dde: 8c 01 movw r16, r24 + 1de0: cb 01 movw r24, r22 + 1de2: ba 01 movw r22, r20 + 1de4: 7e 01 movw r14, r28 + 1de6: 08 94 sec + 1de8: e1 1c adc r14, r1 + 1dea: f1 1c adc r15, r1 + 1dec: a7 01 movw r20, r14 + 1dee: 2a e0 ldi r18, 0x0A ; 10 + 1df0: 30 e0 ldi r19, 0x00 ; 0 + 1df2: 0e 94 da 21 call 0x43b4 ; 0x43b4 + 1df6: f7 01 movw r30, r14 + 1df8: 01 90 ld r0, Z+ + 1dfa: 00 20 and r0, r0 + 1dfc: e9 f7 brne .-6 ; 0x1df8 <_ZN6StringC2Emi+0x36> + 1dfe: 31 97 sbiw r30, 0x01 ; 1 + 1e00: ee 19 sub r30, r14 + 1e02: ff 09 sbc r31, r15 + 1e04: d8 01 movw r26, r16 + 1e06: 15 96 adiw r26, 0x05 ; 5 + 1e08: fc 93 st X, r31 + 1e0a: ee 93 st -X, r30 + 1e0c: 14 97 sbiw r26, 0x04 ; 4 + 1e0e: c8 01 movw r24, r16 + 1e10: bf 01 movw r22, r30 + 1e12: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1e16: f8 01 movw r30, r16 + 1e18: 80 81 ld r24, Z + 1e1a: 91 81 ldd r25, Z+1 ; 0x01 + 1e1c: 00 97 sbiw r24, 0x00 ; 0 + 1e1e: 19 f0 breq .+6 ; 0x1e26 <_ZN6StringC2Emi+0x64> + 1e20: b7 01 movw r22, r14 + 1e22: 0e 94 27 21 call 0x424e ; 0x424e + 1e26: a1 96 adiw r28, 0x21 ; 33 + 1e28: 0f b6 in r0, 0x3f ; 63 + 1e2a: f8 94 cli + 1e2c: de bf out 0x3e, r29 ; 62 + 1e2e: 0f be out 0x3f, r0 ; 63 + 1e30: cd bf out 0x3d, r28 ; 61 + 1e32: cf 91 pop r28 + 1e34: df 91 pop r29 + 1e36: 1f 91 pop r17 + 1e38: 0f 91 pop r16 + 1e3a: ff 90 pop r15 + 1e3c: ef 90 pop r14 + 1e3e: 08 95 ret + +00001e40 <_ZN6StringC1Eji>: + 1e40: ef 92 push r14 + 1e42: ff 92 push r15 + 1e44: 0f 93 push r16 + 1e46: 1f 93 push r17 + 1e48: df 93 push r29 + 1e4a: cf 93 push r28 + 1e4c: cd b7 in r28, 0x3d ; 61 + 1e4e: de b7 in r29, 0x3e ; 62 + 1e50: a1 97 sbiw r28, 0x21 ; 33 + 1e52: 0f b6 in r0, 0x3f ; 63 + 1e54: f8 94 cli + 1e56: de bf out 0x3e, r29 ; 62 + 1e58: 0f be out 0x3f, r0 ; 63 + 1e5a: cd bf out 0x3d, r28 ; 61 + 1e5c: 8c 01 movw r16, r24 + 1e5e: 9a 01 movw r18, r20 + 1e60: 80 e0 ldi r24, 0x00 ; 0 + 1e62: 90 e0 ldi r25, 0x00 ; 0 + 1e64: 7e 01 movw r14, r28 + 1e66: 08 94 sec + 1e68: e1 1c adc r14, r1 + 1e6a: f1 1c adc r15, r1 + 1e6c: a7 01 movw r20, r14 + 1e6e: 0e 94 da 21 call 0x43b4 ; 0x43b4 + 1e72: f7 01 movw r30, r14 + 1e74: 01 90 ld r0, Z+ + 1e76: 00 20 and r0, r0 + 1e78: e9 f7 brne .-6 ; 0x1e74 <_ZN6StringC1Eji+0x34> + 1e7a: 31 97 sbiw r30, 0x01 ; 1 + 1e7c: ee 19 sub r30, r14 + 1e7e: ff 09 sbc r31, r15 + 1e80: d8 01 movw r26, r16 + 1e82: 15 96 adiw r26, 0x05 ; 5 + 1e84: fc 93 st X, r31 + 1e86: ee 93 st -X, r30 + 1e88: 14 97 sbiw r26, 0x04 ; 4 + 1e8a: c8 01 movw r24, r16 + 1e8c: bf 01 movw r22, r30 + 1e8e: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1e92: f8 01 movw r30, r16 + 1e94: 80 81 ld r24, Z + 1e96: 91 81 ldd r25, Z+1 ; 0x01 + 1e98: 00 97 sbiw r24, 0x00 ; 0 + 1e9a: 19 f0 breq .+6 ; 0x1ea2 <_ZN6StringC1Eji+0x62> + 1e9c: b7 01 movw r22, r14 + 1e9e: 0e 94 27 21 call 0x424e ; 0x424e + 1ea2: a1 96 adiw r28, 0x21 ; 33 + 1ea4: 0f b6 in r0, 0x3f ; 63 + 1ea6: f8 94 cli + 1ea8: de bf out 0x3e, r29 ; 62 + 1eaa: 0f be out 0x3f, r0 ; 63 + 1eac: cd bf out 0x3d, r28 ; 61 + 1eae: cf 91 pop r28 + 1eb0: df 91 pop r29 + 1eb2: 1f 91 pop r17 + 1eb4: 0f 91 pop r16 + 1eb6: ff 90 pop r15 + 1eb8: ef 90 pop r14 + 1eba: 08 95 ret + +00001ebc <_ZN6StringC2Eji>: + 1ebc: ef 92 push r14 + 1ebe: ff 92 push r15 + 1ec0: 0f 93 push r16 + 1ec2: 1f 93 push r17 + 1ec4: df 93 push r29 + 1ec6: cf 93 push r28 + 1ec8: cd b7 in r28, 0x3d ; 61 + 1eca: de b7 in r29, 0x3e ; 62 + 1ecc: a1 97 sbiw r28, 0x21 ; 33 + 1ece: 0f b6 in r0, 0x3f ; 63 + 1ed0: f8 94 cli + 1ed2: de bf out 0x3e, r29 ; 62 + 1ed4: 0f be out 0x3f, r0 ; 63 + 1ed6: cd bf out 0x3d, r28 ; 61 + 1ed8: 8c 01 movw r16, r24 + 1eda: 9a 01 movw r18, r20 + 1edc: 80 e0 ldi r24, 0x00 ; 0 + 1ede: 90 e0 ldi r25, 0x00 ; 0 + 1ee0: 7e 01 movw r14, r28 + 1ee2: 08 94 sec + 1ee4: e1 1c adc r14, r1 + 1ee6: f1 1c adc r15, r1 + 1ee8: a7 01 movw r20, r14 + 1eea: 0e 94 da 21 call 0x43b4 ; 0x43b4 + 1eee: f7 01 movw r30, r14 + 1ef0: 01 90 ld r0, Z+ + 1ef2: 00 20 and r0, r0 + 1ef4: e9 f7 brne .-6 ; 0x1ef0 <_ZN6StringC2Eji+0x34> + 1ef6: 31 97 sbiw r30, 0x01 ; 1 + 1ef8: ee 19 sub r30, r14 + 1efa: ff 09 sbc r31, r15 + 1efc: d8 01 movw r26, r16 + 1efe: 15 96 adiw r26, 0x05 ; 5 + 1f00: fc 93 st X, r31 + 1f02: ee 93 st -X, r30 + 1f04: 14 97 sbiw r26, 0x04 ; 4 + 1f06: c8 01 movw r24, r16 + 1f08: bf 01 movw r22, r30 + 1f0a: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1f0e: f8 01 movw r30, r16 + 1f10: 80 81 ld r24, Z + 1f12: 91 81 ldd r25, Z+1 ; 0x01 + 1f14: 00 97 sbiw r24, 0x00 ; 0 + 1f16: 19 f0 breq .+6 ; 0x1f1e <_ZN6StringC2Eji+0x62> + 1f18: b7 01 movw r22, r14 + 1f1a: 0e 94 27 21 call 0x424e ; 0x424e + 1f1e: a1 96 adiw r28, 0x21 ; 33 + 1f20: 0f b6 in r0, 0x3f ; 63 + 1f22: f8 94 cli + 1f24: de bf out 0x3e, r29 ; 62 + 1f26: 0f be out 0x3f, r0 ; 63 + 1f28: cd bf out 0x3d, r28 ; 61 + 1f2a: cf 91 pop r28 + 1f2c: df 91 pop r29 + 1f2e: 1f 91 pop r17 + 1f30: 0f 91 pop r16 + 1f32: ff 90 pop r15 + 1f34: ef 90 pop r14 + 1f36: 08 95 ret + +00001f38 <_ZN6StringC1EPKc>: + 1f38: 0f 93 push r16 + 1f3a: 1f 93 push r17 + 1f3c: cf 93 push r28 + 1f3e: df 93 push r29 + 1f40: 8c 01 movw r16, r24 + 1f42: eb 01 movw r28, r22 + 1f44: 61 15 cp r22, r1 + 1f46: 71 05 cpc r23, r1 + 1f48: 11 f4 brne .+4 ; 0x1f4e <_ZN6StringC1EPKc+0x16> + 1f4a: c6 ea ldi r28, 0xA6 ; 166 + 1f4c: d1 e0 ldi r29, 0x01 ; 1 + 1f4e: fe 01 movw r30, r28 + 1f50: 01 90 ld r0, Z+ + 1f52: 00 20 and r0, r0 + 1f54: e9 f7 brne .-6 ; 0x1f50 <_ZN6StringC1EPKc+0x18> + 1f56: 31 97 sbiw r30, 0x01 ; 1 + 1f58: ec 1b sub r30, r28 + 1f5a: fd 0b sbc r31, r29 + 1f5c: d8 01 movw r26, r16 + 1f5e: 15 96 adiw r26, 0x05 ; 5 + 1f60: fc 93 st X, r31 + 1f62: ee 93 st -X, r30 + 1f64: 14 97 sbiw r26, 0x04 ; 4 + 1f66: c8 01 movw r24, r16 + 1f68: bf 01 movw r22, r30 + 1f6a: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 1f6e: f8 01 movw r30, r16 + 1f70: 80 81 ld r24, Z + 1f72: 91 81 ldd r25, Z+1 ; 0x01 + 1f74: 00 97 sbiw r24, 0x00 ; 0 + 1f76: 19 f0 breq .+6 ; 0x1f7e <_ZN6StringC1EPKc+0x46> + 1f78: be 01 movw r22, r28 + 1f7a: 0e 94 27 21 call 0x424e ; 0x424e + 1f7e: df 91 pop r29 + 1f80: cf 91 pop r28 + 1f82: 1f 91 pop r17 + 1f84: 0f 91 pop r16 + 1f86: 08 95 ret + +00001f88 <_ZNK6String11toUpperCaseEv>: + 1f88: af 92 push r10 + 1f8a: bf 92 push r11 + 1f8c: cf 92 push r12 + 1f8e: df 92 push r13 + 1f90: ef 92 push r14 + 1f92: ff 92 push r15 + 1f94: 0f 93 push r16 + 1f96: 1f 93 push r17 + 1f98: cf 93 push r28 + 1f9a: df 93 push r29 + 1f9c: b8 2e mov r11, r24 + 1f9e: a9 2e mov r10, r25 + 1fa0: 6b 01 movw r12, r22 + 1fa2: c8 2f mov r28, r24 + 1fa4: d9 2f mov r29, r25 + 1fa6: fb 01 movw r30, r22 + 1fa8: 60 81 ld r22, Z + 1faa: 71 81 ldd r23, Z+1 ; 0x01 + 1fac: ce 01 movw r24, r28 + 1fae: 0e 94 9c 0f call 0x1f38 ; 0x1f38 <_ZN6StringC1EPKc> + 1fb2: ee 24 eor r14, r14 + 1fb4: ff 24 eor r15, r15 + 1fb6: 10 c0 rjmp .+32 ; 0x1fd8 <_ZNK6String11toUpperCaseEv+0x50> + 1fb8: 08 81 ld r16, Y + 1fba: 19 81 ldd r17, Y+1 ; 0x01 + 1fbc: 0e 0d add r16, r14 + 1fbe: 1f 1d adc r17, r15 + 1fc0: f8 01 movw r30, r16 + 1fc2: 80 81 ld r24, Z + 1fc4: 99 27 eor r25, r25 + 1fc6: 87 fd sbrc r24, 7 + 1fc8: 90 95 com r25 + 1fca: 0e 94 f7 20 call 0x41ee ; 0x41ee + 1fce: f8 01 movw r30, r16 + 1fd0: 80 83 st Z, r24 + 1fd2: 08 94 sec + 1fd4: e1 1c adc r14, r1 + 1fd6: f1 1c adc r15, r1 + 1fd8: f6 01 movw r30, r12 + 1fda: 84 81 ldd r24, Z+4 ; 0x04 + 1fdc: 95 81 ldd r25, Z+5 ; 0x05 + 1fde: e8 16 cp r14, r24 + 1fe0: f9 06 cpc r15, r25 + 1fe2: 50 f3 brcs .-44 ; 0x1fb8 <_ZNK6String11toUpperCaseEv+0x30> + 1fe4: 8b 2d mov r24, r11 + 1fe6: 9a 2d mov r25, r10 + 1fe8: df 91 pop r29 + 1fea: cf 91 pop r28 + 1fec: 1f 91 pop r17 + 1fee: 0f 91 pop r16 + 1ff0: ff 90 pop r15 + 1ff2: ef 90 pop r14 + 1ff4: df 90 pop r13 + 1ff6: cf 90 pop r12 + 1ff8: bf 90 pop r11 + 1ffa: af 90 pop r10 + 1ffc: 08 95 ret + +00001ffe <_ZNK6String11toLowerCaseEv>: + 1ffe: af 92 push r10 + 2000: bf 92 push r11 + 2002: cf 92 push r12 + 2004: df 92 push r13 + 2006: ef 92 push r14 + 2008: ff 92 push r15 + 200a: 0f 93 push r16 + 200c: 1f 93 push r17 + 200e: cf 93 push r28 + 2010: df 93 push r29 + 2012: b8 2e mov r11, r24 + 2014: a9 2e mov r10, r25 + 2016: 6b 01 movw r12, r22 + 2018: c8 2f mov r28, r24 + 201a: d9 2f mov r29, r25 + 201c: fb 01 movw r30, r22 + 201e: 60 81 ld r22, Z + 2020: 71 81 ldd r23, Z+1 ; 0x01 + 2022: ce 01 movw r24, r28 + 2024: 0e 94 9c 0f call 0x1f38 ; 0x1f38 <_ZN6StringC1EPKc> + 2028: ee 24 eor r14, r14 + 202a: ff 24 eor r15, r15 + 202c: 10 c0 rjmp .+32 ; 0x204e <_ZNK6String11toLowerCaseEv+0x50> + 202e: 08 81 ld r16, Y + 2030: 19 81 ldd r17, Y+1 ; 0x01 + 2032: 0e 0d add r16, r14 + 2034: 1f 1d adc r17, r15 + 2036: f8 01 movw r30, r16 + 2038: 80 81 ld r24, Z + 203a: 99 27 eor r25, r25 + 203c: 87 fd sbrc r24, 7 + 203e: 90 95 com r25 + 2040: 0e 94 ef 20 call 0x41de ; 0x41de + 2044: f8 01 movw r30, r16 + 2046: 80 83 st Z, r24 + 2048: 08 94 sec + 204a: e1 1c adc r14, r1 + 204c: f1 1c adc r15, r1 + 204e: f6 01 movw r30, r12 + 2050: 84 81 ldd r24, Z+4 ; 0x04 + 2052: 95 81 ldd r25, Z+5 ; 0x05 + 2054: e8 16 cp r14, r24 + 2056: f9 06 cpc r15, r25 + 2058: 50 f3 brcs .-44 ; 0x202e <_ZNK6String11toLowerCaseEv+0x30> + 205a: 8b 2d mov r24, r11 + 205c: 9a 2d mov r25, r10 + 205e: df 91 pop r29 + 2060: cf 91 pop r28 + 2062: 1f 91 pop r17 + 2064: 0f 91 pop r16 + 2066: ff 90 pop r15 + 2068: ef 90 pop r14 + 206a: df 90 pop r13 + 206c: cf 90 pop r12 + 206e: bf 90 pop r11 + 2070: af 90 pop r10 + 2072: 08 95 ret + +00002074 <_ZNK6String16equalsIgnoreCaseERKS_>: + 2074: ef 92 push r14 + 2076: ff 92 push r15 + 2078: 0f 93 push r16 + 207a: 1f 93 push r17 + 207c: df 93 push r29 + 207e: cf 93 push r28 + 2080: cd b7 in r28, 0x3d ; 61 + 2082: de b7 in r29, 0x3e ; 62 + 2084: 2c 97 sbiw r28, 0x0c ; 12 + 2086: 0f b6 in r0, 0x3f ; 63 + 2088: f8 94 cli + 208a: de bf out 0x3e, r29 ; 62 + 208c: 0f be out 0x3f, r0 ; 63 + 208e: cd bf out 0x3d, r28 ; 61 + 2090: fc 01 movw r30, r24 + 2092: 7b 01 movw r14, r22 + 2094: 86 17 cp r24, r22 + 2096: 97 07 cpc r25, r23 + 2098: 11 f4 brne .+4 ; 0x209e <_ZNK6String16equalsIgnoreCaseERKS_+0x2a> + 209a: 01 e0 ldi r16, 0x01 ; 1 + 209c: 29 c0 rjmp .+82 ; 0x20f0 <_ZNK6String16equalsIgnoreCaseERKS_+0x7c> + 209e: 24 81 ldd r18, Z+4 ; 0x04 + 20a0: 35 81 ldd r19, Z+5 ; 0x05 + 20a2: db 01 movw r26, r22 + 20a4: 14 96 adiw r26, 0x04 ; 4 + 20a6: 8d 91 ld r24, X+ + 20a8: 9c 91 ld r25, X + 20aa: 15 97 sbiw r26, 0x05 ; 5 + 20ac: 28 17 cp r18, r24 + 20ae: 39 07 cpc r19, r25 + 20b0: 11 f0 breq .+4 ; 0x20b6 <_ZNK6String16equalsIgnoreCaseERKS_+0x42> + 20b2: 00 e0 ldi r16, 0x00 ; 0 + 20b4: 1d c0 rjmp .+58 ; 0x20f0 <_ZNK6String16equalsIgnoreCaseERKS_+0x7c> + 20b6: ce 01 movw r24, r28 + 20b8: 01 96 adiw r24, 0x01 ; 1 + 20ba: bf 01 movw r22, r30 + 20bc: 0e 94 ff 0f call 0x1ffe ; 0x1ffe <_ZNK6String11toLowerCaseEv> + 20c0: 09 81 ldd r16, Y+1 ; 0x01 + 20c2: 1a 81 ldd r17, Y+2 ; 0x02 + 20c4: ce 01 movw r24, r28 + 20c6: 07 96 adiw r24, 0x07 ; 7 + 20c8: b7 01 movw r22, r14 + 20ca: 0e 94 ff 0f call 0x1ffe ; 0x1ffe <_ZNK6String11toLowerCaseEv> + 20ce: 6f 81 ldd r22, Y+7 ; 0x07 + 20d0: 78 85 ldd r23, Y+8 ; 0x08 + 20d2: c8 01 movw r24, r16 + 20d4: 0e 94 1e 21 call 0x423c ; 0x423c + 20d8: 00 e0 ldi r16, 0x00 ; 0 + 20da: 00 97 sbiw r24, 0x00 ; 0 + 20dc: 09 f4 brne .+2 ; 0x20e0 <_ZNK6String16equalsIgnoreCaseERKS_+0x6c> + 20de: 01 e0 ldi r16, 0x01 ; 1 + 20e0: ce 01 movw r24, r28 + 20e2: 07 96 adiw r24, 0x07 ; 7 + 20e4: 0e 94 06 0c call 0x180c ; 0x180c <_ZN6StringD1Ev> + 20e8: ce 01 movw r24, r28 + 20ea: 01 96 adiw r24, 0x01 ; 1 + 20ec: 0e 94 06 0c call 0x180c ; 0x180c <_ZN6StringD1Ev> + 20f0: 80 2f mov r24, r16 + 20f2: 2c 96 adiw r28, 0x0c ; 12 + 20f4: 0f b6 in r0, 0x3f ; 63 + 20f6: f8 94 cli + 20f8: de bf out 0x3e, r29 ; 62 + 20fa: 0f be out 0x3f, r0 ; 63 + 20fc: cd bf out 0x3d, r28 ; 61 + 20fe: cf 91 pop r28 + 2100: df 91 pop r29 + 2102: 1f 91 pop r17 + 2104: 0f 91 pop r16 + 2106: ff 90 pop r15 + 2108: ef 90 pop r14 + 210a: 08 95 ret + +0000210c <_ZNK6String9substringEjj>: + 210c: cf 92 push r12 + 210e: df 92 push r13 + 2110: ef 92 push r14 + 2112: ff 92 push r15 + 2114: 1f 93 push r17 + 2116: cf 93 push r28 + 2118: df 93 push r29 + 211a: 6c 01 movw r12, r24 + 211c: 7b 01 movw r14, r22 + 211e: b9 01 movw r22, r18 + 2120: 24 17 cp r18, r20 + 2122: 35 07 cpc r19, r21 + 2124: 10 f4 brcc .+4 ; 0x212a <_ZNK6String9substringEjj+0x1e> + 2126: ba 01 movw r22, r20 + 2128: a9 01 movw r20, r18 + 212a: d7 01 movw r26, r14 + 212c: 14 96 adiw r26, 0x04 ; 4 + 212e: 8d 91 ld r24, X+ + 2130: 9c 91 ld r25, X + 2132: 15 97 sbiw r26, 0x05 ; 5 + 2134: eb 01 movw r28, r22 + 2136: 86 17 cp r24, r22 + 2138: 97 07 cpc r25, r23 + 213a: 08 f4 brcc .+2 ; 0x213e <_ZNK6String9substringEjj+0x32> + 213c: ec 01 movw r28, r24 + 213e: d7 01 movw r26, r14 + 2140: ed 91 ld r30, X+ + 2142: fc 91 ld r31, X + 2144: 11 97 sbiw r26, 0x01 ; 1 + 2146: ec 0f add r30, r28 + 2148: fd 1f adc r31, r29 + 214a: 10 81 ld r17, Z + 214c: 10 82 st Z, r1 + 214e: 6d 91 ld r22, X+ + 2150: 7c 91 ld r23, X + 2152: 64 0f add r22, r20 + 2154: 75 1f adc r23, r21 + 2156: c6 01 movw r24, r12 + 2158: 0e 94 9c 0f call 0x1f38 ; 0x1f38 <_ZN6StringC1EPKc> + 215c: d7 01 movw r26, r14 + 215e: ed 91 ld r30, X+ + 2160: fc 91 ld r31, X + 2162: ec 0f add r30, r28 + 2164: fd 1f adc r31, r29 + 2166: 10 83 st Z, r17 + 2168: c6 01 movw r24, r12 + 216a: df 91 pop r29 + 216c: cf 91 pop r28 + 216e: 1f 91 pop r17 + 2170: ff 90 pop r15 + 2172: ef 90 pop r14 + 2174: df 90 pop r13 + 2176: cf 90 pop r12 + 2178: 08 95 ret + +0000217a <_ZNK6String9substringEj>: + 217a: 0f 93 push r16 + 217c: 1f 93 push r17 + 217e: 8c 01 movw r16, r24 + 2180: fb 01 movw r30, r22 + 2182: 24 81 ldd r18, Z+4 ; 0x04 + 2184: 35 81 ldd r19, Z+5 ; 0x05 + 2186: 0e 94 86 10 call 0x210c ; 0x210c <_ZNK6String9substringEjj> + 218a: c8 01 movw r24, r16 + 218c: 1f 91 pop r17 + 218e: 0f 91 pop r16 + 2190: 08 95 ret + +00002192 <_ZNK6String11lastIndexOfERKS_j>: + 2192: 8f 92 push r8 + 2194: 9f 92 push r9 + 2196: af 92 push r10 + 2198: bf 92 push r11 + 219a: cf 92 push r12 + 219c: df 92 push r13 + 219e: ef 92 push r14 + 21a0: ff 92 push r15 + 21a2: 0f 93 push r16 + 21a4: 1f 93 push r17 + 21a6: df 93 push r29 + 21a8: cf 93 push r28 + 21aa: 00 d0 rcall .+0 ; 0x21ac <_ZNK6String11lastIndexOfERKS_j+0x1a> + 21ac: 00 d0 rcall .+0 ; 0x21ae <_ZNK6String11lastIndexOfERKS_j+0x1c> + 21ae: 00 d0 rcall .+0 ; 0x21b0 <_ZNK6String11lastIndexOfERKS_j+0x1e> + 21b0: cd b7 in r28, 0x3d ; 61 + 21b2: de b7 in r29, 0x3e ; 62 + 21b4: 5c 01 movw r10, r24 + 21b6: 6b 01 movw r12, r22 + 21b8: db 01 movw r26, r22 + 21ba: 14 96 adiw r26, 0x04 ; 4 + 21bc: 8d 91 ld r24, X+ + 21be: 9c 91 ld r25, X + 21c0: 15 97 sbiw r26, 0x05 ; 5 + 21c2: 00 97 sbiw r24, 0x00 ; 0 + 21c4: a1 f1 breq .+104 ; 0x222e <_ZNK6String11lastIndexOfERKS_j+0x9c> + 21c6: 01 97 sbiw r24, 0x01 ; 1 + 21c8: 48 17 cp r20, r24 + 21ca: 59 07 cpc r21, r25 + 21cc: 80 f1 brcs .+96 ; 0x222e <_ZNK6String11lastIndexOfERKS_j+0x9c> + 21ce: f5 01 movw r30, r10 + 21d0: 84 81 ldd r24, Z+4 ; 0x04 + 21d2: 95 81 ldd r25, Z+5 ; 0x05 + 21d4: 48 17 cp r20, r24 + 21d6: 59 07 cpc r21, r25 + 21d8: 50 f5 brcc .+84 ; 0x222e <_ZNK6String11lastIndexOfERKS_j+0x9c> + 21da: ed 91 ld r30, X+ + 21dc: fc 91 ld r31, X + 21de: 00 81 ld r16, Z + 21e0: 7a 01 movw r14, r20 + 21e2: 4e 01 movw r8, r28 + 21e4: 08 94 sec + 21e6: 81 1c adc r8, r1 + 21e8: 91 1c adc r9, r1 + 21ea: 1f c0 rjmp .+62 ; 0x222a <_ZNK6String11lastIndexOfERKS_j+0x98> + 21ec: d5 01 movw r26, r10 + 21ee: ed 91 ld r30, X+ + 21f0: fc 91 ld r31, X + 21f2: ee 0d add r30, r14 + 21f4: ff 1d adc r31, r15 + 21f6: 80 81 ld r24, Z + 21f8: 80 17 cp r24, r16 + 21fa: a1 f4 brne .+40 ; 0x2224 <_ZNK6String11lastIndexOfERKS_j+0x92> + 21fc: f6 01 movw r30, r12 + 21fe: 24 81 ldd r18, Z+4 ; 0x04 + 2200: 35 81 ldd r19, Z+5 ; 0x05 + 2202: 2e 0d add r18, r14 + 2204: 3f 1d adc r19, r15 + 2206: c4 01 movw r24, r8 + 2208: b5 01 movw r22, r10 + 220a: a7 01 movw r20, r14 + 220c: 0e 94 86 10 call 0x210c ; 0x210c <_ZNK6String9substringEjj> + 2210: c4 01 movw r24, r8 + 2212: b6 01 movw r22, r12 + 2214: 0e 94 cc 0c call 0x1998 ; 0x1998 <_ZNK6String6equalsERKS_> + 2218: 18 2f mov r17, r24 + 221a: c4 01 movw r24, r8 + 221c: 0e 94 06 0c call 0x180c ; 0x180c <_ZN6StringD1Ev> + 2220: 11 23 and r17, r17 + 2222: 41 f4 brne .+16 ; 0x2234 <_ZNK6String11lastIndexOfERKS_j+0xa2> + 2224: 08 94 sec + 2226: e1 08 sbc r14, r1 + 2228: f1 08 sbc r15, r1 + 222a: f7 fe sbrs r15, 7 + 222c: df cf rjmp .-66 ; 0x21ec <_ZNK6String11lastIndexOfERKS_j+0x5a> + 222e: ee 24 eor r14, r14 + 2230: ea 94 dec r14 + 2232: fe 2c mov r15, r14 + 2234: c7 01 movw r24, r14 + 2236: 26 96 adiw r28, 0x06 ; 6 + 2238: 0f b6 in r0, 0x3f ; 63 + 223a: f8 94 cli + 223c: de bf out 0x3e, r29 ; 62 + 223e: 0f be out 0x3f, r0 ; 63 + 2240: cd bf out 0x3d, r28 ; 61 + 2242: cf 91 pop r28 + 2244: df 91 pop r29 + 2246: 1f 91 pop r17 + 2248: 0f 91 pop r16 + 224a: ff 90 pop r15 + 224c: ef 90 pop r14 + 224e: df 90 pop r13 + 2250: cf 90 pop r12 + 2252: bf 90 pop r11 + 2254: af 90 pop r10 + 2256: 9f 90 pop r9 + 2258: 8f 90 pop r8 + 225a: 08 95 ret + +0000225c <_ZNK6String11lastIndexOfERKS_>: + 225c: fc 01 movw r30, r24 + 225e: db 01 movw r26, r22 + 2260: 44 81 ldd r20, Z+4 ; 0x04 + 2262: 55 81 ldd r21, Z+5 ; 0x05 + 2264: 14 96 adiw r26, 0x04 ; 4 + 2266: 8d 91 ld r24, X+ + 2268: 9c 91 ld r25, X + 226a: 15 97 sbiw r26, 0x05 ; 5 + 226c: 48 1b sub r20, r24 + 226e: 59 0b sbc r21, r25 + 2270: cf 01 movw r24, r30 + 2272: 0e 94 c9 10 call 0x2192 ; 0x2192 <_ZNK6String11lastIndexOfERKS_j> + 2276: 08 95 ret + +00002278 <_ZNK6String4trimEv>: + 2278: af 92 push r10 + 227a: bf 92 push r11 + 227c: cf 92 push r12 + 227e: df 92 push r13 + 2280: ef 92 push r14 + 2282: ff 92 push r15 + 2284: 0f 93 push r16 + 2286: 1f 93 push r17 + 2288: df 93 push r29 + 228a: cf 93 push r28 + 228c: 00 d0 rcall .+0 ; 0x228e <_ZNK6String4trimEv+0x16> + 228e: 00 d0 rcall .+0 ; 0x2290 <_ZNK6String4trimEv+0x18> + 2290: 00 d0 rcall .+0 ; 0x2292 <_ZNK6String4trimEv+0x1a> + 2292: cd b7 in r28, 0x3d ; 61 + 2294: de b7 in r29, 0x3e ; 62 + 2296: 5c 01 movw r10, r24 + 2298: 8b 01 movw r16, r22 + 229a: db 01 movw r26, r22 + 229c: 6d 91 ld r22, X+ + 229e: 7c 91 ld r23, X + 22a0: 61 15 cp r22, r1 + 22a2: 71 05 cpc r23, r1 + 22a4: 21 f4 brne .+8 ; 0x22ae <_ZNK6String4trimEv+0x36> + 22a6: b8 01 movw r22, r16 + 22a8: 0e 94 6c 0e call 0x1cd8 ; 0x1cd8 <_ZN6StringC1ERKS_> + 22ac: 42 c0 rjmp .+132 ; 0x2332 <_ZNK6String4trimEv+0xba> + 22ae: ce 01 movw r24, r28 + 22b0: 01 96 adiw r24, 0x01 ; 1 + 22b2: 0e 94 9c 0f call 0x1f38 ; 0x1f38 <_ZN6StringC1EPKc> + 22b6: f8 01 movw r30, r16 + 22b8: e4 80 ldd r14, Z+4 ; 0x04 + 22ba: f5 80 ldd r15, Z+5 ; 0x05 + 22bc: cc 24 eor r12, r12 + 22be: dd 24 eor r13, r13 + 22c0: 10 c0 rjmp .+32 ; 0x22e2 <_ZNK6String4trimEv+0x6a> + 22c2: d8 01 movw r26, r16 + 22c4: ed 91 ld r30, X+ + 22c6: fc 91 ld r31, X + 22c8: ec 0d add r30, r12 + 22ca: fd 1d adc r31, r13 + 22cc: 80 81 ld r24, Z + 22ce: 99 27 eor r25, r25 + 22d0: 87 fd sbrc r24, 7 + 22d2: 90 95 com r25 + 22d4: 0e 94 e7 20 call 0x41ce ; 0x41ce + 22d8: 89 2b or r24, r25 + 22da: 31 f0 breq .+12 ; 0x22e8 <_ZNK6String4trimEv+0x70> + 22dc: 08 94 sec + 22de: c1 1c adc r12, r1 + 22e0: d1 1c adc r13, r1 + 22e2: ce 14 cp r12, r14 + 22e4: df 04 cpc r13, r15 + 22e6: 68 f3 brcs .-38 ; 0x22c2 <_ZNK6String4trimEv+0x4a> + 22e8: ed 80 ldd r14, Y+5 ; 0x05 + 22ea: fe 80 ldd r15, Y+6 ; 0x06 + 22ec: 0d c0 rjmp .+26 ; 0x2308 <_ZNK6String4trimEv+0x90> + 22ee: d8 01 movw r26, r16 + 22f0: ed 91 ld r30, X+ + 22f2: fc 91 ld r31, X + 22f4: ee 0d add r30, r14 + 22f6: ff 1d adc r31, r15 + 22f8: 80 81 ld r24, Z + 22fa: 99 27 eor r25, r25 + 22fc: 87 fd sbrc r24, 7 + 22fe: 90 95 com r25 + 2300: 0e 94 e7 20 call 0x41ce ; 0x41ce + 2304: 89 2b or r24, r25 + 2306: 31 f0 breq .+12 ; 0x2314 <_ZNK6String4trimEv+0x9c> + 2308: 08 94 sec + 230a: e1 08 sbc r14, r1 + 230c: f1 08 sbc r15, r1 + 230e: ce 14 cp r12, r14 + 2310: df 04 cpc r13, r15 + 2312: 68 f3 brcs .-38 ; 0x22ee <_ZNK6String4trimEv+0x76> + 2314: 08 94 sec + 2316: e1 1c adc r14, r1 + 2318: f1 1c adc r15, r1 + 231a: c5 01 movw r24, r10 + 231c: 8e 01 movw r16, r28 + 231e: 0f 5f subi r16, 0xFF ; 255 + 2320: 1f 4f sbci r17, 0xFF ; 255 + 2322: b8 01 movw r22, r16 + 2324: a6 01 movw r20, r12 + 2326: 97 01 movw r18, r14 + 2328: 0e 94 86 10 call 0x210c ; 0x210c <_ZNK6String9substringEjj> + 232c: c8 01 movw r24, r16 + 232e: 0e 94 06 0c call 0x180c ; 0x180c <_ZN6StringD1Ev> + 2332: c5 01 movw r24, r10 + 2334: 26 96 adiw r28, 0x06 ; 6 + 2336: 0f b6 in r0, 0x3f ; 63 + 2338: f8 94 cli + 233a: de bf out 0x3e, r29 ; 62 + 233c: 0f be out 0x3f, r0 ; 63 + 233e: cd bf out 0x3d, r28 ; 61 + 2340: cf 91 pop r28 + 2342: df 91 pop r29 + 2344: 1f 91 pop r17 + 2346: 0f 91 pop r16 + 2348: ff 90 pop r15 + 234a: ef 90 pop r14 + 234c: df 90 pop r13 + 234e: cf 90 pop r12 + 2350: bf 90 pop r11 + 2352: af 90 pop r10 + 2354: 08 95 ret + +00002356 <_ZN6String7replaceERKS_S1_>: + 2356: 2f 92 push r2 + 2358: 3f 92 push r3 + 235a: 4f 92 push r4 + 235c: 5f 92 push r5 + 235e: 6f 92 push r6 + 2360: 7f 92 push r7 + 2362: 8f 92 push r8 + 2364: 9f 92 push r9 + 2366: af 92 push r10 + 2368: bf 92 push r11 + 236a: cf 92 push r12 + 236c: df 92 push r13 + 236e: ef 92 push r14 + 2370: ff 92 push r15 + 2372: 0f 93 push r16 + 2374: 1f 93 push r17 + 2376: df 93 push r29 + 2378: cf 93 push r28 + 237a: cd b7 in r28, 0x3d ; 61 + 237c: de b7 in r29, 0x3e ; 62 + 237e: 68 97 sbiw r28, 0x18 ; 24 + 2380: 0f b6 in r0, 0x3f ; 63 + 2382: f8 94 cli + 2384: de bf out 0x3e, r29 ; 62 + 2386: 0f be out 0x3f, r0 ; 63 + 2388: cd bf out 0x3d, r28 ; 61 + 238a: 3c 01 movw r6, r24 + 238c: fb 01 movw r30, r22 + 238e: 2a 01 movw r4, r20 + 2390: 19 01 movw r2, r18 + 2392: 60 81 ld r22, Z + 2394: 71 81 ldd r23, Z+1 ; 0x01 + 2396: 61 15 cp r22, r1 + 2398: 71 05 cpc r23, r1 + 239a: 21 f4 brne .+8 ; 0x23a4 <_ZN6String7replaceERKS_S1_+0x4e> + 239c: bf 01 movw r22, r30 + 239e: 0e 94 6c 0e call 0x1cd8 ; 0x1cd8 <_ZN6StringC1ERKS_> + 23a2: 5a c0 rjmp .+180 ; 0x2458 <_ZN6String7replaceERKS_S1_+0x102> + 23a4: 7e 01 movw r14, r28 + 23a6: 08 94 sec + 23a8: e1 1c adc r14, r1 + 23aa: f1 1c adc r15, r1 + 23ac: c7 01 movw r24, r14 + 23ae: 0e 94 9c 0f call 0x1f38 ; 0x1f38 <_ZN6StringC1EPKc> + 23b2: 8e 01 movw r16, r28 + 23b4: 09 5f subi r16, 0xF9 ; 249 + 23b6: 1f 4f sbci r17, 0xFF ; 255 + 23b8: c8 01 movw r24, r16 + 23ba: 66 ea ldi r22, 0xA6 ; 166 + 23bc: 71 e0 ldi r23, 0x01 ; 1 + 23be: 0e 94 9c 0f call 0x1f38 ; 0x1f38 <_ZN6StringC1EPKc> + 23c2: d0 2e mov r13, r16 + 23c4: c1 2e mov r12, r17 + 23c6: 3d e0 ldi r19, 0x0D ; 13 + 23c8: 83 2e mov r8, r19 + 23ca: 91 2c mov r9, r1 + 23cc: 8c 0e add r8, r28 + 23ce: 9d 1e adc r9, r29 + 23d0: 23 e1 ldi r18, 0x13 ; 19 + 23d2: a2 2e mov r10, r18 + 23d4: b1 2c mov r11, r1 + 23d6: ac 0e add r10, r28 + 23d8: bd 1e adc r11, r29 + 23da: 24 c0 rjmp .+72 ; 0x2424 <_ZN6String7replaceERKS_S1_+0xce> + 23dc: c4 01 movw r24, r8 + 23de: b7 01 movw r22, r14 + 23e0: 40 e0 ldi r20, 0x00 ; 0 + 23e2: 50 e0 ldi r21, 0x00 ; 0 + 23e4: 98 01 movw r18, r16 + 23e6: 0e 94 86 10 call 0x210c ; 0x210c <_ZNK6String9substringEjj> + 23ea: 8d 2d mov r24, r13 + 23ec: 9c 2d mov r25, r12 + 23ee: b4 01 movw r22, r8 + 23f0: 0e 94 85 0d call 0x1b0a ; 0x1b0a <_ZN6StringpLERKS_> + 23f4: c4 01 movw r24, r8 + 23f6: 0e 94 06 0c call 0x180c ; 0x180c <_ZN6StringD1Ev> + 23fa: 8d 2d mov r24, r13 + 23fc: 9c 2d mov r25, r12 + 23fe: b1 01 movw r22, r2 + 2400: 0e 94 85 0d call 0x1b0a ; 0x1b0a <_ZN6StringpLERKS_> + 2404: f2 01 movw r30, r4 + 2406: 44 81 ldd r20, Z+4 ; 0x04 + 2408: 55 81 ldd r21, Z+5 ; 0x05 + 240a: 40 0f add r20, r16 + 240c: 51 1f adc r21, r17 + 240e: c5 01 movw r24, r10 + 2410: b7 01 movw r22, r14 + 2412: 0e 94 bd 10 call 0x217a ; 0x217a <_ZNK6String9substringEj> + 2416: c7 01 movw r24, r14 + 2418: b5 01 movw r22, r10 + 241a: 0e 94 d4 0d call 0x1ba8 ; 0x1ba8 <_ZN6StringaSERKS_> + 241e: c5 01 movw r24, r10 + 2420: 0e 94 06 0c call 0x180c ; 0x180c <_ZN6StringD1Ev> + 2424: c7 01 movw r24, r14 + 2426: b2 01 movw r22, r4 + 2428: 0e 94 a4 0c call 0x1948 ; 0x1948 <_ZNK6String7indexOfERKS_> + 242c: 8c 01 movw r16, r24 + 242e: ff ef ldi r31, 0xFF ; 255 + 2430: 8f 3f cpi r24, 0xFF ; 255 + 2432: 9f 07 cpc r25, r31 + 2434: 99 f6 brne .-90 ; 0x23dc <_ZN6String7replaceERKS_S1_+0x86> + 2436: 8d 2d mov r24, r13 + 2438: 9c 2d mov r25, r12 + 243a: b7 01 movw r22, r14 + 243c: 0e 94 85 0d call 0x1b0a ; 0x1b0a <_ZN6StringpLERKS_> + 2440: c3 01 movw r24, r6 + 2442: 6d 2d mov r22, r13 + 2444: 7c 2d mov r23, r12 + 2446: 0e 94 6c 0e call 0x1cd8 ; 0x1cd8 <_ZN6StringC1ERKS_> + 244a: 8d 2d mov r24, r13 + 244c: 9c 2d mov r25, r12 + 244e: 0e 94 06 0c call 0x180c ; 0x180c <_ZN6StringD1Ev> + 2452: c7 01 movw r24, r14 + 2454: 0e 94 06 0c call 0x180c ; 0x180c <_ZN6StringD1Ev> + 2458: c3 01 movw r24, r6 + 245a: 68 96 adiw r28, 0x18 ; 24 + 245c: 0f b6 in r0, 0x3f ; 63 + 245e: f8 94 cli + 2460: de bf out 0x3e, r29 ; 62 + 2462: 0f be out 0x3f, r0 ; 63 + 2464: cd bf out 0x3d, r28 ; 61 + 2466: cf 91 pop r28 + 2468: df 91 pop r29 + 246a: 1f 91 pop r17 + 246c: 0f 91 pop r16 + 246e: ff 90 pop r15 + 2470: ef 90 pop r14 + 2472: df 90 pop r13 + 2474: cf 90 pop r12 + 2476: bf 90 pop r11 + 2478: af 90 pop r10 + 247a: 9f 90 pop r9 + 247c: 8f 90 pop r8 + 247e: 7f 90 pop r7 + 2480: 6f 90 pop r6 + 2482: 5f 90 pop r5 + 2484: 4f 90 pop r4 + 2486: 3f 90 pop r3 + 2488: 2f 90 pop r2 + 248a: 08 95 ret + +0000248c <_ZN6String7replaceEcc>: + 248c: df 92 push r13 + 248e: ef 92 push r14 + 2490: ff 92 push r15 + 2492: 0f 93 push r16 + 2494: 1f 93 push r17 + 2496: df 93 push r29 + 2498: cf 93 push r28 + 249a: 00 d0 rcall .+0 ; 0x249c <_ZN6String7replaceEcc+0x10> + 249c: 00 d0 rcall .+0 ; 0x249e <_ZN6String7replaceEcc+0x12> + 249e: 00 d0 rcall .+0 ; 0x24a0 <_ZN6String7replaceEcc+0x14> + 24a0: cd b7 in r28, 0x3d ; 61 + 24a2: de b7 in r29, 0x3e ; 62 + 24a4: 7c 01 movw r14, r24 + 24a6: fb 01 movw r30, r22 + 24a8: 14 2f mov r17, r20 + 24aa: d2 2e mov r13, r18 + 24ac: 60 81 ld r22, Z + 24ae: 71 81 ldd r23, Z+1 ; 0x01 + 24b0: 61 15 cp r22, r1 + 24b2: 71 05 cpc r23, r1 + 24b4: 21 f4 brne .+8 ; 0x24be <_ZN6String7replaceEcc+0x32> + 24b6: bf 01 movw r22, r30 + 24b8: 0e 94 6c 0e call 0x1cd8 ; 0x1cd8 <_ZN6StringC1ERKS_> + 24bc: 1c c0 rjmp .+56 ; 0x24f6 <_ZN6String7replaceEcc+0x6a> + 24be: ce 01 movw r24, r28 + 24c0: 01 96 adiw r24, 0x01 ; 1 + 24c2: 0e 94 9c 0f call 0x1f38 ; 0x1f38 <_ZN6StringC1EPKc> + 24c6: 89 81 ldd r24, Y+1 ; 0x01 + 24c8: 9a 81 ldd r25, Y+2 ; 0x02 + 24ca: 01 2f mov r16, r17 + 24cc: 11 27 eor r17, r17 + 24ce: 07 fd sbrc r16, 7 + 24d0: 10 95 com r17 + 24d2: 01 c0 rjmp .+2 ; 0x24d6 <_ZN6String7replaceEcc+0x4a> + 24d4: d0 82 st Z, r13 + 24d6: b8 01 movw r22, r16 + 24d8: 0e 94 13 21 call 0x4226 ; 0x4226 + 24dc: fc 01 movw r30, r24 + 24de: 00 97 sbiw r24, 0x00 ; 0 + 24e0: c9 f7 brne .-14 ; 0x24d4 <_ZN6String7replaceEcc+0x48> + 24e2: c7 01 movw r24, r14 + 24e4: 8e 01 movw r16, r28 + 24e6: 0f 5f subi r16, 0xFF ; 255 + 24e8: 1f 4f sbci r17, 0xFF ; 255 + 24ea: b8 01 movw r22, r16 + 24ec: 0e 94 6c 0e call 0x1cd8 ; 0x1cd8 <_ZN6StringC1ERKS_> + 24f0: c8 01 movw r24, r16 + 24f2: 0e 94 06 0c call 0x180c ; 0x180c <_ZN6StringD1Ev> + 24f6: c7 01 movw r24, r14 + 24f8: 26 96 adiw r28, 0x06 ; 6 + 24fa: 0f b6 in r0, 0x3f ; 63 + 24fc: f8 94 cli + 24fe: de bf out 0x3e, r29 ; 62 + 2500: 0f be out 0x3f, r0 ; 63 + 2502: cd bf out 0x3d, r28 ; 61 + 2504: cf 91 pop r28 + 2506: df 91 pop r29 + 2508: 1f 91 pop r17 + 250a: 0f 91 pop r16 + 250c: ff 90 pop r15 + 250e: ef 90 pop r14 + 2510: df 90 pop r13 + 2512: 08 95 ret + +00002514 <_ZN6StringC2EPKc>: + 2514: 0f 93 push r16 + 2516: 1f 93 push r17 + 2518: cf 93 push r28 + 251a: df 93 push r29 + 251c: 8c 01 movw r16, r24 + 251e: eb 01 movw r28, r22 + 2520: 61 15 cp r22, r1 + 2522: 71 05 cpc r23, r1 + 2524: 11 f4 brne .+4 ; 0x252a <_ZN6StringC2EPKc+0x16> + 2526: c6 ea ldi r28, 0xA6 ; 166 + 2528: d1 e0 ldi r29, 0x01 ; 1 + 252a: fe 01 movw r30, r28 + 252c: 01 90 ld r0, Z+ + 252e: 00 20 and r0, r0 + 2530: e9 f7 brne .-6 ; 0x252c <_ZN6StringC2EPKc+0x18> + 2532: 31 97 sbiw r30, 0x01 ; 1 + 2534: ec 1b sub r30, r28 + 2536: fd 0b sbc r31, r29 + 2538: d8 01 movw r26, r16 + 253a: 15 96 adiw r26, 0x05 ; 5 + 253c: fc 93 st X, r31 + 253e: ee 93 st -X, r30 + 2540: 14 97 sbiw r26, 0x04 ; 4 + 2542: c8 01 movw r24, r16 + 2544: bf 01 movw r22, r30 + 2546: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 254a: f8 01 movw r30, r16 + 254c: 80 81 ld r24, Z + 254e: 91 81 ldd r25, Z+1 ; 0x01 + 2550: 00 97 sbiw r24, 0x00 ; 0 + 2552: 19 f0 breq .+6 ; 0x255a <_ZN6StringC2EPKc+0x46> + 2554: be 01 movw r22, r28 + 2556: 0e 94 27 21 call 0x424e ; 0x424e + 255a: df 91 pop r29 + 255c: cf 91 pop r28 + 255e: 1f 91 pop r17 + 2560: 0f 91 pop r16 + 2562: 08 95 ret + +00002564 <_ZN6StringC1Eli>: + 2564: ef 92 push r14 + 2566: ff 92 push r15 + 2568: 0f 93 push r16 + 256a: 1f 93 push r17 + 256c: df 93 push r29 + 256e: cf 93 push r28 + 2570: cd b7 in r28, 0x3d ; 61 + 2572: de b7 in r29, 0x3e ; 62 + 2574: a1 97 sbiw r28, 0x21 ; 33 + 2576: 0f b6 in r0, 0x3f ; 63 + 2578: f8 94 cli + 257a: de bf out 0x3e, r29 ; 62 + 257c: 0f be out 0x3f, r0 ; 63 + 257e: cd bf out 0x3d, r28 ; 61 + 2580: 8c 01 movw r16, r24 + 2582: cb 01 movw r24, r22 + 2584: ba 01 movw r22, r20 + 2586: 7e 01 movw r14, r28 + 2588: 08 94 sec + 258a: e1 1c adc r14, r1 + 258c: f1 1c adc r15, r1 + 258e: a7 01 movw r20, r14 + 2590: 0e 94 91 21 call 0x4322 ; 0x4322 + 2594: f7 01 movw r30, r14 + 2596: 01 90 ld r0, Z+ + 2598: 00 20 and r0, r0 + 259a: e9 f7 brne .-6 ; 0x2596 <_ZN6StringC1Eli+0x32> + 259c: 31 97 sbiw r30, 0x01 ; 1 + 259e: ee 19 sub r30, r14 + 25a0: ff 09 sbc r31, r15 + 25a2: d8 01 movw r26, r16 + 25a4: 15 96 adiw r26, 0x05 ; 5 + 25a6: fc 93 st X, r31 + 25a8: ee 93 st -X, r30 + 25aa: 14 97 sbiw r26, 0x04 ; 4 + 25ac: c8 01 movw r24, r16 + 25ae: bf 01 movw r22, r30 + 25b0: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 25b4: f8 01 movw r30, r16 + 25b6: 80 81 ld r24, Z + 25b8: 91 81 ldd r25, Z+1 ; 0x01 + 25ba: 00 97 sbiw r24, 0x00 ; 0 + 25bc: 19 f0 breq .+6 ; 0x25c4 <_ZN6StringC1Eli+0x60> + 25be: b7 01 movw r22, r14 + 25c0: 0e 94 27 21 call 0x424e ; 0x424e + 25c4: a1 96 adiw r28, 0x21 ; 33 + 25c6: 0f b6 in r0, 0x3f ; 63 + 25c8: f8 94 cli + 25ca: de bf out 0x3e, r29 ; 62 + 25cc: 0f be out 0x3f, r0 ; 63 + 25ce: cd bf out 0x3d, r28 ; 61 + 25d0: cf 91 pop r28 + 25d2: df 91 pop r29 + 25d4: 1f 91 pop r17 + 25d6: 0f 91 pop r16 + 25d8: ff 90 pop r15 + 25da: ef 90 pop r14 + 25dc: 08 95 ret + +000025de <_ZN6StringC2Eli>: + 25de: ef 92 push r14 + 25e0: ff 92 push r15 + 25e2: 0f 93 push r16 + 25e4: 1f 93 push r17 + 25e6: df 93 push r29 + 25e8: cf 93 push r28 + 25ea: cd b7 in r28, 0x3d ; 61 + 25ec: de b7 in r29, 0x3e ; 62 + 25ee: a1 97 sbiw r28, 0x21 ; 33 + 25f0: 0f b6 in r0, 0x3f ; 63 + 25f2: f8 94 cli + 25f4: de bf out 0x3e, r29 ; 62 + 25f6: 0f be out 0x3f, r0 ; 63 + 25f8: cd bf out 0x3d, r28 ; 61 + 25fa: 8c 01 movw r16, r24 + 25fc: cb 01 movw r24, r22 + 25fe: ba 01 movw r22, r20 + 2600: 7e 01 movw r14, r28 + 2602: 08 94 sec + 2604: e1 1c adc r14, r1 + 2606: f1 1c adc r15, r1 + 2608: a7 01 movw r20, r14 + 260a: 0e 94 91 21 call 0x4322 ; 0x4322 + 260e: f7 01 movw r30, r14 + 2610: 01 90 ld r0, Z+ + 2612: 00 20 and r0, r0 + 2614: e9 f7 brne .-6 ; 0x2610 <_ZN6StringC2Eli+0x32> + 2616: 31 97 sbiw r30, 0x01 ; 1 + 2618: ee 19 sub r30, r14 + 261a: ff 09 sbc r31, r15 + 261c: d8 01 movw r26, r16 + 261e: 15 96 adiw r26, 0x05 ; 5 + 2620: fc 93 st X, r31 + 2622: ee 93 st -X, r30 + 2624: 14 97 sbiw r26, 0x04 ; 4 + 2626: c8 01 movw r24, r16 + 2628: bf 01 movw r22, r30 + 262a: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 262e: f8 01 movw r30, r16 + 2630: 80 81 ld r24, Z + 2632: 91 81 ldd r25, Z+1 ; 0x01 + 2634: 00 97 sbiw r24, 0x00 ; 0 + 2636: 19 f0 breq .+6 ; 0x263e <_ZN6StringC2Eli+0x60> + 2638: b7 01 movw r22, r14 + 263a: 0e 94 27 21 call 0x424e ; 0x424e + 263e: a1 96 adiw r28, 0x21 ; 33 + 2640: 0f b6 in r0, 0x3f ; 63 + 2642: f8 94 cli + 2644: de bf out 0x3e, r29 ; 62 + 2646: 0f be out 0x3f, r0 ; 63 + 2648: cd bf out 0x3d, r28 ; 61 + 264a: cf 91 pop r28 + 264c: df 91 pop r29 + 264e: 1f 91 pop r17 + 2650: 0f 91 pop r16 + 2652: ff 90 pop r15 + 2654: ef 90 pop r14 + 2656: 08 95 ret + +00002658 <_ZN6StringC1Eii>: + 2658: ef 92 push r14 + 265a: ff 92 push r15 + 265c: 0f 93 push r16 + 265e: 1f 93 push r17 + 2660: df 93 push r29 + 2662: cf 93 push r28 + 2664: cd b7 in r28, 0x3d ; 61 + 2666: de b7 in r29, 0x3e ; 62 + 2668: a1 97 sbiw r28, 0x21 ; 33 + 266a: 0f b6 in r0, 0x3f ; 63 + 266c: f8 94 cli + 266e: de bf out 0x3e, r29 ; 62 + 2670: 0f be out 0x3f, r0 ; 63 + 2672: cd bf out 0x3d, r28 ; 61 + 2674: 8c 01 movw r16, r24 + 2676: cb 01 movw r24, r22 + 2678: 7e 01 movw r14, r28 + 267a: 08 94 sec + 267c: e1 1c adc r14, r1 + 267e: f1 1c adc r15, r1 + 2680: b7 01 movw r22, r14 + 2682: 0e 94 70 21 call 0x42e0 ; 0x42e0 + 2686: f7 01 movw r30, r14 + 2688: 01 90 ld r0, Z+ + 268a: 00 20 and r0, r0 + 268c: e9 f7 brne .-6 ; 0x2688 <_ZN6StringC1Eii+0x30> + 268e: 31 97 sbiw r30, 0x01 ; 1 + 2690: ee 19 sub r30, r14 + 2692: ff 09 sbc r31, r15 + 2694: d8 01 movw r26, r16 + 2696: 15 96 adiw r26, 0x05 ; 5 + 2698: fc 93 st X, r31 + 269a: ee 93 st -X, r30 + 269c: 14 97 sbiw r26, 0x04 ; 4 + 269e: c8 01 movw r24, r16 + 26a0: bf 01 movw r22, r30 + 26a2: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 26a6: f8 01 movw r30, r16 + 26a8: 80 81 ld r24, Z + 26aa: 91 81 ldd r25, Z+1 ; 0x01 + 26ac: 00 97 sbiw r24, 0x00 ; 0 + 26ae: 19 f0 breq .+6 ; 0x26b6 <_ZN6StringC1Eii+0x5e> + 26b0: b7 01 movw r22, r14 + 26b2: 0e 94 27 21 call 0x424e ; 0x424e + 26b6: a1 96 adiw r28, 0x21 ; 33 + 26b8: 0f b6 in r0, 0x3f ; 63 + 26ba: f8 94 cli + 26bc: de bf out 0x3e, r29 ; 62 + 26be: 0f be out 0x3f, r0 ; 63 + 26c0: cd bf out 0x3d, r28 ; 61 + 26c2: cf 91 pop r28 + 26c4: df 91 pop r29 + 26c6: 1f 91 pop r17 + 26c8: 0f 91 pop r16 + 26ca: ff 90 pop r15 + 26cc: ef 90 pop r14 + 26ce: 08 95 ret + +000026d0 <_ZN6StringC2Eii>: + 26d0: ef 92 push r14 + 26d2: ff 92 push r15 + 26d4: 0f 93 push r16 + 26d6: 1f 93 push r17 + 26d8: df 93 push r29 + 26da: cf 93 push r28 + 26dc: cd b7 in r28, 0x3d ; 61 + 26de: de b7 in r29, 0x3e ; 62 + 26e0: a1 97 sbiw r28, 0x21 ; 33 + 26e2: 0f b6 in r0, 0x3f ; 63 + 26e4: f8 94 cli + 26e6: de bf out 0x3e, r29 ; 62 + 26e8: 0f be out 0x3f, r0 ; 63 + 26ea: cd bf out 0x3d, r28 ; 61 + 26ec: 8c 01 movw r16, r24 + 26ee: cb 01 movw r24, r22 + 26f0: 7e 01 movw r14, r28 + 26f2: 08 94 sec + 26f4: e1 1c adc r14, r1 + 26f6: f1 1c adc r15, r1 + 26f8: b7 01 movw r22, r14 + 26fa: 0e 94 70 21 call 0x42e0 ; 0x42e0 + 26fe: f7 01 movw r30, r14 + 2700: 01 90 ld r0, Z+ + 2702: 00 20 and r0, r0 + 2704: e9 f7 brne .-6 ; 0x2700 <_ZN6StringC2Eii+0x30> + 2706: 31 97 sbiw r30, 0x01 ; 1 + 2708: ee 19 sub r30, r14 + 270a: ff 09 sbc r31, r15 + 270c: d8 01 movw r26, r16 + 270e: 15 96 adiw r26, 0x05 ; 5 + 2710: fc 93 st X, r31 + 2712: ee 93 st -X, r30 + 2714: 14 97 sbiw r26, 0x04 ; 4 + 2716: c8 01 movw r24, r16 + 2718: bf 01 movw r22, r30 + 271a: 0e 94 c0 0d call 0x1b80 ; 0x1b80 <_ZN6String9getBufferEj> + 271e: f8 01 movw r30, r16 + 2720: 80 81 ld r24, Z + 2722: 91 81 ldd r25, Z+1 ; 0x01 + 2724: 00 97 sbiw r24, 0x00 ; 0 + 2726: 19 f0 breq .+6 ; 0x272e <_ZN6StringC2Eii+0x5e> + 2728: b7 01 movw r22, r14 + 272a: 0e 94 27 21 call 0x424e ; 0x424e + 272e: a1 96 adiw r28, 0x21 ; 33 + 2730: 0f b6 in r0, 0x3f ; 63 + 2732: f8 94 cli + 2734: de bf out 0x3e, r29 ; 62 + 2736: 0f be out 0x3f, r0 ; 63 + 2738: cd bf out 0x3d, r28 ; 61 + 273a: cf 91 pop r28 + 273c: df 91 pop r29 + 273e: 1f 91 pop r17 + 2740: 0f 91 pop r16 + 2742: ff 90 pop r15 + 2744: ef 90 pop r14 + 2746: 08 95 ret + +00002748 <__vector_16>: + 2748: 1f 92 push r1 + 274a: 0f 92 push r0 + 274c: 0f b6 in r0, 0x3f ; 63 + 274e: 0f 92 push r0 + 2750: 11 24 eor r1, r1 + 2752: 2f 93 push r18 + 2754: 3f 93 push r19 + 2756: 4f 93 push r20 + 2758: 5f 93 push r21 + 275a: 6f 93 push r22 + 275c: 7f 93 push r23 + 275e: 8f 93 push r24 + 2760: 9f 93 push r25 + 2762: af 93 push r26 + 2764: bf 93 push r27 + 2766: 20 91 89 03 lds r18, 0x0389 + 276a: 30 91 8a 03 lds r19, 0x038A + 276e: 40 91 8b 03 lds r20, 0x038B + 2772: 50 91 8c 03 lds r21, 0x038C + 2776: 70 91 8d 03 lds r23, 0x038D + 277a: da 01 movw r26, r20 + 277c: c9 01 movw r24, r18 + 277e: 02 96 adiw r24, 0x02 ; 2 + 2780: a1 1d adc r26, r1 + 2782: b1 1d adc r27, r1 + 2784: 67 2f mov r22, r23 + 2786: 6a 5f subi r22, 0xFA ; 250 + 2788: 6d 37 cpi r22, 0x7D ; 125 + 278a: 30 f0 brcs .+12 ; 0x2798 <__vector_16+0x50> + 278c: 6d 57 subi r22, 0x7D ; 125 + 278e: da 01 movw r26, r20 + 2790: c9 01 movw r24, r18 + 2792: 03 96 adiw r24, 0x03 ; 3 + 2794: a1 1d adc r26, r1 + 2796: b1 1d adc r27, r1 + 2798: 60 93 8d 03 sts 0x038D, r22 + 279c: 80 93 89 03 sts 0x0389, r24 + 27a0: 90 93 8a 03 sts 0x038A, r25 + 27a4: a0 93 8b 03 sts 0x038B, r26 + 27a8: b0 93 8c 03 sts 0x038C, r27 + 27ac: 80 91 85 03 lds r24, 0x0385 + 27b0: 90 91 86 03 lds r25, 0x0386 + 27b4: a0 91 87 03 lds r26, 0x0387 + 27b8: b0 91 88 03 lds r27, 0x0388 + 27bc: 01 96 adiw r24, 0x01 ; 1 + 27be: a1 1d adc r26, r1 + 27c0: b1 1d adc r27, r1 + 27c2: 80 93 85 03 sts 0x0385, r24 + 27c6: 90 93 86 03 sts 0x0386, r25 + 27ca: a0 93 87 03 sts 0x0387, r26 + 27ce: b0 93 88 03 sts 0x0388, r27 + 27d2: bf 91 pop r27 + 27d4: af 91 pop r26 + 27d6: 9f 91 pop r25 + 27d8: 8f 91 pop r24 + 27da: 7f 91 pop r23 + 27dc: 6f 91 pop r22 + 27de: 5f 91 pop r21 + 27e0: 4f 91 pop r20 + 27e2: 3f 91 pop r19 + 27e4: 2f 91 pop r18 + 27e6: 0f 90 pop r0 + 27e8: 0f be out 0x3f, r0 ; 63 + 27ea: 0f 90 pop r0 + 27ec: 1f 90 pop r1 + 27ee: 18 95 reti + +000027f0 : + 27f0: 8f b7 in r24, 0x3f ; 63 + 27f2: f8 94 cli + 27f4: 20 91 89 03 lds r18, 0x0389 + 27f8: 30 91 8a 03 lds r19, 0x038A + 27fc: 40 91 8b 03 lds r20, 0x038B + 2800: 50 91 8c 03 lds r21, 0x038C + 2804: 8f bf out 0x3f, r24 ; 63 + 2806: b9 01 movw r22, r18 + 2808: ca 01 movw r24, r20 + 280a: 08 95 ret + +0000280c : + 280c: 9f b7 in r25, 0x3f ; 63 + 280e: f8 94 cli + 2810: 20 91 85 03 lds r18, 0x0385 + 2814: 30 91 86 03 lds r19, 0x0386 + 2818: 40 91 87 03 lds r20, 0x0387 + 281c: 50 91 88 03 lds r21, 0x0388 + 2820: 86 b5 in r24, 0x26 ; 38 + 2822: a8 9b sbis 0x15, 0 ; 21 + 2824: 06 c0 rjmp .+12 ; 0x2832 + 2826: 8f 3f cpi r24, 0xFF ; 255 + 2828: 21 f0 breq .+8 ; 0x2832 + 282a: 2f 5f subi r18, 0xFF ; 255 + 282c: 3f 4f sbci r19, 0xFF ; 255 + 282e: 4f 4f sbci r20, 0xFF ; 255 + 2830: 5f 4f sbci r21, 0xFF ; 255 + 2832: 9f bf out 0x3f, r25 ; 63 + 2834: 54 2f mov r21, r20 + 2836: 43 2f mov r20, r19 + 2838: 32 2f mov r19, r18 + 283a: 22 27 eor r18, r18 + 283c: 28 0f add r18, r24 + 283e: 31 1d adc r19, r1 + 2840: 41 1d adc r20, r1 + 2842: 51 1d adc r21, r1 + 2844: 83 e0 ldi r24, 0x03 ; 3 + 2846: 22 0f add r18, r18 + 2848: 33 1f adc r19, r19 + 284a: 44 1f adc r20, r20 + 284c: 55 1f adc r21, r21 + 284e: 8a 95 dec r24 + 2850: d1 f7 brne .-12 ; 0x2846 + 2852: b9 01 movw r22, r18 + 2854: ca 01 movw r24, r20 + 2856: 08 95 ret + +00002858 : + 2858: ef 92 push r14 + 285a: ff 92 push r15 + 285c: 0f 93 push r16 + 285e: 1f 93 push r17 + 2860: cf 93 push r28 + 2862: df 93 push r29 + 2864: 7b 01 movw r14, r22 + 2866: 8c 01 movw r16, r24 + 2868: 0e 94 06 14 call 0x280c ; 0x280c + 286c: eb 01 movw r28, r22 + 286e: 0e c0 rjmp .+28 ; 0x288c + 2870: 0e 94 06 14 call 0x280c ; 0x280c + 2874: 6c 1b sub r22, r28 + 2876: 7d 0b sbc r23, r29 + 2878: 68 5e subi r22, 0xE8 ; 232 + 287a: 73 40 sbci r23, 0x03 ; 3 + 287c: c8 f3 brcs .-14 ; 0x2870 + 287e: 08 94 sec + 2880: e1 08 sbc r14, r1 + 2882: f1 08 sbc r15, r1 + 2884: 01 09 sbc r16, r1 + 2886: 11 09 sbc r17, r1 + 2888: c8 51 subi r28, 0x18 ; 24 + 288a: dc 4f sbci r29, 0xFC ; 252 + 288c: e1 14 cp r14, r1 + 288e: f1 04 cpc r15, r1 + 2890: 01 05 cpc r16, r1 + 2892: 11 05 cpc r17, r1 + 2894: 69 f7 brne .-38 ; 0x2870 + 2896: df 91 pop r29 + 2898: cf 91 pop r28 + 289a: 1f 91 pop r17 + 289c: 0f 91 pop r16 + 289e: ff 90 pop r15 + 28a0: ef 90 pop r14 + 28a2: 08 95 ret + +000028a4 : + 28a4: 01 97 sbiw r24, 0x01 ; 1 + 28a6: 39 f0 breq .+14 ; 0x28b6 + 28a8: 01 97 sbiw r24, 0x01 ; 1 + 28aa: 29 f0 breq .+10 ; 0x28b6 + 28ac: 88 0f add r24, r24 + 28ae: 99 1f adc r25, r25 + 28b0: 01 97 sbiw r24, 0x01 ; 1 + 28b2: 01 97 sbiw r24, 0x01 ; 1 + 28b4: f1 f7 brne .-4 ; 0x28b2 + 28b6: 08 95 ret + +000028b8 : + 28b8: 78 94 sei + 28ba: 84 b5 in r24, 0x24 ; 36 + 28bc: 82 60 ori r24, 0x02 ; 2 + 28be: 84 bd out 0x24, r24 ; 36 + 28c0: 84 b5 in r24, 0x24 ; 36 + 28c2: 81 60 ori r24, 0x01 ; 1 + 28c4: 84 bd out 0x24, r24 ; 36 + 28c6: 85 b5 in r24, 0x25 ; 37 + 28c8: 82 60 ori r24, 0x02 ; 2 + 28ca: 85 bd out 0x25, r24 ; 37 + 28cc: 85 b5 in r24, 0x25 ; 37 + 28ce: 81 60 ori r24, 0x01 ; 1 + 28d0: 85 bd out 0x25, r24 ; 37 + 28d2: ee e6 ldi r30, 0x6E ; 110 + 28d4: f0 e0 ldi r31, 0x00 ; 0 + 28d6: 80 81 ld r24, Z + 28d8: 81 60 ori r24, 0x01 ; 1 + 28da: 80 83 st Z, r24 + 28dc: e1 e8 ldi r30, 0x81 ; 129 + 28de: f0 e0 ldi r31, 0x00 ; 0 + 28e0: 10 82 st Z, r1 + 28e2: 80 81 ld r24, Z + 28e4: 82 60 ori r24, 0x02 ; 2 + 28e6: 80 83 st Z, r24 + 28e8: 80 81 ld r24, Z + 28ea: 81 60 ori r24, 0x01 ; 1 + 28ec: 80 83 st Z, r24 + 28ee: e0 e8 ldi r30, 0x80 ; 128 + 28f0: f0 e0 ldi r31, 0x00 ; 0 + 28f2: 80 81 ld r24, Z + 28f4: 81 60 ori r24, 0x01 ; 1 + 28f6: 80 83 st Z, r24 + 28f8: e1 eb ldi r30, 0xB1 ; 177 + 28fa: f0 e0 ldi r31, 0x00 ; 0 + 28fc: 80 81 ld r24, Z + 28fe: 84 60 ori r24, 0x04 ; 4 + 2900: 80 83 st Z, r24 + 2902: e0 eb ldi r30, 0xB0 ; 176 + 2904: f0 e0 ldi r31, 0x00 ; 0 + 2906: 80 81 ld r24, Z + 2908: 81 60 ori r24, 0x01 ; 1 + 290a: 80 83 st Z, r24 + 290c: ea e7 ldi r30, 0x7A ; 122 + 290e: f0 e0 ldi r31, 0x00 ; 0 + 2910: 80 81 ld r24, Z + 2912: 84 60 ori r24, 0x04 ; 4 + 2914: 80 83 st Z, r24 + 2916: 80 81 ld r24, Z + 2918: 82 60 ori r24, 0x02 ; 2 + 291a: 80 83 st Z, r24 + 291c: 80 81 ld r24, Z + 291e: 81 60 ori r24, 0x01 ; 1 + 2920: 80 83 st Z, r24 + 2922: 80 81 ld r24, Z + 2924: 80 68 ori r24, 0x80 ; 128 + 2926: 80 83 st Z, r24 + 2928: 10 92 c1 00 sts 0x00C1, r1 + 292c: 08 95 ret + +0000292e : + 292e: 80 93 a7 01 sts 0x01A7, r24 + 2932: 08 95 ret + +00002934 : + 2934: 98 2f mov r25, r24 + 2936: 8e 30 cpi r24, 0x0E ; 14 + 2938: 08 f0 brcs .+2 ; 0x293c + 293a: 9e 50 subi r25, 0x0E ; 14 + 293c: 97 70 andi r25, 0x07 ; 7 + 293e: 80 91 a7 01 lds r24, 0x01A7 + 2942: 82 95 swap r24 + 2944: 88 0f add r24, r24 + 2946: 88 0f add r24, r24 + 2948: 80 7c andi r24, 0xC0 ; 192 + 294a: 89 2b or r24, r25 + 294c: 80 93 7c 00 sts 0x007C, r24 + 2950: 80 91 7a 00 lds r24, 0x007A + 2954: 80 64 ori r24, 0x40 ; 64 + 2956: 80 93 7a 00 sts 0x007A, r24 + 295a: 80 91 7a 00 lds r24, 0x007A + 295e: 86 fd sbrc r24, 6 + 2960: fc cf rjmp .-8 ; 0x295a + 2962: 20 91 78 00 lds r18, 0x0078 + 2966: 40 91 79 00 lds r20, 0x0079 + 296a: 94 2f mov r25, r20 + 296c: 80 e0 ldi r24, 0x00 ; 0 + 296e: 30 e0 ldi r19, 0x00 ; 0 + 2970: 28 2b or r18, r24 + 2972: 39 2b or r19, r25 + 2974: c9 01 movw r24, r18 + 2976: 08 95 ret + +00002978 : + 2978: 1f 93 push r17 + 297a: cf 93 push r28 + 297c: df 93 push r29 + 297e: 18 2f mov r17, r24 + 2980: eb 01 movw r28, r22 + 2982: 61 e0 ldi r22, 0x01 ; 1 + 2984: 0e 94 1c 15 call 0x2a38 ; 0x2a38 + 2988: 20 97 sbiw r28, 0x00 ; 0 + 298a: 09 f4 brne .+2 ; 0x298e + 298c: 4a c0 rjmp .+148 ; 0x2a22 + 298e: cf 3f cpi r28, 0xFF ; 255 + 2990: d1 05 cpc r29, r1 + 2992: 09 f4 brne .+2 ; 0x2996 + 2994: 49 c0 rjmp .+146 ; 0x2a28 + 2996: e1 2f mov r30, r17 + 2998: f0 e0 ldi r31, 0x00 ; 0 + 299a: e1 55 subi r30, 0x51 ; 81 + 299c: ff 4f sbci r31, 0xFF ; 255 + 299e: 84 91 lpm r24, Z+ + 29a0: 83 30 cpi r24, 0x03 ; 3 + 29a2: c1 f0 breq .+48 ; 0x29d4 + 29a4: 84 30 cpi r24, 0x04 ; 4 + 29a6: 28 f4 brcc .+10 ; 0x29b2 + 29a8: 81 30 cpi r24, 0x01 ; 1 + 29aa: 51 f0 breq .+20 ; 0x29c0 + 29ac: 82 30 cpi r24, 0x02 ; 2 + 29ae: b1 f5 brne .+108 ; 0x2a1c + 29b0: 0c c0 rjmp .+24 ; 0x29ca + 29b2: 86 30 cpi r24, 0x06 ; 6 + 29b4: 19 f1 breq .+70 ; 0x29fc + 29b6: 87 30 cpi r24, 0x07 ; 7 + 29b8: 49 f1 breq .+82 ; 0x2a0c + 29ba: 84 30 cpi r24, 0x04 ; 4 + 29bc: 79 f5 brne .+94 ; 0x2a1c + 29be: 14 c0 rjmp .+40 ; 0x29e8 + 29c0: 84 b5 in r24, 0x24 ; 36 + 29c2: 80 68 ori r24, 0x80 ; 128 + 29c4: 84 bd out 0x24, r24 ; 36 + 29c6: c7 bd out 0x27, r28 ; 39 + 29c8: 33 c0 rjmp .+102 ; 0x2a30 + 29ca: 84 b5 in r24, 0x24 ; 36 + 29cc: 80 62 ori r24, 0x20 ; 32 + 29ce: 84 bd out 0x24, r24 ; 36 + 29d0: c8 bd out 0x28, r28 ; 40 + 29d2: 2e c0 rjmp .+92 ; 0x2a30 + 29d4: 80 91 80 00 lds r24, 0x0080 + 29d8: 80 68 ori r24, 0x80 ; 128 + 29da: 80 93 80 00 sts 0x0080, r24 + 29de: d0 93 89 00 sts 0x0089, r29 + 29e2: c0 93 88 00 sts 0x0088, r28 + 29e6: 24 c0 rjmp .+72 ; 0x2a30 + 29e8: 80 91 80 00 lds r24, 0x0080 + 29ec: 80 62 ori r24, 0x20 ; 32 + 29ee: 80 93 80 00 sts 0x0080, r24 + 29f2: d0 93 8b 00 sts 0x008B, r29 + 29f6: c0 93 8a 00 sts 0x008A, r28 + 29fa: 1a c0 rjmp .+52 ; 0x2a30 + 29fc: 80 91 b0 00 lds r24, 0x00B0 + 2a00: 80 68 ori r24, 0x80 ; 128 + 2a02: 80 93 b0 00 sts 0x00B0, r24 + 2a06: c0 93 b3 00 sts 0x00B3, r28 + 2a0a: 12 c0 rjmp .+36 ; 0x2a30 + 2a0c: 80 91 b0 00 lds r24, 0x00B0 + 2a10: 80 62 ori r24, 0x20 ; 32 + 2a12: 80 93 b0 00 sts 0x00B0, r24 + 2a16: c0 93 b4 00 sts 0x00B4, r28 + 2a1a: 0a c0 rjmp .+20 ; 0x2a30 + 2a1c: c0 38 cpi r28, 0x80 ; 128 + 2a1e: d1 05 cpc r29, r1 + 2a20: 1c f4 brge .+6 ; 0x2a28 + 2a22: 81 2f mov r24, r17 + 2a24: 60 e0 ldi r22, 0x00 ; 0 + 2a26: 02 c0 rjmp .+4 ; 0x2a2c + 2a28: 81 2f mov r24, r17 + 2a2a: 61 e0 ldi r22, 0x01 ; 1 + 2a2c: 0e 94 6f 15 call 0x2ade ; 0x2ade + 2a30: df 91 pop r29 + 2a32: cf 91 pop r28 + 2a34: 1f 91 pop r17 + 2a36: 08 95 ret + +00002a38 : + 2a38: 48 2f mov r20, r24 + 2a3a: 50 e0 ldi r21, 0x00 ; 0 + 2a3c: ca 01 movw r24, r20 + 2a3e: 85 56 subi r24, 0x65 ; 101 + 2a40: 9f 4f sbci r25, 0xFF ; 255 + 2a42: fc 01 movw r30, r24 + 2a44: 24 91 lpm r18, Z+ + 2a46: 49 57 subi r20, 0x79 ; 121 + 2a48: 5f 4f sbci r21, 0xFF ; 255 + 2a4a: fa 01 movw r30, r20 + 2a4c: 84 91 lpm r24, Z+ + 2a4e: 88 23 and r24, r24 + 2a50: c1 f0 breq .+48 ; 0x2a82 + 2a52: e8 2f mov r30, r24 + 2a54: f0 e0 ldi r31, 0x00 ; 0 + 2a56: ee 0f add r30, r30 + 2a58: ff 1f adc r31, r31 + 2a5a: e7 59 subi r30, 0x97 ; 151 + 2a5c: ff 4f sbci r31, 0xFF ; 255 + 2a5e: a5 91 lpm r26, Z+ + 2a60: b4 91 lpm r27, Z+ + 2a62: 66 23 and r22, r22 + 2a64: 41 f4 brne .+16 ; 0x2a76 + 2a66: 9f b7 in r25, 0x3f ; 63 + 2a68: f8 94 cli + 2a6a: 8c 91 ld r24, X + 2a6c: 20 95 com r18 + 2a6e: 82 23 and r24, r18 + 2a70: 8c 93 st X, r24 + 2a72: 9f bf out 0x3f, r25 ; 63 + 2a74: 08 95 ret + 2a76: 9f b7 in r25, 0x3f ; 63 + 2a78: f8 94 cli + 2a7a: 8c 91 ld r24, X + 2a7c: 82 2b or r24, r18 + 2a7e: 8c 93 st X, r24 + 2a80: 9f bf out 0x3f, r25 ; 63 + 2a82: 08 95 ret + +00002a84 : + 2a84: 83 30 cpi r24, 0x03 ; 3 + 2a86: 71 f0 breq .+28 ; 0x2aa4 + 2a88: 84 30 cpi r24, 0x04 ; 4 + 2a8a: 28 f4 brcc .+10 ; 0x2a96 + 2a8c: 81 30 cpi r24, 0x01 ; 1 + 2a8e: a1 f0 breq .+40 ; 0x2ab8 + 2a90: 82 30 cpi r24, 0x02 ; 2 + 2a92: 21 f5 brne .+72 ; 0x2adc + 2a94: 14 c0 rjmp .+40 ; 0x2abe + 2a96: 86 30 cpi r24, 0x06 ; 6 + 2a98: b1 f0 breq .+44 ; 0x2ac6 + 2a9a: 87 30 cpi r24, 0x07 ; 7 + 2a9c: d1 f0 breq .+52 ; 0x2ad2 + 2a9e: 84 30 cpi r24, 0x04 ; 4 + 2aa0: e9 f4 brne .+58 ; 0x2adc + 2aa2: 04 c0 rjmp .+8 ; 0x2aac + 2aa4: 80 91 80 00 lds r24, 0x0080 + 2aa8: 8f 77 andi r24, 0x7F ; 127 + 2aaa: 03 c0 rjmp .+6 ; 0x2ab2 + 2aac: 80 91 80 00 lds r24, 0x0080 + 2ab0: 8f 7d andi r24, 0xDF ; 223 + 2ab2: 80 93 80 00 sts 0x0080, r24 + 2ab6: 08 95 ret + 2ab8: 84 b5 in r24, 0x24 ; 36 + 2aba: 8f 77 andi r24, 0x7F ; 127 + 2abc: 02 c0 rjmp .+4 ; 0x2ac2 + 2abe: 84 b5 in r24, 0x24 ; 36 + 2ac0: 8f 7d andi r24, 0xDF ; 223 + 2ac2: 84 bd out 0x24, r24 ; 36 + 2ac4: 08 95 ret + 2ac6: 80 91 b0 00 lds r24, 0x00B0 + 2aca: 8f 77 andi r24, 0x7F ; 127 + 2acc: 80 93 b0 00 sts 0x00B0, r24 + 2ad0: 08 95 ret + 2ad2: 80 91 b0 00 lds r24, 0x00B0 + 2ad6: 8f 7d andi r24, 0xDF ; 223 + 2ad8: 80 93 b0 00 sts 0x00B0, r24 + 2adc: 08 95 ret + +00002ade : + 2ade: ff 92 push r15 + 2ae0: 0f 93 push r16 + 2ae2: 1f 93 push r17 + 2ae4: f6 2e mov r15, r22 + 2ae6: 48 2f mov r20, r24 + 2ae8: 50 e0 ldi r21, 0x00 ; 0 + 2aea: ca 01 movw r24, r20 + 2aec: 81 55 subi r24, 0x51 ; 81 + 2aee: 9f 4f sbci r25, 0xFF ; 255 + 2af0: fc 01 movw r30, r24 + 2af2: 24 91 lpm r18, Z+ + 2af4: ca 01 movw r24, r20 + 2af6: 85 56 subi r24, 0x65 ; 101 + 2af8: 9f 4f sbci r25, 0xFF ; 255 + 2afa: fc 01 movw r30, r24 + 2afc: 14 91 lpm r17, Z+ + 2afe: 49 57 subi r20, 0x79 ; 121 + 2b00: 5f 4f sbci r21, 0xFF ; 255 + 2b02: fa 01 movw r30, r20 + 2b04: 04 91 lpm r16, Z+ + 2b06: 00 23 and r16, r16 + 2b08: d9 f0 breq .+54 ; 0x2b40 + 2b0a: 22 23 and r18, r18 + 2b0c: 19 f0 breq .+6 ; 0x2b14 + 2b0e: 82 2f mov r24, r18 + 2b10: 0e 94 42 15 call 0x2a84 ; 0x2a84 + 2b14: e0 2f mov r30, r16 + 2b16: f0 e0 ldi r31, 0x00 ; 0 + 2b18: ee 0f add r30, r30 + 2b1a: ff 1f adc r31, r31 + 2b1c: ed 58 subi r30, 0x8D ; 141 + 2b1e: ff 4f sbci r31, 0xFF ; 255 + 2b20: a5 91 lpm r26, Z+ + 2b22: b4 91 lpm r27, Z+ + 2b24: ff 20 and r15, r15 + 2b26: 31 f4 brne .+12 ; 0x2b34 + 2b28: 9f b7 in r25, 0x3f ; 63 + 2b2a: f8 94 cli + 2b2c: 8c 91 ld r24, X + 2b2e: 10 95 com r17 + 2b30: 81 23 and r24, r17 + 2b32: 04 c0 rjmp .+8 ; 0x2b3c + 2b34: 9f b7 in r25, 0x3f ; 63 + 2b36: f8 94 cli + 2b38: 8c 91 ld r24, X + 2b3a: 81 2b or r24, r17 + 2b3c: 8c 93 st X, r24 + 2b3e: 9f bf out 0x3f, r25 ; 63 + 2b40: 1f 91 pop r17 + 2b42: 0f 91 pop r16 + 2b44: ff 90 pop r15 + 2b46: 08 95 ret + +00002b48 : + 2b48: 0f 93 push r16 + 2b4a: 1f 93 push r17 + 2b4c: 48 2f mov r20, r24 + 2b4e: 50 e0 ldi r21, 0x00 ; 0 + 2b50: ca 01 movw r24, r20 + 2b52: 81 55 subi r24, 0x51 ; 81 + 2b54: 9f 4f sbci r25, 0xFF ; 255 + 2b56: fc 01 movw r30, r24 + 2b58: 24 91 lpm r18, Z+ + 2b5a: ca 01 movw r24, r20 + 2b5c: 85 56 subi r24, 0x65 ; 101 + 2b5e: 9f 4f sbci r25, 0xFF ; 255 + 2b60: fc 01 movw r30, r24 + 2b62: 04 91 lpm r16, Z+ + 2b64: 49 57 subi r20, 0x79 ; 121 + 2b66: 5f 4f sbci r21, 0xFF ; 255 + 2b68: fa 01 movw r30, r20 + 2b6a: 14 91 lpm r17, Z+ + 2b6c: 11 23 and r17, r17 + 2b6e: 19 f4 brne .+6 ; 0x2b76 + 2b70: 20 e0 ldi r18, 0x00 ; 0 + 2b72: 30 e0 ldi r19, 0x00 ; 0 + 2b74: 15 c0 rjmp .+42 ; 0x2ba0 + 2b76: 22 23 and r18, r18 + 2b78: 19 f0 breq .+6 ; 0x2b80 + 2b7a: 82 2f mov r24, r18 + 2b7c: 0e 94 42 15 call 0x2a84 ; 0x2a84 + 2b80: 81 2f mov r24, r17 + 2b82: 90 e0 ldi r25, 0x00 ; 0 + 2b84: 88 0f add r24, r24 + 2b86: 99 1f adc r25, r25 + 2b88: 83 58 subi r24, 0x83 ; 131 + 2b8a: 9f 4f sbci r25, 0xFF ; 255 + 2b8c: fc 01 movw r30, r24 + 2b8e: a5 91 lpm r26, Z+ + 2b90: b4 91 lpm r27, Z+ + 2b92: 8c 91 ld r24, X + 2b94: 20 e0 ldi r18, 0x00 ; 0 + 2b96: 30 e0 ldi r19, 0x00 ; 0 + 2b98: 80 23 and r24, r16 + 2b9a: 11 f0 breq .+4 ; 0x2ba0 + 2b9c: 21 e0 ldi r18, 0x01 ; 1 + 2b9e: 30 e0 ldi r19, 0x00 ; 0 + 2ba0: c9 01 movw r24, r18 + 2ba2: 1f 91 pop r17 + 2ba4: 0f 91 pop r16 + 2ba6: 08 95 ret + +00002ba8 : + 2ba8: 8f 92 push r8 + 2baa: 9f 92 push r9 + 2bac: af 92 push r10 + 2bae: bf 92 push r11 + 2bb0: cf 92 push r12 + 2bb2: df 92 push r13 + 2bb4: ef 92 push r14 + 2bb6: ff 92 push r15 + 2bb8: 0f 93 push r16 + 2bba: 1f 93 push r17 + 2bbc: cf 93 push r28 + 2bbe: df 93 push r29 + 2bc0: a8 2f mov r26, r24 + 2bc2: b0 e0 ldi r27, 0x00 ; 0 + 2bc4: cd 01 movw r24, r26 + 2bc6: 85 56 subi r24, 0x65 ; 101 + 2bc8: 9f 4f sbci r25, 0xFF ; 255 + 2bca: fc 01 movw r30, r24 + 2bcc: 84 90 lpm r8, Z+ + 2bce: a9 57 subi r26, 0x79 ; 121 + 2bd0: bf 4f sbci r27, 0xFF ; 255 + 2bd2: fd 01 movw r30, r26 + 2bd4: d4 90 lpm r13, Z+ + 2bd6: 66 23 and r22, r22 + 2bd8: 11 f4 brne .+4 ; 0x2bde + 2bda: 99 24 eor r9, r9 + 2bdc: 01 c0 rjmp .+2 ; 0x2be0 + 2bde: 98 2c mov r9, r8 + 2be0: ca 01 movw r24, r20 + 2be2: b9 01 movw r22, r18 + 2be4: 20 e4 ldi r18, 0x40 ; 64 + 2be6: 3f e1 ldi r19, 0x1F ; 31 + 2be8: 40 e0 ldi r20, 0x00 ; 0 + 2bea: 50 e0 ldi r21, 0x00 ; 0 + 2bec: 0e 94 f3 1d call 0x3be6 ; 0x3be6 <__mulsi3> + 2bf0: 20 e8 ldi r18, 0x80 ; 128 + 2bf2: 3e e3 ldi r19, 0x3E ; 62 + 2bf4: 40 e0 ldi r20, 0x00 ; 0 + 2bf6: 50 e0 ldi r21, 0x00 ; 0 + 2bf8: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 2bfc: 79 01 movw r14, r18 + 2bfe: 8a 01 movw r16, r20 + 2c00: 6d 2d mov r22, r13 + 2c02: 70 e0 ldi r23, 0x00 ; 0 + 2c04: 66 0f add r22, r22 + 2c06: 77 1f adc r23, r23 + 2c08: 63 58 subi r22, 0x83 ; 131 + 2c0a: 7f 4f sbci r23, 0xFF ; 255 + 2c0c: aa 24 eor r10, r10 + 2c0e: bb 24 eor r11, r11 + 2c10: 65 01 movw r12, r10 + 2c12: fb 01 movw r30, r22 + 2c14: a5 91 lpm r26, Z+ + 2c16: b4 91 lpm r27, Z+ + 2c18: 0b c0 rjmp .+22 ; 0x2c30 + 2c1a: ae 14 cp r10, r14 + 2c1c: bf 04 cpc r11, r15 + 2c1e: c0 06 cpc r12, r16 + 2c20: d1 06 cpc r13, r17 + 2c22: 09 f4 brne .+2 ; 0x2c26 + 2c24: 4f c0 rjmp .+158 ; 0x2cc4 + 2c26: 08 94 sec + 2c28: a1 1c adc r10, r1 + 2c2a: b1 1c adc r11, r1 + 2c2c: c1 1c adc r12, r1 + 2c2e: d1 1c adc r13, r1 + 2c30: 8c 91 ld r24, X + 2c32: 88 21 and r24, r8 + 2c34: 89 15 cp r24, r9 + 2c36: 89 f3 breq .-30 ; 0x2c1a + 2c38: 0c c0 rjmp .+24 ; 0x2c52 + 2c3a: ae 14 cp r10, r14 + 2c3c: bf 04 cpc r11, r15 + 2c3e: c0 06 cpc r12, r16 + 2c40: d1 06 cpc r13, r17 + 2c42: 09 f4 brne .+2 ; 0x2c46 + 2c44: 3f c0 rjmp .+126 ; 0x2cc4 + 2c46: 08 94 sec + 2c48: a1 1c adc r10, r1 + 2c4a: b1 1c adc r11, r1 + 2c4c: c1 1c adc r12, r1 + 2c4e: d1 1c adc r13, r1 + 2c50: 03 c0 rjmp .+6 ; 0x2c58 + 2c52: fb 01 movw r30, r22 + 2c54: a5 91 lpm r26, Z+ + 2c56: b4 91 lpm r27, Z+ + 2c58: 8c 91 ld r24, X + 2c5a: 88 21 and r24, r8 + 2c5c: 89 15 cp r24, r9 + 2c5e: 69 f7 brne .-38 ; 0x2c3a + 2c60: 20 e0 ldi r18, 0x00 ; 0 + 2c62: 30 e0 ldi r19, 0x00 ; 0 + 2c64: 40 e0 ldi r20, 0x00 ; 0 + 2c66: 50 e0 ldi r21, 0x00 ; 0 + 2c68: fb 01 movw r30, r22 + 2c6a: c5 91 lpm r28, Z+ + 2c6c: d4 91 lpm r29, Z+ + 2c6e: 0f c0 rjmp .+30 ; 0x2c8e + 2c70: da 01 movw r26, r20 + 2c72: c9 01 movw r24, r18 + 2c74: 8a 0d add r24, r10 + 2c76: 9b 1d adc r25, r11 + 2c78: ac 1d adc r26, r12 + 2c7a: bd 1d adc r27, r13 + 2c7c: 8e 15 cp r24, r14 + 2c7e: 9f 05 cpc r25, r15 + 2c80: a0 07 cpc r26, r16 + 2c82: b1 07 cpc r27, r17 + 2c84: f9 f0 breq .+62 ; 0x2cc4 + 2c86: 2f 5f subi r18, 0xFF ; 255 + 2c88: 3f 4f sbci r19, 0xFF ; 255 + 2c8a: 4f 4f sbci r20, 0xFF ; 255 + 2c8c: 5f 4f sbci r21, 0xFF ; 255 + 2c8e: 88 81 ld r24, Y + 2c90: 88 21 and r24, r8 + 2c92: 89 15 cp r24, r9 + 2c94: 69 f3 breq .-38 ; 0x2c70 + 2c96: ca 01 movw r24, r20 + 2c98: b9 01 movw r22, r18 + 2c9a: 28 e0 ldi r18, 0x08 ; 8 + 2c9c: 32 e5 ldi r19, 0x52 ; 82 + 2c9e: 40 e0 ldi r20, 0x00 ; 0 + 2ca0: 50 e0 ldi r21, 0x00 ; 0 + 2ca2: 0e 94 f3 1d call 0x3be6 ; 0x3be6 <__mulsi3> + 2ca6: 60 58 subi r22, 0x80 ; 128 + 2ca8: 71 4c sbci r23, 0xC1 ; 193 + 2caa: 8f 4f sbci r24, 0xFF ; 255 + 2cac: 9f 4f sbci r25, 0xFF ; 255 + 2cae: 20 e4 ldi r18, 0x40 ; 64 + 2cb0: 3f e1 ldi r19, 0x1F ; 31 + 2cb2: 40 e0 ldi r20, 0x00 ; 0 + 2cb4: 50 e0 ldi r21, 0x00 ; 0 + 2cb6: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 2cba: c9 01 movw r24, r18 + 2cbc: da 01 movw r26, r20 + 2cbe: 9c 01 movw r18, r24 + 2cc0: ad 01 movw r20, r26 + 2cc2: 04 c0 rjmp .+8 ; 0x2ccc + 2cc4: 20 e0 ldi r18, 0x00 ; 0 + 2cc6: 30 e0 ldi r19, 0x00 ; 0 + 2cc8: 40 e0 ldi r20, 0x00 ; 0 + 2cca: 50 e0 ldi r21, 0x00 ; 0 + 2ccc: b9 01 movw r22, r18 + 2cce: ca 01 movw r24, r20 + 2cd0: df 91 pop r29 + 2cd2: cf 91 pop r28 + 2cd4: 1f 91 pop r17 + 2cd6: 0f 91 pop r16 + 2cd8: ff 90 pop r15 + 2cda: ef 90 pop r14 + 2cdc: df 90 pop r13 + 2cde: cf 90 pop r12 + 2ce0: bf 90 pop r11 + 2ce2: af 90 pop r10 + 2ce4: 9f 90 pop r9 + 2ce6: 8f 90 pop r8 + 2ce8: 08 95 ret + +00002cea : + 2cea: bf 92 push r11 + 2cec: cf 92 push r12 + 2cee: df 92 push r13 + 2cf0: ef 92 push r14 + 2cf2: ff 92 push r15 + 2cf4: 0f 93 push r16 + 2cf6: 1f 93 push r17 + 2cf8: cf 93 push r28 + 2cfa: df 93 push r29 + 2cfc: e8 2e mov r14, r24 + 2cfe: f6 2e mov r15, r22 + 2d00: b4 2e mov r11, r20 + 2d02: c7 e0 ldi r28, 0x07 ; 7 + 2d04: d0 e0 ldi r29, 0x00 ; 0 + 2d06: 02 2f mov r16, r18 + 2d08: 10 e0 ldi r17, 0x00 ; 0 + 2d0a: 87 e0 ldi r24, 0x07 ; 7 + 2d0c: c8 2e mov r12, r24 + 2d0e: d1 2c mov r13, r1 + 2d10: bb 20 and r11, r11 + 2d12: 59 f4 brne .+22 ; 0x2d2a + 2d14: b6 01 movw r22, r12 + 2d16: 6c 1b sub r22, r28 + 2d18: 7d 0b sbc r23, r29 + 2d1a: c8 01 movw r24, r16 + 2d1c: 02 c0 rjmp .+4 ; 0x2d22 + 2d1e: 95 95 asr r25 + 2d20: 87 95 ror r24 + 2d22: 6a 95 dec r22 + 2d24: e2 f7 brpl .-8 ; 0x2d1e + 2d26: bc 01 movw r22, r24 + 2d28: 07 c0 rjmp .+14 ; 0x2d38 + 2d2a: b8 01 movw r22, r16 + 2d2c: 0c 2e mov r0, r28 + 2d2e: 02 c0 rjmp .+4 ; 0x2d34 + 2d30: 75 95 asr r23 + 2d32: 67 95 ror r22 + 2d34: 0a 94 dec r0 + 2d36: e2 f7 brpl .-8 ; 0x2d30 + 2d38: 61 70 andi r22, 0x01 ; 1 + 2d3a: 8e 2d mov r24, r14 + 2d3c: 0e 94 6f 15 call 0x2ade ; 0x2ade + 2d40: 8f 2d mov r24, r15 + 2d42: 61 e0 ldi r22, 0x01 ; 1 + 2d44: 0e 94 6f 15 call 0x2ade ; 0x2ade + 2d48: 8f 2d mov r24, r15 + 2d4a: 60 e0 ldi r22, 0x00 ; 0 + 2d4c: 0e 94 6f 15 call 0x2ade ; 0x2ade + 2d50: 21 97 sbiw r28, 0x01 ; 1 + 2d52: 9f ef ldi r25, 0xFF ; 255 + 2d54: cf 3f cpi r28, 0xFF ; 255 + 2d56: d9 07 cpc r29, r25 + 2d58: d9 f6 brne .-74 ; 0x2d10 + 2d5a: df 91 pop r29 + 2d5c: cf 91 pop r28 + 2d5e: 1f 91 pop r17 + 2d60: 0f 91 pop r16 + 2d62: ff 90 pop r15 + 2d64: ef 90 pop r14 + 2d66: df 90 pop r13 + 2d68: cf 90 pop r12 + 2d6a: bf 90 pop r11 + 2d6c: 08 95 ret + +00002d6e : + 2d6e: cf 92 push r12 + 2d70: df 92 push r13 + 2d72: ef 92 push r14 + 2d74: ff 92 push r15 + 2d76: 0f 93 push r16 + 2d78: 1f 93 push r17 + 2d7a: cf 93 push r28 + 2d7c: df 93 push r29 + 2d7e: f8 2e mov r15, r24 + 2d80: 06 2f mov r16, r22 + 2d82: e4 2e mov r14, r20 + 2d84: 10 e0 ldi r17, 0x00 ; 0 + 2d86: c7 e0 ldi r28, 0x07 ; 7 + 2d88: d0 e0 ldi r29, 0x00 ; 0 + 2d8a: 97 e0 ldi r25, 0x07 ; 7 + 2d8c: c9 2e mov r12, r25 + 2d8e: d1 2c mov r13, r1 + 2d90: 80 2f mov r24, r16 + 2d92: 61 e0 ldi r22, 0x01 ; 1 + 2d94: 0e 94 6f 15 call 0x2ade ; 0x2ade + 2d98: ee 20 and r14, r14 + 2d9a: 61 f4 brne .+24 ; 0x2db4 + 2d9c: 8f 2d mov r24, r15 + 2d9e: 0e 94 a4 15 call 0x2b48 ; 0x2b48 + 2da2: 96 01 movw r18, r12 + 2da4: 2c 1b sub r18, r28 + 2da6: 3d 0b sbc r19, r29 + 2da8: 02 c0 rjmp .+4 ; 0x2dae + 2daa: 88 0f add r24, r24 + 2dac: 99 1f adc r25, r25 + 2dae: 2a 95 dec r18 + 2db0: e2 f7 brpl .-8 ; 0x2daa + 2db2: 09 c0 rjmp .+18 ; 0x2dc6 + 2db4: 8f 2d mov r24, r15 + 2db6: 0e 94 a4 15 call 0x2b48 ; 0x2b48 + 2dba: 0c 2e mov r0, r28 + 2dbc: 02 c0 rjmp .+4 ; 0x2dc2 + 2dbe: 88 0f add r24, r24 + 2dc0: 99 1f adc r25, r25 + 2dc2: 0a 94 dec r0 + 2dc4: e2 f7 brpl .-8 ; 0x2dbe + 2dc6: 18 2b or r17, r24 + 2dc8: 80 2f mov r24, r16 + 2dca: 60 e0 ldi r22, 0x00 ; 0 + 2dcc: 0e 94 6f 15 call 0x2ade ; 0x2ade + 2dd0: 21 97 sbiw r28, 0x01 ; 1 + 2dd2: 8f ef ldi r24, 0xFF ; 255 + 2dd4: cf 3f cpi r28, 0xFF ; 255 + 2dd6: d8 07 cpc r29, r24 + 2dd8: d9 f6 brne .-74 ; 0x2d90 + 2dda: 81 2f mov r24, r17 + 2ddc: df 91 pop r29 + 2dde: cf 91 pop r28 + 2de0: 1f 91 pop r17 + 2de2: 0f 91 pop r16 + 2de4: ff 90 pop r15 + 2de6: ef 90 pop r14 + 2de8: df 90 pop r13 + 2dea: cf 90 pop r12 + 2dec: 08 95 ret + +00002dee <__fixunssfsi>: + 2dee: ef 92 push r14 + 2df0: ff 92 push r15 + 2df2: 0f 93 push r16 + 2df4: 1f 93 push r17 + 2df6: 7b 01 movw r14, r22 + 2df8: 8c 01 movw r16, r24 + 2dfa: 20 e0 ldi r18, 0x00 ; 0 + 2dfc: 30 e0 ldi r19, 0x00 ; 0 + 2dfe: 40 e0 ldi r20, 0x00 ; 0 + 2e00: 5f e4 ldi r21, 0x4F ; 79 + 2e02: 0e 94 73 1a call 0x34e6 ; 0x34e6 <__gesf2> + 2e06: 88 23 and r24, r24 + 2e08: 8c f0 brlt .+34 ; 0x2e2c <__fixunssfsi+0x3e> + 2e0a: c8 01 movw r24, r16 + 2e0c: b7 01 movw r22, r14 + 2e0e: 20 e0 ldi r18, 0x00 ; 0 + 2e10: 30 e0 ldi r19, 0x00 ; 0 + 2e12: 40 e0 ldi r20, 0x00 ; 0 + 2e14: 5f e4 ldi r21, 0x4F ; 79 + 2e16: 0e 94 6f 18 call 0x30de ; 0x30de <__subsf3> + 2e1a: 0e 94 31 1b call 0x3662 ; 0x3662 <__fixsfsi> + 2e1e: 9b 01 movw r18, r22 + 2e20: ac 01 movw r20, r24 + 2e22: 20 50 subi r18, 0x00 ; 0 + 2e24: 30 40 sbci r19, 0x00 ; 0 + 2e26: 40 40 sbci r20, 0x00 ; 0 + 2e28: 50 48 sbci r21, 0x80 ; 128 + 2e2a: 06 c0 rjmp .+12 ; 0x2e38 <__fixunssfsi+0x4a> + 2e2c: c8 01 movw r24, r16 + 2e2e: b7 01 movw r22, r14 + 2e30: 0e 94 31 1b call 0x3662 ; 0x3662 <__fixsfsi> + 2e34: 9b 01 movw r18, r22 + 2e36: ac 01 movw r20, r24 + 2e38: b9 01 movw r22, r18 + 2e3a: ca 01 movw r24, r20 + 2e3c: 1f 91 pop r17 + 2e3e: 0f 91 pop r16 + 2e40: ff 90 pop r15 + 2e42: ef 90 pop r14 + 2e44: 08 95 ret + +00002e46 <_fpadd_parts>: + 2e46: a0 e0 ldi r26, 0x00 ; 0 + 2e48: b0 e0 ldi r27, 0x00 ; 0 + 2e4a: e9 e2 ldi r30, 0x29 ; 41 + 2e4c: f7 e1 ldi r31, 0x17 ; 23 + 2e4e: 0c 94 4f 1e jmp 0x3c9e ; 0x3c9e <__prologue_saves__> + 2e52: dc 01 movw r26, r24 + 2e54: 2b 01 movw r4, r22 + 2e56: fa 01 movw r30, r20 + 2e58: 9c 91 ld r25, X + 2e5a: 92 30 cpi r25, 0x02 ; 2 + 2e5c: 08 f4 brcc .+2 ; 0x2e60 <_fpadd_parts+0x1a> + 2e5e: 39 c1 rjmp .+626 ; 0x30d2 <_fpadd_parts+0x28c> + 2e60: eb 01 movw r28, r22 + 2e62: 88 81 ld r24, Y + 2e64: 82 30 cpi r24, 0x02 ; 2 + 2e66: 08 f4 brcc .+2 ; 0x2e6a <_fpadd_parts+0x24> + 2e68: 33 c1 rjmp .+614 ; 0x30d0 <_fpadd_parts+0x28a> + 2e6a: 94 30 cpi r25, 0x04 ; 4 + 2e6c: 69 f4 brne .+26 ; 0x2e88 <_fpadd_parts+0x42> + 2e6e: 84 30 cpi r24, 0x04 ; 4 + 2e70: 09 f0 breq .+2 ; 0x2e74 <_fpadd_parts+0x2e> + 2e72: 2f c1 rjmp .+606 ; 0x30d2 <_fpadd_parts+0x28c> + 2e74: 11 96 adiw r26, 0x01 ; 1 + 2e76: 9c 91 ld r25, X + 2e78: 11 97 sbiw r26, 0x01 ; 1 + 2e7a: 89 81 ldd r24, Y+1 ; 0x01 + 2e7c: 98 17 cp r25, r24 + 2e7e: 09 f4 brne .+2 ; 0x2e82 <_fpadd_parts+0x3c> + 2e80: 28 c1 rjmp .+592 ; 0x30d2 <_fpadd_parts+0x28c> + 2e82: a8 ea ldi r26, 0xA8 ; 168 + 2e84: b1 e0 ldi r27, 0x01 ; 1 + 2e86: 25 c1 rjmp .+586 ; 0x30d2 <_fpadd_parts+0x28c> + 2e88: 84 30 cpi r24, 0x04 ; 4 + 2e8a: 09 f4 brne .+2 ; 0x2e8e <_fpadd_parts+0x48> + 2e8c: 21 c1 rjmp .+578 ; 0x30d0 <_fpadd_parts+0x28a> + 2e8e: 82 30 cpi r24, 0x02 ; 2 + 2e90: a9 f4 brne .+42 ; 0x2ebc <_fpadd_parts+0x76> + 2e92: 92 30 cpi r25, 0x02 ; 2 + 2e94: 09 f0 breq .+2 ; 0x2e98 <_fpadd_parts+0x52> + 2e96: 1d c1 rjmp .+570 ; 0x30d2 <_fpadd_parts+0x28c> + 2e98: 9a 01 movw r18, r20 + 2e9a: ad 01 movw r20, r26 + 2e9c: 88 e0 ldi r24, 0x08 ; 8 + 2e9e: ea 01 movw r28, r20 + 2ea0: 09 90 ld r0, Y+ + 2ea2: ae 01 movw r20, r28 + 2ea4: e9 01 movw r28, r18 + 2ea6: 09 92 st Y+, r0 + 2ea8: 9e 01 movw r18, r28 + 2eaa: 81 50 subi r24, 0x01 ; 1 + 2eac: c1 f7 brne .-16 ; 0x2e9e <_fpadd_parts+0x58> + 2eae: e2 01 movw r28, r4 + 2eb0: 89 81 ldd r24, Y+1 ; 0x01 + 2eb2: 11 96 adiw r26, 0x01 ; 1 + 2eb4: 9c 91 ld r25, X + 2eb6: 89 23 and r24, r25 + 2eb8: 81 83 std Z+1, r24 ; 0x01 + 2eba: 08 c1 rjmp .+528 ; 0x30cc <_fpadd_parts+0x286> + 2ebc: 92 30 cpi r25, 0x02 ; 2 + 2ebe: 09 f4 brne .+2 ; 0x2ec2 <_fpadd_parts+0x7c> + 2ec0: 07 c1 rjmp .+526 ; 0x30d0 <_fpadd_parts+0x28a> + 2ec2: 12 96 adiw r26, 0x02 ; 2 + 2ec4: 2d 90 ld r2, X+ + 2ec6: 3c 90 ld r3, X + 2ec8: 13 97 sbiw r26, 0x03 ; 3 + 2eca: eb 01 movw r28, r22 + 2ecc: 8a 81 ldd r24, Y+2 ; 0x02 + 2ece: 9b 81 ldd r25, Y+3 ; 0x03 + 2ed0: 14 96 adiw r26, 0x04 ; 4 + 2ed2: ad 90 ld r10, X+ + 2ed4: bd 90 ld r11, X+ + 2ed6: cd 90 ld r12, X+ + 2ed8: dc 90 ld r13, X + 2eda: 17 97 sbiw r26, 0x07 ; 7 + 2edc: ec 80 ldd r14, Y+4 ; 0x04 + 2ede: fd 80 ldd r15, Y+5 ; 0x05 + 2ee0: 0e 81 ldd r16, Y+6 ; 0x06 + 2ee2: 1f 81 ldd r17, Y+7 ; 0x07 + 2ee4: 91 01 movw r18, r2 + 2ee6: 28 1b sub r18, r24 + 2ee8: 39 0b sbc r19, r25 + 2eea: b9 01 movw r22, r18 + 2eec: 37 ff sbrs r19, 7 + 2eee: 04 c0 rjmp .+8 ; 0x2ef8 <_fpadd_parts+0xb2> + 2ef0: 66 27 eor r22, r22 + 2ef2: 77 27 eor r23, r23 + 2ef4: 62 1b sub r22, r18 + 2ef6: 73 0b sbc r23, r19 + 2ef8: 60 32 cpi r22, 0x20 ; 32 + 2efa: 71 05 cpc r23, r1 + 2efc: 0c f0 brlt .+2 ; 0x2f00 <_fpadd_parts+0xba> + 2efe: 61 c0 rjmp .+194 ; 0x2fc2 <_fpadd_parts+0x17c> + 2f00: 12 16 cp r1, r18 + 2f02: 13 06 cpc r1, r19 + 2f04: 6c f5 brge .+90 ; 0x2f60 <_fpadd_parts+0x11a> + 2f06: 37 01 movw r6, r14 + 2f08: 48 01 movw r8, r16 + 2f0a: 06 2e mov r0, r22 + 2f0c: 04 c0 rjmp .+8 ; 0x2f16 <_fpadd_parts+0xd0> + 2f0e: 96 94 lsr r9 + 2f10: 87 94 ror r8 + 2f12: 77 94 ror r7 + 2f14: 67 94 ror r6 + 2f16: 0a 94 dec r0 + 2f18: d2 f7 brpl .-12 ; 0x2f0e <_fpadd_parts+0xc8> + 2f1a: 21 e0 ldi r18, 0x01 ; 1 + 2f1c: 30 e0 ldi r19, 0x00 ; 0 + 2f1e: 40 e0 ldi r20, 0x00 ; 0 + 2f20: 50 e0 ldi r21, 0x00 ; 0 + 2f22: 04 c0 rjmp .+8 ; 0x2f2c <_fpadd_parts+0xe6> + 2f24: 22 0f add r18, r18 + 2f26: 33 1f adc r19, r19 + 2f28: 44 1f adc r20, r20 + 2f2a: 55 1f adc r21, r21 + 2f2c: 6a 95 dec r22 + 2f2e: d2 f7 brpl .-12 ; 0x2f24 <_fpadd_parts+0xde> + 2f30: 21 50 subi r18, 0x01 ; 1 + 2f32: 30 40 sbci r19, 0x00 ; 0 + 2f34: 40 40 sbci r20, 0x00 ; 0 + 2f36: 50 40 sbci r21, 0x00 ; 0 + 2f38: 2e 21 and r18, r14 + 2f3a: 3f 21 and r19, r15 + 2f3c: 40 23 and r20, r16 + 2f3e: 51 23 and r21, r17 + 2f40: 21 15 cp r18, r1 + 2f42: 31 05 cpc r19, r1 + 2f44: 41 05 cpc r20, r1 + 2f46: 51 05 cpc r21, r1 + 2f48: 21 f0 breq .+8 ; 0x2f52 <_fpadd_parts+0x10c> + 2f4a: 21 e0 ldi r18, 0x01 ; 1 + 2f4c: 30 e0 ldi r19, 0x00 ; 0 + 2f4e: 40 e0 ldi r20, 0x00 ; 0 + 2f50: 50 e0 ldi r21, 0x00 ; 0 + 2f52: 79 01 movw r14, r18 + 2f54: 8a 01 movw r16, r20 + 2f56: e6 28 or r14, r6 + 2f58: f7 28 or r15, r7 + 2f5a: 08 29 or r16, r8 + 2f5c: 19 29 or r17, r9 + 2f5e: 3c c0 rjmp .+120 ; 0x2fd8 <_fpadd_parts+0x192> + 2f60: 23 2b or r18, r19 + 2f62: d1 f1 breq .+116 ; 0x2fd8 <_fpadd_parts+0x192> + 2f64: 26 0e add r2, r22 + 2f66: 37 1e adc r3, r23 + 2f68: 35 01 movw r6, r10 + 2f6a: 46 01 movw r8, r12 + 2f6c: 06 2e mov r0, r22 + 2f6e: 04 c0 rjmp .+8 ; 0x2f78 <_fpadd_parts+0x132> + 2f70: 96 94 lsr r9 + 2f72: 87 94 ror r8 + 2f74: 77 94 ror r7 + 2f76: 67 94 ror r6 + 2f78: 0a 94 dec r0 + 2f7a: d2 f7 brpl .-12 ; 0x2f70 <_fpadd_parts+0x12a> + 2f7c: 21 e0 ldi r18, 0x01 ; 1 + 2f7e: 30 e0 ldi r19, 0x00 ; 0 + 2f80: 40 e0 ldi r20, 0x00 ; 0 + 2f82: 50 e0 ldi r21, 0x00 ; 0 + 2f84: 04 c0 rjmp .+8 ; 0x2f8e <_fpadd_parts+0x148> + 2f86: 22 0f add r18, r18 + 2f88: 33 1f adc r19, r19 + 2f8a: 44 1f adc r20, r20 + 2f8c: 55 1f adc r21, r21 + 2f8e: 6a 95 dec r22 + 2f90: d2 f7 brpl .-12 ; 0x2f86 <_fpadd_parts+0x140> + 2f92: 21 50 subi r18, 0x01 ; 1 + 2f94: 30 40 sbci r19, 0x00 ; 0 + 2f96: 40 40 sbci r20, 0x00 ; 0 + 2f98: 50 40 sbci r21, 0x00 ; 0 + 2f9a: 2a 21 and r18, r10 + 2f9c: 3b 21 and r19, r11 + 2f9e: 4c 21 and r20, r12 + 2fa0: 5d 21 and r21, r13 + 2fa2: 21 15 cp r18, r1 + 2fa4: 31 05 cpc r19, r1 + 2fa6: 41 05 cpc r20, r1 + 2fa8: 51 05 cpc r21, r1 + 2faa: 21 f0 breq .+8 ; 0x2fb4 <_fpadd_parts+0x16e> + 2fac: 21 e0 ldi r18, 0x01 ; 1 + 2fae: 30 e0 ldi r19, 0x00 ; 0 + 2fb0: 40 e0 ldi r20, 0x00 ; 0 + 2fb2: 50 e0 ldi r21, 0x00 ; 0 + 2fb4: 59 01 movw r10, r18 + 2fb6: 6a 01 movw r12, r20 + 2fb8: a6 28 or r10, r6 + 2fba: b7 28 or r11, r7 + 2fbc: c8 28 or r12, r8 + 2fbe: d9 28 or r13, r9 + 2fc0: 0b c0 rjmp .+22 ; 0x2fd8 <_fpadd_parts+0x192> + 2fc2: 82 15 cp r24, r2 + 2fc4: 93 05 cpc r25, r3 + 2fc6: 2c f0 brlt .+10 ; 0x2fd2 <_fpadd_parts+0x18c> + 2fc8: 1c 01 movw r2, r24 + 2fca: aa 24 eor r10, r10 + 2fcc: bb 24 eor r11, r11 + 2fce: 65 01 movw r12, r10 + 2fd0: 03 c0 rjmp .+6 ; 0x2fd8 <_fpadd_parts+0x192> + 2fd2: ee 24 eor r14, r14 + 2fd4: ff 24 eor r15, r15 + 2fd6: 87 01 movw r16, r14 + 2fd8: 11 96 adiw r26, 0x01 ; 1 + 2fda: 9c 91 ld r25, X + 2fdc: d2 01 movw r26, r4 + 2fde: 11 96 adiw r26, 0x01 ; 1 + 2fe0: 8c 91 ld r24, X + 2fe2: 98 17 cp r25, r24 + 2fe4: 09 f4 brne .+2 ; 0x2fe8 <_fpadd_parts+0x1a2> + 2fe6: 45 c0 rjmp .+138 ; 0x3072 <_fpadd_parts+0x22c> + 2fe8: 99 23 and r25, r25 + 2fea: 39 f0 breq .+14 ; 0x2ffa <_fpadd_parts+0x1b4> + 2fec: a8 01 movw r20, r16 + 2fee: 97 01 movw r18, r14 + 2ff0: 2a 19 sub r18, r10 + 2ff2: 3b 09 sbc r19, r11 + 2ff4: 4c 09 sbc r20, r12 + 2ff6: 5d 09 sbc r21, r13 + 2ff8: 06 c0 rjmp .+12 ; 0x3006 <_fpadd_parts+0x1c0> + 2ffa: a6 01 movw r20, r12 + 2ffc: 95 01 movw r18, r10 + 2ffe: 2e 19 sub r18, r14 + 3000: 3f 09 sbc r19, r15 + 3002: 40 0b sbc r20, r16 + 3004: 51 0b sbc r21, r17 + 3006: 57 fd sbrc r21, 7 + 3008: 08 c0 rjmp .+16 ; 0x301a <_fpadd_parts+0x1d4> + 300a: 11 82 std Z+1, r1 ; 0x01 + 300c: 33 82 std Z+3, r3 ; 0x03 + 300e: 22 82 std Z+2, r2 ; 0x02 + 3010: 24 83 std Z+4, r18 ; 0x04 + 3012: 35 83 std Z+5, r19 ; 0x05 + 3014: 46 83 std Z+6, r20 ; 0x06 + 3016: 57 83 std Z+7, r21 ; 0x07 + 3018: 1d c0 rjmp .+58 ; 0x3054 <_fpadd_parts+0x20e> + 301a: 81 e0 ldi r24, 0x01 ; 1 + 301c: 81 83 std Z+1, r24 ; 0x01 + 301e: 33 82 std Z+3, r3 ; 0x03 + 3020: 22 82 std Z+2, r2 ; 0x02 + 3022: 88 27 eor r24, r24 + 3024: 99 27 eor r25, r25 + 3026: dc 01 movw r26, r24 + 3028: 82 1b sub r24, r18 + 302a: 93 0b sbc r25, r19 + 302c: a4 0b sbc r26, r20 + 302e: b5 0b sbc r27, r21 + 3030: 84 83 std Z+4, r24 ; 0x04 + 3032: 95 83 std Z+5, r25 ; 0x05 + 3034: a6 83 std Z+6, r26 ; 0x06 + 3036: b7 83 std Z+7, r27 ; 0x07 + 3038: 0d c0 rjmp .+26 ; 0x3054 <_fpadd_parts+0x20e> + 303a: 22 0f add r18, r18 + 303c: 33 1f adc r19, r19 + 303e: 44 1f adc r20, r20 + 3040: 55 1f adc r21, r21 + 3042: 24 83 std Z+4, r18 ; 0x04 + 3044: 35 83 std Z+5, r19 ; 0x05 + 3046: 46 83 std Z+6, r20 ; 0x06 + 3048: 57 83 std Z+7, r21 ; 0x07 + 304a: 82 81 ldd r24, Z+2 ; 0x02 + 304c: 93 81 ldd r25, Z+3 ; 0x03 + 304e: 01 97 sbiw r24, 0x01 ; 1 + 3050: 93 83 std Z+3, r25 ; 0x03 + 3052: 82 83 std Z+2, r24 ; 0x02 + 3054: 24 81 ldd r18, Z+4 ; 0x04 + 3056: 35 81 ldd r19, Z+5 ; 0x05 + 3058: 46 81 ldd r20, Z+6 ; 0x06 + 305a: 57 81 ldd r21, Z+7 ; 0x07 + 305c: da 01 movw r26, r20 + 305e: c9 01 movw r24, r18 + 3060: 01 97 sbiw r24, 0x01 ; 1 + 3062: a1 09 sbc r26, r1 + 3064: b1 09 sbc r27, r1 + 3066: 8f 5f subi r24, 0xFF ; 255 + 3068: 9f 4f sbci r25, 0xFF ; 255 + 306a: af 4f sbci r26, 0xFF ; 255 + 306c: bf 43 sbci r27, 0x3F ; 63 + 306e: 28 f3 brcs .-54 ; 0x303a <_fpadd_parts+0x1f4> + 3070: 0b c0 rjmp .+22 ; 0x3088 <_fpadd_parts+0x242> + 3072: 91 83 std Z+1, r25 ; 0x01 + 3074: 33 82 std Z+3, r3 ; 0x03 + 3076: 22 82 std Z+2, r2 ; 0x02 + 3078: ea 0c add r14, r10 + 307a: fb 1c adc r15, r11 + 307c: 0c 1d adc r16, r12 + 307e: 1d 1d adc r17, r13 + 3080: e4 82 std Z+4, r14 ; 0x04 + 3082: f5 82 std Z+5, r15 ; 0x05 + 3084: 06 83 std Z+6, r16 ; 0x06 + 3086: 17 83 std Z+7, r17 ; 0x07 + 3088: 83 e0 ldi r24, 0x03 ; 3 + 308a: 80 83 st Z, r24 + 308c: 24 81 ldd r18, Z+4 ; 0x04 + 308e: 35 81 ldd r19, Z+5 ; 0x05 + 3090: 46 81 ldd r20, Z+6 ; 0x06 + 3092: 57 81 ldd r21, Z+7 ; 0x07 + 3094: 57 ff sbrs r21, 7 + 3096: 1a c0 rjmp .+52 ; 0x30cc <_fpadd_parts+0x286> + 3098: c9 01 movw r24, r18 + 309a: aa 27 eor r26, r26 + 309c: 97 fd sbrc r25, 7 + 309e: a0 95 com r26 + 30a0: ba 2f mov r27, r26 + 30a2: 81 70 andi r24, 0x01 ; 1 + 30a4: 90 70 andi r25, 0x00 ; 0 + 30a6: a0 70 andi r26, 0x00 ; 0 + 30a8: b0 70 andi r27, 0x00 ; 0 + 30aa: 56 95 lsr r21 + 30ac: 47 95 ror r20 + 30ae: 37 95 ror r19 + 30b0: 27 95 ror r18 + 30b2: 82 2b or r24, r18 + 30b4: 93 2b or r25, r19 + 30b6: a4 2b or r26, r20 + 30b8: b5 2b or r27, r21 + 30ba: 84 83 std Z+4, r24 ; 0x04 + 30bc: 95 83 std Z+5, r25 ; 0x05 + 30be: a6 83 std Z+6, r26 ; 0x06 + 30c0: b7 83 std Z+7, r27 ; 0x07 + 30c2: 82 81 ldd r24, Z+2 ; 0x02 + 30c4: 93 81 ldd r25, Z+3 ; 0x03 + 30c6: 01 96 adiw r24, 0x01 ; 1 + 30c8: 93 83 std Z+3, r25 ; 0x03 + 30ca: 82 83 std Z+2, r24 ; 0x02 + 30cc: df 01 movw r26, r30 + 30ce: 01 c0 rjmp .+2 ; 0x30d2 <_fpadd_parts+0x28c> + 30d0: d2 01 movw r26, r4 + 30d2: cd 01 movw r24, r26 + 30d4: cd b7 in r28, 0x3d ; 61 + 30d6: de b7 in r29, 0x3e ; 62 + 30d8: e2 e1 ldi r30, 0x12 ; 18 + 30da: 0c 94 6b 1e jmp 0x3cd6 ; 0x3cd6 <__epilogue_restores__> + +000030de <__subsf3>: + 30de: a0 e2 ldi r26, 0x20 ; 32 + 30e0: b0 e0 ldi r27, 0x00 ; 0 + 30e2: e5 e7 ldi r30, 0x75 ; 117 + 30e4: f8 e1 ldi r31, 0x18 ; 24 + 30e6: 0c 94 5b 1e jmp 0x3cb6 ; 0x3cb6 <__prologue_saves__+0x18> + 30ea: 69 83 std Y+1, r22 ; 0x01 + 30ec: 7a 83 std Y+2, r23 ; 0x02 + 30ee: 8b 83 std Y+3, r24 ; 0x03 + 30f0: 9c 83 std Y+4, r25 ; 0x04 + 30f2: 2d 83 std Y+5, r18 ; 0x05 + 30f4: 3e 83 std Y+6, r19 ; 0x06 + 30f6: 4f 83 std Y+7, r20 ; 0x07 + 30f8: 58 87 std Y+8, r21 ; 0x08 + 30fa: e9 e0 ldi r30, 0x09 ; 9 + 30fc: ee 2e mov r14, r30 + 30fe: f1 2c mov r15, r1 + 3100: ec 0e add r14, r28 + 3102: fd 1e adc r15, r29 + 3104: ce 01 movw r24, r28 + 3106: 01 96 adiw r24, 0x01 ; 1 + 3108: b7 01 movw r22, r14 + 310a: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 310e: 8e 01 movw r16, r28 + 3110: 0f 5e subi r16, 0xEF ; 239 + 3112: 1f 4f sbci r17, 0xFF ; 255 + 3114: ce 01 movw r24, r28 + 3116: 05 96 adiw r24, 0x05 ; 5 + 3118: b8 01 movw r22, r16 + 311a: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 311e: 8a 89 ldd r24, Y+18 ; 0x12 + 3120: 91 e0 ldi r25, 0x01 ; 1 + 3122: 89 27 eor r24, r25 + 3124: 8a 8b std Y+18, r24 ; 0x12 + 3126: c7 01 movw r24, r14 + 3128: b8 01 movw r22, r16 + 312a: ae 01 movw r20, r28 + 312c: 47 5e subi r20, 0xE7 ; 231 + 312e: 5f 4f sbci r21, 0xFF ; 255 + 3130: 0e 94 23 17 call 0x2e46 ; 0x2e46 <_fpadd_parts> + 3134: 0e 94 4d 1c call 0x389a ; 0x389a <__pack_f> + 3138: a0 96 adiw r28, 0x20 ; 32 + 313a: e6 e0 ldi r30, 0x06 ; 6 + 313c: 0c 94 77 1e jmp 0x3cee ; 0x3cee <__epilogue_restores__+0x18> + +00003140 <__addsf3>: + 3140: a0 e2 ldi r26, 0x20 ; 32 + 3142: b0 e0 ldi r27, 0x00 ; 0 + 3144: e6 ea ldi r30, 0xA6 ; 166 + 3146: f8 e1 ldi r31, 0x18 ; 24 + 3148: 0c 94 5b 1e jmp 0x3cb6 ; 0x3cb6 <__prologue_saves__+0x18> + 314c: 69 83 std Y+1, r22 ; 0x01 + 314e: 7a 83 std Y+2, r23 ; 0x02 + 3150: 8b 83 std Y+3, r24 ; 0x03 + 3152: 9c 83 std Y+4, r25 ; 0x04 + 3154: 2d 83 std Y+5, r18 ; 0x05 + 3156: 3e 83 std Y+6, r19 ; 0x06 + 3158: 4f 83 std Y+7, r20 ; 0x07 + 315a: 58 87 std Y+8, r21 ; 0x08 + 315c: f9 e0 ldi r31, 0x09 ; 9 + 315e: ef 2e mov r14, r31 + 3160: f1 2c mov r15, r1 + 3162: ec 0e add r14, r28 + 3164: fd 1e adc r15, r29 + 3166: ce 01 movw r24, r28 + 3168: 01 96 adiw r24, 0x01 ; 1 + 316a: b7 01 movw r22, r14 + 316c: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 3170: 8e 01 movw r16, r28 + 3172: 0f 5e subi r16, 0xEF ; 239 + 3174: 1f 4f sbci r17, 0xFF ; 255 + 3176: ce 01 movw r24, r28 + 3178: 05 96 adiw r24, 0x05 ; 5 + 317a: b8 01 movw r22, r16 + 317c: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 3180: c7 01 movw r24, r14 + 3182: b8 01 movw r22, r16 + 3184: ae 01 movw r20, r28 + 3186: 47 5e subi r20, 0xE7 ; 231 + 3188: 5f 4f sbci r21, 0xFF ; 255 + 318a: 0e 94 23 17 call 0x2e46 ; 0x2e46 <_fpadd_parts> + 318e: 0e 94 4d 1c call 0x389a ; 0x389a <__pack_f> + 3192: a0 96 adiw r28, 0x20 ; 32 + 3194: e6 e0 ldi r30, 0x06 ; 6 + 3196: 0c 94 77 1e jmp 0x3cee ; 0x3cee <__epilogue_restores__+0x18> + +0000319a <__mulsf3>: + 319a: a0 e2 ldi r26, 0x20 ; 32 + 319c: b0 e0 ldi r27, 0x00 ; 0 + 319e: e3 ed ldi r30, 0xD3 ; 211 + 31a0: f8 e1 ldi r31, 0x18 ; 24 + 31a2: 0c 94 4f 1e jmp 0x3c9e ; 0x3c9e <__prologue_saves__> + 31a6: 69 83 std Y+1, r22 ; 0x01 + 31a8: 7a 83 std Y+2, r23 ; 0x02 + 31aa: 8b 83 std Y+3, r24 ; 0x03 + 31ac: 9c 83 std Y+4, r25 ; 0x04 + 31ae: 2d 83 std Y+5, r18 ; 0x05 + 31b0: 3e 83 std Y+6, r19 ; 0x06 + 31b2: 4f 83 std Y+7, r20 ; 0x07 + 31b4: 58 87 std Y+8, r21 ; 0x08 + 31b6: ce 01 movw r24, r28 + 31b8: 01 96 adiw r24, 0x01 ; 1 + 31ba: be 01 movw r22, r28 + 31bc: 67 5f subi r22, 0xF7 ; 247 + 31be: 7f 4f sbci r23, 0xFF ; 255 + 31c0: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 31c4: ce 01 movw r24, r28 + 31c6: 05 96 adiw r24, 0x05 ; 5 + 31c8: be 01 movw r22, r28 + 31ca: 6f 5e subi r22, 0xEF ; 239 + 31cc: 7f 4f sbci r23, 0xFF ; 255 + 31ce: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 31d2: 99 85 ldd r25, Y+9 ; 0x09 + 31d4: 92 30 cpi r25, 0x02 ; 2 + 31d6: 88 f0 brcs .+34 ; 0x31fa <__mulsf3+0x60> + 31d8: 89 89 ldd r24, Y+17 ; 0x11 + 31da: 82 30 cpi r24, 0x02 ; 2 + 31dc: c8 f0 brcs .+50 ; 0x3210 <__mulsf3+0x76> + 31de: 94 30 cpi r25, 0x04 ; 4 + 31e0: 19 f4 brne .+6 ; 0x31e8 <__mulsf3+0x4e> + 31e2: 82 30 cpi r24, 0x02 ; 2 + 31e4: 51 f4 brne .+20 ; 0x31fa <__mulsf3+0x60> + 31e6: 04 c0 rjmp .+8 ; 0x31f0 <__mulsf3+0x56> + 31e8: 84 30 cpi r24, 0x04 ; 4 + 31ea: 29 f4 brne .+10 ; 0x31f6 <__mulsf3+0x5c> + 31ec: 92 30 cpi r25, 0x02 ; 2 + 31ee: 81 f4 brne .+32 ; 0x3210 <__mulsf3+0x76> + 31f0: 88 ea ldi r24, 0xA8 ; 168 + 31f2: 91 e0 ldi r25, 0x01 ; 1 + 31f4: c6 c0 rjmp .+396 ; 0x3382 <__mulsf3+0x1e8> + 31f6: 92 30 cpi r25, 0x02 ; 2 + 31f8: 49 f4 brne .+18 ; 0x320c <__mulsf3+0x72> + 31fa: 20 e0 ldi r18, 0x00 ; 0 + 31fc: 9a 85 ldd r25, Y+10 ; 0x0a + 31fe: 8a 89 ldd r24, Y+18 ; 0x12 + 3200: 98 13 cpse r25, r24 + 3202: 21 e0 ldi r18, 0x01 ; 1 + 3204: 2a 87 std Y+10, r18 ; 0x0a + 3206: ce 01 movw r24, r28 + 3208: 09 96 adiw r24, 0x09 ; 9 + 320a: bb c0 rjmp .+374 ; 0x3382 <__mulsf3+0x1e8> + 320c: 82 30 cpi r24, 0x02 ; 2 + 320e: 49 f4 brne .+18 ; 0x3222 <__mulsf3+0x88> + 3210: 20 e0 ldi r18, 0x00 ; 0 + 3212: 9a 85 ldd r25, Y+10 ; 0x0a + 3214: 8a 89 ldd r24, Y+18 ; 0x12 + 3216: 98 13 cpse r25, r24 + 3218: 21 e0 ldi r18, 0x01 ; 1 + 321a: 2a 8b std Y+18, r18 ; 0x12 + 321c: ce 01 movw r24, r28 + 321e: 41 96 adiw r24, 0x11 ; 17 + 3220: b0 c0 rjmp .+352 ; 0x3382 <__mulsf3+0x1e8> + 3222: 2d 84 ldd r2, Y+13 ; 0x0d + 3224: 3e 84 ldd r3, Y+14 ; 0x0e + 3226: 4f 84 ldd r4, Y+15 ; 0x0f + 3228: 58 88 ldd r5, Y+16 ; 0x10 + 322a: 6d 88 ldd r6, Y+21 ; 0x15 + 322c: 7e 88 ldd r7, Y+22 ; 0x16 + 322e: 8f 88 ldd r8, Y+23 ; 0x17 + 3230: 98 8c ldd r9, Y+24 ; 0x18 + 3232: ee 24 eor r14, r14 + 3234: ff 24 eor r15, r15 + 3236: 87 01 movw r16, r14 + 3238: aa 24 eor r10, r10 + 323a: bb 24 eor r11, r11 + 323c: 65 01 movw r12, r10 + 323e: 40 e0 ldi r20, 0x00 ; 0 + 3240: 50 e0 ldi r21, 0x00 ; 0 + 3242: 60 e0 ldi r22, 0x00 ; 0 + 3244: 70 e0 ldi r23, 0x00 ; 0 + 3246: e0 e0 ldi r30, 0x00 ; 0 + 3248: f0 e0 ldi r31, 0x00 ; 0 + 324a: c1 01 movw r24, r2 + 324c: 81 70 andi r24, 0x01 ; 1 + 324e: 90 70 andi r25, 0x00 ; 0 + 3250: 89 2b or r24, r25 + 3252: e9 f0 breq .+58 ; 0x328e <__mulsf3+0xf4> + 3254: e6 0c add r14, r6 + 3256: f7 1c adc r15, r7 + 3258: 08 1d adc r16, r8 + 325a: 19 1d adc r17, r9 + 325c: 9a 01 movw r18, r20 + 325e: ab 01 movw r20, r22 + 3260: 2a 0d add r18, r10 + 3262: 3b 1d adc r19, r11 + 3264: 4c 1d adc r20, r12 + 3266: 5d 1d adc r21, r13 + 3268: 80 e0 ldi r24, 0x00 ; 0 + 326a: 90 e0 ldi r25, 0x00 ; 0 + 326c: a0 e0 ldi r26, 0x00 ; 0 + 326e: b0 e0 ldi r27, 0x00 ; 0 + 3270: e6 14 cp r14, r6 + 3272: f7 04 cpc r15, r7 + 3274: 08 05 cpc r16, r8 + 3276: 19 05 cpc r17, r9 + 3278: 20 f4 brcc .+8 ; 0x3282 <__mulsf3+0xe8> + 327a: 81 e0 ldi r24, 0x01 ; 1 + 327c: 90 e0 ldi r25, 0x00 ; 0 + 327e: a0 e0 ldi r26, 0x00 ; 0 + 3280: b0 e0 ldi r27, 0x00 ; 0 + 3282: ba 01 movw r22, r20 + 3284: a9 01 movw r20, r18 + 3286: 48 0f add r20, r24 + 3288: 59 1f adc r21, r25 + 328a: 6a 1f adc r22, r26 + 328c: 7b 1f adc r23, r27 + 328e: aa 0c add r10, r10 + 3290: bb 1c adc r11, r11 + 3292: cc 1c adc r12, r12 + 3294: dd 1c adc r13, r13 + 3296: 97 fe sbrs r9, 7 + 3298: 08 c0 rjmp .+16 ; 0x32aa <__mulsf3+0x110> + 329a: 81 e0 ldi r24, 0x01 ; 1 + 329c: 90 e0 ldi r25, 0x00 ; 0 + 329e: a0 e0 ldi r26, 0x00 ; 0 + 32a0: b0 e0 ldi r27, 0x00 ; 0 + 32a2: a8 2a or r10, r24 + 32a4: b9 2a or r11, r25 + 32a6: ca 2a or r12, r26 + 32a8: db 2a or r13, r27 + 32aa: 31 96 adiw r30, 0x01 ; 1 + 32ac: e0 32 cpi r30, 0x20 ; 32 + 32ae: f1 05 cpc r31, r1 + 32b0: 49 f0 breq .+18 ; 0x32c4 <__mulsf3+0x12a> + 32b2: 66 0c add r6, r6 + 32b4: 77 1c adc r7, r7 + 32b6: 88 1c adc r8, r8 + 32b8: 99 1c adc r9, r9 + 32ba: 56 94 lsr r5 + 32bc: 47 94 ror r4 + 32be: 37 94 ror r3 + 32c0: 27 94 ror r2 + 32c2: c3 cf rjmp .-122 ; 0x324a <__mulsf3+0xb0> + 32c4: fa 85 ldd r31, Y+10 ; 0x0a + 32c6: ea 89 ldd r30, Y+18 ; 0x12 + 32c8: 2b 89 ldd r18, Y+19 ; 0x13 + 32ca: 3c 89 ldd r19, Y+20 ; 0x14 + 32cc: 8b 85 ldd r24, Y+11 ; 0x0b + 32ce: 9c 85 ldd r25, Y+12 ; 0x0c + 32d0: 28 0f add r18, r24 + 32d2: 39 1f adc r19, r25 + 32d4: 2e 5f subi r18, 0xFE ; 254 + 32d6: 3f 4f sbci r19, 0xFF ; 255 + 32d8: 17 c0 rjmp .+46 ; 0x3308 <__mulsf3+0x16e> + 32da: ca 01 movw r24, r20 + 32dc: 81 70 andi r24, 0x01 ; 1 + 32de: 90 70 andi r25, 0x00 ; 0 + 32e0: 89 2b or r24, r25 + 32e2: 61 f0 breq .+24 ; 0x32fc <__mulsf3+0x162> + 32e4: 16 95 lsr r17 + 32e6: 07 95 ror r16 + 32e8: f7 94 ror r15 + 32ea: e7 94 ror r14 + 32ec: 80 e0 ldi r24, 0x00 ; 0 + 32ee: 90 e0 ldi r25, 0x00 ; 0 + 32f0: a0 e0 ldi r26, 0x00 ; 0 + 32f2: b0 e8 ldi r27, 0x80 ; 128 + 32f4: e8 2a or r14, r24 + 32f6: f9 2a or r15, r25 + 32f8: 0a 2b or r16, r26 + 32fa: 1b 2b or r17, r27 + 32fc: 76 95 lsr r23 + 32fe: 67 95 ror r22 + 3300: 57 95 ror r21 + 3302: 47 95 ror r20 + 3304: 2f 5f subi r18, 0xFF ; 255 + 3306: 3f 4f sbci r19, 0xFF ; 255 + 3308: 77 fd sbrc r23, 7 + 330a: e7 cf rjmp .-50 ; 0x32da <__mulsf3+0x140> + 330c: 0c c0 rjmp .+24 ; 0x3326 <__mulsf3+0x18c> + 330e: 44 0f add r20, r20 + 3310: 55 1f adc r21, r21 + 3312: 66 1f adc r22, r22 + 3314: 77 1f adc r23, r23 + 3316: 17 fd sbrc r17, 7 + 3318: 41 60 ori r20, 0x01 ; 1 + 331a: ee 0c add r14, r14 + 331c: ff 1c adc r15, r15 + 331e: 00 1f adc r16, r16 + 3320: 11 1f adc r17, r17 + 3322: 21 50 subi r18, 0x01 ; 1 + 3324: 30 40 sbci r19, 0x00 ; 0 + 3326: 40 30 cpi r20, 0x00 ; 0 + 3328: 90 e0 ldi r25, 0x00 ; 0 + 332a: 59 07 cpc r21, r25 + 332c: 90 e0 ldi r25, 0x00 ; 0 + 332e: 69 07 cpc r22, r25 + 3330: 90 e4 ldi r25, 0x40 ; 64 + 3332: 79 07 cpc r23, r25 + 3334: 60 f3 brcs .-40 ; 0x330e <__mulsf3+0x174> + 3336: 2b 8f std Y+27, r18 ; 0x1b + 3338: 3c 8f std Y+28, r19 ; 0x1c + 333a: db 01 movw r26, r22 + 333c: ca 01 movw r24, r20 + 333e: 8f 77 andi r24, 0x7F ; 127 + 3340: 90 70 andi r25, 0x00 ; 0 + 3342: a0 70 andi r26, 0x00 ; 0 + 3344: b0 70 andi r27, 0x00 ; 0 + 3346: 80 34 cpi r24, 0x40 ; 64 + 3348: 91 05 cpc r25, r1 + 334a: a1 05 cpc r26, r1 + 334c: b1 05 cpc r27, r1 + 334e: 61 f4 brne .+24 ; 0x3368 <__mulsf3+0x1ce> + 3350: 47 fd sbrc r20, 7 + 3352: 0a c0 rjmp .+20 ; 0x3368 <__mulsf3+0x1ce> + 3354: e1 14 cp r14, r1 + 3356: f1 04 cpc r15, r1 + 3358: 01 05 cpc r16, r1 + 335a: 11 05 cpc r17, r1 + 335c: 29 f0 breq .+10 ; 0x3368 <__mulsf3+0x1ce> + 335e: 40 5c subi r20, 0xC0 ; 192 + 3360: 5f 4f sbci r21, 0xFF ; 255 + 3362: 6f 4f sbci r22, 0xFF ; 255 + 3364: 7f 4f sbci r23, 0xFF ; 255 + 3366: 40 78 andi r20, 0x80 ; 128 + 3368: 1a 8e std Y+26, r1 ; 0x1a + 336a: fe 17 cp r31, r30 + 336c: 11 f0 breq .+4 ; 0x3372 <__mulsf3+0x1d8> + 336e: 81 e0 ldi r24, 0x01 ; 1 + 3370: 8a 8f std Y+26, r24 ; 0x1a + 3372: 4d 8f std Y+29, r20 ; 0x1d + 3374: 5e 8f std Y+30, r21 ; 0x1e + 3376: 6f 8f std Y+31, r22 ; 0x1f + 3378: 78 a3 std Y+32, r23 ; 0x20 + 337a: 83 e0 ldi r24, 0x03 ; 3 + 337c: 89 8f std Y+25, r24 ; 0x19 + 337e: ce 01 movw r24, r28 + 3380: 49 96 adiw r24, 0x19 ; 25 + 3382: 0e 94 4d 1c call 0x389a ; 0x389a <__pack_f> + 3386: a0 96 adiw r28, 0x20 ; 32 + 3388: e2 e1 ldi r30, 0x12 ; 18 + 338a: 0c 94 6b 1e jmp 0x3cd6 ; 0x3cd6 <__epilogue_restores__> + +0000338e <__divsf3>: + 338e: a8 e1 ldi r26, 0x18 ; 24 + 3390: b0 e0 ldi r27, 0x00 ; 0 + 3392: ed ec ldi r30, 0xCD ; 205 + 3394: f9 e1 ldi r31, 0x19 ; 25 + 3396: 0c 94 57 1e jmp 0x3cae ; 0x3cae <__prologue_saves__+0x10> + 339a: 69 83 std Y+1, r22 ; 0x01 + 339c: 7a 83 std Y+2, r23 ; 0x02 + 339e: 8b 83 std Y+3, r24 ; 0x03 + 33a0: 9c 83 std Y+4, r25 ; 0x04 + 33a2: 2d 83 std Y+5, r18 ; 0x05 + 33a4: 3e 83 std Y+6, r19 ; 0x06 + 33a6: 4f 83 std Y+7, r20 ; 0x07 + 33a8: 58 87 std Y+8, r21 ; 0x08 + 33aa: b9 e0 ldi r27, 0x09 ; 9 + 33ac: eb 2e mov r14, r27 + 33ae: f1 2c mov r15, r1 + 33b0: ec 0e add r14, r28 + 33b2: fd 1e adc r15, r29 + 33b4: ce 01 movw r24, r28 + 33b6: 01 96 adiw r24, 0x01 ; 1 + 33b8: b7 01 movw r22, r14 + 33ba: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 33be: 8e 01 movw r16, r28 + 33c0: 0f 5e subi r16, 0xEF ; 239 + 33c2: 1f 4f sbci r17, 0xFF ; 255 + 33c4: ce 01 movw r24, r28 + 33c6: 05 96 adiw r24, 0x05 ; 5 + 33c8: b8 01 movw r22, r16 + 33ca: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 33ce: 29 85 ldd r18, Y+9 ; 0x09 + 33d0: 22 30 cpi r18, 0x02 ; 2 + 33d2: 08 f4 brcc .+2 ; 0x33d6 <__divsf3+0x48> + 33d4: 7e c0 rjmp .+252 ; 0x34d2 <__divsf3+0x144> + 33d6: 39 89 ldd r19, Y+17 ; 0x11 + 33d8: 32 30 cpi r19, 0x02 ; 2 + 33da: 10 f4 brcc .+4 ; 0x33e0 <__divsf3+0x52> + 33dc: b8 01 movw r22, r16 + 33de: 7c c0 rjmp .+248 ; 0x34d8 <__divsf3+0x14a> + 33e0: 8a 85 ldd r24, Y+10 ; 0x0a + 33e2: 9a 89 ldd r25, Y+18 ; 0x12 + 33e4: 89 27 eor r24, r25 + 33e6: 8a 87 std Y+10, r24 ; 0x0a + 33e8: 24 30 cpi r18, 0x04 ; 4 + 33ea: 11 f0 breq .+4 ; 0x33f0 <__divsf3+0x62> + 33ec: 22 30 cpi r18, 0x02 ; 2 + 33ee: 31 f4 brne .+12 ; 0x33fc <__divsf3+0x6e> + 33f0: 23 17 cp r18, r19 + 33f2: 09 f0 breq .+2 ; 0x33f6 <__divsf3+0x68> + 33f4: 6e c0 rjmp .+220 ; 0x34d2 <__divsf3+0x144> + 33f6: 68 ea ldi r22, 0xA8 ; 168 + 33f8: 71 e0 ldi r23, 0x01 ; 1 + 33fa: 6e c0 rjmp .+220 ; 0x34d8 <__divsf3+0x14a> + 33fc: 34 30 cpi r19, 0x04 ; 4 + 33fe: 39 f4 brne .+14 ; 0x340e <__divsf3+0x80> + 3400: 1d 86 std Y+13, r1 ; 0x0d + 3402: 1e 86 std Y+14, r1 ; 0x0e + 3404: 1f 86 std Y+15, r1 ; 0x0f + 3406: 18 8a std Y+16, r1 ; 0x10 + 3408: 1c 86 std Y+12, r1 ; 0x0c + 340a: 1b 86 std Y+11, r1 ; 0x0b + 340c: 04 c0 rjmp .+8 ; 0x3416 <__divsf3+0x88> + 340e: 32 30 cpi r19, 0x02 ; 2 + 3410: 21 f4 brne .+8 ; 0x341a <__divsf3+0x8c> + 3412: 84 e0 ldi r24, 0x04 ; 4 + 3414: 89 87 std Y+9, r24 ; 0x09 + 3416: b7 01 movw r22, r14 + 3418: 5f c0 rjmp .+190 ; 0x34d8 <__divsf3+0x14a> + 341a: 2b 85 ldd r18, Y+11 ; 0x0b + 341c: 3c 85 ldd r19, Y+12 ; 0x0c + 341e: 8b 89 ldd r24, Y+19 ; 0x13 + 3420: 9c 89 ldd r25, Y+20 ; 0x14 + 3422: 28 1b sub r18, r24 + 3424: 39 0b sbc r19, r25 + 3426: 3c 87 std Y+12, r19 ; 0x0c + 3428: 2b 87 std Y+11, r18 ; 0x0b + 342a: ed 84 ldd r14, Y+13 ; 0x0d + 342c: fe 84 ldd r15, Y+14 ; 0x0e + 342e: 0f 85 ldd r16, Y+15 ; 0x0f + 3430: 18 89 ldd r17, Y+16 ; 0x10 + 3432: ad 88 ldd r10, Y+21 ; 0x15 + 3434: be 88 ldd r11, Y+22 ; 0x16 + 3436: cf 88 ldd r12, Y+23 ; 0x17 + 3438: d8 8c ldd r13, Y+24 ; 0x18 + 343a: ea 14 cp r14, r10 + 343c: fb 04 cpc r15, r11 + 343e: 0c 05 cpc r16, r12 + 3440: 1d 05 cpc r17, r13 + 3442: 40 f4 brcc .+16 ; 0x3454 <__divsf3+0xc6> + 3444: ee 0c add r14, r14 + 3446: ff 1c adc r15, r15 + 3448: 00 1f adc r16, r16 + 344a: 11 1f adc r17, r17 + 344c: 21 50 subi r18, 0x01 ; 1 + 344e: 30 40 sbci r19, 0x00 ; 0 + 3450: 3c 87 std Y+12, r19 ; 0x0c + 3452: 2b 87 std Y+11, r18 ; 0x0b + 3454: 20 e0 ldi r18, 0x00 ; 0 + 3456: 30 e0 ldi r19, 0x00 ; 0 + 3458: 40 e0 ldi r20, 0x00 ; 0 + 345a: 50 e0 ldi r21, 0x00 ; 0 + 345c: 80 e0 ldi r24, 0x00 ; 0 + 345e: 90 e0 ldi r25, 0x00 ; 0 + 3460: a0 e0 ldi r26, 0x00 ; 0 + 3462: b0 e4 ldi r27, 0x40 ; 64 + 3464: 60 e0 ldi r22, 0x00 ; 0 + 3466: 70 e0 ldi r23, 0x00 ; 0 + 3468: ea 14 cp r14, r10 + 346a: fb 04 cpc r15, r11 + 346c: 0c 05 cpc r16, r12 + 346e: 1d 05 cpc r17, r13 + 3470: 40 f0 brcs .+16 ; 0x3482 <__divsf3+0xf4> + 3472: 28 2b or r18, r24 + 3474: 39 2b or r19, r25 + 3476: 4a 2b or r20, r26 + 3478: 5b 2b or r21, r27 + 347a: ea 18 sub r14, r10 + 347c: fb 08 sbc r15, r11 + 347e: 0c 09 sbc r16, r12 + 3480: 1d 09 sbc r17, r13 + 3482: b6 95 lsr r27 + 3484: a7 95 ror r26 + 3486: 97 95 ror r25 + 3488: 87 95 ror r24 + 348a: ee 0c add r14, r14 + 348c: ff 1c adc r15, r15 + 348e: 00 1f adc r16, r16 + 3490: 11 1f adc r17, r17 + 3492: 6f 5f subi r22, 0xFF ; 255 + 3494: 7f 4f sbci r23, 0xFF ; 255 + 3496: 6f 31 cpi r22, 0x1F ; 31 + 3498: 71 05 cpc r23, r1 + 349a: 31 f7 brne .-52 ; 0x3468 <__divsf3+0xda> + 349c: da 01 movw r26, r20 + 349e: c9 01 movw r24, r18 + 34a0: 8f 77 andi r24, 0x7F ; 127 + 34a2: 90 70 andi r25, 0x00 ; 0 + 34a4: a0 70 andi r26, 0x00 ; 0 + 34a6: b0 70 andi r27, 0x00 ; 0 + 34a8: 80 34 cpi r24, 0x40 ; 64 + 34aa: 91 05 cpc r25, r1 + 34ac: a1 05 cpc r26, r1 + 34ae: b1 05 cpc r27, r1 + 34b0: 61 f4 brne .+24 ; 0x34ca <__divsf3+0x13c> + 34b2: 27 fd sbrc r18, 7 + 34b4: 0a c0 rjmp .+20 ; 0x34ca <__divsf3+0x13c> + 34b6: e1 14 cp r14, r1 + 34b8: f1 04 cpc r15, r1 + 34ba: 01 05 cpc r16, r1 + 34bc: 11 05 cpc r17, r1 + 34be: 29 f0 breq .+10 ; 0x34ca <__divsf3+0x13c> + 34c0: 20 5c subi r18, 0xC0 ; 192 + 34c2: 3f 4f sbci r19, 0xFF ; 255 + 34c4: 4f 4f sbci r20, 0xFF ; 255 + 34c6: 5f 4f sbci r21, 0xFF ; 255 + 34c8: 20 78 andi r18, 0x80 ; 128 + 34ca: 2d 87 std Y+13, r18 ; 0x0d + 34cc: 3e 87 std Y+14, r19 ; 0x0e + 34ce: 4f 87 std Y+15, r20 ; 0x0f + 34d0: 58 8b std Y+16, r21 ; 0x10 + 34d2: be 01 movw r22, r28 + 34d4: 67 5f subi r22, 0xF7 ; 247 + 34d6: 7f 4f sbci r23, 0xFF ; 255 + 34d8: cb 01 movw r24, r22 + 34da: 0e 94 4d 1c call 0x389a ; 0x389a <__pack_f> + 34de: 68 96 adiw r28, 0x18 ; 24 + 34e0: ea e0 ldi r30, 0x0A ; 10 + 34e2: 0c 94 73 1e jmp 0x3ce6 ; 0x3ce6 <__epilogue_restores__+0x10> + +000034e6 <__gesf2>: + 34e6: a8 e1 ldi r26, 0x18 ; 24 + 34e8: b0 e0 ldi r27, 0x00 ; 0 + 34ea: e9 e7 ldi r30, 0x79 ; 121 + 34ec: fa e1 ldi r31, 0x1A ; 26 + 34ee: 0c 94 5b 1e jmp 0x3cb6 ; 0x3cb6 <__prologue_saves__+0x18> + 34f2: 69 83 std Y+1, r22 ; 0x01 + 34f4: 7a 83 std Y+2, r23 ; 0x02 + 34f6: 8b 83 std Y+3, r24 ; 0x03 + 34f8: 9c 83 std Y+4, r25 ; 0x04 + 34fa: 2d 83 std Y+5, r18 ; 0x05 + 34fc: 3e 83 std Y+6, r19 ; 0x06 + 34fe: 4f 83 std Y+7, r20 ; 0x07 + 3500: 58 87 std Y+8, r21 ; 0x08 + 3502: 89 e0 ldi r24, 0x09 ; 9 + 3504: e8 2e mov r14, r24 + 3506: f1 2c mov r15, r1 + 3508: ec 0e add r14, r28 + 350a: fd 1e adc r15, r29 + 350c: ce 01 movw r24, r28 + 350e: 01 96 adiw r24, 0x01 ; 1 + 3510: b7 01 movw r22, r14 + 3512: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 3516: 8e 01 movw r16, r28 + 3518: 0f 5e subi r16, 0xEF ; 239 + 351a: 1f 4f sbci r17, 0xFF ; 255 + 351c: ce 01 movw r24, r28 + 351e: 05 96 adiw r24, 0x05 ; 5 + 3520: b8 01 movw r22, r16 + 3522: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 3526: 89 85 ldd r24, Y+9 ; 0x09 + 3528: 82 30 cpi r24, 0x02 ; 2 + 352a: 40 f0 brcs .+16 ; 0x353c <__gesf2+0x56> + 352c: 89 89 ldd r24, Y+17 ; 0x11 + 352e: 82 30 cpi r24, 0x02 ; 2 + 3530: 28 f0 brcs .+10 ; 0x353c <__gesf2+0x56> + 3532: c7 01 movw r24, r14 + 3534: b8 01 movw r22, r16 + 3536: 0e 94 9a 1d call 0x3b34 ; 0x3b34 <__fpcmp_parts_f> + 353a: 01 c0 rjmp .+2 ; 0x353e <__gesf2+0x58> + 353c: 8f ef ldi r24, 0xFF ; 255 + 353e: 68 96 adiw r28, 0x18 ; 24 + 3540: e6 e0 ldi r30, 0x06 ; 6 + 3542: 0c 94 77 1e jmp 0x3cee ; 0x3cee <__epilogue_restores__+0x18> + +00003546 <__ltsf2>: + 3546: a8 e1 ldi r26, 0x18 ; 24 + 3548: b0 e0 ldi r27, 0x00 ; 0 + 354a: e9 ea ldi r30, 0xA9 ; 169 + 354c: fa e1 ldi r31, 0x1A ; 26 + 354e: 0c 94 5b 1e jmp 0x3cb6 ; 0x3cb6 <__prologue_saves__+0x18> + 3552: 69 83 std Y+1, r22 ; 0x01 + 3554: 7a 83 std Y+2, r23 ; 0x02 + 3556: 8b 83 std Y+3, r24 ; 0x03 + 3558: 9c 83 std Y+4, r25 ; 0x04 + 355a: 2d 83 std Y+5, r18 ; 0x05 + 355c: 3e 83 std Y+6, r19 ; 0x06 + 355e: 4f 83 std Y+7, r20 ; 0x07 + 3560: 58 87 std Y+8, r21 ; 0x08 + 3562: 89 e0 ldi r24, 0x09 ; 9 + 3564: e8 2e mov r14, r24 + 3566: f1 2c mov r15, r1 + 3568: ec 0e add r14, r28 + 356a: fd 1e adc r15, r29 + 356c: ce 01 movw r24, r28 + 356e: 01 96 adiw r24, 0x01 ; 1 + 3570: b7 01 movw r22, r14 + 3572: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 3576: 8e 01 movw r16, r28 + 3578: 0f 5e subi r16, 0xEF ; 239 + 357a: 1f 4f sbci r17, 0xFF ; 255 + 357c: ce 01 movw r24, r28 + 357e: 05 96 adiw r24, 0x05 ; 5 + 3580: b8 01 movw r22, r16 + 3582: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 3586: 89 85 ldd r24, Y+9 ; 0x09 + 3588: 82 30 cpi r24, 0x02 ; 2 + 358a: 40 f0 brcs .+16 ; 0x359c <__ltsf2+0x56> + 358c: 89 89 ldd r24, Y+17 ; 0x11 + 358e: 82 30 cpi r24, 0x02 ; 2 + 3590: 28 f0 brcs .+10 ; 0x359c <__ltsf2+0x56> + 3592: c7 01 movw r24, r14 + 3594: b8 01 movw r22, r16 + 3596: 0e 94 9a 1d call 0x3b34 ; 0x3b34 <__fpcmp_parts_f> + 359a: 01 c0 rjmp .+2 ; 0x359e <__ltsf2+0x58> + 359c: 81 e0 ldi r24, 0x01 ; 1 + 359e: 68 96 adiw r28, 0x18 ; 24 + 35a0: e6 e0 ldi r30, 0x06 ; 6 + 35a2: 0c 94 77 1e jmp 0x3cee ; 0x3cee <__epilogue_restores__+0x18> + +000035a6 <__floatsisf>: + 35a6: a8 e0 ldi r26, 0x08 ; 8 + 35a8: b0 e0 ldi r27, 0x00 ; 0 + 35aa: e9 ed ldi r30, 0xD9 ; 217 + 35ac: fa e1 ldi r31, 0x1A ; 26 + 35ae: 0c 94 58 1e jmp 0x3cb0 ; 0x3cb0 <__prologue_saves__+0x12> + 35b2: 9b 01 movw r18, r22 + 35b4: ac 01 movw r20, r24 + 35b6: 83 e0 ldi r24, 0x03 ; 3 + 35b8: 89 83 std Y+1, r24 ; 0x01 + 35ba: da 01 movw r26, r20 + 35bc: c9 01 movw r24, r18 + 35be: 88 27 eor r24, r24 + 35c0: b7 fd sbrc r27, 7 + 35c2: 83 95 inc r24 + 35c4: 99 27 eor r25, r25 + 35c6: aa 27 eor r26, r26 + 35c8: bb 27 eor r27, r27 + 35ca: b8 2e mov r11, r24 + 35cc: 21 15 cp r18, r1 + 35ce: 31 05 cpc r19, r1 + 35d0: 41 05 cpc r20, r1 + 35d2: 51 05 cpc r21, r1 + 35d4: 19 f4 brne .+6 ; 0x35dc <__floatsisf+0x36> + 35d6: 82 e0 ldi r24, 0x02 ; 2 + 35d8: 89 83 std Y+1, r24 ; 0x01 + 35da: 3a c0 rjmp .+116 ; 0x3650 <__floatsisf+0xaa> + 35dc: 88 23 and r24, r24 + 35de: a9 f0 breq .+42 ; 0x360a <__floatsisf+0x64> + 35e0: 20 30 cpi r18, 0x00 ; 0 + 35e2: 80 e0 ldi r24, 0x00 ; 0 + 35e4: 38 07 cpc r19, r24 + 35e6: 80 e0 ldi r24, 0x00 ; 0 + 35e8: 48 07 cpc r20, r24 + 35ea: 80 e8 ldi r24, 0x80 ; 128 + 35ec: 58 07 cpc r21, r24 + 35ee: 29 f4 brne .+10 ; 0x35fa <__floatsisf+0x54> + 35f0: 60 e0 ldi r22, 0x00 ; 0 + 35f2: 70 e0 ldi r23, 0x00 ; 0 + 35f4: 80 e0 ldi r24, 0x00 ; 0 + 35f6: 9f ec ldi r25, 0xCF ; 207 + 35f8: 30 c0 rjmp .+96 ; 0x365a <__floatsisf+0xb4> + 35fa: ee 24 eor r14, r14 + 35fc: ff 24 eor r15, r15 + 35fe: 87 01 movw r16, r14 + 3600: e2 1a sub r14, r18 + 3602: f3 0a sbc r15, r19 + 3604: 04 0b sbc r16, r20 + 3606: 15 0b sbc r17, r21 + 3608: 02 c0 rjmp .+4 ; 0x360e <__floatsisf+0x68> + 360a: 79 01 movw r14, r18 + 360c: 8a 01 movw r16, r20 + 360e: 8e e1 ldi r24, 0x1E ; 30 + 3610: c8 2e mov r12, r24 + 3612: d1 2c mov r13, r1 + 3614: dc 82 std Y+4, r13 ; 0x04 + 3616: cb 82 std Y+3, r12 ; 0x03 + 3618: ed 82 std Y+5, r14 ; 0x05 + 361a: fe 82 std Y+6, r15 ; 0x06 + 361c: 0f 83 std Y+7, r16 ; 0x07 + 361e: 18 87 std Y+8, r17 ; 0x08 + 3620: c8 01 movw r24, r16 + 3622: b7 01 movw r22, r14 + 3624: 0e 94 fe 1b call 0x37fc ; 0x37fc <__clzsi2> + 3628: 01 97 sbiw r24, 0x01 ; 1 + 362a: 18 16 cp r1, r24 + 362c: 19 06 cpc r1, r25 + 362e: 84 f4 brge .+32 ; 0x3650 <__floatsisf+0xaa> + 3630: 08 2e mov r0, r24 + 3632: 04 c0 rjmp .+8 ; 0x363c <__floatsisf+0x96> + 3634: ee 0c add r14, r14 + 3636: ff 1c adc r15, r15 + 3638: 00 1f adc r16, r16 + 363a: 11 1f adc r17, r17 + 363c: 0a 94 dec r0 + 363e: d2 f7 brpl .-12 ; 0x3634 <__floatsisf+0x8e> + 3640: ed 82 std Y+5, r14 ; 0x05 + 3642: fe 82 std Y+6, r15 ; 0x06 + 3644: 0f 83 std Y+7, r16 ; 0x07 + 3646: 18 87 std Y+8, r17 ; 0x08 + 3648: c8 1a sub r12, r24 + 364a: d9 0a sbc r13, r25 + 364c: dc 82 std Y+4, r13 ; 0x04 + 364e: cb 82 std Y+3, r12 ; 0x03 + 3650: ba 82 std Y+2, r11 ; 0x02 + 3652: ce 01 movw r24, r28 + 3654: 01 96 adiw r24, 0x01 ; 1 + 3656: 0e 94 4d 1c call 0x389a ; 0x389a <__pack_f> + 365a: 28 96 adiw r28, 0x08 ; 8 + 365c: e9 e0 ldi r30, 0x09 ; 9 + 365e: 0c 94 74 1e jmp 0x3ce8 ; 0x3ce8 <__epilogue_restores__+0x12> + +00003662 <__fixsfsi>: + 3662: ac e0 ldi r26, 0x0C ; 12 + 3664: b0 e0 ldi r27, 0x00 ; 0 + 3666: e7 e3 ldi r30, 0x37 ; 55 + 3668: fb e1 ldi r31, 0x1B ; 27 + 366a: 0c 94 5f 1e jmp 0x3cbe ; 0x3cbe <__prologue_saves__+0x20> + 366e: 69 83 std Y+1, r22 ; 0x01 + 3670: 7a 83 std Y+2, r23 ; 0x02 + 3672: 8b 83 std Y+3, r24 ; 0x03 + 3674: 9c 83 std Y+4, r25 ; 0x04 + 3676: ce 01 movw r24, r28 + 3678: 01 96 adiw r24, 0x01 ; 1 + 367a: be 01 movw r22, r28 + 367c: 6b 5f subi r22, 0xFB ; 251 + 367e: 7f 4f sbci r23, 0xFF ; 255 + 3680: 0e 94 22 1d call 0x3a44 ; 0x3a44 <__unpack_f> + 3684: 8d 81 ldd r24, Y+5 ; 0x05 + 3686: 82 30 cpi r24, 0x02 ; 2 + 3688: 61 f1 breq .+88 ; 0x36e2 <__fixsfsi+0x80> + 368a: 82 30 cpi r24, 0x02 ; 2 + 368c: 50 f1 brcs .+84 ; 0x36e2 <__fixsfsi+0x80> + 368e: 84 30 cpi r24, 0x04 ; 4 + 3690: 21 f4 brne .+8 ; 0x369a <__fixsfsi+0x38> + 3692: 8e 81 ldd r24, Y+6 ; 0x06 + 3694: 88 23 and r24, r24 + 3696: 51 f1 breq .+84 ; 0x36ec <__fixsfsi+0x8a> + 3698: 2e c0 rjmp .+92 ; 0x36f6 <__fixsfsi+0x94> + 369a: 2f 81 ldd r18, Y+7 ; 0x07 + 369c: 38 85 ldd r19, Y+8 ; 0x08 + 369e: 37 fd sbrc r19, 7 + 36a0: 20 c0 rjmp .+64 ; 0x36e2 <__fixsfsi+0x80> + 36a2: 6e 81 ldd r22, Y+6 ; 0x06 + 36a4: 2f 31 cpi r18, 0x1F ; 31 + 36a6: 31 05 cpc r19, r1 + 36a8: 1c f0 brlt .+6 ; 0x36b0 <__fixsfsi+0x4e> + 36aa: 66 23 and r22, r22 + 36ac: f9 f0 breq .+62 ; 0x36ec <__fixsfsi+0x8a> + 36ae: 23 c0 rjmp .+70 ; 0x36f6 <__fixsfsi+0x94> + 36b0: 8e e1 ldi r24, 0x1E ; 30 + 36b2: 90 e0 ldi r25, 0x00 ; 0 + 36b4: 82 1b sub r24, r18 + 36b6: 93 0b sbc r25, r19 + 36b8: 29 85 ldd r18, Y+9 ; 0x09 + 36ba: 3a 85 ldd r19, Y+10 ; 0x0a + 36bc: 4b 85 ldd r20, Y+11 ; 0x0b + 36be: 5c 85 ldd r21, Y+12 ; 0x0c + 36c0: 04 c0 rjmp .+8 ; 0x36ca <__fixsfsi+0x68> + 36c2: 56 95 lsr r21 + 36c4: 47 95 ror r20 + 36c6: 37 95 ror r19 + 36c8: 27 95 ror r18 + 36ca: 8a 95 dec r24 + 36cc: d2 f7 brpl .-12 ; 0x36c2 <__fixsfsi+0x60> + 36ce: 66 23 and r22, r22 + 36d0: b1 f0 breq .+44 ; 0x36fe <__fixsfsi+0x9c> + 36d2: 50 95 com r21 + 36d4: 40 95 com r20 + 36d6: 30 95 com r19 + 36d8: 21 95 neg r18 + 36da: 3f 4f sbci r19, 0xFF ; 255 + 36dc: 4f 4f sbci r20, 0xFF ; 255 + 36de: 5f 4f sbci r21, 0xFF ; 255 + 36e0: 0e c0 rjmp .+28 ; 0x36fe <__fixsfsi+0x9c> + 36e2: 20 e0 ldi r18, 0x00 ; 0 + 36e4: 30 e0 ldi r19, 0x00 ; 0 + 36e6: 40 e0 ldi r20, 0x00 ; 0 + 36e8: 50 e0 ldi r21, 0x00 ; 0 + 36ea: 09 c0 rjmp .+18 ; 0x36fe <__fixsfsi+0x9c> + 36ec: 2f ef ldi r18, 0xFF ; 255 + 36ee: 3f ef ldi r19, 0xFF ; 255 + 36f0: 4f ef ldi r20, 0xFF ; 255 + 36f2: 5f e7 ldi r21, 0x7F ; 127 + 36f4: 04 c0 rjmp .+8 ; 0x36fe <__fixsfsi+0x9c> + 36f6: 20 e0 ldi r18, 0x00 ; 0 + 36f8: 30 e0 ldi r19, 0x00 ; 0 + 36fa: 40 e0 ldi r20, 0x00 ; 0 + 36fc: 50 e8 ldi r21, 0x80 ; 128 + 36fe: b9 01 movw r22, r18 + 3700: ca 01 movw r24, r20 + 3702: 2c 96 adiw r28, 0x0c ; 12 + 3704: e2 e0 ldi r30, 0x02 ; 2 + 3706: 0c 94 7b 1e jmp 0x3cf6 ; 0x3cf6 <__epilogue_restores__+0x20> + +0000370a <__floatunsisf>: + 370a: a8 e0 ldi r26, 0x08 ; 8 + 370c: b0 e0 ldi r27, 0x00 ; 0 + 370e: eb e8 ldi r30, 0x8B ; 139 + 3710: fb e1 ldi r31, 0x1B ; 27 + 3712: 0c 94 57 1e jmp 0x3cae ; 0x3cae <__prologue_saves__+0x10> + 3716: 7b 01 movw r14, r22 + 3718: 8c 01 movw r16, r24 + 371a: 61 15 cp r22, r1 + 371c: 71 05 cpc r23, r1 + 371e: 81 05 cpc r24, r1 + 3720: 91 05 cpc r25, r1 + 3722: 19 f4 brne .+6 ; 0x372a <__floatunsisf+0x20> + 3724: 82 e0 ldi r24, 0x02 ; 2 + 3726: 89 83 std Y+1, r24 ; 0x01 + 3728: 60 c0 rjmp .+192 ; 0x37ea <__floatunsisf+0xe0> + 372a: 83 e0 ldi r24, 0x03 ; 3 + 372c: 89 83 std Y+1, r24 ; 0x01 + 372e: 8e e1 ldi r24, 0x1E ; 30 + 3730: c8 2e mov r12, r24 + 3732: d1 2c mov r13, r1 + 3734: dc 82 std Y+4, r13 ; 0x04 + 3736: cb 82 std Y+3, r12 ; 0x03 + 3738: ed 82 std Y+5, r14 ; 0x05 + 373a: fe 82 std Y+6, r15 ; 0x06 + 373c: 0f 83 std Y+7, r16 ; 0x07 + 373e: 18 87 std Y+8, r17 ; 0x08 + 3740: c8 01 movw r24, r16 + 3742: b7 01 movw r22, r14 + 3744: 0e 94 fe 1b call 0x37fc ; 0x37fc <__clzsi2> + 3748: fc 01 movw r30, r24 + 374a: 31 97 sbiw r30, 0x01 ; 1 + 374c: f7 ff sbrs r31, 7 + 374e: 3b c0 rjmp .+118 ; 0x37c6 <__floatunsisf+0xbc> + 3750: 22 27 eor r18, r18 + 3752: 33 27 eor r19, r19 + 3754: 2e 1b sub r18, r30 + 3756: 3f 0b sbc r19, r31 + 3758: 57 01 movw r10, r14 + 375a: 68 01 movw r12, r16 + 375c: 02 2e mov r0, r18 + 375e: 04 c0 rjmp .+8 ; 0x3768 <__floatunsisf+0x5e> + 3760: d6 94 lsr r13 + 3762: c7 94 ror r12 + 3764: b7 94 ror r11 + 3766: a7 94 ror r10 + 3768: 0a 94 dec r0 + 376a: d2 f7 brpl .-12 ; 0x3760 <__floatunsisf+0x56> + 376c: 40 e0 ldi r20, 0x00 ; 0 + 376e: 50 e0 ldi r21, 0x00 ; 0 + 3770: 60 e0 ldi r22, 0x00 ; 0 + 3772: 70 e0 ldi r23, 0x00 ; 0 + 3774: 81 e0 ldi r24, 0x01 ; 1 + 3776: 90 e0 ldi r25, 0x00 ; 0 + 3778: a0 e0 ldi r26, 0x00 ; 0 + 377a: b0 e0 ldi r27, 0x00 ; 0 + 377c: 04 c0 rjmp .+8 ; 0x3786 <__floatunsisf+0x7c> + 377e: 88 0f add r24, r24 + 3780: 99 1f adc r25, r25 + 3782: aa 1f adc r26, r26 + 3784: bb 1f adc r27, r27 + 3786: 2a 95 dec r18 + 3788: d2 f7 brpl .-12 ; 0x377e <__floatunsisf+0x74> + 378a: 01 97 sbiw r24, 0x01 ; 1 + 378c: a1 09 sbc r26, r1 + 378e: b1 09 sbc r27, r1 + 3790: 8e 21 and r24, r14 + 3792: 9f 21 and r25, r15 + 3794: a0 23 and r26, r16 + 3796: b1 23 and r27, r17 + 3798: 00 97 sbiw r24, 0x00 ; 0 + 379a: a1 05 cpc r26, r1 + 379c: b1 05 cpc r27, r1 + 379e: 21 f0 breq .+8 ; 0x37a8 <__floatunsisf+0x9e> + 37a0: 41 e0 ldi r20, 0x01 ; 1 + 37a2: 50 e0 ldi r21, 0x00 ; 0 + 37a4: 60 e0 ldi r22, 0x00 ; 0 + 37a6: 70 e0 ldi r23, 0x00 ; 0 + 37a8: 4a 29 or r20, r10 + 37aa: 5b 29 or r21, r11 + 37ac: 6c 29 or r22, r12 + 37ae: 7d 29 or r23, r13 + 37b0: 4d 83 std Y+5, r20 ; 0x05 + 37b2: 5e 83 std Y+6, r21 ; 0x06 + 37b4: 6f 83 std Y+7, r22 ; 0x07 + 37b6: 78 87 std Y+8, r23 ; 0x08 + 37b8: 8e e1 ldi r24, 0x1E ; 30 + 37ba: 90 e0 ldi r25, 0x00 ; 0 + 37bc: 8e 1b sub r24, r30 + 37be: 9f 0b sbc r25, r31 + 37c0: 9c 83 std Y+4, r25 ; 0x04 + 37c2: 8b 83 std Y+3, r24 ; 0x03 + 37c4: 12 c0 rjmp .+36 ; 0x37ea <__floatunsisf+0xe0> + 37c6: 30 97 sbiw r30, 0x00 ; 0 + 37c8: 81 f0 breq .+32 ; 0x37ea <__floatunsisf+0xe0> + 37ca: 0e 2e mov r0, r30 + 37cc: 04 c0 rjmp .+8 ; 0x37d6 <__floatunsisf+0xcc> + 37ce: ee 0c add r14, r14 + 37d0: ff 1c adc r15, r15 + 37d2: 00 1f adc r16, r16 + 37d4: 11 1f adc r17, r17 + 37d6: 0a 94 dec r0 + 37d8: d2 f7 brpl .-12 ; 0x37ce <__floatunsisf+0xc4> + 37da: ed 82 std Y+5, r14 ; 0x05 + 37dc: fe 82 std Y+6, r15 ; 0x06 + 37de: 0f 83 std Y+7, r16 ; 0x07 + 37e0: 18 87 std Y+8, r17 ; 0x08 + 37e2: ce 1a sub r12, r30 + 37e4: df 0a sbc r13, r31 + 37e6: dc 82 std Y+4, r13 ; 0x04 + 37e8: cb 82 std Y+3, r12 ; 0x03 + 37ea: 1a 82 std Y+2, r1 ; 0x02 + 37ec: ce 01 movw r24, r28 + 37ee: 01 96 adiw r24, 0x01 ; 1 + 37f0: 0e 94 4d 1c call 0x389a ; 0x389a <__pack_f> + 37f4: 28 96 adiw r28, 0x08 ; 8 + 37f6: ea e0 ldi r30, 0x0A ; 10 + 37f8: 0c 94 73 1e jmp 0x3ce6 ; 0x3ce6 <__epilogue_restores__+0x10> + +000037fc <__clzsi2>: + 37fc: ef 92 push r14 + 37fe: ff 92 push r15 + 3800: 0f 93 push r16 + 3802: 1f 93 push r17 + 3804: 7b 01 movw r14, r22 + 3806: 8c 01 movw r16, r24 + 3808: 80 e0 ldi r24, 0x00 ; 0 + 380a: e8 16 cp r14, r24 + 380c: 80 e0 ldi r24, 0x00 ; 0 + 380e: f8 06 cpc r15, r24 + 3810: 81 e0 ldi r24, 0x01 ; 1 + 3812: 08 07 cpc r16, r24 + 3814: 80 e0 ldi r24, 0x00 ; 0 + 3816: 18 07 cpc r17, r24 + 3818: 88 f4 brcc .+34 ; 0x383c <__clzsi2+0x40> + 381a: 8f ef ldi r24, 0xFF ; 255 + 381c: e8 16 cp r14, r24 + 381e: f1 04 cpc r15, r1 + 3820: 01 05 cpc r16, r1 + 3822: 11 05 cpc r17, r1 + 3824: 31 f0 breq .+12 ; 0x3832 <__clzsi2+0x36> + 3826: 28 f0 brcs .+10 ; 0x3832 <__clzsi2+0x36> + 3828: 88 e0 ldi r24, 0x08 ; 8 + 382a: 90 e0 ldi r25, 0x00 ; 0 + 382c: a0 e0 ldi r26, 0x00 ; 0 + 382e: b0 e0 ldi r27, 0x00 ; 0 + 3830: 17 c0 rjmp .+46 ; 0x3860 <__clzsi2+0x64> + 3832: 80 e0 ldi r24, 0x00 ; 0 + 3834: 90 e0 ldi r25, 0x00 ; 0 + 3836: a0 e0 ldi r26, 0x00 ; 0 + 3838: b0 e0 ldi r27, 0x00 ; 0 + 383a: 12 c0 rjmp .+36 ; 0x3860 <__clzsi2+0x64> + 383c: 80 e0 ldi r24, 0x00 ; 0 + 383e: e8 16 cp r14, r24 + 3840: 80 e0 ldi r24, 0x00 ; 0 + 3842: f8 06 cpc r15, r24 + 3844: 80 e0 ldi r24, 0x00 ; 0 + 3846: 08 07 cpc r16, r24 + 3848: 81 e0 ldi r24, 0x01 ; 1 + 384a: 18 07 cpc r17, r24 + 384c: 28 f0 brcs .+10 ; 0x3858 <__clzsi2+0x5c> + 384e: 88 e1 ldi r24, 0x18 ; 24 + 3850: 90 e0 ldi r25, 0x00 ; 0 + 3852: a0 e0 ldi r26, 0x00 ; 0 + 3854: b0 e0 ldi r27, 0x00 ; 0 + 3856: 04 c0 rjmp .+8 ; 0x3860 <__clzsi2+0x64> + 3858: 80 e1 ldi r24, 0x10 ; 16 + 385a: 90 e0 ldi r25, 0x00 ; 0 + 385c: a0 e0 ldi r26, 0x00 ; 0 + 385e: b0 e0 ldi r27, 0x00 ; 0 + 3860: 20 e2 ldi r18, 0x20 ; 32 + 3862: 30 e0 ldi r19, 0x00 ; 0 + 3864: 40 e0 ldi r20, 0x00 ; 0 + 3866: 50 e0 ldi r21, 0x00 ; 0 + 3868: 28 1b sub r18, r24 + 386a: 39 0b sbc r19, r25 + 386c: 4a 0b sbc r20, r26 + 386e: 5b 0b sbc r21, r27 + 3870: 04 c0 rjmp .+8 ; 0x387a <__clzsi2+0x7e> + 3872: 16 95 lsr r17 + 3874: 07 95 ror r16 + 3876: f7 94 ror r15 + 3878: e7 94 ror r14 + 387a: 8a 95 dec r24 + 387c: d2 f7 brpl .-12 ; 0x3872 <__clzsi2+0x76> + 387e: f7 01 movw r30, r14 + 3880: e0 55 subi r30, 0x50 ; 80 + 3882: fe 4f sbci r31, 0xFE ; 254 + 3884: 80 81 ld r24, Z + 3886: 28 1b sub r18, r24 + 3888: 31 09 sbc r19, r1 + 388a: 41 09 sbc r20, r1 + 388c: 51 09 sbc r21, r1 + 388e: c9 01 movw r24, r18 + 3890: 1f 91 pop r17 + 3892: 0f 91 pop r16 + 3894: ff 90 pop r15 + 3896: ef 90 pop r14 + 3898: 08 95 ret + +0000389a <__pack_f>: + 389a: df 92 push r13 + 389c: ef 92 push r14 + 389e: ff 92 push r15 + 38a0: 0f 93 push r16 + 38a2: 1f 93 push r17 + 38a4: fc 01 movw r30, r24 + 38a6: e4 80 ldd r14, Z+4 ; 0x04 + 38a8: f5 80 ldd r15, Z+5 ; 0x05 + 38aa: 06 81 ldd r16, Z+6 ; 0x06 + 38ac: 17 81 ldd r17, Z+7 ; 0x07 + 38ae: d1 80 ldd r13, Z+1 ; 0x01 + 38b0: 80 81 ld r24, Z + 38b2: 82 30 cpi r24, 0x02 ; 2 + 38b4: 48 f4 brcc .+18 ; 0x38c8 <__pack_f+0x2e> + 38b6: 80 e0 ldi r24, 0x00 ; 0 + 38b8: 90 e0 ldi r25, 0x00 ; 0 + 38ba: a0 e1 ldi r26, 0x10 ; 16 + 38bc: b0 e0 ldi r27, 0x00 ; 0 + 38be: e8 2a or r14, r24 + 38c0: f9 2a or r15, r25 + 38c2: 0a 2b or r16, r26 + 38c4: 1b 2b or r17, r27 + 38c6: a5 c0 rjmp .+330 ; 0x3a12 <__pack_f+0x178> + 38c8: 84 30 cpi r24, 0x04 ; 4 + 38ca: 09 f4 brne .+2 ; 0x38ce <__pack_f+0x34> + 38cc: 9f c0 rjmp .+318 ; 0x3a0c <__pack_f+0x172> + 38ce: 82 30 cpi r24, 0x02 ; 2 + 38d0: 21 f4 brne .+8 ; 0x38da <__pack_f+0x40> + 38d2: ee 24 eor r14, r14 + 38d4: ff 24 eor r15, r15 + 38d6: 87 01 movw r16, r14 + 38d8: 05 c0 rjmp .+10 ; 0x38e4 <__pack_f+0x4a> + 38da: e1 14 cp r14, r1 + 38dc: f1 04 cpc r15, r1 + 38de: 01 05 cpc r16, r1 + 38e0: 11 05 cpc r17, r1 + 38e2: 19 f4 brne .+6 ; 0x38ea <__pack_f+0x50> + 38e4: e0 e0 ldi r30, 0x00 ; 0 + 38e6: f0 e0 ldi r31, 0x00 ; 0 + 38e8: 96 c0 rjmp .+300 ; 0x3a16 <__pack_f+0x17c> + 38ea: 62 81 ldd r22, Z+2 ; 0x02 + 38ec: 73 81 ldd r23, Z+3 ; 0x03 + 38ee: 9f ef ldi r25, 0xFF ; 255 + 38f0: 62 38 cpi r22, 0x82 ; 130 + 38f2: 79 07 cpc r23, r25 + 38f4: 0c f0 brlt .+2 ; 0x38f8 <__pack_f+0x5e> + 38f6: 5b c0 rjmp .+182 ; 0x39ae <__pack_f+0x114> + 38f8: 22 e8 ldi r18, 0x82 ; 130 + 38fa: 3f ef ldi r19, 0xFF ; 255 + 38fc: 26 1b sub r18, r22 + 38fe: 37 0b sbc r19, r23 + 3900: 2a 31 cpi r18, 0x1A ; 26 + 3902: 31 05 cpc r19, r1 + 3904: 2c f0 brlt .+10 ; 0x3910 <__pack_f+0x76> + 3906: 20 e0 ldi r18, 0x00 ; 0 + 3908: 30 e0 ldi r19, 0x00 ; 0 + 390a: 40 e0 ldi r20, 0x00 ; 0 + 390c: 50 e0 ldi r21, 0x00 ; 0 + 390e: 2a c0 rjmp .+84 ; 0x3964 <__pack_f+0xca> + 3910: b8 01 movw r22, r16 + 3912: a7 01 movw r20, r14 + 3914: 02 2e mov r0, r18 + 3916: 04 c0 rjmp .+8 ; 0x3920 <__pack_f+0x86> + 3918: 76 95 lsr r23 + 391a: 67 95 ror r22 + 391c: 57 95 ror r21 + 391e: 47 95 ror r20 + 3920: 0a 94 dec r0 + 3922: d2 f7 brpl .-12 ; 0x3918 <__pack_f+0x7e> + 3924: 81 e0 ldi r24, 0x01 ; 1 + 3926: 90 e0 ldi r25, 0x00 ; 0 + 3928: a0 e0 ldi r26, 0x00 ; 0 + 392a: b0 e0 ldi r27, 0x00 ; 0 + 392c: 04 c0 rjmp .+8 ; 0x3936 <__pack_f+0x9c> + 392e: 88 0f add r24, r24 + 3930: 99 1f adc r25, r25 + 3932: aa 1f adc r26, r26 + 3934: bb 1f adc r27, r27 + 3936: 2a 95 dec r18 + 3938: d2 f7 brpl .-12 ; 0x392e <__pack_f+0x94> + 393a: 01 97 sbiw r24, 0x01 ; 1 + 393c: a1 09 sbc r26, r1 + 393e: b1 09 sbc r27, r1 + 3940: 8e 21 and r24, r14 + 3942: 9f 21 and r25, r15 + 3944: a0 23 and r26, r16 + 3946: b1 23 and r27, r17 + 3948: 00 97 sbiw r24, 0x00 ; 0 + 394a: a1 05 cpc r26, r1 + 394c: b1 05 cpc r27, r1 + 394e: 21 f0 breq .+8 ; 0x3958 <__pack_f+0xbe> + 3950: 81 e0 ldi r24, 0x01 ; 1 + 3952: 90 e0 ldi r25, 0x00 ; 0 + 3954: a0 e0 ldi r26, 0x00 ; 0 + 3956: b0 e0 ldi r27, 0x00 ; 0 + 3958: 9a 01 movw r18, r20 + 395a: ab 01 movw r20, r22 + 395c: 28 2b or r18, r24 + 395e: 39 2b or r19, r25 + 3960: 4a 2b or r20, r26 + 3962: 5b 2b or r21, r27 + 3964: da 01 movw r26, r20 + 3966: c9 01 movw r24, r18 + 3968: 8f 77 andi r24, 0x7F ; 127 + 396a: 90 70 andi r25, 0x00 ; 0 + 396c: a0 70 andi r26, 0x00 ; 0 + 396e: b0 70 andi r27, 0x00 ; 0 + 3970: 80 34 cpi r24, 0x40 ; 64 + 3972: 91 05 cpc r25, r1 + 3974: a1 05 cpc r26, r1 + 3976: b1 05 cpc r27, r1 + 3978: 39 f4 brne .+14 ; 0x3988 <__pack_f+0xee> + 397a: 27 ff sbrs r18, 7 + 397c: 09 c0 rjmp .+18 ; 0x3990 <__pack_f+0xf6> + 397e: 20 5c subi r18, 0xC0 ; 192 + 3980: 3f 4f sbci r19, 0xFF ; 255 + 3982: 4f 4f sbci r20, 0xFF ; 255 + 3984: 5f 4f sbci r21, 0xFF ; 255 + 3986: 04 c0 rjmp .+8 ; 0x3990 <__pack_f+0xf6> + 3988: 21 5c subi r18, 0xC1 ; 193 + 398a: 3f 4f sbci r19, 0xFF ; 255 + 398c: 4f 4f sbci r20, 0xFF ; 255 + 398e: 5f 4f sbci r21, 0xFF ; 255 + 3990: e0 e0 ldi r30, 0x00 ; 0 + 3992: f0 e0 ldi r31, 0x00 ; 0 + 3994: 20 30 cpi r18, 0x00 ; 0 + 3996: a0 e0 ldi r26, 0x00 ; 0 + 3998: 3a 07 cpc r19, r26 + 399a: a0 e0 ldi r26, 0x00 ; 0 + 399c: 4a 07 cpc r20, r26 + 399e: a0 e4 ldi r26, 0x40 ; 64 + 39a0: 5a 07 cpc r21, r26 + 39a2: 10 f0 brcs .+4 ; 0x39a8 <__pack_f+0x10e> + 39a4: e1 e0 ldi r30, 0x01 ; 1 + 39a6: f0 e0 ldi r31, 0x00 ; 0 + 39a8: 79 01 movw r14, r18 + 39aa: 8a 01 movw r16, r20 + 39ac: 27 c0 rjmp .+78 ; 0x39fc <__pack_f+0x162> + 39ae: 60 38 cpi r22, 0x80 ; 128 + 39b0: 71 05 cpc r23, r1 + 39b2: 64 f5 brge .+88 ; 0x3a0c <__pack_f+0x172> + 39b4: fb 01 movw r30, r22 + 39b6: e1 58 subi r30, 0x81 ; 129 + 39b8: ff 4f sbci r31, 0xFF ; 255 + 39ba: d8 01 movw r26, r16 + 39bc: c7 01 movw r24, r14 + 39be: 8f 77 andi r24, 0x7F ; 127 + 39c0: 90 70 andi r25, 0x00 ; 0 + 39c2: a0 70 andi r26, 0x00 ; 0 + 39c4: b0 70 andi r27, 0x00 ; 0 + 39c6: 80 34 cpi r24, 0x40 ; 64 + 39c8: 91 05 cpc r25, r1 + 39ca: a1 05 cpc r26, r1 + 39cc: b1 05 cpc r27, r1 + 39ce: 39 f4 brne .+14 ; 0x39de <__pack_f+0x144> + 39d0: e7 fe sbrs r14, 7 + 39d2: 0d c0 rjmp .+26 ; 0x39ee <__pack_f+0x154> + 39d4: 80 e4 ldi r24, 0x40 ; 64 + 39d6: 90 e0 ldi r25, 0x00 ; 0 + 39d8: a0 e0 ldi r26, 0x00 ; 0 + 39da: b0 e0 ldi r27, 0x00 ; 0 + 39dc: 04 c0 rjmp .+8 ; 0x39e6 <__pack_f+0x14c> + 39de: 8f e3 ldi r24, 0x3F ; 63 + 39e0: 90 e0 ldi r25, 0x00 ; 0 + 39e2: a0 e0 ldi r26, 0x00 ; 0 + 39e4: b0 e0 ldi r27, 0x00 ; 0 + 39e6: e8 0e add r14, r24 + 39e8: f9 1e adc r15, r25 + 39ea: 0a 1f adc r16, r26 + 39ec: 1b 1f adc r17, r27 + 39ee: 17 ff sbrs r17, 7 + 39f0: 05 c0 rjmp .+10 ; 0x39fc <__pack_f+0x162> + 39f2: 16 95 lsr r17 + 39f4: 07 95 ror r16 + 39f6: f7 94 ror r15 + 39f8: e7 94 ror r14 + 39fa: 31 96 adiw r30, 0x01 ; 1 + 39fc: 87 e0 ldi r24, 0x07 ; 7 + 39fe: 16 95 lsr r17 + 3a00: 07 95 ror r16 + 3a02: f7 94 ror r15 + 3a04: e7 94 ror r14 + 3a06: 8a 95 dec r24 + 3a08: d1 f7 brne .-12 ; 0x39fe <__pack_f+0x164> + 3a0a: 05 c0 rjmp .+10 ; 0x3a16 <__pack_f+0x17c> + 3a0c: ee 24 eor r14, r14 + 3a0e: ff 24 eor r15, r15 + 3a10: 87 01 movw r16, r14 + 3a12: ef ef ldi r30, 0xFF ; 255 + 3a14: f0 e0 ldi r31, 0x00 ; 0 + 3a16: 6e 2f mov r22, r30 + 3a18: 67 95 ror r22 + 3a1a: 66 27 eor r22, r22 + 3a1c: 67 95 ror r22 + 3a1e: 90 2f mov r25, r16 + 3a20: 9f 77 andi r25, 0x7F ; 127 + 3a22: d7 94 ror r13 + 3a24: dd 24 eor r13, r13 + 3a26: d7 94 ror r13 + 3a28: 8e 2f mov r24, r30 + 3a2a: 86 95 lsr r24 + 3a2c: 49 2f mov r20, r25 + 3a2e: 46 2b or r20, r22 + 3a30: 58 2f mov r21, r24 + 3a32: 5d 29 or r21, r13 + 3a34: b7 01 movw r22, r14 + 3a36: ca 01 movw r24, r20 + 3a38: 1f 91 pop r17 + 3a3a: 0f 91 pop r16 + 3a3c: ff 90 pop r15 + 3a3e: ef 90 pop r14 + 3a40: df 90 pop r13 + 3a42: 08 95 ret + +00003a44 <__unpack_f>: + 3a44: fc 01 movw r30, r24 + 3a46: db 01 movw r26, r22 + 3a48: 40 81 ld r20, Z + 3a4a: 51 81 ldd r21, Z+1 ; 0x01 + 3a4c: 22 81 ldd r18, Z+2 ; 0x02 + 3a4e: 62 2f mov r22, r18 + 3a50: 6f 77 andi r22, 0x7F ; 127 + 3a52: 70 e0 ldi r23, 0x00 ; 0 + 3a54: 22 1f adc r18, r18 + 3a56: 22 27 eor r18, r18 + 3a58: 22 1f adc r18, r18 + 3a5a: 93 81 ldd r25, Z+3 ; 0x03 + 3a5c: 89 2f mov r24, r25 + 3a5e: 88 0f add r24, r24 + 3a60: 82 2b or r24, r18 + 3a62: 28 2f mov r18, r24 + 3a64: 30 e0 ldi r19, 0x00 ; 0 + 3a66: 99 1f adc r25, r25 + 3a68: 99 27 eor r25, r25 + 3a6a: 99 1f adc r25, r25 + 3a6c: 11 96 adiw r26, 0x01 ; 1 + 3a6e: 9c 93 st X, r25 + 3a70: 11 97 sbiw r26, 0x01 ; 1 + 3a72: 21 15 cp r18, r1 + 3a74: 31 05 cpc r19, r1 + 3a76: a9 f5 brne .+106 ; 0x3ae2 <__unpack_f+0x9e> + 3a78: 41 15 cp r20, r1 + 3a7a: 51 05 cpc r21, r1 + 3a7c: 61 05 cpc r22, r1 + 3a7e: 71 05 cpc r23, r1 + 3a80: 11 f4 brne .+4 ; 0x3a86 <__unpack_f+0x42> + 3a82: 82 e0 ldi r24, 0x02 ; 2 + 3a84: 37 c0 rjmp .+110 ; 0x3af4 <__unpack_f+0xb0> + 3a86: 82 e8 ldi r24, 0x82 ; 130 + 3a88: 9f ef ldi r25, 0xFF ; 255 + 3a8a: 13 96 adiw r26, 0x03 ; 3 + 3a8c: 9c 93 st X, r25 + 3a8e: 8e 93 st -X, r24 + 3a90: 12 97 sbiw r26, 0x02 ; 2 + 3a92: 9a 01 movw r18, r20 + 3a94: ab 01 movw r20, r22 + 3a96: 67 e0 ldi r22, 0x07 ; 7 + 3a98: 22 0f add r18, r18 + 3a9a: 33 1f adc r19, r19 + 3a9c: 44 1f adc r20, r20 + 3a9e: 55 1f adc r21, r21 + 3aa0: 6a 95 dec r22 + 3aa2: d1 f7 brne .-12 ; 0x3a98 <__unpack_f+0x54> + 3aa4: 83 e0 ldi r24, 0x03 ; 3 + 3aa6: 8c 93 st X, r24 + 3aa8: 0d c0 rjmp .+26 ; 0x3ac4 <__unpack_f+0x80> + 3aaa: 22 0f add r18, r18 + 3aac: 33 1f adc r19, r19 + 3aae: 44 1f adc r20, r20 + 3ab0: 55 1f adc r21, r21 + 3ab2: 12 96 adiw r26, 0x02 ; 2 + 3ab4: 8d 91 ld r24, X+ + 3ab6: 9c 91 ld r25, X + 3ab8: 13 97 sbiw r26, 0x03 ; 3 + 3aba: 01 97 sbiw r24, 0x01 ; 1 + 3abc: 13 96 adiw r26, 0x03 ; 3 + 3abe: 9c 93 st X, r25 + 3ac0: 8e 93 st -X, r24 + 3ac2: 12 97 sbiw r26, 0x02 ; 2 + 3ac4: 20 30 cpi r18, 0x00 ; 0 + 3ac6: 80 e0 ldi r24, 0x00 ; 0 + 3ac8: 38 07 cpc r19, r24 + 3aca: 80 e0 ldi r24, 0x00 ; 0 + 3acc: 48 07 cpc r20, r24 + 3ace: 80 e4 ldi r24, 0x40 ; 64 + 3ad0: 58 07 cpc r21, r24 + 3ad2: 58 f3 brcs .-42 ; 0x3aaa <__unpack_f+0x66> + 3ad4: 14 96 adiw r26, 0x04 ; 4 + 3ad6: 2d 93 st X+, r18 + 3ad8: 3d 93 st X+, r19 + 3ada: 4d 93 st X+, r20 + 3adc: 5c 93 st X, r21 + 3ade: 17 97 sbiw r26, 0x07 ; 7 + 3ae0: 08 95 ret + 3ae2: 2f 3f cpi r18, 0xFF ; 255 + 3ae4: 31 05 cpc r19, r1 + 3ae6: 79 f4 brne .+30 ; 0x3b06 <__unpack_f+0xc2> + 3ae8: 41 15 cp r20, r1 + 3aea: 51 05 cpc r21, r1 + 3aec: 61 05 cpc r22, r1 + 3aee: 71 05 cpc r23, r1 + 3af0: 19 f4 brne .+6 ; 0x3af8 <__unpack_f+0xb4> + 3af2: 84 e0 ldi r24, 0x04 ; 4 + 3af4: 8c 93 st X, r24 + 3af6: 08 95 ret + 3af8: 64 ff sbrs r22, 4 + 3afa: 03 c0 rjmp .+6 ; 0x3b02 <__unpack_f+0xbe> + 3afc: 81 e0 ldi r24, 0x01 ; 1 + 3afe: 8c 93 st X, r24 + 3b00: 12 c0 rjmp .+36 ; 0x3b26 <__unpack_f+0xe2> + 3b02: 1c 92 st X, r1 + 3b04: 10 c0 rjmp .+32 ; 0x3b26 <__unpack_f+0xe2> + 3b06: 2f 57 subi r18, 0x7F ; 127 + 3b08: 30 40 sbci r19, 0x00 ; 0 + 3b0a: 13 96 adiw r26, 0x03 ; 3 + 3b0c: 3c 93 st X, r19 + 3b0e: 2e 93 st -X, r18 + 3b10: 12 97 sbiw r26, 0x02 ; 2 + 3b12: 83 e0 ldi r24, 0x03 ; 3 + 3b14: 8c 93 st X, r24 + 3b16: 87 e0 ldi r24, 0x07 ; 7 + 3b18: 44 0f add r20, r20 + 3b1a: 55 1f adc r21, r21 + 3b1c: 66 1f adc r22, r22 + 3b1e: 77 1f adc r23, r23 + 3b20: 8a 95 dec r24 + 3b22: d1 f7 brne .-12 ; 0x3b18 <__unpack_f+0xd4> + 3b24: 70 64 ori r23, 0x40 ; 64 + 3b26: 14 96 adiw r26, 0x04 ; 4 + 3b28: 4d 93 st X+, r20 + 3b2a: 5d 93 st X+, r21 + 3b2c: 6d 93 st X+, r22 + 3b2e: 7c 93 st X, r23 + 3b30: 17 97 sbiw r26, 0x07 ; 7 + 3b32: 08 95 ret + +00003b34 <__fpcmp_parts_f>: + 3b34: 1f 93 push r17 + 3b36: dc 01 movw r26, r24 + 3b38: fb 01 movw r30, r22 + 3b3a: 9c 91 ld r25, X + 3b3c: 92 30 cpi r25, 0x02 ; 2 + 3b3e: 08 f4 brcc .+2 ; 0x3b42 <__fpcmp_parts_f+0xe> + 3b40: 47 c0 rjmp .+142 ; 0x3bd0 <__fpcmp_parts_f+0x9c> + 3b42: 80 81 ld r24, Z + 3b44: 82 30 cpi r24, 0x02 ; 2 + 3b46: 08 f4 brcc .+2 ; 0x3b4a <__fpcmp_parts_f+0x16> + 3b48: 43 c0 rjmp .+134 ; 0x3bd0 <__fpcmp_parts_f+0x9c> + 3b4a: 94 30 cpi r25, 0x04 ; 4 + 3b4c: 51 f4 brne .+20 ; 0x3b62 <__fpcmp_parts_f+0x2e> + 3b4e: 11 96 adiw r26, 0x01 ; 1 + 3b50: 1c 91 ld r17, X + 3b52: 84 30 cpi r24, 0x04 ; 4 + 3b54: 99 f5 brne .+102 ; 0x3bbc <__fpcmp_parts_f+0x88> + 3b56: 81 81 ldd r24, Z+1 ; 0x01 + 3b58: 68 2f mov r22, r24 + 3b5a: 70 e0 ldi r23, 0x00 ; 0 + 3b5c: 61 1b sub r22, r17 + 3b5e: 71 09 sbc r23, r1 + 3b60: 3f c0 rjmp .+126 ; 0x3be0 <__fpcmp_parts_f+0xac> + 3b62: 84 30 cpi r24, 0x04 ; 4 + 3b64: 21 f0 breq .+8 ; 0x3b6e <__fpcmp_parts_f+0x3a> + 3b66: 92 30 cpi r25, 0x02 ; 2 + 3b68: 31 f4 brne .+12 ; 0x3b76 <__fpcmp_parts_f+0x42> + 3b6a: 82 30 cpi r24, 0x02 ; 2 + 3b6c: b9 f1 breq .+110 ; 0x3bdc <__fpcmp_parts_f+0xa8> + 3b6e: 81 81 ldd r24, Z+1 ; 0x01 + 3b70: 88 23 and r24, r24 + 3b72: 89 f1 breq .+98 ; 0x3bd6 <__fpcmp_parts_f+0xa2> + 3b74: 2d c0 rjmp .+90 ; 0x3bd0 <__fpcmp_parts_f+0x9c> + 3b76: 11 96 adiw r26, 0x01 ; 1 + 3b78: 1c 91 ld r17, X + 3b7a: 11 97 sbiw r26, 0x01 ; 1 + 3b7c: 82 30 cpi r24, 0x02 ; 2 + 3b7e: f1 f0 breq .+60 ; 0x3bbc <__fpcmp_parts_f+0x88> + 3b80: 81 81 ldd r24, Z+1 ; 0x01 + 3b82: 18 17 cp r17, r24 + 3b84: d9 f4 brne .+54 ; 0x3bbc <__fpcmp_parts_f+0x88> + 3b86: 12 96 adiw r26, 0x02 ; 2 + 3b88: 2d 91 ld r18, X+ + 3b8a: 3c 91 ld r19, X + 3b8c: 13 97 sbiw r26, 0x03 ; 3 + 3b8e: 82 81 ldd r24, Z+2 ; 0x02 + 3b90: 93 81 ldd r25, Z+3 ; 0x03 + 3b92: 82 17 cp r24, r18 + 3b94: 93 07 cpc r25, r19 + 3b96: 94 f0 brlt .+36 ; 0x3bbc <__fpcmp_parts_f+0x88> + 3b98: 28 17 cp r18, r24 + 3b9a: 39 07 cpc r19, r25 + 3b9c: bc f0 brlt .+46 ; 0x3bcc <__fpcmp_parts_f+0x98> + 3b9e: 14 96 adiw r26, 0x04 ; 4 + 3ba0: 8d 91 ld r24, X+ + 3ba2: 9d 91 ld r25, X+ + 3ba4: 0d 90 ld r0, X+ + 3ba6: bc 91 ld r27, X + 3ba8: a0 2d mov r26, r0 + 3baa: 24 81 ldd r18, Z+4 ; 0x04 + 3bac: 35 81 ldd r19, Z+5 ; 0x05 + 3bae: 46 81 ldd r20, Z+6 ; 0x06 + 3bb0: 57 81 ldd r21, Z+7 ; 0x07 + 3bb2: 28 17 cp r18, r24 + 3bb4: 39 07 cpc r19, r25 + 3bb6: 4a 07 cpc r20, r26 + 3bb8: 5b 07 cpc r21, r27 + 3bba: 18 f4 brcc .+6 ; 0x3bc2 <__fpcmp_parts_f+0x8e> + 3bbc: 11 23 and r17, r17 + 3bbe: 41 f0 breq .+16 ; 0x3bd0 <__fpcmp_parts_f+0x9c> + 3bc0: 0a c0 rjmp .+20 ; 0x3bd6 <__fpcmp_parts_f+0xa2> + 3bc2: 82 17 cp r24, r18 + 3bc4: 93 07 cpc r25, r19 + 3bc6: a4 07 cpc r26, r20 + 3bc8: b5 07 cpc r27, r21 + 3bca: 40 f4 brcc .+16 ; 0x3bdc <__fpcmp_parts_f+0xa8> + 3bcc: 11 23 and r17, r17 + 3bce: 19 f0 breq .+6 ; 0x3bd6 <__fpcmp_parts_f+0xa2> + 3bd0: 61 e0 ldi r22, 0x01 ; 1 + 3bd2: 70 e0 ldi r23, 0x00 ; 0 + 3bd4: 05 c0 rjmp .+10 ; 0x3be0 <__fpcmp_parts_f+0xac> + 3bd6: 6f ef ldi r22, 0xFF ; 255 + 3bd8: 7f ef ldi r23, 0xFF ; 255 + 3bda: 02 c0 rjmp .+4 ; 0x3be0 <__fpcmp_parts_f+0xac> + 3bdc: 60 e0 ldi r22, 0x00 ; 0 + 3bde: 70 e0 ldi r23, 0x00 ; 0 + 3be0: cb 01 movw r24, r22 + 3be2: 1f 91 pop r17 + 3be4: 08 95 ret + +00003be6 <__mulsi3>: + 3be6: 62 9f mul r22, r18 + 3be8: d0 01 movw r26, r0 + 3bea: 73 9f mul r23, r19 + 3bec: f0 01 movw r30, r0 + 3bee: 82 9f mul r24, r18 + 3bf0: e0 0d add r30, r0 + 3bf2: f1 1d adc r31, r1 + 3bf4: 64 9f mul r22, r20 + 3bf6: e0 0d add r30, r0 + 3bf8: f1 1d adc r31, r1 + 3bfa: 92 9f mul r25, r18 + 3bfc: f0 0d add r31, r0 + 3bfe: 83 9f mul r24, r19 + 3c00: f0 0d add r31, r0 + 3c02: 74 9f mul r23, r20 + 3c04: f0 0d add r31, r0 + 3c06: 65 9f mul r22, r21 + 3c08: f0 0d add r31, r0 + 3c0a: 99 27 eor r25, r25 + 3c0c: 72 9f mul r23, r18 + 3c0e: b0 0d add r27, r0 + 3c10: e1 1d adc r30, r1 + 3c12: f9 1f adc r31, r25 + 3c14: 63 9f mul r22, r19 + 3c16: b0 0d add r27, r0 + 3c18: e1 1d adc r30, r1 + 3c1a: f9 1f adc r31, r25 + 3c1c: bd 01 movw r22, r26 + 3c1e: cf 01 movw r24, r30 + 3c20: 11 24 eor r1, r1 + 3c22: 08 95 ret + +00003c24 <__udivmodsi4>: + 3c24: a1 e2 ldi r26, 0x21 ; 33 + 3c26: 1a 2e mov r1, r26 + 3c28: aa 1b sub r26, r26 + 3c2a: bb 1b sub r27, r27 + 3c2c: fd 01 movw r30, r26 + 3c2e: 0d c0 rjmp .+26 ; 0x3c4a <__udivmodsi4_ep> + +00003c30 <__udivmodsi4_loop>: + 3c30: aa 1f adc r26, r26 + 3c32: bb 1f adc r27, r27 + 3c34: ee 1f adc r30, r30 + 3c36: ff 1f adc r31, r31 + 3c38: a2 17 cp r26, r18 + 3c3a: b3 07 cpc r27, r19 + 3c3c: e4 07 cpc r30, r20 + 3c3e: f5 07 cpc r31, r21 + 3c40: 20 f0 brcs .+8 ; 0x3c4a <__udivmodsi4_ep> + 3c42: a2 1b sub r26, r18 + 3c44: b3 0b sbc r27, r19 + 3c46: e4 0b sbc r30, r20 + 3c48: f5 0b sbc r31, r21 + +00003c4a <__udivmodsi4_ep>: + 3c4a: 66 1f adc r22, r22 + 3c4c: 77 1f adc r23, r23 + 3c4e: 88 1f adc r24, r24 + 3c50: 99 1f adc r25, r25 + 3c52: 1a 94 dec r1 + 3c54: 69 f7 brne .-38 ; 0x3c30 <__udivmodsi4_loop> + 3c56: 60 95 com r22 + 3c58: 70 95 com r23 + 3c5a: 80 95 com r24 + 3c5c: 90 95 com r25 + 3c5e: 9b 01 movw r18, r22 + 3c60: ac 01 movw r20, r24 + 3c62: bd 01 movw r22, r26 + 3c64: cf 01 movw r24, r30 + 3c66: 08 95 ret + +00003c68 <__divmodsi4>: + 3c68: 97 fb bst r25, 7 + 3c6a: 09 2e mov r0, r25 + 3c6c: 05 26 eor r0, r21 + 3c6e: 0e d0 rcall .+28 ; 0x3c8c <__divmodsi4_neg1> + 3c70: 57 fd sbrc r21, 7 + 3c72: 04 d0 rcall .+8 ; 0x3c7c <__divmodsi4_neg2> + 3c74: d7 df rcall .-82 ; 0x3c24 <__udivmodsi4> + 3c76: 0a d0 rcall .+20 ; 0x3c8c <__divmodsi4_neg1> + 3c78: 00 1c adc r0, r0 + 3c7a: 38 f4 brcc .+14 ; 0x3c8a <__divmodsi4_exit> + +00003c7c <__divmodsi4_neg2>: + 3c7c: 50 95 com r21 + 3c7e: 40 95 com r20 + 3c80: 30 95 com r19 + 3c82: 21 95 neg r18 + 3c84: 3f 4f sbci r19, 0xFF ; 255 + 3c86: 4f 4f sbci r20, 0xFF ; 255 + 3c88: 5f 4f sbci r21, 0xFF ; 255 + +00003c8a <__divmodsi4_exit>: + 3c8a: 08 95 ret + +00003c8c <__divmodsi4_neg1>: + 3c8c: f6 f7 brtc .-4 ; 0x3c8a <__divmodsi4_exit> + 3c8e: 90 95 com r25 + 3c90: 80 95 com r24 + 3c92: 70 95 com r23 + 3c94: 61 95 neg r22 + 3c96: 7f 4f sbci r23, 0xFF ; 255 + 3c98: 8f 4f sbci r24, 0xFF ; 255 + 3c9a: 9f 4f sbci r25, 0xFF ; 255 + 3c9c: 08 95 ret + +00003c9e <__prologue_saves__>: + 3c9e: 2f 92 push r2 + 3ca0: 3f 92 push r3 + 3ca2: 4f 92 push r4 + 3ca4: 5f 92 push r5 + 3ca6: 6f 92 push r6 + 3ca8: 7f 92 push r7 + 3caa: 8f 92 push r8 + 3cac: 9f 92 push r9 + 3cae: af 92 push r10 + 3cb0: bf 92 push r11 + 3cb2: cf 92 push r12 + 3cb4: df 92 push r13 + 3cb6: ef 92 push r14 + 3cb8: ff 92 push r15 + 3cba: 0f 93 push r16 + 3cbc: 1f 93 push r17 + 3cbe: cf 93 push r28 + 3cc0: df 93 push r29 + 3cc2: cd b7 in r28, 0x3d ; 61 + 3cc4: de b7 in r29, 0x3e ; 62 + 3cc6: ca 1b sub r28, r26 + 3cc8: db 0b sbc r29, r27 + 3cca: 0f b6 in r0, 0x3f ; 63 + 3ccc: f8 94 cli + 3cce: de bf out 0x3e, r29 ; 62 + 3cd0: 0f be out 0x3f, r0 ; 63 + 3cd2: cd bf out 0x3d, r28 ; 61 + 3cd4: 09 94 ijmp + +00003cd6 <__epilogue_restores__>: + 3cd6: 2a 88 ldd r2, Y+18 ; 0x12 + 3cd8: 39 88 ldd r3, Y+17 ; 0x11 + 3cda: 48 88 ldd r4, Y+16 ; 0x10 + 3cdc: 5f 84 ldd r5, Y+15 ; 0x0f + 3cde: 6e 84 ldd r6, Y+14 ; 0x0e + 3ce0: 7d 84 ldd r7, Y+13 ; 0x0d + 3ce2: 8c 84 ldd r8, Y+12 ; 0x0c + 3ce4: 9b 84 ldd r9, Y+11 ; 0x0b + 3ce6: aa 84 ldd r10, Y+10 ; 0x0a + 3ce8: b9 84 ldd r11, Y+9 ; 0x09 + 3cea: c8 84 ldd r12, Y+8 ; 0x08 + 3cec: df 80 ldd r13, Y+7 ; 0x07 + 3cee: ee 80 ldd r14, Y+6 ; 0x06 + 3cf0: fd 80 ldd r15, Y+5 ; 0x05 + 3cf2: 0c 81 ldd r16, Y+4 ; 0x04 + 3cf4: 1b 81 ldd r17, Y+3 ; 0x03 + 3cf6: aa 81 ldd r26, Y+2 ; 0x02 + 3cf8: b9 81 ldd r27, Y+1 ; 0x01 + 3cfa: ce 0f add r28, r30 + 3cfc: d1 1d adc r29, r1 + 3cfe: 0f b6 in r0, 0x3f ; 63 + 3d00: f8 94 cli + 3d02: de bf out 0x3e, r29 ; 62 + 3d04: 0f be out 0x3f, r0 ; 63 + 3d06: cd bf out 0x3d, r28 ; 61 + 3d08: ed 01 movw r28, r26 + 3d0a: 08 95 ret + +00003d0c <__tablejump2__>: + 3d0c: ee 0f add r30, r30 + 3d0e: ff 1f adc r31, r31 + +00003d10 <__tablejump__>: + 3d10: 05 90 lpm r0, Z+ + 3d12: f4 91 lpm r31, Z+ + 3d14: e0 2d mov r30, r0 + 3d16: 09 94 ijmp + +00003d18 : + 3d18: cf 93 push r28 + 3d1a: df 93 push r29 + 3d1c: bc 01 movw r22, r24 + 3d1e: 82 30 cpi r24, 0x02 ; 2 + 3d20: 91 05 cpc r25, r1 + 3d22: 10 f4 brcc .+4 ; 0x3d28 + 3d24: 62 e0 ldi r22, 0x02 ; 2 + 3d26: 70 e0 ldi r23, 0x00 ; 0 + 3d28: a0 91 90 03 lds r26, 0x0390 + 3d2c: b0 91 91 03 lds r27, 0x0391 + 3d30: ed 01 movw r28, r26 + 3d32: e0 e0 ldi r30, 0x00 ; 0 + 3d34: f0 e0 ldi r31, 0x00 ; 0 + 3d36: 40 e0 ldi r20, 0x00 ; 0 + 3d38: 50 e0 ldi r21, 0x00 ; 0 + 3d3a: 21 c0 rjmp .+66 ; 0x3d7e + 3d3c: 88 81 ld r24, Y + 3d3e: 99 81 ldd r25, Y+1 ; 0x01 + 3d40: 86 17 cp r24, r22 + 3d42: 97 07 cpc r25, r23 + 3d44: 69 f4 brne .+26 ; 0x3d60 + 3d46: 8a 81 ldd r24, Y+2 ; 0x02 + 3d48: 9b 81 ldd r25, Y+3 ; 0x03 + 3d4a: 30 97 sbiw r30, 0x00 ; 0 + 3d4c: 19 f0 breq .+6 ; 0x3d54 + 3d4e: 93 83 std Z+3, r25 ; 0x03 + 3d50: 82 83 std Z+2, r24 ; 0x02 + 3d52: 04 c0 rjmp .+8 ; 0x3d5c + 3d54: 90 93 91 03 sts 0x0391, r25 + 3d58: 80 93 90 03 sts 0x0390, r24 + 3d5c: fe 01 movw r30, r28 + 3d5e: 34 c0 rjmp .+104 ; 0x3dc8 + 3d60: 68 17 cp r22, r24 + 3d62: 79 07 cpc r23, r25 + 3d64: 38 f4 brcc .+14 ; 0x3d74 + 3d66: 41 15 cp r20, r1 + 3d68: 51 05 cpc r21, r1 + 3d6a: 19 f0 breq .+6 ; 0x3d72 + 3d6c: 84 17 cp r24, r20 + 3d6e: 95 07 cpc r25, r21 + 3d70: 08 f4 brcc .+2 ; 0x3d74 + 3d72: ac 01 movw r20, r24 + 3d74: fe 01 movw r30, r28 + 3d76: 8a 81 ldd r24, Y+2 ; 0x02 + 3d78: 9b 81 ldd r25, Y+3 ; 0x03 + 3d7a: 9c 01 movw r18, r24 + 3d7c: e9 01 movw r28, r18 + 3d7e: 20 97 sbiw r28, 0x00 ; 0 + 3d80: e9 f6 brne .-70 ; 0x3d3c + 3d82: 41 15 cp r20, r1 + 3d84: 51 05 cpc r21, r1 + 3d86: a9 f1 breq .+106 ; 0x3df2 + 3d88: ca 01 movw r24, r20 + 3d8a: 86 1b sub r24, r22 + 3d8c: 97 0b sbc r25, r23 + 3d8e: 04 97 sbiw r24, 0x04 ; 4 + 3d90: 08 f4 brcc .+2 ; 0x3d94 + 3d92: ba 01 movw r22, r20 + 3d94: e0 e0 ldi r30, 0x00 ; 0 + 3d96: f0 e0 ldi r31, 0x00 ; 0 + 3d98: 2a c0 rjmp .+84 ; 0x3dee + 3d9a: 8d 91 ld r24, X+ + 3d9c: 9c 91 ld r25, X + 3d9e: 11 97 sbiw r26, 0x01 ; 1 + 3da0: 84 17 cp r24, r20 + 3da2: 95 07 cpc r25, r21 + 3da4: f9 f4 brne .+62 ; 0x3de4 + 3da6: 64 17 cp r22, r20 + 3da8: 75 07 cpc r23, r21 + 3daa: 81 f4 brne .+32 ; 0x3dcc + 3dac: 12 96 adiw r26, 0x02 ; 2 + 3dae: 8d 91 ld r24, X+ + 3db0: 9c 91 ld r25, X + 3db2: 13 97 sbiw r26, 0x03 ; 3 + 3db4: 30 97 sbiw r30, 0x00 ; 0 + 3db6: 19 f0 breq .+6 ; 0x3dbe + 3db8: 93 83 std Z+3, r25 ; 0x03 + 3dba: 82 83 std Z+2, r24 ; 0x02 + 3dbc: 04 c0 rjmp .+8 ; 0x3dc6 + 3dbe: 90 93 91 03 sts 0x0391, r25 + 3dc2: 80 93 90 03 sts 0x0390, r24 + 3dc6: fd 01 movw r30, r26 + 3dc8: 32 96 adiw r30, 0x02 ; 2 + 3dca: 4f c0 rjmp .+158 ; 0x3e6a + 3dcc: ca 01 movw r24, r20 + 3dce: 86 1b sub r24, r22 + 3dd0: 97 0b sbc r25, r23 + 3dd2: fd 01 movw r30, r26 + 3dd4: e8 0f add r30, r24 + 3dd6: f9 1f adc r31, r25 + 3dd8: 61 93 st Z+, r22 + 3dda: 71 93 st Z+, r23 + 3ddc: 02 97 sbiw r24, 0x02 ; 2 + 3dde: 8d 93 st X+, r24 + 3de0: 9c 93 st X, r25 + 3de2: 43 c0 rjmp .+134 ; 0x3e6a + 3de4: fd 01 movw r30, r26 + 3de6: 82 81 ldd r24, Z+2 ; 0x02 + 3de8: 93 81 ldd r25, Z+3 ; 0x03 + 3dea: 9c 01 movw r18, r24 + 3dec: d9 01 movw r26, r18 + 3dee: 10 97 sbiw r26, 0x00 ; 0 + 3df0: a1 f6 brne .-88 ; 0x3d9a + 3df2: 80 91 8e 03 lds r24, 0x038E + 3df6: 90 91 8f 03 lds r25, 0x038F + 3dfa: 89 2b or r24, r25 + 3dfc: 41 f4 brne .+16 ; 0x3e0e + 3dfe: 80 91 b2 02 lds r24, 0x02B2 + 3e02: 90 91 b3 02 lds r25, 0x02B3 + 3e06: 90 93 8f 03 sts 0x038F, r25 + 3e0a: 80 93 8e 03 sts 0x038E, r24 + 3e0e: 40 91 b4 02 lds r20, 0x02B4 + 3e12: 50 91 b5 02 lds r21, 0x02B5 + 3e16: 41 15 cp r20, r1 + 3e18: 51 05 cpc r21, r1 + 3e1a: 41 f4 brne .+16 ; 0x3e2c + 3e1c: 4d b7 in r20, 0x3d ; 61 + 3e1e: 5e b7 in r21, 0x3e ; 62 + 3e20: 80 91 b0 02 lds r24, 0x02B0 + 3e24: 90 91 b1 02 lds r25, 0x02B1 + 3e28: 48 1b sub r20, r24 + 3e2a: 59 0b sbc r21, r25 + 3e2c: 20 91 8e 03 lds r18, 0x038E + 3e30: 30 91 8f 03 lds r19, 0x038F + 3e34: 24 17 cp r18, r20 + 3e36: 35 07 cpc r19, r21 + 3e38: b0 f4 brcc .+44 ; 0x3e66 + 3e3a: ca 01 movw r24, r20 + 3e3c: 82 1b sub r24, r18 + 3e3e: 93 0b sbc r25, r19 + 3e40: 86 17 cp r24, r22 + 3e42: 97 07 cpc r25, r23 + 3e44: 80 f0 brcs .+32 ; 0x3e66 + 3e46: ab 01 movw r20, r22 + 3e48: 4e 5f subi r20, 0xFE ; 254 + 3e4a: 5f 4f sbci r21, 0xFF ; 255 + 3e4c: 84 17 cp r24, r20 + 3e4e: 95 07 cpc r25, r21 + 3e50: 50 f0 brcs .+20 ; 0x3e66 + 3e52: 42 0f add r20, r18 + 3e54: 53 1f adc r21, r19 + 3e56: 50 93 8f 03 sts 0x038F, r21 + 3e5a: 40 93 8e 03 sts 0x038E, r20 + 3e5e: f9 01 movw r30, r18 + 3e60: 61 93 st Z+, r22 + 3e62: 71 93 st Z+, r23 + 3e64: 02 c0 rjmp .+4 ; 0x3e6a + 3e66: e0 e0 ldi r30, 0x00 ; 0 + 3e68: f0 e0 ldi r31, 0x00 ; 0 + 3e6a: cf 01 movw r24, r30 + 3e6c: df 91 pop r29 + 3e6e: cf 91 pop r28 + 3e70: 08 95 ret + +00003e72 : + 3e72: cf 93 push r28 + 3e74: df 93 push r29 + 3e76: 00 97 sbiw r24, 0x00 ; 0 + 3e78: 09 f4 brne .+2 ; 0x3e7c + 3e7a: 50 c0 rjmp .+160 ; 0x3f1c + 3e7c: ec 01 movw r28, r24 + 3e7e: 22 97 sbiw r28, 0x02 ; 2 + 3e80: 1b 82 std Y+3, r1 ; 0x03 + 3e82: 1a 82 std Y+2, r1 ; 0x02 + 3e84: a0 91 90 03 lds r26, 0x0390 + 3e88: b0 91 91 03 lds r27, 0x0391 + 3e8c: 10 97 sbiw r26, 0x00 ; 0 + 3e8e: 09 f1 breq .+66 ; 0x3ed2 + 3e90: 40 e0 ldi r20, 0x00 ; 0 + 3e92: 50 e0 ldi r21, 0x00 ; 0 + 3e94: ac 17 cp r26, r28 + 3e96: bd 07 cpc r27, r29 + 3e98: 08 f1 brcs .+66 ; 0x3edc + 3e9a: bb 83 std Y+3, r27 ; 0x03 + 3e9c: aa 83 std Y+2, r26 ; 0x02 + 3e9e: fe 01 movw r30, r28 + 3ea0: 21 91 ld r18, Z+ + 3ea2: 31 91 ld r19, Z+ + 3ea4: e2 0f add r30, r18 + 3ea6: f3 1f adc r31, r19 + 3ea8: ae 17 cp r26, r30 + 3eaa: bf 07 cpc r27, r31 + 3eac: 79 f4 brne .+30 ; 0x3ecc + 3eae: 8d 91 ld r24, X+ + 3eb0: 9c 91 ld r25, X + 3eb2: 11 97 sbiw r26, 0x01 ; 1 + 3eb4: 28 0f add r18, r24 + 3eb6: 39 1f adc r19, r25 + 3eb8: 2e 5f subi r18, 0xFE ; 254 + 3eba: 3f 4f sbci r19, 0xFF ; 255 + 3ebc: 39 83 std Y+1, r19 ; 0x01 + 3ebe: 28 83 st Y, r18 + 3ec0: 12 96 adiw r26, 0x02 ; 2 + 3ec2: 8d 91 ld r24, X+ + 3ec4: 9c 91 ld r25, X + 3ec6: 13 97 sbiw r26, 0x03 ; 3 + 3ec8: 9b 83 std Y+3, r25 ; 0x03 + 3eca: 8a 83 std Y+2, r24 ; 0x02 + 3ecc: 41 15 cp r20, r1 + 3ece: 51 05 cpc r21, r1 + 3ed0: 71 f4 brne .+28 ; 0x3eee + 3ed2: d0 93 91 03 sts 0x0391, r29 + 3ed6: c0 93 90 03 sts 0x0390, r28 + 3eda: 20 c0 rjmp .+64 ; 0x3f1c + 3edc: 12 96 adiw r26, 0x02 ; 2 + 3ede: 8d 91 ld r24, X+ + 3ee0: 9c 91 ld r25, X + 3ee2: 13 97 sbiw r26, 0x03 ; 3 + 3ee4: ad 01 movw r20, r26 + 3ee6: 00 97 sbiw r24, 0x00 ; 0 + 3ee8: 11 f0 breq .+4 ; 0x3eee + 3eea: dc 01 movw r26, r24 + 3eec: d3 cf rjmp .-90 ; 0x3e94 + 3eee: fa 01 movw r30, r20 + 3ef0: d3 83 std Z+3, r29 ; 0x03 + 3ef2: c2 83 std Z+2, r28 ; 0x02 + 3ef4: 21 91 ld r18, Z+ + 3ef6: 31 91 ld r19, Z+ + 3ef8: e2 0f add r30, r18 + 3efa: f3 1f adc r31, r19 + 3efc: ce 17 cp r28, r30 + 3efe: df 07 cpc r29, r31 + 3f00: 69 f4 brne .+26 ; 0x3f1c + 3f02: 88 81 ld r24, Y + 3f04: 99 81 ldd r25, Y+1 ; 0x01 + 3f06: 28 0f add r18, r24 + 3f08: 39 1f adc r19, r25 + 3f0a: 2e 5f subi r18, 0xFE ; 254 + 3f0c: 3f 4f sbci r19, 0xFF ; 255 + 3f0e: fa 01 movw r30, r20 + 3f10: 31 83 std Z+1, r19 ; 0x01 + 3f12: 20 83 st Z, r18 + 3f14: 8a 81 ldd r24, Y+2 ; 0x02 + 3f16: 9b 81 ldd r25, Y+3 ; 0x03 + 3f18: 93 83 std Z+3, r25 ; 0x03 + 3f1a: 82 83 std Z+2, r24 ; 0x02 + 3f1c: df 91 pop r29 + 3f1e: cf 91 pop r28 + 3f20: 08 95 ret + +00003f22 : + 3f22: a0 e0 ldi r26, 0x00 ; 0 + 3f24: b0 e0 ldi r27, 0x00 ; 0 + 3f26: e7 e9 ldi r30, 0x97 ; 151 + 3f28: ff e1 ldi r31, 0x1F ; 31 + 3f2a: 0c 94 57 1e jmp 0x3cae ; 0x3cae <__prologue_saves__+0x10> + 3f2e: ec 01 movw r28, r24 + 3f30: a8 80 ld r10, Y + 3f32: b9 80 ldd r11, Y+1 ; 0x01 + 3f34: ca 80 ldd r12, Y+2 ; 0x02 + 3f36: db 80 ldd r13, Y+3 ; 0x03 + 3f38: a1 14 cp r10, r1 + 3f3a: b1 04 cpc r11, r1 + 3f3c: c1 04 cpc r12, r1 + 3f3e: d1 04 cpc r13, r1 + 3f40: 41 f4 brne .+16 ; 0x3f52 + 3f42: 84 e2 ldi r24, 0x24 ; 36 + 3f44: a8 2e mov r10, r24 + 3f46: 89 ed ldi r24, 0xD9 ; 217 + 3f48: b8 2e mov r11, r24 + 3f4a: 8b e5 ldi r24, 0x5B ; 91 + 3f4c: c8 2e mov r12, r24 + 3f4e: 87 e0 ldi r24, 0x07 ; 7 + 3f50: d8 2e mov r13, r24 + 3f52: c6 01 movw r24, r12 + 3f54: b5 01 movw r22, r10 + 3f56: 2d e1 ldi r18, 0x1D ; 29 + 3f58: 33 ef ldi r19, 0xF3 ; 243 + 3f5a: 41 e0 ldi r20, 0x01 ; 1 + 3f5c: 50 e0 ldi r21, 0x00 ; 0 + 3f5e: 0e 94 34 1e call 0x3c68 ; 0x3c68 <__divmodsi4> + 3f62: 27 ea ldi r18, 0xA7 ; 167 + 3f64: 31 e4 ldi r19, 0x41 ; 65 + 3f66: 40 e0 ldi r20, 0x00 ; 0 + 3f68: 50 e0 ldi r21, 0x00 ; 0 + 3f6a: 0e 94 f3 1d call 0x3be6 ; 0x3be6 <__mulsi3> + 3f6e: 7b 01 movw r14, r22 + 3f70: 8c 01 movw r16, r24 + 3f72: c6 01 movw r24, r12 + 3f74: b5 01 movw r22, r10 + 3f76: 2d e1 ldi r18, 0x1D ; 29 + 3f78: 33 ef ldi r19, 0xF3 ; 243 + 3f7a: 41 e0 ldi r20, 0x01 ; 1 + 3f7c: 50 e0 ldi r21, 0x00 ; 0 + 3f7e: 0e 94 34 1e call 0x3c68 ; 0x3c68 <__divmodsi4> + 3f82: ca 01 movw r24, r20 + 3f84: b9 01 movw r22, r18 + 3f86: 2c ee ldi r18, 0xEC ; 236 + 3f88: 34 ef ldi r19, 0xF4 ; 244 + 3f8a: 4f ef ldi r20, 0xFF ; 255 + 3f8c: 5f ef ldi r21, 0xFF ; 255 + 3f8e: 0e 94 f3 1d call 0x3be6 ; 0x3be6 <__mulsi3> + 3f92: 6e 0d add r22, r14 + 3f94: 7f 1d adc r23, r15 + 3f96: 80 1f adc r24, r16 + 3f98: 91 1f adc r25, r17 + 3f9a: 97 ff sbrs r25, 7 + 3f9c: 04 c0 rjmp .+8 ; 0x3fa6 + 3f9e: 61 50 subi r22, 0x01 ; 1 + 3fa0: 70 40 sbci r23, 0x00 ; 0 + 3fa2: 80 40 sbci r24, 0x00 ; 0 + 3fa4: 90 48 sbci r25, 0x80 ; 128 + 3fa6: 68 83 st Y, r22 + 3fa8: 79 83 std Y+1, r23 ; 0x01 + 3faa: 8a 83 std Y+2, r24 ; 0x02 + 3fac: 9b 83 std Y+3, r25 ; 0x03 + 3fae: 9b 01 movw r18, r22 + 3fb0: ac 01 movw r20, r24 + 3fb2: 5f 77 andi r21, 0x7F ; 127 + 3fb4: b9 01 movw r22, r18 + 3fb6: ca 01 movw r24, r20 + 3fb8: cd b7 in r28, 0x3d ; 61 + 3fba: de b7 in r29, 0x3e ; 62 + 3fbc: ea e0 ldi r30, 0x0A ; 10 + 3fbe: 0c 94 73 1e jmp 0x3ce6 ; 0x3ce6 <__epilogue_restores__+0x10> + +00003fc2 : + 3fc2: 0e 94 91 1f call 0x3f22 ; 0x3f22 + 3fc6: 08 95 ret + +00003fc8 : + 3fc8: 86 eb ldi r24, 0xB6 ; 182 + 3fca: 92 e0 ldi r25, 0x02 ; 2 + 3fcc: 0e 94 91 1f call 0x3f22 ; 0x3f22 + 3fd0: 08 95 ret + +00003fd2 : + 3fd2: 60 93 b6 02 sts 0x02B6, r22 + 3fd6: 70 93 b7 02 sts 0x02B7, r23 + 3fda: 80 93 b8 02 sts 0x02B8, r24 + 3fde: 90 93 b9 02 sts 0x02B9, r25 + 3fe2: 08 95 ret + +00003fe4 : + 3fe4: a0 e0 ldi r26, 0x00 ; 0 + 3fe6: b0 e0 ldi r27, 0x00 ; 0 + 3fe8: e8 ef ldi r30, 0xF8 ; 248 + 3fea: ff e1 ldi r31, 0x1F ; 31 + 3fec: 0c 94 55 1e jmp 0x3caa ; 0x3caa <__prologue_saves__+0xc> + 3ff0: 8c 01 movw r16, r24 + 3ff2: 00 97 sbiw r24, 0x00 ; 0 + 3ff4: 29 f4 brne .+10 ; 0x4000 + 3ff6: cb 01 movw r24, r22 + 3ff8: 0e 94 8c 1e call 0x3d18 ; 0x3d18 + 3ffc: 8c 01 movw r16, r24 + 3ffe: ba c0 rjmp .+372 ; 0x4174 + 4000: 9e ef ldi r25, 0xFE ; 254 + 4002: e9 2e mov r14, r25 + 4004: 9f ef ldi r25, 0xFF ; 255 + 4006: f9 2e mov r15, r25 + 4008: e0 0e add r14, r16 + 400a: f1 1e adc r15, r17 + 400c: 58 01 movw r10, r16 + 400e: a6 0e add r10, r22 + 4010: b7 1e adc r11, r23 + 4012: ae 14 cp r10, r14 + 4014: bf 04 cpc r11, r15 + 4016: 08 f4 brcc .+2 ; 0x401a + 4018: ab c0 rjmp .+342 ; 0x4170 + 401a: 8e ef ldi r24, 0xFE ; 254 + 401c: 88 2e mov r8, r24 + 401e: 8f ef ldi r24, 0xFF ; 255 + 4020: 98 2e mov r9, r24 + 4022: 8a 0c add r8, r10 + 4024: 9b 1c adc r9, r11 + 4026: e7 01 movw r28, r14 + 4028: 48 81 ld r20, Y + 402a: 59 81 ldd r21, Y+1 ; 0x01 + 402c: 46 17 cp r20, r22 + 402e: 57 07 cpc r21, r23 + 4030: b8 f0 brcs .+46 ; 0x4060 + 4032: 45 30 cpi r20, 0x05 ; 5 + 4034: 51 05 cpc r21, r1 + 4036: 08 f4 brcc .+2 ; 0x403a + 4038: 9d c0 rjmp .+314 ; 0x4174 + 403a: ca 01 movw r24, r20 + 403c: 04 97 sbiw r24, 0x04 ; 4 + 403e: 86 17 cp r24, r22 + 4040: 97 07 cpc r25, r23 + 4042: 08 f4 brcc .+2 ; 0x4046 + 4044: 97 c0 rjmp .+302 ; 0x4174 + 4046: 42 50 subi r20, 0x02 ; 2 + 4048: 50 40 sbci r21, 0x00 ; 0 + 404a: 46 1b sub r20, r22 + 404c: 57 0b sbc r21, r23 + 404e: f4 01 movw r30, r8 + 4050: 51 83 std Z+1, r21 ; 0x01 + 4052: 40 83 st Z, r20 + 4054: 79 83 std Y+1, r23 ; 0x01 + 4056: 68 83 st Y, r22 + 4058: c5 01 movw r24, r10 + 405a: 0e 94 39 1f call 0x3e72 ; 0x3e72 + 405e: 8a c0 rjmp .+276 ; 0x4174 + 4060: 6b 01 movw r12, r22 + 4062: c4 1a sub r12, r20 + 4064: d5 0a sbc r13, r21 + 4066: e0 91 90 03 lds r30, 0x0390 + 406a: f0 91 91 03 lds r31, 0x0391 + 406e: a0 e0 ldi r26, 0x00 ; 0 + 4070: b0 e0 ldi r27, 0x00 ; 0 + 4072: c0 e0 ldi r28, 0x00 ; 0 + 4074: d0 e0 ldi r29, 0x00 ; 0 + 4076: 42 c0 rjmp .+132 ; 0x40fc + 4078: e8 15 cp r30, r8 + 407a: f9 05 cpc r31, r9 + 407c: a1 f5 brne .+104 ; 0x40e6 + 407e: 20 81 ld r18, Z + 4080: 31 81 ldd r19, Z+1 ; 0x01 + 4082: 2c 15 cp r18, r12 + 4084: 3d 05 cpc r19, r13 + 4086: 78 f1 brcs .+94 ; 0x40e6 + 4088: c9 01 movw r24, r18 + 408a: 02 96 adiw r24, 0x02 ; 2 + 408c: 8c 15 cp r24, r12 + 408e: 9d 05 cpc r25, r13 + 4090: a8 f0 brcs .+42 ; 0x40bc + 4092: 4e 5f subi r20, 0xFE ; 254 + 4094: 5f 4f sbci r21, 0xFF ; 255 + 4096: 42 0f add r20, r18 + 4098: 53 1f adc r21, r19 + 409a: e7 01 movw r28, r14 + 409c: 59 83 std Y+1, r21 ; 0x01 + 409e: 48 83 st Y, r20 + 40a0: 22 81 ldd r18, Z+2 ; 0x02 + 40a2: 33 81 ldd r19, Z+3 ; 0x03 + 40a4: 10 97 sbiw r26, 0x00 ; 0 + 40a6: 29 f0 breq .+10 ; 0x40b2 + 40a8: 13 96 adiw r26, 0x03 ; 3 + 40aa: 3c 93 st X, r19 + 40ac: 2e 93 st -X, r18 + 40ae: 12 97 sbiw r26, 0x02 ; 2 + 40b0: 61 c0 rjmp .+194 ; 0x4174 + 40b2: 30 93 91 03 sts 0x0391, r19 + 40b6: 20 93 90 03 sts 0x0390, r18 + 40ba: 5c c0 rjmp .+184 ; 0x4174 + 40bc: 22 50 subi r18, 0x02 ; 2 + 40be: 30 40 sbci r19, 0x00 ; 0 + 40c0: 2c 19 sub r18, r12 + 40c2: 3d 09 sbc r19, r13 + 40c4: 31 83 std Z+1, r19 ; 0x01 + 40c6: 20 83 st Z, r18 + 40c8: 10 97 sbiw r26, 0x00 ; 0 + 40ca: 29 f0 breq .+10 ; 0x40d6 + 40cc: 13 96 adiw r26, 0x03 ; 3 + 40ce: fc 93 st X, r31 + 40d0: ee 93 st -X, r30 + 40d2: 12 97 sbiw r26, 0x02 ; 2 + 40d4: 04 c0 rjmp .+8 ; 0x40de + 40d6: f0 93 91 03 sts 0x0391, r31 + 40da: e0 93 90 03 sts 0x0390, r30 + 40de: f7 01 movw r30, r14 + 40e0: 71 83 std Z+1, r23 ; 0x01 + 40e2: 60 83 st Z, r22 + 40e4: 47 c0 rjmp .+142 ; 0x4174 + 40e6: 80 81 ld r24, Z + 40e8: 91 81 ldd r25, Z+1 ; 0x01 + 40ea: c8 17 cp r28, r24 + 40ec: d9 07 cpc r29, r25 + 40ee: 08 f4 brcc .+2 ; 0x40f2 + 40f0: ec 01 movw r28, r24 + 40f2: df 01 movw r26, r30 + 40f4: 82 81 ldd r24, Z+2 ; 0x02 + 40f6: 93 81 ldd r25, Z+3 ; 0x03 + 40f8: 9c 01 movw r18, r24 + 40fa: f9 01 movw r30, r18 + 40fc: 30 97 sbiw r30, 0x00 ; 0 + 40fe: 09 f0 breq .+2 ; 0x4102 + 4100: bb cf rjmp .-138 ; 0x4078 + 4102: 40 0f add r20, r16 + 4104: 51 1f adc r21, r17 + 4106: 80 91 8e 03 lds r24, 0x038E + 410a: 90 91 8f 03 lds r25, 0x038F + 410e: 84 17 cp r24, r20 + 4110: 95 07 cpc r25, r21 + 4112: e9 f4 brne .+58 ; 0x414e + 4114: c6 17 cp r28, r22 + 4116: d7 07 cpc r29, r23 + 4118: d0 f4 brcc .+52 ; 0x414e + 411a: 20 91 b4 02 lds r18, 0x02B4 + 411e: 30 91 b5 02 lds r19, 0x02B5 + 4122: 21 15 cp r18, r1 + 4124: 31 05 cpc r19, r1 + 4126: 41 f4 brne .+16 ; 0x4138 + 4128: 2d b7 in r18, 0x3d ; 61 + 412a: 3e b7 in r19, 0x3e ; 62 + 412c: 80 91 b0 02 lds r24, 0x02B0 + 4130: 90 91 b1 02 lds r25, 0x02B1 + 4134: 28 1b sub r18, r24 + 4136: 39 0b sbc r19, r25 + 4138: a2 16 cp r10, r18 + 413a: b3 06 cpc r11, r19 + 413c: c8 f4 brcc .+50 ; 0x4170 + 413e: b0 92 8f 03 sts 0x038F, r11 + 4142: a0 92 8e 03 sts 0x038E, r10 + 4146: e7 01 movw r28, r14 + 4148: 79 83 std Y+1, r23 ; 0x01 + 414a: 68 83 st Y, r22 + 414c: 13 c0 rjmp .+38 ; 0x4174 + 414e: cb 01 movw r24, r22 + 4150: 0e 94 8c 1e call 0x3d18 ; 0x3d18 + 4154: ec 01 movw r28, r24 + 4156: 00 97 sbiw r24, 0x00 ; 0 + 4158: 59 f0 breq .+22 ; 0x4170 + 415a: f7 01 movw r30, r14 + 415c: 40 81 ld r20, Z + 415e: 51 81 ldd r21, Z+1 ; 0x01 + 4160: b8 01 movw r22, r16 + 4162: 0e 94 ff 20 call 0x41fe ; 0x41fe + 4166: c8 01 movw r24, r16 + 4168: 0e 94 39 1f call 0x3e72 ; 0x3e72 + 416c: 8e 01 movw r16, r28 + 416e: 02 c0 rjmp .+4 ; 0x4174 + 4170: 00 e0 ldi r16, 0x00 ; 0 + 4172: 10 e0 ldi r17, 0x00 ; 0 + 4174: c8 01 movw r24, r16 + 4176: cd b7 in r28, 0x3d ; 61 + 4178: de b7 in r29, 0x3e ; 62 + 417a: ec e0 ldi r30, 0x0C ; 12 + 417c: 0c 94 71 1e jmp 0x3ce2 ; 0x3ce2 <__epilogue_restores__+0xc> + +00004180 : + 4180: 1f 93 push r17 + 4182: fc 01 movw r30, r24 + 4184: 99 27 eor r25, r25 + 4186: 88 27 eor r24, r24 + 4188: bc 01 movw r22, r24 + 418a: e8 94 clt + 418c: 11 91 ld r17, Z+ + 418e: 10 32 cpi r17, 0x20 ; 32 + 4190: e9 f3 breq .-6 ; 0x418c + 4192: 19 30 cpi r17, 0x09 ; 9 + 4194: 10 f0 brcs .+4 ; 0x419a + 4196: 1e 30 cpi r17, 0x0E ; 14 + 4198: c8 f3 brcs .-14 ; 0x418c + 419a: 1b 32 cpi r17, 0x2B ; 43 + 419c: 51 f0 breq .+20 ; 0x41b2 + 419e: 1d 32 cpi r17, 0x2D ; 45 + 41a0: 49 f4 brne .+18 ; 0x41b4 + 41a2: 68 94 set + 41a4: 06 c0 rjmp .+12 ; 0x41b2 + 41a6: 0e 94 c5 21 call 0x438a ; 0x438a <__mulsi_const_10> + 41aa: 61 0f add r22, r17 + 41ac: 71 1d adc r23, r1 + 41ae: 81 1d adc r24, r1 + 41b0: 91 1d adc r25, r1 + 41b2: 11 91 ld r17, Z+ + 41b4: 10 53 subi r17, 0x30 ; 48 + 41b6: 1a 30 cpi r17, 0x0A ; 10 + 41b8: b0 f3 brcs .-20 ; 0x41a6 + 41ba: 3e f4 brtc .+14 ; 0x41ca + 41bc: 90 95 com r25 + 41be: 80 95 com r24 + 41c0: 70 95 com r23 + 41c2: 61 95 neg r22 + 41c4: 7f 4f sbci r23, 0xFF ; 255 + 41c6: 8f 4f sbci r24, 0xFF ; 255 + 41c8: 9f 4f sbci r25, 0xFF ; 255 + 41ca: 1f 91 pop r17 + 41cc: 08 95 ret + +000041ce : + 41ce: 91 11 cpse r25, r1 + 41d0: 16 c1 rjmp .+556 ; 0x43fe <__ctype_isfalse> + 41d2: 80 32 cpi r24, 0x20 ; 32 + 41d4: 19 f0 breq .+6 ; 0x41dc + 41d6: 89 50 subi r24, 0x09 ; 9 + 41d8: 85 50 subi r24, 0x05 ; 5 + 41da: d0 f7 brcc .-12 ; 0x41d0 + 41dc: 08 95 ret + +000041de : + 41de: 91 11 cpse r25, r1 + 41e0: 08 95 ret + 41e2: 81 54 subi r24, 0x41 ; 65 + 41e4: 8a 51 subi r24, 0x1A ; 26 + 41e6: 08 f4 brcc .+2 ; 0x41ea + 41e8: 80 5e subi r24, 0xE0 ; 224 + 41ea: 85 5a subi r24, 0xA5 ; 165 + 41ec: 08 95 ret + +000041ee : + 41ee: 91 11 cpse r25, r1 + 41f0: 08 95 ret + 41f2: 81 56 subi r24, 0x61 ; 97 + 41f4: 8a 51 subi r24, 0x1A ; 26 + 41f6: 08 f4 brcc .+2 ; 0x41fa + 41f8: 80 52 subi r24, 0x20 ; 32 + 41fa: 85 58 subi r24, 0x85 ; 133 + 41fc: 08 95 ret + +000041fe : + 41fe: fb 01 movw r30, r22 + 4200: dc 01 movw r26, r24 + 4202: 02 c0 rjmp .+4 ; 0x4208 + 4204: 01 90 ld r0, Z+ + 4206: 0d 92 st X+, r0 + 4208: 41 50 subi r20, 0x01 ; 1 + 420a: 50 40 sbci r21, 0x00 ; 0 + 420c: d8 f7 brcc .-10 ; 0x4204 + 420e: 08 95 ret + +00004210 : + 4210: fb 01 movw r30, r22 + 4212: dc 01 movw r26, r24 + 4214: 0d 90 ld r0, X+ + 4216: 00 20 and r0, r0 + 4218: e9 f7 brne .-6 ; 0x4214 + 421a: 11 97 sbiw r26, 0x01 ; 1 + 421c: 01 90 ld r0, Z+ + 421e: 0d 92 st X+, r0 + 4220: 00 20 and r0, r0 + 4222: e1 f7 brne .-8 ; 0x421c + 4224: 08 95 ret + +00004226 : + 4226: fc 01 movw r30, r24 + 4228: 81 91 ld r24, Z+ + 422a: 86 17 cp r24, r22 + 422c: 21 f0 breq .+8 ; 0x4236 + 422e: 88 23 and r24, r24 + 4230: d9 f7 brne .-10 ; 0x4228 + 4232: 99 27 eor r25, r25 + 4234: 08 95 ret + 4236: 31 97 sbiw r30, 0x01 ; 1 + 4238: cf 01 movw r24, r30 + 423a: 08 95 ret + +0000423c : + 423c: fb 01 movw r30, r22 + 423e: dc 01 movw r26, r24 + 4240: 8d 91 ld r24, X+ + 4242: 01 90 ld r0, Z+ + 4244: 80 19 sub r24, r0 + 4246: 01 10 cpse r0, r1 + 4248: d9 f3 breq .-10 ; 0x4240 + 424a: 99 0b sbc r25, r25 + 424c: 08 95 ret + +0000424e : + 424e: fb 01 movw r30, r22 + 4250: dc 01 movw r26, r24 + 4252: 01 90 ld r0, Z+ + 4254: 0d 92 st X+, r0 + 4256: 00 20 and r0, r0 + 4258: e1 f7 brne .-8 ; 0x4252 + 425a: 08 95 ret + +0000425c : + 425c: fb 01 movw r30, r22 + 425e: dc 01 movw r26, r24 + 4260: 41 50 subi r20, 0x01 ; 1 + 4262: 50 40 sbci r21, 0x00 ; 0 + 4264: 30 f0 brcs .+12 ; 0x4272 + 4266: 8d 91 ld r24, X+ + 4268: 01 90 ld r0, Z+ + 426a: 80 19 sub r24, r0 + 426c: 19 f4 brne .+6 ; 0x4274 + 426e: 00 20 and r0, r0 + 4270: b9 f7 brne .-18 ; 0x4260 + 4272: 88 1b sub r24, r24 + 4274: 99 0b sbc r25, r25 + 4276: 08 95 ret + +00004278 : + 4278: fb 01 movw r30, r22 + 427a: dc 01 movw r26, r24 + 427c: 41 50 subi r20, 0x01 ; 1 + 427e: 50 40 sbci r21, 0x00 ; 0 + 4280: 48 f0 brcs .+18 ; 0x4294 + 4282: 01 90 ld r0, Z+ + 4284: 0d 92 st X+, r0 + 4286: 00 20 and r0, r0 + 4288: c9 f7 brne .-14 ; 0x427c + 428a: 01 c0 rjmp .+2 ; 0x428e + 428c: 1d 92 st X+, r1 + 428e: 41 50 subi r20, 0x01 ; 1 + 4290: 50 40 sbci r21, 0x00 ; 0 + 4292: e0 f7 brcc .-8 ; 0x428c + 4294: 08 95 ret + +00004296 : + 4296: fc 01 movw r30, r24 + 4298: 81 e0 ldi r24, 0x01 ; 1 + 429a: 90 e0 ldi r25, 0x00 ; 0 + 429c: 01 90 ld r0, Z+ + 429e: 06 16 cp r0, r22 + 42a0: 09 f4 brne .+2 ; 0x42a4 + 42a2: cf 01 movw r24, r30 + 42a4: 00 20 and r0, r0 + 42a6: d1 f7 brne .-12 ; 0x429c + 42a8: 01 97 sbiw r24, 0x01 ; 1 + 42aa: 08 95 ret + +000042ac : + 42ac: fb 01 movw r30, r22 + 42ae: 51 91 ld r21, Z+ + 42b0: 55 23 and r21, r21 + 42b2: a9 f0 breq .+42 ; 0x42de + 42b4: bf 01 movw r22, r30 + 42b6: dc 01 movw r26, r24 + 42b8: 4d 91 ld r20, X+ + 42ba: 45 17 cp r20, r21 + 42bc: 41 11 cpse r20, r1 + 42be: e1 f7 brne .-8 ; 0x42b8 + 42c0: 59 f4 brne .+22 ; 0x42d8 + 42c2: cd 01 movw r24, r26 + 42c4: 01 90 ld r0, Z+ + 42c6: 00 20 and r0, r0 + 42c8: 49 f0 breq .+18 ; 0x42dc + 42ca: 4d 91 ld r20, X+ + 42cc: 40 15 cp r20, r0 + 42ce: 41 11 cpse r20, r1 + 42d0: c9 f3 breq .-14 ; 0x42c4 + 42d2: fb 01 movw r30, r22 + 42d4: 41 11 cpse r20, r1 + 42d6: ef cf rjmp .-34 ; 0x42b6 + 42d8: 81 e0 ldi r24, 0x01 ; 1 + 42da: 90 e0 ldi r25, 0x00 ; 0 + 42dc: 01 97 sbiw r24, 0x01 ; 1 + 42de: 08 95 ret + +000042e0 : + 42e0: fb 01 movw r30, r22 + 42e2: 9f 01 movw r18, r30 + 42e4: e8 94 clt + 42e6: 42 30 cpi r20, 0x02 ; 2 + 42e8: c4 f0 brlt .+48 ; 0x431a + 42ea: 45 32 cpi r20, 0x25 ; 37 + 42ec: b4 f4 brge .+44 ; 0x431a + 42ee: 4a 30 cpi r20, 0x0A ; 10 + 42f0: 29 f4 brne .+10 ; 0x42fc + 42f2: 97 fb bst r25, 7 + 42f4: 1e f4 brtc .+6 ; 0x42fc + 42f6: 90 95 com r25 + 42f8: 81 95 neg r24 + 42fa: 9f 4f sbci r25, 0xFF ; 255 + 42fc: 64 2f mov r22, r20 + 42fe: 77 27 eor r23, r23 + 4300: 0e 94 12 22 call 0x4424 ; 0x4424 <__udivmodhi4> + 4304: 80 5d subi r24, 0xD0 ; 208 + 4306: 8a 33 cpi r24, 0x3A ; 58 + 4308: 0c f0 brlt .+2 ; 0x430c + 430a: 89 5d subi r24, 0xD9 ; 217 + 430c: 81 93 st Z+, r24 + 430e: cb 01 movw r24, r22 + 4310: 00 97 sbiw r24, 0x00 ; 0 + 4312: a1 f7 brne .-24 ; 0x42fc + 4314: 16 f4 brtc .+4 ; 0x431a + 4316: 5d e2 ldi r21, 0x2D ; 45 + 4318: 51 93 st Z+, r21 + 431a: 10 82 st Z, r1 + 431c: c9 01 movw r24, r18 + 431e: 0c 94 02 22 jmp 0x4404 ; 0x4404 + +00004322 : + 4322: fa 01 movw r30, r20 + 4324: cf 93 push r28 + 4326: ff 93 push r31 + 4328: ef 93 push r30 + 432a: 22 30 cpi r18, 0x02 ; 2 + 432c: 44 f1 brlt .+80 ; 0x437e + 432e: 25 32 cpi r18, 0x25 ; 37 + 4330: 34 f5 brge .+76 ; 0x437e + 4332: c2 2f mov r28, r18 + 4334: e8 94 clt + 4336: ca 30 cpi r28, 0x0A ; 10 + 4338: 49 f4 brne .+18 ; 0x434c + 433a: 97 fb bst r25, 7 + 433c: 3e f4 brtc .+14 ; 0x434c + 433e: 90 95 com r25 + 4340: 80 95 com r24 + 4342: 70 95 com r23 + 4344: 61 95 neg r22 + 4346: 7f 4f sbci r23, 0xFF ; 255 + 4348: 8f 4f sbci r24, 0xFF ; 255 + 434a: 9f 4f sbci r25, 0xFF ; 255 + 434c: 2c 2f mov r18, r28 + 434e: 33 27 eor r19, r19 + 4350: 44 27 eor r20, r20 + 4352: 55 27 eor r21, r21 + 4354: ff 93 push r31 + 4356: ef 93 push r30 + 4358: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 435c: ef 91 pop r30 + 435e: ff 91 pop r31 + 4360: 60 5d subi r22, 0xD0 ; 208 + 4362: 6a 33 cpi r22, 0x3A ; 58 + 4364: 0c f0 brlt .+2 ; 0x4368 + 4366: 69 5d subi r22, 0xD9 ; 217 + 4368: 61 93 st Z+, r22 + 436a: b9 01 movw r22, r18 + 436c: ca 01 movw r24, r20 + 436e: 60 50 subi r22, 0x00 ; 0 + 4370: 70 40 sbci r23, 0x00 ; 0 + 4372: 80 40 sbci r24, 0x00 ; 0 + 4374: 90 40 sbci r25, 0x00 ; 0 + 4376: 51 f7 brne .-44 ; 0x434c + 4378: 16 f4 brtc .+4 ; 0x437e + 437a: cd e2 ldi r28, 0x2D ; 45 + 437c: c1 93 st Z+, r28 + 437e: 10 82 st Z, r1 + 4380: 8f 91 pop r24 + 4382: 9f 91 pop r25 + 4384: cf 91 pop r28 + 4386: 0c 94 02 22 jmp 0x4404 ; 0x4404 + +0000438a <__mulsi_const_10>: + 438a: 59 2f mov r21, r25 + 438c: 48 2f mov r20, r24 + 438e: 37 2f mov r19, r23 + 4390: 26 2f mov r18, r22 + 4392: 66 0f add r22, r22 + 4394: 77 1f adc r23, r23 + 4396: 88 1f adc r24, r24 + 4398: 99 1f adc r25, r25 + 439a: 66 0f add r22, r22 + 439c: 77 1f adc r23, r23 + 439e: 88 1f adc r24, r24 + 43a0: 99 1f adc r25, r25 + 43a2: 62 0f add r22, r18 + 43a4: 73 1f adc r23, r19 + 43a6: 84 1f adc r24, r20 + 43a8: 95 1f adc r25, r21 + 43aa: 66 0f add r22, r22 + 43ac: 77 1f adc r23, r23 + 43ae: 88 1f adc r24, r24 + 43b0: 99 1f adc r25, r25 + 43b2: 08 95 ret + +000043b4 : + 43b4: fa 01 movw r30, r20 + 43b6: cf 93 push r28 + 43b8: ff 93 push r31 + 43ba: ef 93 push r30 + 43bc: 22 30 cpi r18, 0x02 ; 2 + 43be: cc f0 brlt .+50 ; 0x43f2 + 43c0: 25 32 cpi r18, 0x25 ; 37 + 43c2: bc f4 brge .+46 ; 0x43f2 + 43c4: c2 2f mov r28, r18 + 43c6: 2c 2f mov r18, r28 + 43c8: 33 27 eor r19, r19 + 43ca: 44 27 eor r20, r20 + 43cc: 55 27 eor r21, r21 + 43ce: ff 93 push r31 + 43d0: ef 93 push r30 + 43d2: 0e 94 12 1e call 0x3c24 ; 0x3c24 <__udivmodsi4> + 43d6: ef 91 pop r30 + 43d8: ff 91 pop r31 + 43da: 60 5d subi r22, 0xD0 ; 208 + 43dc: 6a 33 cpi r22, 0x3A ; 58 + 43de: 0c f0 brlt .+2 ; 0x43e2 + 43e0: 69 5d subi r22, 0xD9 ; 217 + 43e2: 61 93 st Z+, r22 + 43e4: b9 01 movw r22, r18 + 43e6: ca 01 movw r24, r20 + 43e8: 60 50 subi r22, 0x00 ; 0 + 43ea: 70 40 sbci r23, 0x00 ; 0 + 43ec: 80 40 sbci r24, 0x00 ; 0 + 43ee: 90 40 sbci r25, 0x00 ; 0 + 43f0: 51 f7 brne .-44 ; 0x43c6 + 43f2: 10 82 st Z, r1 + 43f4: 8f 91 pop r24 + 43f6: 9f 91 pop r25 + 43f8: cf 91 pop r28 + 43fa: 0c 94 02 22 jmp 0x4404 ; 0x4404 + +000043fe <__ctype_isfalse>: + 43fe: 99 27 eor r25, r25 + 4400: 88 27 eor r24, r24 + +00004402 <__ctype_istrue>: + 4402: 08 95 ret + +00004404 : + 4404: dc 01 movw r26, r24 + 4406: fc 01 movw r30, r24 + 4408: 67 2f mov r22, r23 + 440a: 71 91 ld r23, Z+ + 440c: 77 23 and r23, r23 + 440e: e1 f7 brne .-8 ; 0x4408 + 4410: 32 97 sbiw r30, 0x02 ; 2 + 4412: 04 c0 rjmp .+8 ; 0x441c + 4414: 7c 91 ld r23, X + 4416: 6d 93 st X+, r22 + 4418: 70 83 st Z, r23 + 441a: 62 91 ld r22, -Z + 441c: ae 17 cp r26, r30 + 441e: bf 07 cpc r27, r31 + 4420: c8 f3 brcs .-14 ; 0x4414 + 4422: 08 95 ret + +00004424 <__udivmodhi4>: + 4424: aa 1b sub r26, r26 + 4426: bb 1b sub r27, r27 + 4428: 51 e1 ldi r21, 0x11 ; 17 + 442a: 07 c0 rjmp .+14 ; 0x443a <__udivmodhi4_ep> + +0000442c <__udivmodhi4_loop>: + 442c: aa 1f adc r26, r26 + 442e: bb 1f adc r27, r27 + 4430: a6 17 cp r26, r22 + 4432: b7 07 cpc r27, r23 + 4434: 10 f0 brcs .+4 ; 0x443a <__udivmodhi4_ep> + 4436: a6 1b sub r26, r22 + 4438: b7 0b sbc r27, r23 + +0000443a <__udivmodhi4_ep>: + 443a: 88 1f adc r24, r24 + 443c: 99 1f adc r25, r25 + 443e: 5a 95 dec r21 + 4440: a9 f7 brne .-22 ; 0x442c <__udivmodhi4_loop> + 4442: 80 95 com r24 + 4444: 90 95 com r25 + 4446: bc 01 movw r22, r24 + 4448: cd 01 movw r24, r26 + 444a: 08 95 ret + +0000444c <_exit>: + 444c: f8 94 cli + +0000444e <__stop_program>: + 444e: ff cf rjmp .-2 ; 0x444e <__stop_program> diff --git a/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.map b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.map new file mode 100644 index 0000000..c87bfd3 --- /dev/null +++ b/ESS1995test_328p/bin/Release/ESS1995test_328p.elf.map @@ -0,0 +1,1399 @@ +Archive member included because of file (symbol) + +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mulsi3.o) + obj/Release/arduinoSrc0022/Tone.o (__mulsi3) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + obj/Release/arduinoSrc0022/HardwareSerial.o (__udivmodsi4) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + obj/Release/arduinoSrc0022/WMath.o (__divmodsi4) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o (exit) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + obj/Release/adapticsBT.o (__do_copy_data) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + obj/Release/main.o (__do_clear_bss) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + obj/Release/arduinoSrc0022/HardwareSerial.o (__do_global_ctors) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fixunssfsi.o) + obj/Release/arduinoSrc0022/Print.o (__fixunssfsi) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + obj/Release/arduinoSrc0022/Print.o (__subsf3) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + obj/Release/arduinoSrc0022/Print.o (__mulsf3) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + obj/Release/arduinoSrc0022/Print.o (__divsf3) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fixunssfsi.o) (__gesf2) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_lt_sf.o) + obj/Release/arduinoSrc0022/Print.o (__ltsf2) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_si_to_sf.o) + obj/Release/arduinoSrc0022/Print.o (__floatsisf) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + obj/Release/arduinoSrc0022/Print.o (__fixsfsi) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__thenan_sf) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_usi_to_sf.o) + obj/Release/arduinoSrc0022/Print.o (__floatunsisf) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__prologue_saves__) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__epilogue_restores__) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) (__tablejump__) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clzsi2.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_si_to_sf.o) (__clzsi2) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__pack_f) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) (__unpack_f) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fpcmp_parts_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ge_sf.o) (__fpcmp_parts_f) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clz.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clzsi2.o) (__clz_tab) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + obj/Release/arduinoSrc0022/WString.o (malloc) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + obj/Release/arduinoSrc0022/WMath.o (random) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + obj/Release/arduinoSrc0022/WString.o (realloc) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(atol.o) + obj/Release/arduinoSrc0022/WString.o (atol) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(isspace.o) + obj/Release/arduinoSrc0022/WString.o (isspace) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(tolower.o) + obj/Release/arduinoSrc0022/WString.o (tolower) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(toupper.o) + obj/Release/arduinoSrc0022/WString.o (toupper) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(memcpy.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) (memcpy) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcat.o) + obj/Release/arduinoSrc0022/WString.o (strcat) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strchr.o) + obj/Release/arduinoSrc0022/WString.o (strchr) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcmp.o) + obj/Release/arduinoSrc0022/WString.o (strcmp) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcpy.o) + obj/Release/arduinoSrc0022/WString.o (strcpy) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncmp.o) + obj/Release/arduinoSrc0022/WString.o (strncmp) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncpy.o) + obj/Release/arduinoSrc0022/WString.o (strncpy) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrchr.o) + obj/Release/arduinoSrc0022/WString.o (strrchr) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strstr.o) + obj/Release/arduinoSrc0022/WString.o (strstr) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(itoa.o) + obj/Release/arduinoSrc0022/WString.o (itoa) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ltoa.o) + obj/Release/arduinoSrc0022/WString.o (ltoa) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(mulsi10.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(atol.o) (__mulsi_const_10) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ultoa.o) + obj/Release/arduinoSrc0022/WString.o (ultoa) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(isspace.o) (__ctype_isfalse) +/usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrev.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(itoa.o) (strrev) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(itoa.o) (__udivmodhi4) + +Allocating common symbols +Common symbol size file + +__brkval 0x2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) +__flp 0x2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +LOAD obj/Release/adapticsBT.o +LOAD obj/Release/main.o +LOAD obj/Release/arduinoSrc0022/HardwareSerial.o +LOAD obj/Release/arduinoSrc0022/Print.o +LOAD obj/Release/arduinoSrc0022/Tone.o +LOAD obj/Release/arduinoSrc0022/WInterrupts.o +LOAD obj/Release/arduinoSrc0022/WMath.o +LOAD obj/Release/arduinoSrc0022/WString.o +LOAD obj/Release/arduinoSrc0022/pins_arduino.o +LOAD obj/Release/arduinoSrc0022/wiring.o +LOAD obj/Release/arduinoSrc0022/wiring_analog.o +LOAD obj/Release/arduinoSrc0022/wiring_digital.o +LOAD obj/Release/arduinoSrc0022/wiring_pulse.o +LOAD obj/Release/arduinoSrc0022/wiring_shift.o +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a + +.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 0x00000000 0x4450 + *(.vectors) + .vectors 0x00000000 0x68 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + *(.progmem*) + .progmem.data 0x00000068 0x1 obj/Release/arduinoSrc0022/Tone.o + .progmem.data 0x00000069 0x5a obj/Release/arduinoSrc0022/pins_arduino.o + 0x00000069 port_to_mode_PGM + 0x00000073 port_to_output_PGM + 0x0000007d port_to_input_PGM + 0x00000087 digital_pin_to_port_PGM + 0x0000009b digital_pin_to_bit_mask_PGM + 0x000000af digital_pin_to_timer_PGM + 0x000000c4 . = ALIGN (0x2) + *fill* 0x000000c3 0x1 00 + 0x000000c4 __trampolines_start = . + *(.trampolines) + .trampolines 0x000000c4 0x0 linker stubs + *(.trampolines*) + 0x000000c4 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x000000c4 __ctors_start = . + *(.ctors) + .ctors 0x000000c4 0x2 obj/Release/arduinoSrc0022/HardwareSerial.o + 0x000000c6 __ctors_end = . + 0x000000c6 __dtors_start = . + *(.dtors) + 0x000000c6 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x000000c6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x000000c6 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x000000c6 0xc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x000000d2 0x16 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + 0x000000d2 __do_copy_data + .init4 0x000000e8 0x10 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x000000e8 __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + .init6 0x000000f8 0x16 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + 0x000000f8 __do_global_ctors + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x0000010e 0x8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init9) + *(.text) + .text 0x00000116 0x4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x00000116 __vector_22 + 0x00000116 __vector_24 + 0x00000116 __vector_12 + 0x00000116 __bad_interrupt + 0x00000116 __vector_6 + 0x00000116 __vector_3 + 0x00000116 __vector_23 + 0x00000116 __vector_25 + 0x00000116 __vector_11 + 0x00000116 __vector_13 + 0x00000116 __vector_17 + 0x00000116 __vector_19 + 0x00000116 __vector_5 + 0x00000116 __vector_4 + 0x00000116 __vector_9 + 0x00000116 __vector_21 + 0x00000116 __vector_15 + 0x00000116 __vector_8 + 0x00000116 __vector_14 + 0x00000116 __vector_10 + 0x00000116 __vector_20 + .text 0x0000011a 0x9a obj/Release/adapticsBT.o + 0x0000011a advertise() + 0x00000150 setupBlueTooth() + .text 0x000001b4 0x474 obj/Release/main.o + 0x000001b4 __cxa_pure_virtual + 0x000001b8 writeStartBit() + 0x000001f2 writeStopBit() + 0x0000021c SCLKcycle_R() + 0x00000246 readByte() + 0x00000288 SCLKcycle_W() + 0x000002b2 writeByte(unsigned char) + 0x000002f0 startRead() + 0x00000302 startWrite() + 0x00000314 writeDMM() + 0x000003de main + .text 0x00000628 0x38e obj/Release/arduinoSrc0022/HardwareSerial.o + 0x00000628 __vector_18 + 0x0000068a HardwareSerial::HardwareSerial(ring_buffer*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) + 0x000006ea HardwareSerial::HardwareSerial(ring_buffer*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) + 0x0000074a HardwareSerial::begin(long) + 0x00000812 HardwareSerial::end() + 0x00000866 HardwareSerial::available() + 0x00000888 HardwareSerial::peek() + 0x000008bc HardwareSerial::read() + 0x00000904 HardwareSerial::flush() + 0x0000091c HardwareSerial::write(unsigned char) + .text 0x000009b6 0x5b2 obj/Release/arduinoSrc0022/Print.o + 0x000009b6 Print::write(char const*) + 0x000009e6 Print::write(unsigned char const*, unsigned int) + 0x00000a24 Print::print(char const*) + 0x00000a34 Print::print(String const&) + 0x00000a88 Print::printNumber(unsigned long, unsigned char) + 0x00000bbc Print::print(unsigned long, int) + 0x00000bda Print::print(unsigned int, int) + 0x00000bfc Print::print(unsigned char, int) + 0x00000c20 Print::print(long, int) + 0x00000c8c Print::print(int, int) + 0x00000cb2 Print::print(char, int) + 0x00000cda Print::println() + 0x00000d08 Print::println(unsigned long, int) + 0x00000d1e Print::println(unsigned int, int) + 0x00000d50 Print::println(unsigned char, int) + 0x00000d84 Print::println(char const*) + 0x00000d9a Print::println(String const&) + 0x00000db0 Print::println(long, int) + 0x00000dc6 Print::println(int, int) + 0x00000dfc Print::println(char, int) + 0x00000e34 Print::printFloat(double, unsigned char) + 0x00000f4c Print::print(double, int) + 0x00000f52 Print::println(double, int) + .text 0x00000f68 0x552 obj/Release/arduinoSrc0022/Tone.o + 0x00000f68 disableTimer(unsigned char) + 0x00000faa noTone(unsigned char) + 0x00000fd8 __vector_7 + 0x00001090 tone(unsigned char, unsigned int, unsigned long) + .text 0x000014ba 0x120 obj/Release/arduinoSrc0022/WInterrupts.o + 0x000014ba attachInterrupt + 0x00001500 detachInterrupt + 0x00001526 __vector_1 + 0x00001580 __vector_2 + .text 0x000015da 0x132 obj/Release/arduinoSrc0022/WMath.o + 0x000015da map(long, long, long, long, long) + 0x0000166c makeWord(unsigned int) + 0x0000166e makeWord(unsigned char, unsigned char) + 0x0000167c random(long) + 0x000016c0 random(long, long) + 0x000016fc randomSeed(unsigned int) + .text 0x0000170c 0x103c obj/Release/arduinoSrc0022/WString.o + 0x0000170c String::charAt(unsigned int) const + 0x0000171c String::setCharAt(unsigned int, char) + 0x0000173e String::operator[](unsigned int) + 0x00001768 String::operator[](unsigned int) const + 0x00001778 String::toInt() + 0x00001784 String::toCharArray(char*, unsigned int) + 0x000017c8 String::getBytes(unsigned char*, unsigned int) + 0x0000180c String::~String() + 0x0000182c String::startsWith(String const&, unsigned int) const + 0x00001868 String::startsWith(String const&) const + 0x0000188e String::lastIndexOf(char, unsigned int) const + 0x000018fc String::lastIndexOf(char) const + 0x0000190c String::indexOf(String const&, unsigned int) const + 0x00001948 String::indexOf(String const&) const + 0x00001952 String::indexOf(char, unsigned int) const + 0x0000198e String::indexOf(char) const + 0x00001998 String::equals(String const&) const + 0x000019ca String::endsWith(String const&) const + 0x00001a04 String::operator>=(String const&) const + 0x00001a2c String::operator<=(String const&) const + 0x00001a4e String::operator>(String const&) const + 0x00001a70 String::operator<(String const&) const + 0x00001a94 String::operator!=(String const&) const + 0x00001ac4 String::operator==(String const&) const + 0x00001af8 String::compareTo(String const&) const + 0x00001b0a String::operator+=(String const&) + 0x00001b7a String::concat(String const&) + 0x00001b80 String::getBuffer(unsigned int) + 0x00001ba8 String::operator=(String const&) + 0x00001c08 String::String(unsigned char) + 0x00001c3c String::String(unsigned char) + 0x00001c70 String::String(char) + 0x00001ca4 String::String(char) + 0x00001cd8 String::String(String const&) + 0x00001d0e String::String(String const&) + 0x00001d44 String::String(unsigned long, int) + 0x00001dc2 String::String(unsigned long, int) + 0x00001e40 String::String(unsigned int, int) + 0x00001ebc String::String(unsigned int, int) + 0x00001f38 String::String(char const*) + 0x00001f88 String::toUpperCase() const + 0x00001ffe String::toLowerCase() const + 0x00002074 String::equalsIgnoreCase(String const&) const + 0x0000210c String::substring(unsigned int, unsigned int) const + 0x0000217a String::substring(unsigned int) const + 0x00002192 String::lastIndexOf(String const&, unsigned int) const + 0x0000225c String::lastIndexOf(String const&) const + 0x00002278 String::trim() const + 0x00002356 String::replace(String const&, String const&) + 0x0000248c String::replace(char, char) + 0x00002514 String::String(char const*) + 0x00002564 String::String(long, int) + 0x000025de String::String(long, int) + 0x00002658 String::String(int, int) + 0x000026d0 String::String(int, int) + .text 0x00002748 0x0 obj/Release/arduinoSrc0022/pins_arduino.o + .text 0x00002748 0x1e6 obj/Release/arduinoSrc0022/wiring.o + 0x00002748 __vector_16 + 0x000027f0 millis + 0x0000280c micros + 0x00002858 delay + 0x000028a4 delayMicroseconds + 0x000028b8 init + .text 0x0000292e 0x10a obj/Release/arduinoSrc0022/wiring_analog.o + 0x0000292e analogReference + 0x00002934 analogRead + 0x00002978 analogWrite + .text 0x00002a38 0x170 obj/Release/arduinoSrc0022/wiring_digital.o + 0x00002a38 pinMode + 0x00002ade digitalWrite + 0x00002b48 digitalRead + .text 0x00002ba8 0x142 obj/Release/arduinoSrc0022/wiring_pulse.o + 0x00002ba8 pulseIn + .text 0x00002cea 0x104 obj/Release/arduinoSrc0022/wiring_shift.o + 0x00002cea shiftOut + 0x00002d6e shiftIn + .text 0x00002dee 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mulsi3.o) + .text 0x00002dee 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + .text 0x00002dee 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + .text 0x00002dee 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text 0x00002dee 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text 0x00002dee 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + .text 0x00002dee 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + .text 0x00002dee 0x58 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fixunssfsi.o) + 0x00002dee __fixunssfsi + .text 0x00002e46 0x354 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + 0x000030de __subsf3 + 0x00003140 __addsf3 + .text 0x0000319a 0x1f4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + 0x0000319a __mulsf3 + .text 0x0000338e 0x158 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + 0x0000338e __divsf3 + .text 0x000034e6 0x60 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ge_sf.o) + 0x000034e6 __gesf2 + .text 0x00003546 0x60 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_lt_sf.o) + 0x00003546 __ltsf2 + .text 0x000035a6 0xbc /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_si_to_sf.o) + 0x000035a6 __floatsisf + .text 0x00003662 0xa8 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + 0x00003662 __fixsfsi + .text 0x0000370a 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + .text 0x0000370a 0xf2 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_usi_to_sf.o) + 0x0000370a __floatunsisf + .text 0x000037fc 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + .text 0x000037fc 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + .text 0x000037fc 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + .text 0x000037fc 0x9e /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clzsi2.o) + 0x000037fc __clzsi2 + .text 0x0000389a 0x1aa /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + 0x0000389a __pack_f + .text 0x00003a44 0xf0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + 0x00003a44 __unpack_f + .text 0x00003b34 0xb2 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fpcmp_parts_sf.o) + 0x00003b34 __fpcmp_parts_f + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clz.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(atol.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(isspace.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(tolower.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(toupper.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(memcpy.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcat.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strchr.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcmp.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcpy.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncmp.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncpy.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrchr.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strstr.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(itoa.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ltoa.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(mulsi10.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ultoa.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrev.o) + .text 0x00003be6 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + 0x00003be6 . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x00003be6 0x3e /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mulsi3.o) + 0x00003be6 __mulsi3 + .text.libgcc 0x00003c24 0x44 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + 0x00003c24 __udivmodsi4 + .text.libgcc 0x00003c68 0x36 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + 0x00003c68 __divmodsi4 + .text.libgcc 0x00003c9e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text.libgcc 0x00003c9e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x00003c9e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + .text.libgcc 0x00003c9e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + .text.libgcc 0x00003c9e 0x38 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + 0x00003c9e __prologue_saves__ + .text.libgcc 0x00003cd6 0x36 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + 0x00003cd6 __epilogue_restores__ + .text.libgcc 0x00003d0c 0xc /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + 0x00003d0c __tablejump2__ + 0x00003d10 __tablejump__ + .text.avr-libc + 0x00003d18 0x20a /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + 0x00003d18 malloc + 0x00003e72 free + .text.avr-libc + 0x00003f22 0xc2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + 0x00003fc2 random_r + 0x00003fc8 random + 0x00003fd2 srandom + .text.avr-libc + 0x00003fe4 0x19c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + 0x00003fe4 realloc + .text.avr-libc + 0x00004180 0x4e /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(atol.o) + 0x00004180 atol + .text.avr-libc + 0x000041ce 0x10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(isspace.o) + 0x000041ce isspace + .text.avr-libc + 0x000041de 0x10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(tolower.o) + 0x000041de tolower + .text.avr-libc + 0x000041ee 0x10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(toupper.o) + 0x000041ee toupper + .text.avr-libc + 0x000041fe 0x12 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(memcpy.o) + 0x000041fe memcpy + .text.avr-libc + 0x00004210 0x16 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcat.o) + 0x00004210 strcat + .text.avr-libc + 0x00004226 0x16 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strchr.o) + 0x00004226 strchr + .text.avr-libc + 0x0000423c 0x12 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcmp.o) + 0x0000423c strcmp + .text.avr-libc + 0x0000424e 0xe /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcpy.o) + 0x0000424e strcpy + .text.avr-libc + 0x0000425c 0x1c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncmp.o) + 0x0000425c strncmp + .text.avr-libc + 0x00004278 0x1e /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncpy.o) + 0x00004278 strncpy + .text.avr-libc + 0x00004296 0x16 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrchr.o) + 0x00004296 strrchr + .text.avr-libc + 0x000042ac 0x34 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strstr.o) + 0x000042ac strstr + .text.avr-libc + 0x000042e0 0x42 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(itoa.o) + 0x000042e0 itoa + .text.avr-libc + 0x00004322 0x68 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ltoa.o) + 0x00004322 ltoa + .text.avr-libc + 0x0000438a 0x2a /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(mulsi10.o) + 0x0000438a __mulsi_const_10 + .text.avr-libc + 0x000043b4 0x4a /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ultoa.o) + 0x000043b4 ultoa + .text.avr-libc + 0x000043fe 0x6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + 0x000043fe __ctype_isfalse + 0x00004402 __ctype_istrue + .text.avr-libc + 0x00004404 0x20 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrev.o) + 0x00004404 strrev + .text.libgcc 0x00004424 0x28 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + 0x00004424 __udivmodhi4 + 0x0000444c . = ALIGN (0x2) + *(.fini9) + .fini9 0x0000444c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + 0x0000444c exit + 0x0000444c _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x0000444c 0x4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x00004450 _etext = . + +.data 0x00800100 0x1ba load address 0x00004450 + 0x00800100 PROVIDE (__data_start, .) + *(.data) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .data 0x00800100 0x72 obj/Release/adapticsBT.o + .data 0x00800172 0x3 obj/Release/main.o + 0x00800172 packetSize + .data 0x00800175 0x24 obj/Release/arduinoSrc0022/HardwareSerial.o + 0x00800175 vtable for HardwareSerial + 0x00800187 vtable for Stream + .data 0x00800199 0xc obj/Release/arduinoSrc0022/Print.o + 0x0080019b vtable for Print + .data 0x008001a5 0x1 obj/Release/arduinoSrc0022/Tone.o + .data 0x008001a6 0x0 obj/Release/arduinoSrc0022/WInterrupts.o + .data 0x008001a6 0x0 obj/Release/arduinoSrc0022/WMath.o + .data 0x008001a6 0x1 obj/Release/arduinoSrc0022/WString.o + .data 0x008001a7 0x0 obj/Release/arduinoSrc0022/pins_arduino.o + .data 0x008001a7 0x0 obj/Release/arduinoSrc0022/wiring.o + .data 0x008001a7 0x1 obj/Release/arduinoSrc0022/wiring_analog.o + 0x008001a7 analog_reference + .data 0x008001a8 0x0 obj/Release/arduinoSrc0022/wiring_digital.o + .data 0x008001a8 0x0 obj/Release/arduinoSrc0022/wiring_pulse.o + .data 0x008001a8 0x0 obj/Release/arduinoSrc0022/wiring_shift.o + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mulsi3.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fixunssfsi.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ge_sf.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_lt_sf.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_si_to_sf.o) + .data 0x008001a8 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + .data 0x008001a8 0x8 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + 0x008001a8 __thenan_sf + .data 0x008001b0 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_usi_to_sf.o) + .data 0x008001b0 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + .data 0x008001b0 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + .data 0x008001b0 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + .data 0x008001b0 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clzsi2.o) + .data 0x008001b0 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + .data 0x008001b0 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + .data 0x008001b0 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fpcmp_parts_sf.o) + .data 0x008001b0 0x100 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clz.o) + 0x008001b0 __clz_tab + .data 0x008002b0 0x6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + 0x008002b0 __malloc_margin + 0x008002b2 __malloc_heap_start + 0x008002b4 __malloc_heap_end + .data 0x008002b6 0x4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(atol.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(isspace.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(tolower.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(toupper.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(memcpy.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcat.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strchr.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcmp.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcpy.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncmp.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncpy.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrchr.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strstr.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(itoa.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ltoa.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(mulsi10.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ultoa.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrev.o) + .data 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x008002ba . = ALIGN (0x2) + 0x008002ba _edata = . + 0x008002ba PROVIDE (__data_end, .) + +.bss 0x008002ba 0xd8 + 0x008002ba PROVIDE (__bss_start, .) + *(.bss) + .bss 0x008002ba 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .bss 0x008002ba 0x0 obj/Release/adapticsBT.o + .bss 0x008002ba 0x1a obj/Release/main.o + 0x008002ba connected + 0x008002bb data + 0x008002c5 CB_SHBP + 0x008002c6 CB_function + 0x008002c7 CB_VARCrange + 0x008002c8 CB_FREQrange + 0x008002c9 CB_BUZfreq + 0x008002ca CB_ADCrate + 0x008002cb CB_ACmode + 0x008002cc CB_PEAKmode + 0x008002cd CB_PCALmode + 0x008002ce CB_LPFbw + 0x008002cf CB_EXTdiode + 0x008002d0 CB_OPconf + 0x008002d1 CB_FREQinprest + 0x008002d2 CB_ADPext + 0x008002d3 CB_DCfs + .bss 0x008002d4 0x97 obj/Release/arduinoSrc0022/HardwareSerial.o + 0x008002d4 rx_buffer + 0x00800358 Serial + .bss 0x0080036b 0x0 obj/Release/arduinoSrc0022/Print.o + .bss 0x0080036b 0x15 obj/Release/arduinoSrc0022/Tone.o + 0x0080036b timer0_toggle_count + 0x0080036f timer0_pin_port + 0x00800371 timer0_pin_mask + 0x00800372 timer1_toggle_count + 0x00800376 timer1_pin_port + 0x00800378 timer1_pin_mask + 0x00800379 timer2_toggle_count + 0x0080037d timer2_pin_port + 0x0080037f timer2_pin_mask + .bss 0x00800380 0x4 obj/Release/arduinoSrc0022/WInterrupts.o + .bss 0x00800384 0x0 obj/Release/arduinoSrc0022/WMath.o + .bss 0x00800384 0x1 obj/Release/arduinoSrc0022/WString.o + .bss 0x00800385 0x0 obj/Release/arduinoSrc0022/pins_arduino.o + .bss 0x00800385 0x9 obj/Release/arduinoSrc0022/wiring.o + 0x00800385 timer0_overflow_count + 0x00800389 timer0_millis + .bss 0x0080038e 0x0 obj/Release/arduinoSrc0022/wiring_analog.o + .bss 0x0080038e 0x0 obj/Release/arduinoSrc0022/wiring_digital.o + .bss 0x0080038e 0x0 obj/Release/arduinoSrc0022/wiring_pulse.o + .bss 0x0080038e 0x0 obj/Release/arduinoSrc0022/wiring_shift.o + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mulsi3.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fixunssfsi.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ge_sf.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_lt_sf.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_si_to_sf.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_usi_to_sf.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clzsi2.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fpcmp_parts_sf.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clz.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(atol.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(isspace.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(tolower.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(toupper.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(memcpy.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcat.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strchr.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcmp.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcpy.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncmp.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncpy.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrchr.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strstr.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(itoa.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ltoa.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(mulsi10.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ultoa.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrev.o) + .bss 0x0080038e 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + *(.bss*) + *(COMMON) + COMMON 0x0080038e 0x4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + 0x0080038e __brkval + 0x00800390 __flp + 0x00800392 PROVIDE (__bss_end, .) + 0x00004450 __data_load_start = LOADADDR (.data) + 0x0000460a __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800392 0x0 + 0x00800392 PROVIDE (__noinit_start, .) + *(.noinit*) + 0x00800392 PROVIDE (__noinit_end, .) + 0x00800392 _end = . + 0x00800392 PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0x267c + *(.stab) + .stab 0x00000000 0x6b4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .stab 0x000006b4 0x6f0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + 0x6fc (size before relaxing) + .stab 0x00000da4 0x2dc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + 0x33c (size before relaxing) + .stab 0x00001080 0x3b4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + 0x5ac (size before relaxing) + .stab 0x00001434 0x1e0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(atol.o) + 0x1ec (size before relaxing) + .stab 0x00001614 0x9c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(isspace.o) + 0xa8 (size before relaxing) + .stab 0x000016b0 0x9c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(tolower.o) + 0xa8 (size before relaxing) + .stab 0x0000174c 0x9c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(toupper.o) + 0xa8 (size before relaxing) + .stab 0x000017e8 0x84 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(memcpy.o) + 0x90 (size before relaxing) + .stab 0x0000186c 0x9c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcat.o) + 0xa8 (size before relaxing) + .stab 0x00001908 0x9c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strchr.o) + 0xa8 (size before relaxing) + .stab 0x000019a4 0x84 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcmp.o) + 0x90 (size before relaxing) + .stab 0x00001a28 0x6c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcpy.o) + 0x78 (size before relaxing) + .stab 0x00001a94 0xc0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncmp.o) + 0xcc (size before relaxing) + .stab 0x00001b54 0xcc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncpy.o) + 0xd8 (size before relaxing) + .stab 0x00001c20 0x9c /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrchr.o) + 0xa8 (size before relaxing) + .stab 0x00001cbc 0x150 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strstr.o) + 0x15c (size before relaxing) + .stab 0x00001e0c 0x1b0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(itoa.o) + 0x1bc (size before relaxing) + .stab 0x00001fbc 0x294 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ltoa.o) + 0x2a0 (size before relaxing) + .stab 0x00002250 0x114 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(mulsi10.o) + 0x120 (size before relaxing) + .stab 0x00002364 0x1e0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ultoa.o) + 0x1ec (size before relaxing) + .stab 0x00002544 0x60 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + 0x6c (size before relaxing) + .stab 0x000025a4 0xd8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrev.o) + 0xe4 (size before relaxing) + +.stabstr 0x00000000 0xcf1 + *(.stabstr) + .stabstr 0x00000000 0xcf1 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment + *(.comment) + +.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_frame + *(.debug_frame) + +.debug_str + *(.debug_str) + +.debug_loc + *(.debug_loc) + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(bin/Release/ESS1995test_328p.elf elf32-avr) +LOAD linker stubs + +Cross Reference Table + +Symbol File +CB_ACmode obj/Release/main.o +CB_ADCrate obj/Release/main.o +CB_ADPext obj/Release/main.o +CB_BUZfreq obj/Release/main.o +CB_DCfs obj/Release/main.o +CB_EXTdiode obj/Release/main.o +CB_FREQinprest obj/Release/main.o +CB_FREQrange obj/Release/main.o +CB_LPFbw obj/Release/main.o +CB_OPconf obj/Release/main.o +CB_PCALmode obj/Release/main.o +CB_PEAKmode obj/Release/main.o +CB_SHBP obj/Release/main.o +CB_VARCrange obj/Release/main.o +CB_function obj/Release/main.o +HardwareSerial::HardwareSerial(ring_buffer*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) obj/Release/arduinoSrc0022/HardwareSerial.o +HardwareSerial::HardwareSerial(ring_buffer*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char volatile*, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char) obj/Release/arduinoSrc0022/HardwareSerial.o +HardwareSerial::available() obj/Release/arduinoSrc0022/HardwareSerial.o + obj/Release/main.o +HardwareSerial::begin(long) obj/Release/arduinoSrc0022/HardwareSerial.o + obj/Release/adapticsBT.o +HardwareSerial::end() obj/Release/arduinoSrc0022/HardwareSerial.o +HardwareSerial::flush() obj/Release/arduinoSrc0022/HardwareSerial.o + obj/Release/adapticsBT.o +HardwareSerial::peek() obj/Release/arduinoSrc0022/HardwareSerial.o +HardwareSerial::read() obj/Release/arduinoSrc0022/HardwareSerial.o + obj/Release/main.o +HardwareSerial::write(unsigned char) obj/Release/arduinoSrc0022/HardwareSerial.o +Print::print(String const&) obj/Release/arduinoSrc0022/Print.o +Print::print(char const*) obj/Release/arduinoSrc0022/Print.o + obj/Release/adapticsBT.o +Print::print(char, int) obj/Release/arduinoSrc0022/Print.o +Print::print(double, int) obj/Release/arduinoSrc0022/Print.o +Print::print(int, int) obj/Release/arduinoSrc0022/Print.o +Print::print(long, int) obj/Release/arduinoSrc0022/Print.o +Print::print(unsigned char, int) obj/Release/arduinoSrc0022/Print.o +Print::print(unsigned int, int) obj/Release/arduinoSrc0022/Print.o +Print::print(unsigned long, int) obj/Release/arduinoSrc0022/Print.o +Print::printFloat(double, unsigned char) obj/Release/arduinoSrc0022/Print.o +Print::printNumber(unsigned long, unsigned char) obj/Release/arduinoSrc0022/Print.o +Print::println() obj/Release/arduinoSrc0022/Print.o +Print::println(String const&) obj/Release/arduinoSrc0022/Print.o +Print::println(char const*) obj/Release/arduinoSrc0022/Print.o +Print::println(char, int) obj/Release/arduinoSrc0022/Print.o +Print::println(double, int) obj/Release/arduinoSrc0022/Print.o +Print::println(int, int) obj/Release/arduinoSrc0022/Print.o +Print::println(long, int) obj/Release/arduinoSrc0022/Print.o +Print::println(unsigned char, int) obj/Release/arduinoSrc0022/Print.o +Print::println(unsigned int, int) obj/Release/arduinoSrc0022/Print.o +Print::println(unsigned long, int) obj/Release/arduinoSrc0022/Print.o +Print::write(char const*) obj/Release/arduinoSrc0022/Print.o + obj/Release/arduinoSrc0022/HardwareSerial.o +Print::write(unsigned char const*, unsigned int) obj/Release/arduinoSrc0022/Print.o + obj/Release/arduinoSrc0022/HardwareSerial.o + obj/Release/main.o +SCLKcycle_R() obj/Release/main.o +SCLKcycle_W() obj/Release/main.o +Serial obj/Release/arduinoSrc0022/HardwareSerial.o + obj/Release/main.o + obj/Release/adapticsBT.o +String::String(String const&) obj/Release/arduinoSrc0022/WString.o +String::String(String const&) obj/Release/arduinoSrc0022/WString.o +String::String(char const*) obj/Release/arduinoSrc0022/WString.o +String::String(char const*) obj/Release/arduinoSrc0022/WString.o +String::String(char) obj/Release/arduinoSrc0022/WString.o +String::String(char) obj/Release/arduinoSrc0022/WString.o +String::String(int, int) obj/Release/arduinoSrc0022/WString.o +String::String(int, int) obj/Release/arduinoSrc0022/WString.o +String::String(long, int) obj/Release/arduinoSrc0022/WString.o +String::String(long, int) obj/Release/arduinoSrc0022/WString.o +String::String(unsigned char) obj/Release/arduinoSrc0022/WString.o +String::String(unsigned char) obj/Release/arduinoSrc0022/WString.o +String::String(unsigned int, int) obj/Release/arduinoSrc0022/WString.o +String::String(unsigned int, int) obj/Release/arduinoSrc0022/WString.o +String::String(unsigned long, int) obj/Release/arduinoSrc0022/WString.o +String::String(unsigned long, int) obj/Release/arduinoSrc0022/WString.o +String::charAt(unsigned int) const obj/Release/arduinoSrc0022/WString.o +String::compareTo(String const&) const obj/Release/arduinoSrc0022/WString.o +String::concat(String const&) obj/Release/arduinoSrc0022/WString.o +String::endsWith(String const&) const obj/Release/arduinoSrc0022/WString.o +String::equals(String const&) const obj/Release/arduinoSrc0022/WString.o +String::equalsIgnoreCase(String const&) const obj/Release/arduinoSrc0022/WString.o +String::getBuffer(unsigned int) obj/Release/arduinoSrc0022/WString.o +String::getBytes(unsigned char*, unsigned int) obj/Release/arduinoSrc0022/WString.o +String::indexOf(String const&) const obj/Release/arduinoSrc0022/WString.o +String::indexOf(String const&, unsigned int) const obj/Release/arduinoSrc0022/WString.o +String::indexOf(char) const obj/Release/arduinoSrc0022/WString.o +String::indexOf(char, unsigned int) const obj/Release/arduinoSrc0022/WString.o +String::lastIndexOf(String const&) const obj/Release/arduinoSrc0022/WString.o +String::lastIndexOf(String const&, unsigned int) const obj/Release/arduinoSrc0022/WString.o +String::lastIndexOf(char) const obj/Release/arduinoSrc0022/WString.o +String::lastIndexOf(char, unsigned int) const obj/Release/arduinoSrc0022/WString.o +String::operator!=(String const&) const obj/Release/arduinoSrc0022/WString.o +String::operator+=(String const&) obj/Release/arduinoSrc0022/WString.o +String::operator<(String const&) const obj/Release/arduinoSrc0022/WString.o +String::operator<=(String const&) const obj/Release/arduinoSrc0022/WString.o +String::operator=(String const&) obj/Release/arduinoSrc0022/WString.o +String::operator==(String const&) const obj/Release/arduinoSrc0022/WString.o +String::operator>(String const&) const obj/Release/arduinoSrc0022/WString.o +String::operator>=(String const&) const obj/Release/arduinoSrc0022/WString.o +String::operator[](unsigned int) obj/Release/arduinoSrc0022/WString.o +String::operator[](unsigned int) const obj/Release/arduinoSrc0022/WString.o + obj/Release/arduinoSrc0022/Print.o +String::replace(String const&, String const&) obj/Release/arduinoSrc0022/WString.o +String::replace(char, char) obj/Release/arduinoSrc0022/WString.o +String::setCharAt(unsigned int, char) obj/Release/arduinoSrc0022/WString.o +String::startsWith(String const&) const obj/Release/arduinoSrc0022/WString.o +String::startsWith(String const&, unsigned int) const obj/Release/arduinoSrc0022/WString.o +String::substring(unsigned int) const obj/Release/arduinoSrc0022/WString.o +String::substring(unsigned int, unsigned int) const obj/Release/arduinoSrc0022/WString.o +String::toCharArray(char*, unsigned int) obj/Release/arduinoSrc0022/WString.o +String::toInt() obj/Release/arduinoSrc0022/WString.o +String::toLowerCase() const obj/Release/arduinoSrc0022/WString.o +String::toUpperCase() const obj/Release/arduinoSrc0022/WString.o +String::trim() const obj/Release/arduinoSrc0022/WString.o +String::~String() obj/Release/arduinoSrc0022/WString.o +__addsf3 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + obj/Release/arduinoSrc0022/Print.o +__bad_interrupt /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__brkval /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) +__bss_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__bss_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__clz_tab /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clz.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clzsi2.o) +__clzsi2 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clzsi2.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_usi_to_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_si_to_sf.o) +__ctors_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) +__ctors_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) +__ctype_isfalse /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(cty_isfalse.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(isspace.o) +__ctype_istrue /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(cty_isfalse.o) +__cxa_pure_virtual obj/Release/main.o + obj/Release/arduinoSrc0022/Print.o + obj/Release/arduinoSrc0022/HardwareSerial.o +__data_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_load_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__divmodsi4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + obj/Release/arduinoSrc0022/WMath.o +__divsf3 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + obj/Release/arduinoSrc0022/Print.o +__do_clear_bss /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + obj/Release/arduinoSrc0022/wiring.o + obj/Release/arduinoSrc0022/WString.o + obj/Release/arduinoSrc0022/WInterrupts.o + obj/Release/arduinoSrc0022/Tone.o + obj/Release/arduinoSrc0022/HardwareSerial.o + obj/Release/main.o +__do_copy_data /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clz.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + obj/Release/arduinoSrc0022/wiring_analog.o + obj/Release/arduinoSrc0022/WString.o + obj/Release/arduinoSrc0022/Tone.o + obj/Release/arduinoSrc0022/Print.o + obj/Release/arduinoSrc0022/HardwareSerial.o + obj/Release/main.o + obj/Release/adapticsBT.o +__do_global_ctors /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) + obj/Release/arduinoSrc0022/HardwareSerial.o +__epilogue_restores__ /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_epilogue.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_usi_to_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_si_to_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_lt_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__fixsfsi /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fixunssfsi.o) + obj/Release/arduinoSrc0022/Print.o +__fixunssfsi /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fixunssfsi.o) + obj/Release/arduinoSrc0022/Print.o +__floatsisf /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_si_to_sf.o) + obj/Release/arduinoSrc0022/Print.o +__floatunsisf /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_usi_to_sf.o) + obj/Release/arduinoSrc0022/Print.o +__flp /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) +__fpcmp_parts_f /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fpcmp_parts_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_lt_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ge_sf.o) +__gesf2 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fixunssfsi.o) +__heap_end /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) +__heap_start /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) +__init /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__ltsf2 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_lt_sf.o) + obj/Release/arduinoSrc0022/Print.o +__malloc_heap_end /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) +__malloc_heap_start /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) +__malloc_margin /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) +__mulsf3 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + obj/Release/arduinoSrc0022/Print.o +__mulsi3 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mulsi3.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + obj/Release/arduinoSrc0022/wiring_pulse.o + obj/Release/arduinoSrc0022/WMath.o + obj/Release/arduinoSrc0022/Tone.o +__mulsi_const_10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(mulsi10.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(atol.o) +__pack_f /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_pack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_usi_to_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_si_to_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__prologue_saves__ /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_prologue.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_usi_to_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_si_to_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_lt_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__stack /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__subsf3 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_fixunssfsi.o) + obj/Release/arduinoSrc0022/Print.o +__tablejump2__ /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) +__tablejump__ /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_tablejump.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ctors.o) +__thenan_sf /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_thenan_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__udivmodhi4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodhi4.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(itoa.o) +__udivmodsi4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_udivmodsi4.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ultoa.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ltoa.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_divmodsi4.o) + obj/Release/arduinoSrc0022/wiring_pulse.o + obj/Release/arduinoSrc0022/Tone.o + obj/Release/arduinoSrc0022/Print.o + obj/Release/arduinoSrc0022/HardwareSerial.o +__unpack_f /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_unpack_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_sf_to_si.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_lt_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_ge_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_div_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_mul_sf.o) + /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_addsub_sf.o) +__vector_1 obj/Release/arduinoSrc0022/WInterrupts.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_11 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_12 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_13 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_14 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_15 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_16 obj/Release/arduinoSrc0022/wiring.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_17 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_18 obj/Release/arduinoSrc0022/HardwareSerial.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_19 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_2 obj/Release/arduinoSrc0022/WInterrupts.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_20 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_21 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_23 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_24 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_25 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_3 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_5 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_7 obj/Release/arduinoSrc0022/Tone.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_9 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_default /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vectors /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +_exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) +advertise() obj/Release/adapticsBT.o + obj/Release/main.o +analogRead obj/Release/arduinoSrc0022/wiring_analog.o +analogReference obj/Release/arduinoSrc0022/wiring_analog.o +analogWrite obj/Release/arduinoSrc0022/wiring_analog.o +analog_reference obj/Release/arduinoSrc0022/wiring_analog.o +atol /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(atol.o) + obj/Release/arduinoSrc0022/WString.o +attachInterrupt obj/Release/arduinoSrc0022/WInterrupts.o +connected obj/Release/main.o +data obj/Release/main.o +delay obj/Release/arduinoSrc0022/wiring.o + obj/Release/main.o + obj/Release/adapticsBT.o +delayMicroseconds obj/Release/arduinoSrc0022/wiring.o + obj/Release/main.o +detachInterrupt obj/Release/arduinoSrc0022/WInterrupts.o +digitalRead obj/Release/arduinoSrc0022/wiring_digital.o + obj/Release/arduinoSrc0022/wiring_shift.o + obj/Release/main.o +digitalWrite obj/Release/arduinoSrc0022/wiring_digital.o + obj/Release/arduinoSrc0022/wiring_shift.o + obj/Release/arduinoSrc0022/wiring_analog.o + obj/Release/arduinoSrc0022/Tone.o + obj/Release/main.o +digital_pin_to_bit_mask_PGM obj/Release/arduinoSrc0022/pins_arduino.o + obj/Release/arduinoSrc0022/wiring_pulse.o + obj/Release/arduinoSrc0022/wiring_digital.o + obj/Release/arduinoSrc0022/Tone.o +digital_pin_to_port_PGM obj/Release/arduinoSrc0022/pins_arduino.o + obj/Release/arduinoSrc0022/wiring_pulse.o + obj/Release/arduinoSrc0022/wiring_digital.o + obj/Release/arduinoSrc0022/Tone.o +digital_pin_to_timer_PGM obj/Release/arduinoSrc0022/pins_arduino.o + obj/Release/arduinoSrc0022/wiring_digital.o + obj/Release/arduinoSrc0022/wiring_analog.o +disableTimer(unsigned char) obj/Release/arduinoSrc0022/Tone.o +exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +free /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + obj/Release/arduinoSrc0022/WString.o +init obj/Release/arduinoSrc0022/wiring.o + obj/Release/main.o +isspace /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(isspace.o) + obj/Release/arduinoSrc0022/WString.o +itoa /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(itoa.o) + obj/Release/arduinoSrc0022/WString.o +ltoa /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ltoa.o) + obj/Release/arduinoSrc0022/WString.o +main obj/Release/main.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +makeWord(unsigned char, unsigned char) obj/Release/arduinoSrc0022/WMath.o +makeWord(unsigned int) obj/Release/arduinoSrc0022/WMath.o +malloc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(malloc.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + obj/Release/arduinoSrc0022/WString.o +map(long, long, long, long, long) obj/Release/arduinoSrc0022/WMath.o +memcpy /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(memcpy.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) +micros obj/Release/arduinoSrc0022/wiring.o +millis obj/Release/arduinoSrc0022/wiring.o +noTone(unsigned char) obj/Release/arduinoSrc0022/Tone.o +packetSize obj/Release/main.o +pinMode obj/Release/arduinoSrc0022/wiring_digital.o + obj/Release/arduinoSrc0022/wiring_analog.o + obj/Release/arduinoSrc0022/Tone.o + obj/Release/main.o + obj/Release/adapticsBT.o +port_to_input_PGM obj/Release/arduinoSrc0022/pins_arduino.o + obj/Release/arduinoSrc0022/wiring_pulse.o + obj/Release/arduinoSrc0022/wiring_digital.o +port_to_mode_PGM obj/Release/arduinoSrc0022/pins_arduino.o + obj/Release/arduinoSrc0022/wiring_digital.o +port_to_output_PGM obj/Release/arduinoSrc0022/pins_arduino.o + obj/Release/arduinoSrc0022/wiring_digital.o + obj/Release/arduinoSrc0022/Tone.o +pulseIn obj/Release/arduinoSrc0022/wiring_pulse.o +random /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + obj/Release/arduinoSrc0022/WMath.o +random(long) obj/Release/arduinoSrc0022/WMath.o +random(long, long) obj/Release/arduinoSrc0022/WMath.o +randomSeed(unsigned int) obj/Release/arduinoSrc0022/WMath.o +random_r /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) +readByte() obj/Release/main.o +realloc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(realloc.o) + obj/Release/arduinoSrc0022/WString.o +rx_buffer obj/Release/arduinoSrc0022/HardwareSerial.o +setupBlueTooth() obj/Release/adapticsBT.o + obj/Release/main.o +shiftIn obj/Release/arduinoSrc0022/wiring_shift.o +shiftOut obj/Release/arduinoSrc0022/wiring_shift.o +srandom /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(random.o) + obj/Release/arduinoSrc0022/WMath.o +startRead() obj/Release/main.o +startWrite() obj/Release/main.o +strcat /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcat.o) + obj/Release/arduinoSrc0022/WString.o +strchr /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strchr.o) + obj/Release/arduinoSrc0022/WString.o +strcmp /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcmp.o) + obj/Release/arduinoSrc0022/WString.o +strcpy /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strcpy.o) + obj/Release/arduinoSrc0022/WString.o +strncmp /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncmp.o) + obj/Release/arduinoSrc0022/WString.o +strncpy /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strncpy.o) + obj/Release/arduinoSrc0022/WString.o +strrchr /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrchr.o) + obj/Release/arduinoSrc0022/WString.o +strrev /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strrev.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ultoa.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ltoa.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(itoa.o) +strstr /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(strstr.o) + obj/Release/arduinoSrc0022/WString.o +timer0_millis obj/Release/arduinoSrc0022/wiring.o +timer0_overflow_count obj/Release/arduinoSrc0022/wiring.o +timer0_pin_mask obj/Release/arduinoSrc0022/Tone.o +timer0_pin_port obj/Release/arduinoSrc0022/Tone.o +timer0_toggle_count obj/Release/arduinoSrc0022/Tone.o +timer1_pin_mask obj/Release/arduinoSrc0022/Tone.o +timer1_pin_port obj/Release/arduinoSrc0022/Tone.o +timer1_toggle_count obj/Release/arduinoSrc0022/Tone.o +timer2_pin_mask obj/Release/arduinoSrc0022/Tone.o +timer2_pin_port obj/Release/arduinoSrc0022/Tone.o +timer2_toggle_count obj/Release/arduinoSrc0022/Tone.o +tolower /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(tolower.o) + obj/Release/arduinoSrc0022/WString.o +tone(unsigned char, unsigned int, unsigned long) obj/Release/arduinoSrc0022/Tone.o +toupper /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(toupper.o) + obj/Release/arduinoSrc0022/WString.o +ultoa /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a(ultoa.o) + obj/Release/arduinoSrc0022/WString.o +vtable for HardwareSerial obj/Release/arduinoSrc0022/HardwareSerial.o +vtable for Print obj/Release/arduinoSrc0022/Print.o +vtable for Stream obj/Release/arduinoSrc0022/HardwareSerial.o +writeByte(unsigned char) obj/Release/main.o +writeDMM() obj/Release/main.o +writeStartBit() obj/Release/main.o +writeStopBit() obj/Release/main.o diff --git a/ESS1995test_328p/burn b/ESS1995test_328p/burn new file mode 100755 index 0000000..04ef732 --- /dev/null +++ b/ESS1995test_328p/burn @@ -0,0 +1 @@ +avrdude -p m328p -c avrispmkII -P usb -b 1000000 -F -u -U flash:w:bin/Release/ESS1995test_328p.elf.hex diff --git a/ESS1995test_328p/electic.h b/ESS1995test_328p/electic.h new file mode 100644 index 0000000..326f900 --- /dev/null +++ b/ESS1995test_328p/electic.h @@ -0,0 +1,72 @@ +/* + ESS1995 communications test + + should the bitfields be parsed in the MCU or the app? + + the device needs to be able to do the ranging itself. + + data format- + + ACK is necessary + + write per read? or is it a delay thing + + +*/ + +#include //main Arduino header file +#include "adapticsBT.h" + +#define DATA_NEW 2 +#define SCLK 3 +#define SDATA 4 +#define CS 5 + +//feedback leds +#define OUTPUT1 12 +#define OUTPUT2 13 + +#define WRITE_ID 0b11001000 +#define READ_ID 0b11001001 + +//clock delays are doubled for 8MHZ chip - CPUSPD isnt working +//6 and 3 = 83kHz, doesn't work with ISP plugged in +//500Hz works with ISP (sometimes) + +#define CLOCK_DELAY 20 +#define START_DELAY 10 + +const uint16_t ELECTIC_ID = 0xF0; +uint8_t packetSize = 7; +bool connected=false; + +uint8_t data[10]; + +//default write values +uint8_t CB_SHBP = 0b0; +uint8_t CB_function = 0b0000; //0b0000 voltage mode +uint8_t CB_VARCrange = 0b000; //0b001 6v +uint8_t CB_FREQrange = 0b000; +uint8_t CB_BUZfreq = 0b000; +uint8_t CB_ADCrate = 0b00; //0b11 fastest 50hz +uint8_t CB_ACmode = 0b0; +uint8_t CB_PEAKmode = 0b0; +uint8_t CB_PCALmode = 0b0; +uint8_t CB_LPFbw = 0b000; +uint8_t CB_EXTdiode = 0b0; +uint8_t CB_OPconf = 0b00; +uint8_t CB_FREQinprest = 0b0; +uint8_t CB_ADPext = 0b0; +uint8_t CB_DCfs = 0b0; + + +void SCLKcycle_W(); +void SCLKcycle_R(); +void startRead(); +void startWrite(); +void writeByte(uint8_t data); +void writeStartBit(); +void writeStopBit(); +uint8_t readByte(); +void writeDMM(); +int main(); diff --git a/ESS1995test_328p/main.cpp b/ESS1995test_328p/main.cpp new file mode 100644 index 0000000..66dd792 --- /dev/null +++ b/ESS1995test_328p/main.cpp @@ -0,0 +1,254 @@ + +/* + ESS1995 communications test + + proof of concept + + +*/ + +#include "electic.h" + +extern "C" void __cxa_pure_virtual() +{ + cli(); + for (;;); +} + +int main(){ + + init(); //-- init Arduino library - delay, PWM setup messes with timers, millis(), micros() etc don't work without it + + pinMode(CS,OUTPUT); + digitalWrite(CS,LOW); //turn off DMM, maybe it doesn't like waiting around + + setupBlueTooth(); + + pinMode(DATA_NEW,INPUT); + pinMode(SCLK,OUTPUT); + pinMode(BTC,INPUT); + + pinMode(OUTPUT1, OUTPUT); + pinMode(OUTPUT2, OUTPUT); + + digitalWrite(OUTPUT2,HIGH); + + digitalWrite(CS,HIGH); //select DMM + + + + + + uint16_t delayMillis=250; + + //send 1st write to initiate readings - not necessary - what is default mode? + + + + +/* +writeDMM(); + delay(delayMillis); + startWrite(); + writeStartBit(); + writeByte(WRITE_ID); + writeByte(WB1); + writeByte(WB2); + writeByte(WB3); + writeByte(WB4); + writeStopBit(); //is ACK already the same as stop bit? + */ + + + + + + + + //variables to read + uint8_t DB_STATUS; + /* + uint8_t DB_ASIGN; + uint8_t DB_BSIGN; + uint8_t DB_PMAX; + uint8_t DB_PMIN; + uint8_t DB_BTS; + uint8_t DB_ALARM; + uint8_t DB_HF; + uint8_t DB_LF; + uint8_t DB_LDUTY; + uint8_t DB_STA; + uint8_t DB_F_FIN; + */ + uint32_t DB_D0; + uint16_t DB_D1; + uint32_t DB_D2; + uint32_t DB_D3; + + delay(delayMillis); + writeDMM(); + + while(1) { + if (digitalRead(DATA_NEW)==HIGH){ //DMM is ready to send data + digitalWrite(OUTPUT1,HIGH); + digitalWrite(OUTPUT2,LOW); + startWrite(); + writeStartBit(); + writeByte(READ_ID); + if (digitalRead(DATA_NEW)==LOW){ //ID confirmed + digitalWrite(OUTPUT2,HIGH); + startRead(); + for (int i=0;i<10;i++) { + data[i] = readByte(); + } + //stop bit comes from the MPU? does seem to be necessary. + startWrite(); + writeStopBit(); + + //parse data + DB_STATUS=data[0]; + /* + DB_ASIGN=data[0]>>7; + DB_BSIGN=(data[0]>>6) & 0b01; + DB_PMAX=(data[0]>>5) & 0b01; + DB_PMIN=(data[0]>>4) & 0b01; + DB_BTS=(data[0]>>2) & 0b11; + DB_ALARM=data[0]& 0b01; + DB_HF=data[1]>>7; + DB_LF=(data[1]>>6) & 0b01; + DB_LDUTY=(data[1]>>5) & 0b01; + DB_STA=((data[1]>>3) & 0b10)|((data[0]>>1) & 0b01); + DB_F_FIN=(data[1]>>3) & 0b01; + */ + DB_D0=(((uint32_t)( data[1] & 0b111))<<16)|(((uint32_t)data[2])<<8)|data[3]; + DB_D1=(((uint16_t)data[4])<<2)|((data[5] & 0b11000000)>>6); + DB_D2=(((uint32_t)( data[5] & 0b111111))<<13)|(((uint32_t) data[6] )<<5)|(((uint32_t)( data[7] & 0b11111000))>>3); + DB_D3=(((uint32_t)( data[7] & 0b111))<<16)|(((uint32_t) data[8])<<8)|data[9]; + + + while (Serial.available() > 0) { + // get incoming byte: + uint8_t sampleCode = Serial.read(); + switch (sampleCode) { + case 1: + delayMillis=1000; + break; + case 2: + delayMillis=250; + break; + case 3: + delayMillis=50; + break; + } + } + + + if (digitalRead(BTC)){ + if (!connected) connected=true; + // data packet : + // ID (2 byte) + // no of bytes (max 255) + // data bytes + Serial.write((uint8_t*)&ELECTIC_ID,2); + Serial.write((uint8_t*)&packetSize,1); + Serial.write((uint8_t*)&DB_STATUS,1); + Serial.write((uint8_t*)&DB_D0,4); + Serial.write((uint8_t*)&DB_D1,2); + } + else { + if (connected) { + advertise(); + connected=false; + } + } + } + } + + delay(delayMillis); + digitalWrite(OUTPUT1,LOW); + digitalWrite(OUTPUT2,LOW); + //delay(delayMillis); + } +} +void startWrite() { + pinMode(SDATA,OUTPUT); + digitalWrite(SCLK, HIGH); +} +void startRead() { + pinMode(SDATA,INPUT); + digitalWrite(SCLK, HIGH); +} +void SCLKcycle_W() { + //insert a high clock cycle, normally LOW + delayMicroseconds(START_DELAY); + digitalWrite(SCLK, HIGH); + delayMicroseconds(CLOCK_DELAY); + digitalWrite(SCLK, LOW); + delayMicroseconds(START_DELAY); +} +void SCLKcycle_R() { + //insert a low clock cycle, normally HIGH + delayMicroseconds(START_DELAY); + digitalWrite(SCLK, LOW); + delayMicroseconds(CLOCK_DELAY); + digitalWrite(SCLK, HIGH); + delayMicroseconds(START_DELAY); +} +void writeByte(uint8_t data){ + + for (uint8_t i=0,bit=7;i<8;i++,bit--) { + digitalWrite(SDATA,(data>>bit)&0b01); + SCLKcycle_W(); + } + digitalWrite(SDATA,HIGH); //ACK/ stopbit should be HIGH? + SCLKcycle_W(); //ACK INTERVAL +} +void writeStopBit(){ + digitalWrite(SDATA,LOW); //prepare SDATA + delayMicroseconds(START_DELAY); + digitalWrite(SCLK,HIGH); + delayMicroseconds(START_DELAY); + digitalWrite(SDATA,HIGH); //stop bit +} +void writeStartBit(){ + digitalWrite(SDATA, HIGH); //should be anyway + digitalWrite(SCLK, HIGH); + delayMicroseconds(START_DELAY); + digitalWrite(SDATA,LOW); //start bit + delayMicroseconds(START_DELAY); + digitalWrite(SCLK, LOW); + delayMicroseconds(START_DELAY); +} +uint8_t readByte(){ + uint8_t data=0; + uint8_t thisdata; + //delayMicroseconds(START_DELAY); + //digitalWrite(SCLK, HIGH); //load first bit + delayMicroseconds(START_DELAY); + for (uint8_t i=0,bit=7;i<8;i++,bit--) { + thisdata=digitalRead(SDATA); + data = data | (thisdata< +#include +#include +#include +#include "wiring.h" +#include "wiring_private.h" + +// this next line disables the entire HardwareSerial.cpp, +// this is so I can support Attiny series and any other chip without a uart +#if defined(UBRRH) || defined(UBRR0H) || defined(UBRR1H) || defined(UBRR2H) || defined(UBRR3H) + +#include "HardwareSerial.h" + +// Define constants and variables for buffering incoming serial data. We're +// using a ring buffer (I think), in which rx_buffer_head is the index of the +// location to which to write the next incoming character and rx_buffer_tail +// is the index of the location from which to read. +#if (RAMEND < 1000) + #define RX_BUFFER_SIZE 32 +#else + #define RX_BUFFER_SIZE 128 +#endif + +struct ring_buffer +{ + unsigned char buffer[RX_BUFFER_SIZE]; + int head; + int tail; +}; + +#if defined(UBRRH) || defined(UBRR0H) + ring_buffer rx_buffer = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR1H) + ring_buffer rx_buffer1 = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR2H) + ring_buffer rx_buffer2 = { { 0 }, 0, 0 }; +#endif +#if defined(UBRR3H) + ring_buffer rx_buffer3 = { { 0 }, 0, 0 }; +#endif + +inline void store_char(unsigned char c, ring_buffer *rx_buffer) +{ + int i = (unsigned int)(rx_buffer->head + 1) % RX_BUFFER_SIZE; + + // if we should be storing the received character into the location + // just before the tail (meaning that the head would advance to the + // current location of the tail), we're about to overflow the buffer + // and so we don't write the character or advance the head. + if (i != rx_buffer->tail) { + rx_buffer->buffer[rx_buffer->head] = c; + rx_buffer->head = i; + } +} + +#if defined(USART_RX_vect) + SIGNAL(USART_RX_vect) + { + #if defined(UDR0) + unsigned char c = UDR0; + #elif defined(UDR) + unsigned char c = UDR; // atmega8535 + #else + #error UDR not defined + #endif + store_char(c, &rx_buffer); + } +#elif defined(SIG_USART0_RECV) && defined(UDR0) + SIGNAL(SIG_USART0_RECV) + { + unsigned char c = UDR0; + store_char(c, &rx_buffer); + } +#elif defined(SIG_UART0_RECV) && defined(UDR0) + SIGNAL(SIG_UART0_RECV) + { + unsigned char c = UDR0; + store_char(c, &rx_buffer); + } +//#elif defined(SIG_USART_RECV) +#elif defined(USART0_RX_vect) + // fixed by Mark Sproul this is on the 644/644p + //SIGNAL(SIG_USART_RECV) + SIGNAL(USART0_RX_vect) + { + #if defined(UDR0) + unsigned char c = UDR0; + #elif defined(UDR) + unsigned char c = UDR; // atmega8, atmega32 + #else + #error UDR not defined + #endif + store_char(c, &rx_buffer); + } +#elif defined(SIG_UART_RECV) + // this is for atmega8 + SIGNAL(SIG_UART_RECV) + { + #if defined(UDR0) + unsigned char c = UDR0; // atmega645 + #elif defined(UDR) + unsigned char c = UDR; // atmega8 + #endif + store_char(c, &rx_buffer); + } +#elif defined(USBCON) + #warning No interrupt handler for usart 0 + #warning Serial(0) is on USB interface +#else + #error No interrupt handler for usart 0 +#endif + +//#if defined(SIG_USART1_RECV) +#if defined(USART1_RX_vect) + //SIGNAL(SIG_USART1_RECV) + SIGNAL(USART1_RX_vect) + { + unsigned char c = UDR1; + store_char(c, &rx_buffer1); + } +#elif defined(SIG_USART1_RECV) + #error SIG_USART1_RECV +#endif + +#if defined(USART2_RX_vect) && defined(UDR2) + SIGNAL(USART2_RX_vect) + { + unsigned char c = UDR2; + store_char(c, &rx_buffer2); + } +#elif defined(SIG_USART2_RECV) + #error SIG_USART2_RECV +#endif + +#if defined(USART3_RX_vect) && defined(UDR3) + SIGNAL(USART3_RX_vect) + { + unsigned char c = UDR3; + store_char(c, &rx_buffer3); + } +#elif defined(SIG_USART3_RECV) + #error SIG_USART3_RECV +#endif + + + +// Constructors //////////////////////////////////////////////////////////////// + +HardwareSerial::HardwareSerial(ring_buffer *rx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udre, uint8_t u2x) +{ + _rx_buffer = rx_buffer; + _ubrrh = ubrrh; + _ubrrl = ubrrl; + _ucsra = ucsra; + _ucsrb = ucsrb; + _udr = udr; + _rxen = rxen; + _txen = txen; + _rxcie = rxcie; + _udre = udre; + _u2x = u2x; +} + +// Public Methods ////////////////////////////////////////////////////////////// + +void HardwareSerial::begin(long baud) +{ + uint16_t baud_setting; + bool use_u2x = true; + +#if F_CPU == 16000000UL + // hardcoded exception for compatibility with the bootloader shipped + // with the Duemilanove and previous boards and the firmware on the 8U2 + // on the Uno and Mega 2560. + if (baud == 57600) { + use_u2x = false; + } +#endif + + if (use_u2x) { + *_ucsra = 1 << _u2x; + baud_setting = (F_CPU / 4 / baud - 1) / 2; + } else { + *_ucsra = 0; + baud_setting = (F_CPU / 8 / baud - 1) / 2; + } + + // assign the baud_setting, a.k.a. ubbr (USART Baud Rate Register) + *_ubrrh = baud_setting >> 8; + *_ubrrl = baud_setting; + + sbi(*_ucsrb, _rxen); + sbi(*_ucsrb, _txen); + sbi(*_ucsrb, _rxcie); +} + +void HardwareSerial::end() +{ + cbi(*_ucsrb, _rxen); + cbi(*_ucsrb, _txen); + cbi(*_ucsrb, _rxcie); +} + +int HardwareSerial::available(void) +{ + return (unsigned int)(RX_BUFFER_SIZE + _rx_buffer->head - _rx_buffer->tail) % RX_BUFFER_SIZE; +} + +int HardwareSerial::peek(void) +{ + if (_rx_buffer->head == _rx_buffer->tail) { + return -1; + } else { + return _rx_buffer->buffer[_rx_buffer->tail]; + } +} + +int HardwareSerial::read(void) +{ + // if the head isn't ahead of the tail, we don't have any characters + if (_rx_buffer->head == _rx_buffer->tail) { + return -1; + } else { + unsigned char c = _rx_buffer->buffer[_rx_buffer->tail]; + _rx_buffer->tail = (unsigned int)(_rx_buffer->tail + 1) % RX_BUFFER_SIZE; + return c; + } +} + +void HardwareSerial::flush() +{ + // don't reverse this or there may be problems if the RX interrupt + // occurs after reading the value of rx_buffer_head but before writing + // the value to rx_buffer_tail; the previous value of rx_buffer_head + // may be written to rx_buffer_tail, making it appear as if the buffer + // don't reverse this or there may be problems if the RX interrupt + // occurs after reading the value of rx_buffer_head but before writing + // the value to rx_buffer_tail; the previous value of rx_buffer_head + // may be written to rx_buffer_tail, making it appear as if the buffer + // were full, not empty. + _rx_buffer->head = _rx_buffer->tail; +} + +void HardwareSerial::write(uint8_t c) +{ + while (!((*_ucsra) & (1 << _udre))) + ; + + *_udr = c; +} + +// Preinstantiate Objects ////////////////////////////////////////////////////// + +#if defined(UBRRH) && defined(UBRRL) + HardwareSerial Serial(&rx_buffer, &UBRRH, &UBRRL, &UCSRA, &UCSRB, &UDR, RXEN, TXEN, RXCIE, UDRE, U2X); +#elif defined(UBRR0H) && defined(UBRR0L) + HardwareSerial Serial(&rx_buffer, &UBRR0H, &UBRR0L, &UCSR0A, &UCSR0B, &UDR0, RXEN0, TXEN0, RXCIE0, UDRE0, U2X0); +#elif defined(USBCON) + #warning no serial port defined (port 0) +#else + #error no serial port defined (port 0) +#endif + +#if defined(UBRR1H) + HardwareSerial Serial1(&rx_buffer1, &UBRR1H, &UBRR1L, &UCSR1A, &UCSR1B, &UDR1, RXEN1, TXEN1, RXCIE1, UDRE1, U2X1); +#endif +#if defined(UBRR2H) + HardwareSerial Serial2(&rx_buffer2, &UBRR2H, &UBRR2L, &UCSR2A, &UCSR2B, &UDR2, RXEN2, TXEN2, RXCIE2, UDRE2, U2X2); +#endif +#if defined(UBRR3H) + HardwareSerial Serial3(&rx_buffer3, &UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UDR3, RXEN3, TXEN3, RXCIE3, UDRE3, U2X3); +#endif + +#endif // whole file + diff --git a/arduinoSrc0022/HardwareSerial.h b/arduinoSrc0022/HardwareSerial.h new file mode 100644 index 0000000..3efa775 --- /dev/null +++ b/arduinoSrc0022/HardwareSerial.h @@ -0,0 +1,76 @@ +/* + HardwareSerial.h - Hardware serial library for Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 28 September 2010 by Mark Sproul +*/ + +#ifndef HardwareSerial_h +#define HardwareSerial_h + +#include + +#include "Stream.h" + +struct ring_buffer; + +class HardwareSerial : public Stream +{ + private: + ring_buffer *_rx_buffer; + volatile uint8_t *_ubrrh; + volatile uint8_t *_ubrrl; + volatile uint8_t *_ucsra; + volatile uint8_t *_ucsrb; + volatile uint8_t *_udr; + uint8_t _rxen; + uint8_t _txen; + uint8_t _rxcie; + uint8_t _udre; + uint8_t _u2x; + public: + HardwareSerial(ring_buffer *rx_buffer, + volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, + volatile uint8_t *ucsra, volatile uint8_t *ucsrb, + volatile uint8_t *udr, + uint8_t rxen, uint8_t txen, uint8_t rxcie, uint8_t udre, uint8_t u2x); + void begin(long); + void end(); + virtual int available(void); + virtual int peek(void); + virtual int read(void); + virtual void flush(void); + virtual void write(uint8_t); + using Print::write; // pull in write(str) and write(buf, size) from Print +}; + +#if defined(UBRRH) || defined(UBRR0H) + extern HardwareSerial Serial; +#elif defined(USBCON) + #include "usb_api.h" +#endif +#if defined(UBRR1H) + extern HardwareSerial Serial1; +#endif +#if defined(UBRR2H) + extern HardwareSerial Serial2; +#endif +#if defined(UBRR3H) + extern HardwareSerial Serial3; +#endif + +#endif diff --git a/arduinoSrc0022/Print.cpp b/arduinoSrc0022/Print.cpp new file mode 100644 index 0000000..4ee556d --- /dev/null +++ b/arduinoSrc0022/Print.cpp @@ -0,0 +1,220 @@ +/* + Print.cpp - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 23 November 2006 by David A. Mellis + */ + +#include +#include +#include +#include +#include "wiring.h" + +#include "Print.h" + +// Public Methods ////////////////////////////////////////////////////////////// + +/* default implementation: may be overridden */ +void Print::write(const char *str) +{ + while (*str) + write(*str++); +} + +/* default implementation: may be overridden */ +void Print::write(const uint8_t *buffer, size_t size) +{ + while (size--) + write(*buffer++); +} + +void Print::print(const String &s) +{ + for (int i = 0; i < s.length(); i++) { + write(s[i]); + } +} + +void Print::print(const char str[]) +{ + write(str); +} + +void Print::print(char c, int base) +{ + print((long) c, base); +} + +void Print::print(unsigned char b, int base) +{ + print((unsigned long) b, base); +} + +void Print::print(int n, int base) +{ + print((long) n, base); +} + +void Print::print(unsigned int n, int base) +{ + print((unsigned long) n, base); +} + +void Print::print(long n, int base) +{ + if (base == 0) { + write(n); + } else if (base == 10) { + if (n < 0) { + print('-'); + n = -n; + } + printNumber(n, 10); + } else { + printNumber(n, base); + } +} + +void Print::print(unsigned long n, int base) +{ + if (base == 0) write(n); + else printNumber(n, base); +} + +void Print::print(double n, int digits) +{ + printFloat(n, digits); +} + +void Print::println(void) +{ + print('\r'); + print('\n'); +} + +void Print::println(const String &s) +{ + print(s); + println(); +} + +void Print::println(const char c[]) +{ + print(c); + println(); +} + +void Print::println(char c, int base) +{ + print(c, base); + println(); +} + +void Print::println(unsigned char b, int base) +{ + print(b, base); + println(); +} + +void Print::println(int n, int base) +{ + print(n, base); + println(); +} + +void Print::println(unsigned int n, int base) +{ + print(n, base); + println(); +} + +void Print::println(long n, int base) +{ + print(n, base); + println(); +} + +void Print::println(unsigned long n, int base) +{ + print(n, base); + println(); +} + +void Print::println(double n, int digits) +{ + print(n, digits); + println(); +} + +// Private Methods ///////////////////////////////////////////////////////////// + +void Print::printNumber(unsigned long n, uint8_t base) +{ + unsigned char buf[8 * sizeof(long)]; // Assumes 8-bit chars. + unsigned long i = 0; + + if (n == 0) { + print('0'); + return; + } + + while (n > 0) { + buf[i++] = n % base; + n /= base; + } + + for (; i > 0; i--) + print((char) (buf[i - 1] < 10 ? + '0' + buf[i - 1] : + 'A' + buf[i - 1] - 10)); +} + +void Print::printFloat(double number, uint8_t digits) +{ + // Handle negative numbers + if (number < 0.0) + { + print('-'); + number = -number; + } + + // Round correctly so that print(1.999, 2) prints as "2.00" + double rounding = 0.5; + for (uint8_t i=0; i 0) + print("."); + + // Extract digits from the remainder one at a time + while (digits-- > 0) + { + remainder *= 10.0; + int toPrint = int(remainder); + print(toPrint); + remainder -= toPrint; + } +} diff --git a/arduinoSrc0022/Print.h b/arduinoSrc0022/Print.h new file mode 100644 index 0000000..b092ae5 --- /dev/null +++ b/arduinoSrc0022/Print.h @@ -0,0 +1,66 @@ +/* + Print.h - Base class that provides print() and println() + Copyright (c) 2008 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Print_h +#define Print_h + +#include +#include // for size_t + +#include "WString.h" + +#define DEC 10 +#define HEX 16 +#define OCT 8 +#define BIN 2 +#define BYTE 0 + +class Print +{ + private: + void printNumber(unsigned long, uint8_t); + void printFloat(double, uint8_t); + public: + virtual void write(uint8_t) = 0; + virtual void write(const char *str); + virtual void write(const uint8_t *buffer, size_t size); + + void print(const String &); + void print(const char[]); + void print(char, int = BYTE); + void print(unsigned char, int = BYTE); + void print(int, int = DEC); + void print(unsigned int, int = DEC); + void print(long, int = DEC); + void print(unsigned long, int = DEC); + void print(double, int = 2); + + void println(const String &s); + void println(const char[]); + void println(char, int = BYTE); + void println(unsigned char, int = BYTE); + void println(int, int = DEC); + void println(unsigned int, int = DEC); + void println(long, int = DEC); + void println(unsigned long, int = DEC); + void println(double, int = 2); + void println(void); +}; + +#endif diff --git a/arduinoSrc0022/Stream.h b/arduinoSrc0022/Stream.h new file mode 100644 index 0000000..93d8275 --- /dev/null +++ b/arduinoSrc0022/Stream.h @@ -0,0 +1,35 @@ +/* + Stream.h - base class for character-based streams. + Copyright (c) 2010 David A. Mellis. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef Stream_h +#define Stream_h + +#include +#include "Print.h" + +class Stream : public Print +{ + public: + virtual int available() = 0; + virtual int read() = 0; + virtual int peek() = 0; + virtual void flush() = 0; +}; + +#endif diff --git a/arduinoSrc0022/Tone.cpp b/arduinoSrc0022/Tone.cpp new file mode 100644 index 0000000..c3910e7 --- /dev/null +++ b/arduinoSrc0022/Tone.cpp @@ -0,0 +1,601 @@ +/* Tone.cpp + + A Tone Generator Library + + Written by Brett Hagman + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Version Modified By Date Comments +------- ----------- -------- -------- +0001 B Hagman 09/08/02 Initial coding +0002 B Hagman 09/08/18 Multiple pins +0003 B Hagman 09/08/18 Moved initialization from constructor to begin() +0004 B Hagman 09/09/26 Fixed problems with ATmega8 +0005 B Hagman 09/11/23 Scanned prescalars for best fit on 8 bit timers + 09/11/25 Changed pin toggle method to XOR + 09/11/25 Fixed timer0 from being excluded +0006 D Mellis 09/12/29 Replaced objects with functions +0007 M Sproul 10/08/29 Changed #ifdefs from cpu to register +*************************************************/ + +#include +#include +#include "wiring.h" +#include "pins_arduino.h" + +#if defined(__AVR_ATmega8__) || defined(__AVR_ATmega128__) +#define TCCR2A TCCR2 +#define TCCR2B TCCR2 +#define COM2A1 COM21 +#define COM2A0 COM20 +#define OCR2A OCR2 +#define TIMSK2 TIMSK +#define OCIE2A OCIE2 +#define TIMER2_COMPA_vect TIMER2_COMP_vect +#define TIMSK1 TIMSK +#endif + +// timerx_toggle_count: +// > 0 - duration specified +// = 0 - stopped +// < 0 - infinitely (until stop() method called, or new play() called) + +#if !defined(__AVR_ATmega8__) +volatile long timer0_toggle_count; +volatile uint8_t *timer0_pin_port; +volatile uint8_t timer0_pin_mask; +#endif + +volatile long timer1_toggle_count; +volatile uint8_t *timer1_pin_port; +volatile uint8_t timer1_pin_mask; +volatile long timer2_toggle_count; +volatile uint8_t *timer2_pin_port; +volatile uint8_t timer2_pin_mask; + +#if defined(TIMSK3) +volatile long timer3_toggle_count; +volatile uint8_t *timer3_pin_port; +volatile uint8_t timer3_pin_mask; +#endif + +#if defined(TIMSK4) +volatile long timer4_toggle_count; +volatile uint8_t *timer4_pin_port; +volatile uint8_t timer4_pin_mask; +#endif + +#if defined(TIMSK5) +volatile long timer5_toggle_count; +volatile uint8_t *timer5_pin_port; +volatile uint8_t timer5_pin_mask; +#endif + + +// MLS: This does not make sense, the 3 options are the same +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + +#define AVAILABLE_TONE_PINS 1 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 3, 4, 5, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255, 255, 255, 255 */ }; + +#elif defined(__AVR_ATmega8__) + +#define AVAILABLE_TONE_PINS 1 + +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255 */ }; + +#else + +#define AVAILABLE_TONE_PINS 1 + +// Leave timer 0 to last. +const uint8_t PROGMEM tone_pin_to_timer_PGM[] = { 2 /*, 1, 0 */ }; +static uint8_t tone_pins[AVAILABLE_TONE_PINS] = { 255 /*, 255, 255 */ }; + +#endif + + + +static int8_t toneBegin(uint8_t _pin) +{ + int8_t _timer = -1; + + // if we're already using the pin, the timer should be configured. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + return pgm_read_byte(tone_pin_to_timer_PGM + i); + } + } + + // search for an unused timer. + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == 255) { + tone_pins[i] = _pin; + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + break; + } + } + + if (_timer != -1) + { + // Set timer specific stuff + // All timers in CTC mode + // 8 bit timers will require changing prescalar values, + // whereas 16 bit timers are set to either ck/1 or ck/64 prescalar + switch (_timer) + { + #if defined(TCCR0A) && defined(TCCR0B) + case 0: + // 8 bit timer + TCCR0A = 0; + TCCR0B = 0; + bitWrite(TCCR0A, WGM01, 1); + bitWrite(TCCR0B, CS00, 1); + timer0_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer0_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR1A) && defined(TCCR1B) && defined(WGM12) + case 1: + // 16 bit timer + TCCR1A = 0; + TCCR1B = 0; + bitWrite(TCCR1B, WGM12, 1); + bitWrite(TCCR1B, CS10, 1); + timer1_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer1_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR2A) && defined(TCCR2B) + case 2: + // 8 bit timer + TCCR2A = 0; + TCCR2B = 0; + bitWrite(TCCR2A, WGM21, 1); + bitWrite(TCCR2B, CS20, 1); + timer2_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer2_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR3A) && defined(TCCR3B) && defined(TIMSK3) + case 3: + // 16 bit timer + TCCR3A = 0; + TCCR3B = 0; + bitWrite(TCCR3B, WGM32, 1); + bitWrite(TCCR3B, CS30, 1); + timer3_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer3_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR4A) && defined(TCCR4B) && defined(TIMSK4) + case 4: + // 16 bit timer + TCCR4A = 0; + TCCR4B = 0; + #if defined(WGM42) + bitWrite(TCCR4B, WGM42, 1); + #elif defined(CS43) + #warning this may not be correct + // atmega32u4 + bitWrite(TCCR4B, CS43, 1); + #endif + bitWrite(TCCR4B, CS40, 1); + timer4_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer4_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + + #if defined(TCCR5A) && defined(TCCR5B) && defined(TIMSK5) + case 5: + // 16 bit timer + TCCR5A = 0; + TCCR5B = 0; + bitWrite(TCCR5B, WGM52, 1); + bitWrite(TCCR5B, CS50, 1); + timer5_pin_port = portOutputRegister(digitalPinToPort(_pin)); + timer5_pin_mask = digitalPinToBitMask(_pin); + break; + #endif + } + } + + return _timer; +} + + + +// frequency (in hertz) and duration (in milliseconds). + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration) +{ + uint8_t prescalarbits = 0b001; + long toggle_count = 0; + uint32_t ocr = 0; + int8_t _timer; + + _timer = toneBegin(_pin); + + if (_timer >= 0) + { + // Set the pinMode as OUTPUT + pinMode(_pin, OUTPUT); + + // if we are using an 8 bit timer, scan through prescalars to find the best fit + if (_timer == 0 || _timer == 2) + { + ocr = F_CPU / frequency / 2 - 1; + prescalarbits = 0b001; // ck/1: same for both timers + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 8 - 1; + prescalarbits = 0b010; // ck/8: same for both timers + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 32 - 1; + prescalarbits = 0b011; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = _timer == 0 ? 0b011 : 0b100; + + if (_timer == 2 && ocr > 255) + { + ocr = F_CPU / frequency / 2 / 128 - 1; + prescalarbits = 0b101; + } + + if (ocr > 255) + { + ocr = F_CPU / frequency / 2 / 256 - 1; + prescalarbits = _timer == 0 ? 0b100 : 0b110; + if (ocr > 255) + { + // can't do any better than /1024 + ocr = F_CPU / frequency / 2 / 1024 - 1; + prescalarbits = _timer == 0 ? 0b101 : 0b111; + } + } + } + } + +#if defined(TCCR0B) + if (_timer == 0) + { + TCCR0B = prescalarbits; + } + else +#endif +#if defined(TCCR2B) + { + TCCR2B = prescalarbits; + } +#else + { + // dummy place holder to make the above ifdefs work + } +#endif + } + else + { + // two choices for the 16 bit timers: ck/1 or ck/64 + ocr = F_CPU / frequency / 2 - 1; + + prescalarbits = 0b001; + if (ocr > 0xffff) + { + ocr = F_CPU / frequency / 2 / 64 - 1; + prescalarbits = 0b011; + } + + if (_timer == 1) + { +#if defined(TCCR1B) + TCCR1B = (TCCR1B & 0b11111000) | prescalarbits; +#endif + } +#if defined(TCCR3B) + else if (_timer == 3) + TCCR3B = (TCCR3B & 0b11111000) | prescalarbits; +#endif +#if defined(TCCR4B) + else if (_timer == 4) + TCCR4B = (TCCR4B & 0b11111000) | prescalarbits; +#endif +#if defined(TCCR5B) + else if (_timer == 5) + TCCR5B = (TCCR5B & 0b11111000) | prescalarbits; +#endif + + } + + + // Calculate the toggle count + if (duration > 0) + { + toggle_count = 2 * frequency * duration / 1000; + } + else + { + toggle_count = -1; + } + + // Set the OCR for the given timer, + // set the toggle count, + // then turn on the interrupts + switch (_timer) + { + +#if defined(OCR0A) && defined(TIMSK0) && defined(OCIE0A) + case 0: + OCR0A = ocr; + timer0_toggle_count = toggle_count; + bitWrite(TIMSK0, OCIE0A, 1); + break; +#endif + + case 1: +#if defined(OCR1A) && defined(TIMSK1) && defined(OCIE1A) + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK1, OCIE1A, 1); +#elif defined(OCR1A) && defined(TIMSK) && defined(OCIE1A) + // this combination is for at least the ATmega32 + OCR1A = ocr; + timer1_toggle_count = toggle_count; + bitWrite(TIMSK, OCIE1A, 1); +#endif + break; + +#if defined(OCR2A) && defined(TIMSK2) && defined(OCIE2A) + case 2: + OCR2A = ocr; + timer2_toggle_count = toggle_count; + bitWrite(TIMSK2, OCIE2A, 1); + break; +#endif + +#if defined(TIMSK3) + case 3: + OCR3A = ocr; + timer3_toggle_count = toggle_count; + bitWrite(TIMSK3, OCIE3A, 1); + break; +#endif + +#if defined(TIMSK4) + case 4: + OCR4A = ocr; + timer4_toggle_count = toggle_count; + bitWrite(TIMSK4, OCIE4A, 1); + break; +#endif + +#if defined(OCR5A) && defined(TIMSK5) && defined(OCIE5A) + case 5: + OCR5A = ocr; + timer5_toggle_count = toggle_count; + bitWrite(TIMSK5, OCIE5A, 1); + break; +#endif + + } + } +} + + +// XXX: this function only works properly for timer 2 (the only one we use +// currently). for the others, it should end the tone, but won't restore +// proper PWM functionality for the timer. +void disableTimer(uint8_t _timer) +{ + switch (_timer) + { + case 0: + #if defined(TIMSK0) + TIMSK0 = 0; + #elif defined(TIMSK) + TIMSK = 0; // atmega32 + #endif + break; + +#if defined(TIMSK1) && defined(OCIE1A) + case 1: + bitWrite(TIMSK1, OCIE1A, 0); + break; +#endif + + case 2: + #if defined(TIMSK2) && defined(OCIE2A) + bitWrite(TIMSK2, OCIE2A, 0); // disable interrupt + #endif + #if defined(TCCR2A) && defined(WGM20) + TCCR2A = (1 << WGM20); + #endif + #if defined(TCCR2B) && defined(CS22) + TCCR2B = (TCCR2B & 0b11111000) | (1 << CS22); + #endif + #if defined(OCR2A) + OCR2A = 0; + #endif + break; + +#if defined(TIMSK3) + case 3: + TIMSK3 = 0; + break; +#endif + +#if defined(TIMSK4) + case 4: + TIMSK4 = 0; + break; +#endif + +#if defined(TIMSK5) + case 5: + TIMSK5 = 0; + break; +#endif + } +} + + +void noTone(uint8_t _pin) +{ + int8_t _timer = -1; + + for (int i = 0; i < AVAILABLE_TONE_PINS; i++) { + if (tone_pins[i] == _pin) { + _timer = pgm_read_byte(tone_pin_to_timer_PGM + i); + tone_pins[i] = 255; + } + } + + disableTimer(_timer); + + digitalWrite(_pin, 0); +} + +#if 0 +#if !defined(__AVR_ATmega8__) +ISR(TIMER0_COMPA_vect) +{ + if (timer0_toggle_count != 0) + { + // toggle the pin + *timer0_pin_port ^= timer0_pin_mask; + + if (timer0_toggle_count > 0) + timer0_toggle_count--; + } + else + { + disableTimer(0); + *timer0_pin_port &= ~(timer0_pin_mask); // keep pin low after stop + } +} +#endif + + +ISR(TIMER1_COMPA_vect) +{ + if (timer1_toggle_count != 0) + { + // toggle the pin + *timer1_pin_port ^= timer1_pin_mask; + + if (timer1_toggle_count > 0) + timer1_toggle_count--; + } + else + { + disableTimer(1); + *timer1_pin_port &= ~(timer1_pin_mask); // keep pin low after stop + } +} +#endif + + +ISR(TIMER2_COMPA_vect) +{ + + if (timer2_toggle_count != 0) + { + // toggle the pin + *timer2_pin_port ^= timer2_pin_mask; + + if (timer2_toggle_count > 0) + timer2_toggle_count--; + } + else + { + // need to call noTone() so that the tone_pins[] entry is reset, so the + // timer gets initialized next time we call tone(). + // XXX: this assumes timer 2 is always the first one used. + noTone(tone_pins[0]); +// disableTimer(2); +// *timer2_pin_port &= ~(timer2_pin_mask); // keep pin low after stop + } +} + + + +//#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +#if 0 + +ISR(TIMER3_COMPA_vect) +{ + if (timer3_toggle_count != 0) + { + // toggle the pin + *timer3_pin_port ^= timer3_pin_mask; + + if (timer3_toggle_count > 0) + timer3_toggle_count--; + } + else + { + disableTimer(3); + *timer3_pin_port &= ~(timer3_pin_mask); // keep pin low after stop + } +} + +ISR(TIMER4_COMPA_vect) +{ + if (timer4_toggle_count != 0) + { + // toggle the pin + *timer4_pin_port ^= timer4_pin_mask; + + if (timer4_toggle_count > 0) + timer4_toggle_count--; + } + else + { + disableTimer(4); + *timer4_pin_port &= ~(timer4_pin_mask); // keep pin low after stop + } +} + +ISR(TIMER5_COMPA_vect) +{ + if (timer5_toggle_count != 0) + { + // toggle the pin + *timer5_pin_port ^= timer5_pin_mask; + + if (timer5_toggle_count > 0) + timer5_toggle_count--; + } + else + { + disableTimer(5); + *timer5_pin_port &= ~(timer5_pin_mask); // keep pin low after stop + } +} + +#endif diff --git a/arduinoSrc0022/WCharacter.h b/arduinoSrc0022/WCharacter.h new file mode 100644 index 0000000..79733b5 --- /dev/null +++ b/arduinoSrc0022/WCharacter.h @@ -0,0 +1,168 @@ +/* + WCharacter.h - Character utility functions for Wiring & Arduino + Copyright (c) 2010 Hernando Barragan. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef Character_h +#define Character_h + +#include + +// WCharacter.h prototypes +inline boolean isAlphaNumeric(int c) __attribute__((always_inline)); +inline boolean isAlpha(int c) __attribute__((always_inline)); +inline boolean isAscii(int c) __attribute__((always_inline)); +inline boolean isWhitespace(int c) __attribute__((always_inline)); +inline boolean isControl(int c) __attribute__((always_inline)); +inline boolean isDigit(int c) __attribute__((always_inline)); +inline boolean isGraph(int c) __attribute__((always_inline)); +inline boolean isLowerCase(int c) __attribute__((always_inline)); +inline boolean isPrintable(int c) __attribute__((always_inline)); +inline boolean isPunct(int c) __attribute__((always_inline)); +inline boolean isSpace(int c) __attribute__((always_inline)); +inline boolean isUpperCase(int c) __attribute__((always_inline)); +inline boolean isHexadecimalDigit(int c) __attribute__((always_inline)); +inline int toAscii(int c) __attribute__((always_inline)); +inline int toLowerCase(int c) __attribute__((always_inline)); +inline int toUpperCase(int c)__attribute__((always_inline)); + + +// Checks for an alphanumeric character. +// It is equivalent to (isalpha(c) || isdigit(c)). +inline boolean isAlphaNumeric(int c) +{ + return ( isalnum(c) == 0 ? false : true); +} + + +// Checks for an alphabetic character. +// It is equivalent to (isupper(c) || islower(c)). +inline boolean isAlpha(int c) +{ + return ( isalpha(c) == 0 ? false : true); +} + + +// Checks whether c is a 7-bit unsigned char value +// that fits into the ASCII character set. +inline boolean isAscii(int c) +{ + return ( isascii (c) == 0 ? false : true); +} + + +// Checks for a blank character, that is, a space or a tab. +inline boolean isWhitespace(int c) +{ + return ( isblank (c) == 0 ? false : true); +} + + +// Checks for a control character. +inline boolean isControl(int c) +{ + return ( iscntrl (c) == 0 ? false : true); +} + + +// Checks for a digit (0 through 9). +inline boolean isDigit(int c) +{ + return ( isdigit (c) == 0 ? false : true); +} + + +// Checks for any printable character except space. +inline boolean isGraph(int c) +{ + return ( isgraph (c) == 0 ? false : true); +} + + +// Checks for a lower-case character. +inline boolean isLowerCase(int c) +{ + return (islower (c) == 0 ? false : true); +} + + +// Checks for any printable character including space. +inline boolean isPrintable(int c) +{ + return ( isprint (c) == 0 ? false : true); +} + + +// Checks for any printable character which is not a space +// or an alphanumeric character. +inline boolean isPunct(int c) +{ + return ( ispunct (c) == 0 ? false : true); +} + + +// Checks for white-space characters. For the avr-libc library, +// these are: space, formfeed ('\f'), newline ('\n'), carriage +// return ('\r'), horizontal tab ('\t'), and vertical tab ('\v'). +inline boolean isSpace(int c) +{ + return ( isspace (c) == 0 ? false : true); +} + + +// Checks for an uppercase letter. +inline boolean isUpperCase(int c) +{ + return ( isupper (c) == 0 ? false : true); +} + + +// Checks for a hexadecimal digits, i.e. one of 0 1 2 3 4 5 6 7 +// 8 9 a b c d e f A B C D E F. +inline boolean isHexadecimalDigit(int c) +{ + return ( isxdigit (c) == 0 ? false : true); +} + + +// Converts c to a 7-bit unsigned char value that fits into the +// ASCII character set, by clearing the high-order bits. +inline int toAscii(int c) +{ + return toascii (c); +} + + +// Warning: +// Many people will be unhappy if you use this function. +// This function will convert accented letters into random +// characters. + +// Converts the letter c to lower case, if possible. +inline int toLowerCase(int c) +{ + return tolower (c); +} + + +// Converts the letter c to upper case, if possible. +inline int toUpperCase(int c) +{ + return toupper (c); +} + +#endif \ No newline at end of file diff --git a/arduinoSrc0022/WConstants.h b/arduinoSrc0022/WConstants.h new file mode 100644 index 0000000..3e19ac4 --- /dev/null +++ b/arduinoSrc0022/WConstants.h @@ -0,0 +1 @@ +#include "wiring.h" diff --git a/arduinoSrc0022/WInterrupts.c b/arduinoSrc0022/WInterrupts.c new file mode 100644 index 0000000..3b3e0c9 --- /dev/null +++ b/arduinoSrc0022/WInterrupts.c @@ -0,0 +1,249 @@ +/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + Part of the Wiring project - http://wiring.uniandes.edu.co + + Copyright (c) 2004-05 Hernando Barragan + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 24 November 2006 by David A. Mellis + Modified 1 August 2010 by Mark Sproul +*/ + +#include +#include +#include +#include +#include + +#include "WConstants.h" +#include "wiring_private.h" + +volatile static voidFuncPtr intFunc[EXTERNAL_NUM_INTERRUPTS]; +// volatile static voidFuncPtr twiIntFunc; + +void attachInterrupt(uint8_t interruptNum, void (*userFunc)(void), int mode) { + if(interruptNum < EXTERNAL_NUM_INTERRUPTS) { + intFunc[interruptNum] = userFunc; + + // Configure the interrupt mode (trigger on low input, any change, rising + // edge, or falling edge). The mode constants were chosen to correspond + // to the configuration bits in the hardware register, so we simply shift + // the mode into place. + + // Enable the interrupt. + + switch (interruptNum) { +#if defined(EICRA) && defined(EICRB) && defined(EIMSK) + case 2: + EICRA = (EICRA & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + EIMSK |= (1 << INT0); + break; + case 3: + EICRA = (EICRA & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + EIMSK |= (1 << INT1); + break; + case 4: + EICRA = (EICRA & ~((1 << ISC20) | (1 << ISC21))) | (mode << ISC20); + EIMSK |= (1 << INT2); + break; + case 5: + EICRA = (EICRA & ~((1 << ISC30) | (1 << ISC31))) | (mode << ISC30); + EIMSK |= (1 << INT3); + break; + case 0: + EICRB = (EICRB & ~((1 << ISC40) | (1 << ISC41))) | (mode << ISC40); + EIMSK |= (1 << INT4); + break; + case 1: + EICRB = (EICRB & ~((1 << ISC50) | (1 << ISC51))) | (mode << ISC50); + EIMSK |= (1 << INT5); + break; + case 6: + EICRB = (EICRB & ~((1 << ISC60) | (1 << ISC61))) | (mode << ISC60); + EIMSK |= (1 << INT6); + break; + case 7: + EICRB = (EICRB & ~((1 << ISC70) | (1 << ISC71))) | (mode << ISC70); + EIMSK |= (1 << INT7); + break; +#else + case 0: + #if defined(EICRA) && defined(ISC00) && defined(EIMSK) + EICRA = (EICRA & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + EIMSK |= (1 << INT0); + #elif defined(MCUCR) && defined(ISC00) && defined(GICR) + MCUCR = (MCUCR & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + GICR |= (1 << INT0); + #elif defined(MCUCR) && defined(ISC00) && defined(GIMSK) + MCUCR = (MCUCR & ~((1 << ISC00) | (1 << ISC01))) | (mode << ISC00); + GIMSK |= (1 << INT0); + #else + #error attachInterrupt not finished for this CPU (case 0) + #endif + break; + + case 1: + #if defined(EICRA) && defined(ISC10) && defined(ISC11) && defined(EIMSK) + EICRA = (EICRA & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + EIMSK |= (1 << INT1); + #elif defined(MCUCR) && defined(ISC10) && defined(ISC11) && defined(GICR) + MCUCR = (MCUCR & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + GICR |= (1 << INT1); + #elif defined(MCUCR) && defined(ISC10) && defined(GIMSK) && defined(GIMSK) + MCUCR = (MCUCR & ~((1 << ISC10) | (1 << ISC11))) | (mode << ISC10); + GIMSK |= (1 << INT1); + #else + #warning attachInterrupt may need some more work for this cpu (case 1) + #endif + break; +#endif + } + } +} + +void detachInterrupt(uint8_t interruptNum) { + if(interruptNum < EXTERNAL_NUM_INTERRUPTS) { + // Disable the interrupt. (We can't assume that interruptNum is equal + // to the number of the EIMSK bit to clear, as this isn't true on the + // ATmega8. There, INT0 is 6 and INT1 is 7.) + switch (interruptNum) { +#if defined(EICRA) && defined(EICRB) && defined(EIMSK) + case 2: + EIMSK &= ~(1 << INT0); + break; + case 3: + EIMSK &= ~(1 << INT1); + break; + case 4: + EIMSK &= ~(1 << INT2); + break; + case 5: + EIMSK &= ~(1 << INT3); + break; + case 0: + EIMSK &= ~(1 << INT4); + break; + case 1: + EIMSK &= ~(1 << INT5); + break; + case 6: + EIMSK &= ~(1 << INT6); + break; + case 7: + EIMSK &= ~(1 << INT7); + break; +#else + case 0: + #if defined(EIMSK) && defined(INT0) + EIMSK &= ~(1 << INT0); + #elif defined(GICR) && defined(ISC00) + GICR &= ~(1 << INT0); // atmega32 + #elif defined(GIMSK) && defined(INT0) + GIMSK &= ~(1 << INT0); + #else + #error detachInterrupt not finished for this cpu + #endif + break; + + case 1: + #if defined(EIMSK) && defined(INT1) + EIMSK &= ~(1 << INT1); + #elif defined(GICR) && defined(INT1) + GICR &= ~(1 << INT1); // atmega32 + #elif defined(GIMSK) && defined(INT1) + GIMSK &= ~(1 << INT1); + #else + #warning detachInterrupt may need some more work for this cpu (case 1) + #endif + break; +#endif + } + + intFunc[interruptNum] = 0; + } +} + +/* +void attachInterruptTwi(void (*userFunc)(void) ) { + twiIntFunc = userFunc; +} +*/ + +#if defined(EICRA) && defined(EICRB) + +SIGNAL(INT0_vect) { + if(intFunc[EXTERNAL_INT_2]) + intFunc[EXTERNAL_INT_2](); +} + +SIGNAL(INT1_vect) { + if(intFunc[EXTERNAL_INT_3]) + intFunc[EXTERNAL_INT_3](); +} + +SIGNAL(INT2_vect) { + if(intFunc[EXTERNAL_INT_4]) + intFunc[EXTERNAL_INT_4](); +} + +SIGNAL(INT3_vect) { + if(intFunc[EXTERNAL_INT_5]) + intFunc[EXTERNAL_INT_5](); +} + +SIGNAL(INT4_vect) { + if(intFunc[EXTERNAL_INT_0]) + intFunc[EXTERNAL_INT_0](); +} + +SIGNAL(INT5_vect) { + if(intFunc[EXTERNAL_INT_1]) + intFunc[EXTERNAL_INT_1](); +} + +SIGNAL(INT6_vect) { + if(intFunc[EXTERNAL_INT_6]) + intFunc[EXTERNAL_INT_6](); +} + +SIGNAL(INT7_vect) { + if(intFunc[EXTERNAL_INT_7]) + intFunc[EXTERNAL_INT_7](); +} + +#else + +SIGNAL(INT0_vect) { + if(intFunc[EXTERNAL_INT_0]) + intFunc[EXTERNAL_INT_0](); +} + +SIGNAL(INT1_vect) { + if(intFunc[EXTERNAL_INT_1]) + intFunc[EXTERNAL_INT_1](); +} + +#endif + +/* +SIGNAL(SIG_2WIRE_SERIAL) { + if(twiIntFunc) + twiIntFunc(); +} +*/ + diff --git a/arduinoSrc0022/WMath.cpp b/arduinoSrc0022/WMath.cpp new file mode 100644 index 0000000..2120c4c --- /dev/null +++ b/arduinoSrc0022/WMath.cpp @@ -0,0 +1,60 @@ +/* -*- mode: jde; c-basic-offset: 2; indent-tabs-mode: nil -*- */ + +/* + Part of the Wiring project - http://wiring.org.co + Copyright (c) 2004-06 Hernando Barragan + Modified 13 August 2006, David A. Mellis for Arduino - http://www.arduino.cc/ + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +extern "C" { + #include "stdlib.h" +} + +void randomSeed(unsigned int seed) +{ + if (seed != 0) { + srandom(seed); + } +} + +long random(long howbig) +{ + if (howbig == 0) { + return 0; + } + return random() % howbig; +} + +long random(long howsmall, long howbig) +{ + if (howsmall >= howbig) { + return howsmall; + } + long diff = howbig - howsmall; + return random(diff) + howsmall; +} + +long map(long x, long in_min, long in_max, long out_min, long out_max) +{ + return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; +} + +unsigned int makeWord(unsigned int w) { return w; } +unsigned int makeWord(unsigned char h, unsigned char l) { return (h << 8) | l; } \ No newline at end of file diff --git a/arduinoSrc0022/WProgram.h b/arduinoSrc0022/WProgram.h new file mode 100644 index 0000000..f73e760 --- /dev/null +++ b/arduinoSrc0022/WProgram.h @@ -0,0 +1,63 @@ +#ifndef WProgram_h +#define WProgram_h + +#include +#include +#include + +#include + +#include "wiring.h" + +#ifdef __cplusplus +#include "WCharacter.h" +#include "WString.h" +#include "HardwareSerial.h" + +uint16_t makeWord(uint16_t w); +uint16_t makeWord(byte h, byte l); + +#define word(...) makeWord(__VA_ARGS__) + +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout = 1000000L); + +void tone(uint8_t _pin, unsigned int frequency, unsigned long duration = 0); +void noTone(uint8_t _pin); + +// WMath prototypes +long random(long); +long random(long, long); +void randomSeed(unsigned int); +long map(long, long, long, long, long); + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +const static uint8_t A0 = 54; +const static uint8_t A1 = 55; +const static uint8_t A2 = 56; +const static uint8_t A3 = 57; +const static uint8_t A4 = 58; +const static uint8_t A5 = 59; +const static uint8_t A6 = 60; +const static uint8_t A7 = 61; +const static uint8_t A8 = 62; +const static uint8_t A9 = 63; +const static uint8_t A10 = 64; +const static uint8_t A11 = 65; +const static uint8_t A12 = 66; +const static uint8_t A13 = 67; +const static uint8_t A14 = 68; +const static uint8_t A15 = 69; +#else +const static uint8_t A0 = 14; +const static uint8_t A1 = 15; +const static uint8_t A2 = 16; +const static uint8_t A3 = 17; +const static uint8_t A4 = 18; +const static uint8_t A5 = 19; +const static uint8_t A6 = 20; +const static uint8_t A7 = 21; +#endif + +#endif + +#endif \ No newline at end of file diff --git a/arduinoSrc0022/WString.cpp b/arduinoSrc0022/WString.cpp new file mode 100644 index 0000000..db5a441 --- /dev/null +++ b/arduinoSrc0022/WString.cpp @@ -0,0 +1,443 @@ +/* + WString.cpp - String library for Wiring & Arduino + Copyright (c) 2009-10 Hernando Barragan. All rights reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#include +#include "WProgram.h" +#include "WString.h" + + +String::String( const char *value ) +{ + if ( value == NULL ) + value = ""; + getBuffer( _length = strlen( value ) ); + if ( _buffer != NULL ) + strcpy( _buffer, value ); +} + +String::String( const String &value ) +{ + getBuffer( _length = value._length ); + if ( _buffer != NULL ) + strcpy( _buffer, value._buffer ); +} + +String::String( const char value ) +{ + _length = 1; + getBuffer(1); + if ( _buffer != NULL ) { + _buffer[0] = value; + _buffer[1] = 0; + } +} + +String::String( const unsigned char value ) +{ + _length = 1; + getBuffer(1); + if ( _buffer != NULL) { + _buffer[0] = value; + _buffer[1] = 0; + } +} + +String::String( const int value, const int base ) +{ + char buf[33]; + itoa((signed long)value, buf, base); + getBuffer( _length = strlen(buf) ); + if ( _buffer != NULL ) + strcpy( _buffer, buf ); +} + +String::String( const unsigned int value, const int base ) +{ + char buf[33]; + ultoa((unsigned long)value, buf, base); + getBuffer( _length = strlen(buf) ); + if ( _buffer != NULL ) + strcpy( _buffer, buf ); +} + +String::String( const long value, const int base ) +{ + char buf[33]; + ltoa(value, buf, base); + getBuffer( _length = strlen(buf) ); + if ( _buffer != NULL ) + strcpy( _buffer, buf ); +} + +String::String( const unsigned long value, const int base ) +{ + char buf[33]; + ultoa(value, buf, 10); + getBuffer( _length = strlen(buf) ); + if ( _buffer != NULL ) + strcpy( _buffer, buf ); +} + +char String::charAt( unsigned int loc ) const +{ + return operator[]( loc ); +} + +void String::setCharAt( unsigned int loc, const char aChar ) +{ + if(_buffer == NULL) return; + if(_length > loc) { + _buffer[loc] = aChar; + } +} + +int String::compareTo( const String &s2 ) const +{ + return strcmp( _buffer, s2._buffer ); +} + +const String & String::concat( const String &s2 ) +{ + return (*this) += s2; +} + +const String & String::operator=( const String &rhs ) +{ + if ( this == &rhs ) + return *this; + + if ( rhs._length > _length ) + { + free(_buffer); + getBuffer( rhs._length ); + } + + if ( _buffer != NULL ) { + _length = rhs._length; + strcpy( _buffer, rhs._buffer ); + } + return *this; +} + +//const String & String::operator+=( const char aChar ) +//{ +// if ( _length == _capacity ) +// doubleBuffer(); +// +// _buffer[ _length++ ] = aChar; +// _buffer[ _length ] = '\0'; +// return *this; +//} + +const String & String::operator+=( const String &other ) +{ + _length += other._length; + if ( _length > _capacity ) + { + char *temp = (char *)realloc(_buffer, _length + 1); + if ( temp != NULL ) { + _buffer = temp; + _capacity = _length; + } else { + _length -= other._length; + return *this; + } + } + strcat( _buffer, other._buffer ); + return *this; +} + + +int String::operator==( const String &rhs ) const +{ + return ( _length == rhs._length && strcmp( _buffer, rhs._buffer ) == 0 ); +} + +int String::operator!=( const String &rhs ) const +{ + return ( _length != rhs.length() || strcmp( _buffer, rhs._buffer ) != 0 ); +} + +int String::operator<( const String &rhs ) const +{ + return strcmp( _buffer, rhs._buffer ) < 0; +} + +int String::operator>( const String &rhs ) const +{ + return strcmp( _buffer, rhs._buffer ) > 0; +} + +int String::operator<=( const String &rhs ) const +{ + return strcmp( _buffer, rhs._buffer ) <= 0; +} + +int String::operator>=( const String & rhs ) const +{ + return strcmp( _buffer, rhs._buffer ) >= 0; +} + +char & String::operator[]( unsigned int index ) +{ + static char dummy_writable_char; + if (index >= _length || !_buffer) { + dummy_writable_char = 0; + return dummy_writable_char; + } + return _buffer[ index ]; +} + +char String::operator[]( unsigned int index ) const +{ + // need to check for valid index, to do later + return _buffer[ index ]; +} + +boolean String::endsWith( const String &s2 ) const +{ + if ( _length < s2._length ) + return 0; + + return strcmp( &_buffer[ _length - s2._length], s2._buffer ) == 0; +} + +boolean String::equals( const String &s2 ) const +{ + return ( _length == s2._length && strcmp( _buffer,s2._buffer ) == 0 ); +} + +boolean String::equalsIgnoreCase( const String &s2 ) const +{ + if ( this == &s2 ) + return true; //1; + else if ( _length != s2._length ) + return false; //0; + + return strcmp(toLowerCase()._buffer, s2.toLowerCase()._buffer) == 0; +} + +String String::replace( char findChar, char replaceChar ) +{ + if ( _buffer == NULL ) return *this; + String theReturn = _buffer; + char* temp = theReturn._buffer; + while( (temp = strchr( temp, findChar )) != 0 ) + *temp = replaceChar; + + return theReturn; +} + +String String::replace( const String& match, const String& replace ) +{ + if ( _buffer == NULL ) return *this; + String temp = _buffer, newString; + + int loc; + while ( (loc = temp.indexOf( match )) != -1 ) + { + newString += temp.substring( 0, loc ); + newString += replace; + temp = temp.substring( loc + match._length ); + } + newString += temp; + return newString; +} + +int String::indexOf( char temp ) const +{ + return indexOf( temp, 0 ); +} + +int String::indexOf( char ch, unsigned int fromIndex ) const +{ + if ( fromIndex >= _length ) + return -1; + + const char* temp = strchr( &_buffer[fromIndex], ch ); + if ( temp == NULL ) + return -1; + + return temp - _buffer; +} + +int String::indexOf( const String &s2 ) const +{ + return indexOf( s2, 0 ); +} + +int String::indexOf( const String &s2, unsigned int fromIndex ) const +{ + if ( fromIndex >= _length ) + return -1; + + const char *theFind = strstr( &_buffer[ fromIndex ], s2._buffer ); + + if ( theFind == NULL ) + return -1; + + return theFind - _buffer; // pointer subtraction +} + +int String::lastIndexOf( char theChar ) const +{ + return lastIndexOf( theChar, _length - 1 ); +} + +int String::lastIndexOf( char ch, unsigned int fromIndex ) const +{ + if ( fromIndex >= _length ) + return -1; + + char tempchar = _buffer[fromIndex + 1]; + _buffer[fromIndex + 1] = '\0'; + char* temp = strrchr( _buffer, ch ); + _buffer[fromIndex + 1] = tempchar; + + if ( temp == NULL ) + return -1; + + return temp - _buffer; +} + +int String::lastIndexOf( const String &s2 ) const +{ + return lastIndexOf( s2, _length - s2._length ); +} + +int String::lastIndexOf( const String &s2, unsigned int fromIndex ) const +{ + // check for empty strings + if ( s2._length == 0 || s2._length - 1 > fromIndex || fromIndex >= _length ) + return -1; + + // matching first character + char temp = s2[ 0 ]; + + for ( int i = fromIndex; i >= 0; i-- ) + { + if ( _buffer[ i ] == temp && (*this).substring( i, i + s2._length ).equals( s2 ) ) + return i; + } + return -1; +} + +boolean String::startsWith( const String &s2 ) const +{ + if ( _length < s2._length ) + return 0; + + return startsWith( s2, 0 ); +} + +boolean String::startsWith( const String &s2, unsigned int offset ) const +{ + if ( offset > _length - s2._length ) + return 0; + + return strncmp( &_buffer[offset], s2._buffer, s2._length ) == 0; +} + +String String::substring( unsigned int left ) const +{ + return substring( left, _length ); +} + +String String::substring( unsigned int left, unsigned int right ) const +{ + if ( left > right ) + { + int temp = right; + right = left; + left = temp; + } + + if ( right > _length ) + { + right = _length; + } + + char temp = _buffer[ right ]; // save the replaced character + _buffer[ right ] = '\0'; + String outPut = ( _buffer + left ); // pointer arithmetic + _buffer[ right ] = temp; //restore character + return outPut; +} + +String String::toLowerCase() const +{ + String temp = _buffer; + + for ( unsigned int i = 0; i < _length; i++ ) + temp._buffer[ i ] = (char)tolower( temp._buffer[ i ] ); + return temp; +} + +String String::toUpperCase() const +{ + String temp = _buffer; + + for ( unsigned int i = 0; i < _length; i++ ) + temp._buffer[ i ] = (char)toupper( temp._buffer[ i ] ); + return temp; +} + +String String::trim() const +{ + if ( _buffer == NULL ) return *this; + String temp = _buffer; + unsigned int i,j; + + for ( i = 0; i < _length; i++ ) + { + if ( !isspace(_buffer[i]) ) + break; + } + + for ( j = temp._length - 1; j > i; j-- ) + { + if ( !isspace(_buffer[j]) ) + break; + } + + return temp.substring( i, j + 1); +} + +void String::getBytes(unsigned char *buf, unsigned int bufsize) +{ + if (!bufsize || !buf) return; + unsigned int len = bufsize - 1; + if (len > _length) len = _length; + strncpy((char *)buf, _buffer, len); + buf[len] = 0; +} + +void String::toCharArray(char *buf, unsigned int bufsize) +{ + if (!bufsize || !buf) return; + unsigned int len = bufsize - 1; + if (len > _length) len = _length; + strncpy(buf, _buffer, len); + buf[len] = 0; +} + + +long String::toInt() { + return atol(_buffer); +} diff --git a/arduinoSrc0022/WString.h b/arduinoSrc0022/WString.h new file mode 100644 index 0000000..cadddb9 --- /dev/null +++ b/arduinoSrc0022/WString.h @@ -0,0 +1,112 @@ +/* + WString.h - String library for Wiring & Arduino + Copyright (c) 2009-10 Hernando Barragan. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef String_h +#define String_h + +//#include "WProgram.h" +#include +#include +#include + +class String +{ + public: + // constructors + String( const char *value = "" ); + String( const String &value ); + String( const char ); + String( const unsigned char ); + String( const int, const int base=10); + String( const unsigned int, const int base=10 ); + String( const long, const int base=10 ); + String( const unsigned long, const int base=10 ); + ~String() { free(_buffer); _length = _capacity = 0;} //added _length = _capacity = 0; + + // operators + const String & operator = ( const String &rhs ); + const String & operator +=( const String &rhs ); + //const String & operator +=( const char ); + int operator ==( const String &rhs ) const; + int operator !=( const String &rhs ) const; + int operator < ( const String &rhs ) const; + int operator > ( const String &rhs ) const; + int operator <=( const String &rhs ) const; + int operator >=( const String &rhs ) const; + char operator []( unsigned int index ) const; + char& operator []( unsigned int index ); + //operator const char *() const { return _buffer; } + + // general methods + char charAt( unsigned int index ) const; + int compareTo( const String &anotherString ) const; + unsigned char endsWith( const String &suffix ) const; + unsigned char equals( const String &anObject ) const; + unsigned char equalsIgnoreCase( const String &anotherString ) const; + int indexOf( char ch ) const; + int indexOf( char ch, unsigned int fromIndex ) const; + int indexOf( const String &str ) const; + int indexOf( const String &str, unsigned int fromIndex ) const; + int lastIndexOf( char ch ) const; + int lastIndexOf( char ch, unsigned int fromIndex ) const; + int lastIndexOf( const String &str ) const; + int lastIndexOf( const String &str, unsigned int fromIndex ) const; + const unsigned int length( ) const { return _length; } + void setCharAt(unsigned int index, const char ch); + unsigned char startsWith( const String &prefix ) const; + unsigned char startsWith( const String &prefix, unsigned int toffset ) const; + String substring( unsigned int beginIndex ) const; + String substring( unsigned int beginIndex, unsigned int endIndex ) const; + String toLowerCase( ) const; + String toUpperCase( ) const; + String trim( ) const; + void getBytes(unsigned char *buf, unsigned int bufsize); + void toCharArray(char *buf, unsigned int bufsize); + long toInt( ); + const String& concat( const String &str ); + String replace( char oldChar, char newChar ); + String replace( const String& match, const String& replace ); + friend String operator + ( String lhs, const String &rhs ); + + protected: + char *_buffer; // the actual char array + unsigned int _capacity; // the array length minus one (for the '\0') + unsigned int _length; // the String length (not counting the '\0') + + void getBuffer(unsigned int maxStrLen); + + private: + +}; + +// allocate buffer space +inline void String::getBuffer(unsigned int maxStrLen) +{ + _capacity = maxStrLen; + _buffer = (char *) malloc(_capacity + 1); + if (_buffer == NULL) _length = _capacity = 0; +} + +inline String operator+( String lhs, const String &rhs ) +{ + return lhs += rhs; +} + + +#endif diff --git a/arduinoSrc0022/binary.h b/arduinoSrc0022/binary.h new file mode 100644 index 0000000..af14980 --- /dev/null +++ b/arduinoSrc0022/binary.h @@ -0,0 +1,515 @@ +#ifndef Binary_h +#define Binary_h + +#define B0 0 +#define B00 0 +#define B000 0 +#define B0000 0 +#define B00000 0 +#define B000000 0 +#define B0000000 0 +#define B00000000 0 +#define B1 1 +#define B01 1 +#define B001 1 +#define B0001 1 +#define B00001 1 +#define B000001 1 +#define B0000001 1 +#define B00000001 1 +#define B10 2 +#define B010 2 +#define B0010 2 +#define B00010 2 +#define B000010 2 +#define B0000010 2 +#define B00000010 2 +#define B11 3 +#define B011 3 +#define B0011 3 +#define B00011 3 +#define B000011 3 +#define B0000011 3 +#define B00000011 3 +#define B100 4 +#define B0100 4 +#define B00100 4 +#define B000100 4 +#define B0000100 4 +#define B00000100 4 +#define B101 5 +#define B0101 5 +#define B00101 5 +#define B000101 5 +#define B0000101 5 +#define B00000101 5 +#define B110 6 +#define B0110 6 +#define B00110 6 +#define B000110 6 +#define B0000110 6 +#define B00000110 6 +#define B111 7 +#define B0111 7 +#define B00111 7 +#define B000111 7 +#define B0000111 7 +#define B00000111 7 +#define B1000 8 +#define B01000 8 +#define B001000 8 +#define B0001000 8 +#define B00001000 8 +#define B1001 9 +#define B01001 9 +#define B001001 9 +#define B0001001 9 +#define B00001001 9 +#define B1010 10 +#define B01010 10 +#define B001010 10 +#define B0001010 10 +#define B00001010 10 +#define B1011 11 +#define B01011 11 +#define B001011 11 +#define B0001011 11 +#define B00001011 11 +#define B1100 12 +#define B01100 12 +#define B001100 12 +#define B0001100 12 +#define B00001100 12 +#define B1101 13 +#define B01101 13 +#define B001101 13 +#define B0001101 13 +#define B00001101 13 +#define B1110 14 +#define B01110 14 +#define B001110 14 +#define B0001110 14 +#define B00001110 14 +#define B1111 15 +#define B01111 15 +#define B001111 15 +#define B0001111 15 +#define B00001111 15 +#define B10000 16 +#define B010000 16 +#define B0010000 16 +#define B00010000 16 +#define B10001 17 +#define B010001 17 +#define B0010001 17 +#define B00010001 17 +#define B10010 18 +#define B010010 18 +#define B0010010 18 +#define B00010010 18 +#define B10011 19 +#define B010011 19 +#define B0010011 19 +#define B00010011 19 +#define B10100 20 +#define B010100 20 +#define B0010100 20 +#define B00010100 20 +#define B10101 21 +#define B010101 21 +#define B0010101 21 +#define B00010101 21 +#define B10110 22 +#define B010110 22 +#define B0010110 22 +#define B00010110 22 +#define B10111 23 +#define B010111 23 +#define B0010111 23 +#define B00010111 23 +#define B11000 24 +#define B011000 24 +#define B0011000 24 +#define B00011000 24 +#define B11001 25 +#define B011001 25 +#define B0011001 25 +#define B00011001 25 +#define B11010 26 +#define B011010 26 +#define B0011010 26 +#define B00011010 26 +#define B11011 27 +#define B011011 27 +#define B0011011 27 +#define B00011011 27 +#define B11100 28 +#define B011100 28 +#define B0011100 28 +#define B00011100 28 +#define B11101 29 +#define B011101 29 +#define B0011101 29 +#define B00011101 29 +#define B11110 30 +#define B011110 30 +#define B0011110 30 +#define B00011110 30 +#define B11111 31 +#define B011111 31 +#define B0011111 31 +#define B00011111 31 +#define B100000 32 +#define B0100000 32 +#define B00100000 32 +#define B100001 33 +#define B0100001 33 +#define B00100001 33 +#define B100010 34 +#define B0100010 34 +#define B00100010 34 +#define B100011 35 +#define B0100011 35 +#define B00100011 35 +#define B100100 36 +#define B0100100 36 +#define B00100100 36 +#define B100101 37 +#define B0100101 37 +#define B00100101 37 +#define B100110 38 +#define B0100110 38 +#define B00100110 38 +#define B100111 39 +#define B0100111 39 +#define B00100111 39 +#define B101000 40 +#define B0101000 40 +#define B00101000 40 +#define B101001 41 +#define B0101001 41 +#define B00101001 41 +#define B101010 42 +#define B0101010 42 +#define B00101010 42 +#define B101011 43 +#define B0101011 43 +#define B00101011 43 +#define B101100 44 +#define B0101100 44 +#define B00101100 44 +#define B101101 45 +#define B0101101 45 +#define B00101101 45 +#define B101110 46 +#define B0101110 46 +#define B00101110 46 +#define B101111 47 +#define B0101111 47 +#define B00101111 47 +#define B110000 48 +#define B0110000 48 +#define B00110000 48 +#define B110001 49 +#define B0110001 49 +#define B00110001 49 +#define B110010 50 +#define B0110010 50 +#define B00110010 50 +#define B110011 51 +#define B0110011 51 +#define B00110011 51 +#define B110100 52 +#define B0110100 52 +#define B00110100 52 +#define B110101 53 +#define B0110101 53 +#define B00110101 53 +#define B110110 54 +#define B0110110 54 +#define B00110110 54 +#define B110111 55 +#define B0110111 55 +#define B00110111 55 +#define B111000 56 +#define B0111000 56 +#define B00111000 56 +#define B111001 57 +#define B0111001 57 +#define B00111001 57 +#define B111010 58 +#define B0111010 58 +#define B00111010 58 +#define B111011 59 +#define B0111011 59 +#define B00111011 59 +#define B111100 60 +#define B0111100 60 +#define B00111100 60 +#define B111101 61 +#define B0111101 61 +#define B00111101 61 +#define B111110 62 +#define B0111110 62 +#define B00111110 62 +#define B111111 63 +#define B0111111 63 +#define B00111111 63 +#define B1000000 64 +#define B01000000 64 +#define B1000001 65 +#define B01000001 65 +#define B1000010 66 +#define B01000010 66 +#define B1000011 67 +#define B01000011 67 +#define B1000100 68 +#define B01000100 68 +#define B1000101 69 +#define B01000101 69 +#define B1000110 70 +#define B01000110 70 +#define B1000111 71 +#define B01000111 71 +#define B1001000 72 +#define B01001000 72 +#define B1001001 73 +#define B01001001 73 +#define B1001010 74 +#define B01001010 74 +#define B1001011 75 +#define B01001011 75 +#define B1001100 76 +#define B01001100 76 +#define B1001101 77 +#define B01001101 77 +#define B1001110 78 +#define B01001110 78 +#define B1001111 79 +#define B01001111 79 +#define B1010000 80 +#define B01010000 80 +#define B1010001 81 +#define B01010001 81 +#define B1010010 82 +#define B01010010 82 +#define B1010011 83 +#define B01010011 83 +#define B1010100 84 +#define B01010100 84 +#define B1010101 85 +#define B01010101 85 +#define B1010110 86 +#define B01010110 86 +#define B1010111 87 +#define B01010111 87 +#define B1011000 88 +#define B01011000 88 +#define B1011001 89 +#define B01011001 89 +#define B1011010 90 +#define B01011010 90 +#define B1011011 91 +#define B01011011 91 +#define B1011100 92 +#define B01011100 92 +#define B1011101 93 +#define B01011101 93 +#define B1011110 94 +#define B01011110 94 +#define B1011111 95 +#define B01011111 95 +#define B1100000 96 +#define B01100000 96 +#define B1100001 97 +#define B01100001 97 +#define B1100010 98 +#define B01100010 98 +#define B1100011 99 +#define B01100011 99 +#define B1100100 100 +#define B01100100 100 +#define B1100101 101 +#define B01100101 101 +#define B1100110 102 +#define B01100110 102 +#define B1100111 103 +#define B01100111 103 +#define B1101000 104 +#define B01101000 104 +#define B1101001 105 +#define B01101001 105 +#define B1101010 106 +#define B01101010 106 +#define B1101011 107 +#define B01101011 107 +#define B1101100 108 +#define B01101100 108 +#define B1101101 109 +#define B01101101 109 +#define B1101110 110 +#define B01101110 110 +#define B1101111 111 +#define B01101111 111 +#define B1110000 112 +#define B01110000 112 +#define B1110001 113 +#define B01110001 113 +#define B1110010 114 +#define B01110010 114 +#define B1110011 115 +#define B01110011 115 +#define B1110100 116 +#define B01110100 116 +#define B1110101 117 +#define B01110101 117 +#define B1110110 118 +#define B01110110 118 +#define B1110111 119 +#define B01110111 119 +#define B1111000 120 +#define B01111000 120 +#define B1111001 121 +#define B01111001 121 +#define B1111010 122 +#define B01111010 122 +#define B1111011 123 +#define B01111011 123 +#define B1111100 124 +#define B01111100 124 +#define B1111101 125 +#define B01111101 125 +#define B1111110 126 +#define B01111110 126 +#define B1111111 127 +#define B01111111 127 +#define B10000000 128 +#define B10000001 129 +#define B10000010 130 +#define B10000011 131 +#define B10000100 132 +#define B10000101 133 +#define B10000110 134 +#define B10000111 135 +#define B10001000 136 +#define B10001001 137 +#define B10001010 138 +#define B10001011 139 +#define B10001100 140 +#define B10001101 141 +#define B10001110 142 +#define B10001111 143 +#define B10010000 144 +#define B10010001 145 +#define B10010010 146 +#define B10010011 147 +#define B10010100 148 +#define B10010101 149 +#define B10010110 150 +#define B10010111 151 +#define B10011000 152 +#define B10011001 153 +#define B10011010 154 +#define B10011011 155 +#define B10011100 156 +#define B10011101 157 +#define B10011110 158 +#define B10011111 159 +#define B10100000 160 +#define B10100001 161 +#define B10100010 162 +#define B10100011 163 +#define B10100100 164 +#define B10100101 165 +#define B10100110 166 +#define B10100111 167 +#define B10101000 168 +#define B10101001 169 +#define B10101010 170 +#define B10101011 171 +#define B10101100 172 +#define B10101101 173 +#define B10101110 174 +#define B10101111 175 +#define B10110000 176 +#define B10110001 177 +#define B10110010 178 +#define B10110011 179 +#define B10110100 180 +#define B10110101 181 +#define B10110110 182 +#define B10110111 183 +#define B10111000 184 +#define B10111001 185 +#define B10111010 186 +#define B10111011 187 +#define B10111100 188 +#define B10111101 189 +#define B10111110 190 +#define B10111111 191 +#define B11000000 192 +#define B11000001 193 +#define B11000010 194 +#define B11000011 195 +#define B11000100 196 +#define B11000101 197 +#define B11000110 198 +#define B11000111 199 +#define B11001000 200 +#define B11001001 201 +#define B11001010 202 +#define B11001011 203 +#define B11001100 204 +#define B11001101 205 +#define B11001110 206 +#define B11001111 207 +#define B11010000 208 +#define B11010001 209 +#define B11010010 210 +#define B11010011 211 +#define B11010100 212 +#define B11010101 213 +#define B11010110 214 +#define B11010111 215 +#define B11011000 216 +#define B11011001 217 +#define B11011010 218 +#define B11011011 219 +#define B11011100 220 +#define B11011101 221 +#define B11011110 222 +#define B11011111 223 +#define B11100000 224 +#define B11100001 225 +#define B11100010 226 +#define B11100011 227 +#define B11100100 228 +#define B11100101 229 +#define B11100110 230 +#define B11100111 231 +#define B11101000 232 +#define B11101001 233 +#define B11101010 234 +#define B11101011 235 +#define B11101100 236 +#define B11101101 237 +#define B11101110 238 +#define B11101111 239 +#define B11110000 240 +#define B11110001 241 +#define B11110010 242 +#define B11110011 243 +#define B11110100 244 +#define B11110101 245 +#define B11110110 246 +#define B11110111 247 +#define B11111000 248 +#define B11111001 249 +#define B11111010 250 +#define B11111011 251 +#define B11111100 252 +#define B11111101 253 +#define B11111110 254 +#define B11111111 255 + +#endif diff --git a/arduinoSrc0022/main.cpp b/arduinoSrc0022/main.cpp new file mode 100644 index 0000000..cc6e81d --- /dev/null +++ b/arduinoSrc0022/main.cpp @@ -0,0 +1,14 @@ +#include + +int main(void) +{ + init(); + + setup(); + + for (;;) + loop(); + + return 0; +} + diff --git a/arduinoSrc0022/pins_arduino.c b/arduinoSrc0022/pins_arduino.c new file mode 100644 index 0000000..0c816e9 --- /dev/null +++ b/arduinoSrc0022/pins_arduino.c @@ -0,0 +1,465 @@ +/* + pins_arduino.c - pin definitions for the Arduino board + Part of Arduino / Wiring Lite + + Copyright (c) 2005 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +#include +#include "wiring_private.h" +#include "pins_arduino.h" + +// On the Arduino board, digital pins are also used +// for the analog output (software PWM). Analog input +// pins are a separate set. + +// ATMEL ATMEGA8 & 168 / ARDUINO +// +// +-\/-+ +// PC6 1| |28 PC5 (AI 5) +// (D 0) PD0 2| |27 PC4 (AI 4) +// (D 1) PD1 3| |26 PC3 (AI 3) +// (D 2) PD2 4| |25 PC2 (AI 2) +// PWM+ (D 3) PD3 5| |24 PC1 (AI 1) +// (D 4) PD4 6| |23 PC0 (AI 0) +// VCC 7| |22 GND +// GND 8| |21 AREF +// PB6 9| |20 AVCC +// PB7 10| |19 PB5 (D 13) +// PWM+ (D 5) PD5 11| |18 PB4 (D 12) +// PWM+ (D 6) PD6 12| |17 PB3 (D 11) PWM +// (D 7) PD7 13| |16 PB2 (D 10) PWM +// (D 8) PB0 14| |15 PB1 (D 9) PWM +// +----+ +// +// (PWM+ indicates the additional PWM pins on the ATmega168.) + +// ATMEL ATMEGA1280 / ARDUINO +// +// 0-7 PE0-PE7 works +// 8-13 PB0-PB5 works +// 14-21 PA0-PA7 works +// 22-29 PH0-PH7 works +// 30-35 PG5-PG0 works +// 36-43 PC7-PC0 works +// 44-51 PJ7-PJ0 works +// 52-59 PL7-PL0 works +// 60-67 PD7-PD0 works +// A0-A7 PF0-PF7 +// A8-A15 PK0-PK7 + +#define PA 1 +#define PB 2 +#define PC 3 +#define PD 4 +#define PE 5 +#define PF 6 +#define PG 7 +#define PH 8 +#define PJ 10 +#define PK 11 +#define PL 12 + + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +const uint16_t PROGMEM port_to_mode_PGM[] = { + NOT_A_PORT, + &DDRA, + &DDRB, + &DDRC, + &DDRD, + &DDRE, + &DDRF, + &DDRG, + &DDRH, + NOT_A_PORT, + &DDRJ, + &DDRK, + &DDRL, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = { + NOT_A_PORT, + &PORTA, + &PORTB, + &PORTC, + &PORTD, + &PORTE, + &PORTF, + &PORTG, + &PORTH, + NOT_A_PORT, + &PORTJ, + &PORTK, + &PORTL, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PIN, + &PINA, + &PINB, + &PINC, + &PIND, + &PINE, + &PINF, + &PING, + &PINH, + NOT_A_PIN, + &PINJ, + &PINK, + &PINL, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = { + // PORTLIST + // ------------------------------------------- + PE , // PE 0 ** 0 ** USART0_RX + PE , // PE 1 ** 1 ** USART0_TX + PE , // PE 4 ** 2 ** PWM2 + PE , // PE 5 ** 3 ** PWM3 + PG , // PG 5 ** 4 ** PWM4 + PE , // PE 3 ** 5 ** PWM5 + PH , // PH 3 ** 6 ** PWM6 + PH , // PH 4 ** 7 ** PWM7 + PH , // PH 5 ** 8 ** PWM8 + PH , // PH 6 ** 9 ** PWM9 + PB , // PB 4 ** 10 ** PWM10 + PB , // PB 5 ** 11 ** PWM11 + PB , // PB 6 ** 12 ** PWM12 + PB , // PB 7 ** 13 ** PWM13 + PJ , // PJ 1 ** 14 ** USART3_TX + PJ , // PJ 0 ** 15 ** USART3_RX + PH , // PH 1 ** 16 ** USART2_TX + PH , // PH 0 ** 17 ** USART2_RX + PD , // PD 3 ** 18 ** USART1_TX + PD , // PD 2 ** 19 ** USART1_RX + PD , // PD 1 ** 20 ** I2C_SDA + PD , // PD 0 ** 21 ** I2C_SCL + PA , // PA 0 ** 22 ** D22 + PA , // PA 1 ** 23 ** D23 + PA , // PA 2 ** 24 ** D24 + PA , // PA 3 ** 25 ** D25 + PA , // PA 4 ** 26 ** D26 + PA , // PA 5 ** 27 ** D27 + PA , // PA 6 ** 28 ** D28 + PA , // PA 7 ** 29 ** D29 + PC , // PC 7 ** 30 ** D30 + PC , // PC 6 ** 31 ** D31 + PC , // PC 5 ** 32 ** D32 + PC , // PC 4 ** 33 ** D33 + PC , // PC 3 ** 34 ** D34 + PC , // PC 2 ** 35 ** D35 + PC , // PC 1 ** 36 ** D36 + PC , // PC 0 ** 37 ** D37 + PD , // PD 7 ** 38 ** D38 + PG , // PG 2 ** 39 ** D39 + PG , // PG 1 ** 40 ** D40 + PG , // PG 0 ** 41 ** D41 + PL , // PL 7 ** 42 ** D42 + PL , // PL 6 ** 43 ** D43 + PL , // PL 5 ** 44 ** D44 + PL , // PL 4 ** 45 ** D45 + PL , // PL 3 ** 46 ** D46 + PL , // PL 2 ** 47 ** D47 + PL , // PL 1 ** 48 ** D48 + PL , // PL 0 ** 49 ** D49 + PB , // PB 3 ** 50 ** SPI_MISO + PB , // PB 2 ** 51 ** SPI_MOSI + PB , // PB 1 ** 52 ** SPI_SCK + PB , // PB 0 ** 53 ** SPI_SS + PF , // PF 0 ** 54 ** A0 + PF , // PF 1 ** 55 ** A1 + PF , // PF 2 ** 56 ** A2 + PF , // PF 3 ** 57 ** A3 + PF , // PF 4 ** 58 ** A4 + PF , // PF 5 ** 59 ** A5 + PF , // PF 6 ** 60 ** A6 + PF , // PF 7 ** 61 ** A7 + PK , // PK 0 ** 62 ** A8 + PK , // PK 1 ** 63 ** A9 + PK , // PK 2 ** 64 ** A10 + PK , // PK 3 ** 65 ** A11 + PK , // PK 4 ** 66 ** A12 + PK , // PK 5 ** 67 ** A13 + PK , // PK 6 ** 68 ** A14 + PK , // PK 7 ** 69 ** A15 +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { + // PIN IN PORT + // ------------------------------------------- + _BV( 0 ) , // PE 0 ** 0 ** USART0_RX + _BV( 1 ) , // PE 1 ** 1 ** USART0_TX + _BV( 4 ) , // PE 4 ** 2 ** PWM2 + _BV( 5 ) , // PE 5 ** 3 ** PWM3 + _BV( 5 ) , // PG 5 ** 4 ** PWM4 + _BV( 3 ) , // PE 3 ** 5 ** PWM5 + _BV( 3 ) , // PH 3 ** 6 ** PWM6 + _BV( 4 ) , // PH 4 ** 7 ** PWM7 + _BV( 5 ) , // PH 5 ** 8 ** PWM8 + _BV( 6 ) , // PH 6 ** 9 ** PWM9 + _BV( 4 ) , // PB 4 ** 10 ** PWM10 + _BV( 5 ) , // PB 5 ** 11 ** PWM11 + _BV( 6 ) , // PB 6 ** 12 ** PWM12 + _BV( 7 ) , // PB 7 ** 13 ** PWM13 + _BV( 1 ) , // PJ 1 ** 14 ** USART3_TX + _BV( 0 ) , // PJ 0 ** 15 ** USART3_RX + _BV( 1 ) , // PH 1 ** 16 ** USART2_TX + _BV( 0 ) , // PH 0 ** 17 ** USART2_RX + _BV( 3 ) , // PD 3 ** 18 ** USART1_TX + _BV( 2 ) , // PD 2 ** 19 ** USART1_RX + _BV( 1 ) , // PD 1 ** 20 ** I2C_SDA + _BV( 0 ) , // PD 0 ** 21 ** I2C_SCL + _BV( 0 ) , // PA 0 ** 22 ** D22 + _BV( 1 ) , // PA 1 ** 23 ** D23 + _BV( 2 ) , // PA 2 ** 24 ** D24 + _BV( 3 ) , // PA 3 ** 25 ** D25 + _BV( 4 ) , // PA 4 ** 26 ** D26 + _BV( 5 ) , // PA 5 ** 27 ** D27 + _BV( 6 ) , // PA 6 ** 28 ** D28 + _BV( 7 ) , // PA 7 ** 29 ** D29 + _BV( 7 ) , // PC 7 ** 30 ** D30 + _BV( 6 ) , // PC 6 ** 31 ** D31 + _BV( 5 ) , // PC 5 ** 32 ** D32 + _BV( 4 ) , // PC 4 ** 33 ** D33 + _BV( 3 ) , // PC 3 ** 34 ** D34 + _BV( 2 ) , // PC 2 ** 35 ** D35 + _BV( 1 ) , // PC 1 ** 36 ** D36 + _BV( 0 ) , // PC 0 ** 37 ** D37 + _BV( 7 ) , // PD 7 ** 38 ** D38 + _BV( 2 ) , // PG 2 ** 39 ** D39 + _BV( 1 ) , // PG 1 ** 40 ** D40 + _BV( 0 ) , // PG 0 ** 41 ** D41 + _BV( 7 ) , // PL 7 ** 42 ** D42 + _BV( 6 ) , // PL 6 ** 43 ** D43 + _BV( 5 ) , // PL 5 ** 44 ** D44 + _BV( 4 ) , // PL 4 ** 45 ** D45 + _BV( 3 ) , // PL 3 ** 46 ** D46 + _BV( 2 ) , // PL 2 ** 47 ** D47 + _BV( 1 ) , // PL 1 ** 48 ** D48 + _BV( 0 ) , // PL 0 ** 49 ** D49 + _BV( 3 ) , // PB 3 ** 50 ** SPI_MISO + _BV( 2 ) , // PB 2 ** 51 ** SPI_MOSI + _BV( 1 ) , // PB 1 ** 52 ** SPI_SCK + _BV( 0 ) , // PB 0 ** 53 ** SPI_SS + _BV( 0 ) , // PF 0 ** 54 ** A0 + _BV( 1 ) , // PF 1 ** 55 ** A1 + _BV( 2 ) , // PF 2 ** 56 ** A2 + _BV( 3 ) , // PF 3 ** 57 ** A3 + _BV( 4 ) , // PF 4 ** 58 ** A4 + _BV( 5 ) , // PF 5 ** 59 ** A5 + _BV( 6 ) , // PF 6 ** 60 ** A6 + _BV( 7 ) , // PF 7 ** 61 ** A7 + _BV( 0 ) , // PK 0 ** 62 ** A8 + _BV( 1 ) , // PK 1 ** 63 ** A9 + _BV( 2 ) , // PK 2 ** 64 ** A10 + _BV( 3 ) , // PK 3 ** 65 ** A11 + _BV( 4 ) , // PK 4 ** 66 ** A12 + _BV( 5 ) , // PK 5 ** 67 ** A13 + _BV( 6 ) , // PK 6 ** 68 ** A14 + _BV( 7 ) , // PK 7 ** 69 ** A15 +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { + // TIMERS + // ------------------------------------------- + NOT_ON_TIMER , // PE 0 ** 0 ** USART0_RX + NOT_ON_TIMER , // PE 1 ** 1 ** USART0_TX + TIMER3B , // PE 4 ** 2 ** PWM2 + TIMER3C , // PE 5 ** 3 ** PWM3 + TIMER0B , // PG 5 ** 4 ** PWM4 + TIMER3A , // PE 3 ** 5 ** PWM5 + TIMER4A , // PH 3 ** 6 ** PWM6 + TIMER4B , // PH 4 ** 7 ** PWM7 + TIMER4C , // PH 5 ** 8 ** PWM8 + TIMER2B , // PH 6 ** 9 ** PWM9 + TIMER2A , // PB 4 ** 10 ** PWM10 + TIMER1A , // PB 5 ** 11 ** PWM11 + TIMER1B , // PB 6 ** 12 ** PWM12 + TIMER0A , // PB 7 ** 13 ** PWM13 + NOT_ON_TIMER , // PJ 1 ** 14 ** USART3_TX + NOT_ON_TIMER , // PJ 0 ** 15 ** USART3_RX + NOT_ON_TIMER , // PH 1 ** 16 ** USART2_TX + NOT_ON_TIMER , // PH 0 ** 17 ** USART2_RX + NOT_ON_TIMER , // PD 3 ** 18 ** USART1_TX + NOT_ON_TIMER , // PD 2 ** 19 ** USART1_RX + NOT_ON_TIMER , // PD 1 ** 20 ** I2C_SDA + NOT_ON_TIMER , // PD 0 ** 21 ** I2C_SCL + NOT_ON_TIMER , // PA 0 ** 22 ** D22 + NOT_ON_TIMER , // PA 1 ** 23 ** D23 + NOT_ON_TIMER , // PA 2 ** 24 ** D24 + NOT_ON_TIMER , // PA 3 ** 25 ** D25 + NOT_ON_TIMER , // PA 4 ** 26 ** D26 + NOT_ON_TIMER , // PA 5 ** 27 ** D27 + NOT_ON_TIMER , // PA 6 ** 28 ** D28 + NOT_ON_TIMER , // PA 7 ** 29 ** D29 + NOT_ON_TIMER , // PC 7 ** 30 ** D30 + NOT_ON_TIMER , // PC 6 ** 31 ** D31 + NOT_ON_TIMER , // PC 5 ** 32 ** D32 + NOT_ON_TIMER , // PC 4 ** 33 ** D33 + NOT_ON_TIMER , // PC 3 ** 34 ** D34 + NOT_ON_TIMER , // PC 2 ** 35 ** D35 + NOT_ON_TIMER , // PC 1 ** 36 ** D36 + NOT_ON_TIMER , // PC 0 ** 37 ** D37 + NOT_ON_TIMER , // PD 7 ** 38 ** D38 + NOT_ON_TIMER , // PG 2 ** 39 ** D39 + NOT_ON_TIMER , // PG 1 ** 40 ** D40 + NOT_ON_TIMER , // PG 0 ** 41 ** D41 + NOT_ON_TIMER , // PL 7 ** 42 ** D42 + NOT_ON_TIMER , // PL 6 ** 43 ** D43 + TIMER5C , // PL 5 ** 44 ** D44 + TIMER5B , // PL 4 ** 45 ** D45 + TIMER5A , // PL 3 ** 46 ** D46 + NOT_ON_TIMER , // PL 2 ** 47 ** D47 + NOT_ON_TIMER , // PL 1 ** 48 ** D48 + NOT_ON_TIMER , // PL 0 ** 49 ** D49 + NOT_ON_TIMER , // PB 3 ** 50 ** SPI_MISO + NOT_ON_TIMER , // PB 2 ** 51 ** SPI_MOSI + NOT_ON_TIMER , // PB 1 ** 52 ** SPI_SCK + NOT_ON_TIMER , // PB 0 ** 53 ** SPI_SS + NOT_ON_TIMER , // PF 0 ** 54 ** A0 + NOT_ON_TIMER , // PF 1 ** 55 ** A1 + NOT_ON_TIMER , // PF 2 ** 56 ** A2 + NOT_ON_TIMER , // PF 3 ** 57 ** A3 + NOT_ON_TIMER , // PF 4 ** 58 ** A4 + NOT_ON_TIMER , // PF 5 ** 59 ** A5 + NOT_ON_TIMER , // PF 6 ** 60 ** A6 + NOT_ON_TIMER , // PF 7 ** 61 ** A7 + NOT_ON_TIMER , // PK 0 ** 62 ** A8 + NOT_ON_TIMER , // PK 1 ** 63 ** A9 + NOT_ON_TIMER , // PK 2 ** 64 ** A10 + NOT_ON_TIMER , // PK 3 ** 65 ** A11 + NOT_ON_TIMER , // PK 4 ** 66 ** A12 + NOT_ON_TIMER , // PK 5 ** 67 ** A13 + NOT_ON_TIMER , // PK 6 ** 68 ** A14 + NOT_ON_TIMER , // PK 7 ** 69 ** A15 +}; +#else +// these arrays map port names (e.g. port B) to the +// appropriate addresses for various functions (e.g. reading +// and writing) +const uint16_t PROGMEM port_to_mode_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + &DDRB, + &DDRC, + &DDRD, +}; + +const uint16_t PROGMEM port_to_output_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + &PORTB, + &PORTC, + &PORTD, +}; + +const uint16_t PROGMEM port_to_input_PGM[] = { + NOT_A_PORT, + NOT_A_PORT, + &PINB, + &PINC, + &PIND, +}; + +const uint8_t PROGMEM digital_pin_to_port_PGM[] = { + PD, /* 0 */ + PD, + PD, + PD, + PD, + PD, + PD, + PD, + PB, /* 8 */ + PB, + PB, + PB, + PB, + PB, + PC, /* 14 */ + PC, + PC, + PC, + PC, + PC, +}; + +const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = { + _BV(0), /* 0, port D */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(6), + _BV(7), + _BV(0), /* 8, port B */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), + _BV(0), /* 14, port C */ + _BV(1), + _BV(2), + _BV(3), + _BV(4), + _BV(5), +}; + +const uint8_t PROGMEM digital_pin_to_timer_PGM[] = { + NOT_ON_TIMER, /* 0 - port D */ + NOT_ON_TIMER, + NOT_ON_TIMER, + // on the ATmega168, digital pin 3 has hardware pwm +#if defined(__AVR_ATmega8__) + NOT_ON_TIMER, +#else + TIMER2B, +#endif + NOT_ON_TIMER, + // on the ATmega168, digital pins 5 and 6 have hardware pwm +#if defined(__AVR_ATmega8__) + NOT_ON_TIMER, + NOT_ON_TIMER, +#else + TIMER0B, + TIMER0A, +#endif + NOT_ON_TIMER, + NOT_ON_TIMER, /* 8 - port B */ + TIMER1A, + TIMER1B, +#if defined(__AVR_ATmega8__) + TIMER2, +#else + TIMER2A, +#endif + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, /* 14 - port C */ + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, + NOT_ON_TIMER, +}; +#endif diff --git a/arduinoSrc0022/pins_arduino.h b/arduinoSrc0022/pins_arduino.h new file mode 100644 index 0000000..bc931c5 --- /dev/null +++ b/arduinoSrc0022/pins_arduino.h @@ -0,0 +1,88 @@ +/* + pins_arduino.h - Pin definition functions for Arduino + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2007 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 249 2007-02-03 16:52:51Z mellis $ +*/ + +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include + +#define NOT_A_PIN 0 +#define NOT_A_PORT 0 + +#define NOT_ON_TIMER 0 +#define TIMER0A 1 +#define TIMER0B 2 +#define TIMER1A 3 +#define TIMER1B 4 +#define TIMER2 5 +#define TIMER2A 6 +#define TIMER2B 7 + +#define TIMER3A 8 +#define TIMER3B 9 +#define TIMER3C 10 +#define TIMER4A 11 +#define TIMER4B 12 +#define TIMER4C 13 +#define TIMER5A 14 +#define TIMER5B 15 +#define TIMER5C 16 + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +const static uint8_t SS = 53; +const static uint8_t MOSI = 51; +const static uint8_t MISO = 50; +const static uint8_t SCK = 52; +#else +const static uint8_t SS = 10; +const static uint8_t MOSI = 11; +const static uint8_t MISO = 12; +const static uint8_t SCK = 13; +#endif + +// On the ATmega1280, the addresses of some of the port registers are +// greater than 255, so we can't store them in uint8_t's. +extern const uint16_t PROGMEM port_to_mode_PGM[]; +extern const uint16_t PROGMEM port_to_input_PGM[]; +extern const uint16_t PROGMEM port_to_output_PGM[]; + +extern const uint8_t PROGMEM digital_pin_to_port_PGM[]; +// extern const uint8_t PROGMEM digital_pin_to_bit_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[]; +extern const uint8_t PROGMEM digital_pin_to_timer_PGM[]; + +// Get the bit location within the hardware port of the given virtual pin. +// This comes from the pins_*.c file for the active board configuration. +// +// These perform slightly better as macros compared to inline functions +// +#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) ) +#define digitalPinToBitMask(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM + (P) ) ) +#define digitalPinToTimer(P) ( pgm_read_byte( digital_pin_to_timer_PGM + (P) ) ) +#define analogInPinToBit(P) (P) +#define portOutputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_output_PGM + (P))) ) +#define portInputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_input_PGM + (P))) ) +#define portModeRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_mode_PGM + (P))) ) + +#endif diff --git a/arduinoSrc0022/wiring.c b/arduinoSrc0022/wiring.c new file mode 100644 index 0000000..b90d07e --- /dev/null +++ b/arduinoSrc0022/wiring.c @@ -0,0 +1,289 @@ +/* + wiring.c - Partial implementation of the Wiring API for the ATmega8. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +#include "wiring_private.h" + +// the prescaler is set so that timer0 ticks every 64 clock cycles, and the +// the overflow handler is called every 256 ticks. +#define MICROSECONDS_PER_TIMER0_OVERFLOW (clockCyclesToMicroseconds(64 * 256)) + +// the whole number of milliseconds per timer0 overflow +#define MILLIS_INC (MICROSECONDS_PER_TIMER0_OVERFLOW / 1000) + +// the fractional number of milliseconds per timer0 overflow. we shift right +// by three to fit these numbers into a byte. (for the clock speeds we care +// about - 8 and 16 MHz - this doesn't lose precision.) +#define FRACT_INC ((MICROSECONDS_PER_TIMER0_OVERFLOW % 1000) >> 3) +#define FRACT_MAX (1000 >> 3) + +volatile unsigned long timer0_overflow_count = 0; +volatile unsigned long timer0_millis = 0; +static unsigned char timer0_fract = 0; + +SIGNAL(TIMER0_OVF_vect) +{ + // copy these to local variables so they can be stored in registers + // (volatile variables must be read from memory on every access) + unsigned long m = timer0_millis; + unsigned char f = timer0_fract; + + m += MILLIS_INC; + f += FRACT_INC; + if (f >= FRACT_MAX) { + f -= FRACT_MAX; + m += 1; + } + + timer0_fract = f; + timer0_millis = m; + timer0_overflow_count++; +} + +unsigned long millis() +{ + unsigned long m; + uint8_t oldSREG = SREG; + + // disable interrupts while we read timer0_millis or we might get an + // inconsistent value (e.g. in the middle of a write to timer0_millis) + cli(); + m = timer0_millis; + SREG = oldSREG; + + return m; +} + +unsigned long micros() { + unsigned long m; + uint8_t oldSREG = SREG, t; + + cli(); + m = timer0_overflow_count; +#if defined(TCNT0) + t = TCNT0; +#elif defined(TCNT0L) + t = TCNT0L; +#else + #error TIMER 0 not defined +#endif + + +#ifdef TIFR0 + if ((TIFR0 & _BV(TOV0)) && (t < 255)) + m++; +#else + if ((TIFR & _BV(TOV0)) && (t < 255)) + m++; +#endif + + SREG = oldSREG; + + return ((m << 8) + t) * (64 / clockCyclesPerMicrosecond()); +} + +void delay(unsigned long ms) +{ + uint16_t start = (uint16_t)micros(); + + while (ms > 0) { + if (((uint16_t)micros() - start) >= 1000) { + ms--; + start += 1000; + } + } +} + +/* Delay for the given number of microseconds. Assumes a 8 or 16 MHz clock. */ +void delayMicroseconds(unsigned int us) +{ + // calling avrlib's delay_us() function with low values (e.g. 1 or + // 2 microseconds) gives delays longer than desired. + //delay_us(us); + +#if F_CPU >= 16000000L + // for the 16 MHz clock on most Arduino boards + + // for a one-microsecond delay, simply return. the overhead + // of the function call yields a delay of approximately 1 1/8 us. + if (--us == 0) + return; + + // the following loop takes a quarter of a microsecond (4 cycles) + // per iteration, so execute it four times for each microsecond of + // delay requested. + us <<= 2; + + // account for the time taken in the preceeding commands. + us -= 2; +#else + // for the 8 MHz internal clock on the ATmega168 + + // for a one- or two-microsecond delay, simply return. the overhead of + // the function calls takes more than two microseconds. can't just + // subtract two, since us is unsigned; we'd overflow. + if (--us == 0) + return; + if (--us == 0) + return; + + // the following loop takes half of a microsecond (4 cycles) + // per iteration, so execute it twice for each microsecond of + // delay requested. + us <<= 1; + + // partially compensate for the time taken by the preceeding commands. + // we can't subtract any more than this or we'd overflow w/ small delays. + us--; +#endif + + // busy wait + __asm__ __volatile__ ( + "1: sbiw %0,1" "\n\t" // 2 cycles + "brne 1b" : "=w" (us) : "0" (us) // 2 cycles + ); +} + +void init() +{ + // this needs to be called before setup() or some functions won't + // work there + sei(); + + // on the ATmega168, timer 0 is also used for fast hardware pwm + // (using phase-correct PWM would mean that timer 0 overflowed half as often + // resulting in different millis() behavior on the ATmega8 and ATmega168) +#if defined(TCCR0A) && defined(WGM01) + sbi(TCCR0A, WGM01); + sbi(TCCR0A, WGM00); +#endif + + // set timer 0 prescale factor to 64 +#if defined(__AVR_ATmega128__) + // CPU specific: different values for the ATmega128 + sbi(TCCR0, CS02); +#elif defined(TCCR0) && defined(CS01) && defined(CS00) + // this combination is for the standard atmega8 + sbi(TCCR0, CS01); + sbi(TCCR0, CS00); +#elif defined(TCCR0B) && defined(CS01) && defined(CS00) + // this combination is for the standard 168/328/1280/2560 + sbi(TCCR0B, CS01); + sbi(TCCR0B, CS00); +#elif defined(TCCR0A) && defined(CS01) && defined(CS00) + // this combination is for the __AVR_ATmega645__ series + sbi(TCCR0A, CS01); + sbi(TCCR0A, CS00); +#else + #error Timer 0 prescale factor 64 not set correctly +#endif + + // enable timer 0 overflow interrupt +#if defined(TIMSK) && defined(TOIE0) + sbi(TIMSK, TOIE0); +#elif defined(TIMSK0) && defined(TOIE0) + sbi(TIMSK0, TOIE0); +#else + #error Timer 0 overflow interrupt not set correctly +#endif + + // timers 1 and 2 are used for phase-correct hardware pwm + // this is better for motors as it ensures an even waveform + // note, however, that fast pwm mode can achieve a frequency of up + // 8 MHz (with a 16 MHz clock) at 50% duty cycle + + TCCR1B = 0; + + // set timer 1 prescale factor to 64 +#if defined(TCCR1B) && defined(CS11) && defined(CS10) + sbi(TCCR1B, CS11); + sbi(TCCR1B, CS10); +#elif defined(TCCR1) && defined(CS11) && defined(CS10) + sbi(TCCR1, CS11); + sbi(TCCR1, CS10); +#endif + // put timer 1 in 8-bit phase correct pwm mode +#if defined(TCCR1A) && defined(WGM10) + sbi(TCCR1A, WGM10); +#elif defined(TCCR1) + #warning this needs to be finished +#endif + + // set timer 2 prescale factor to 64 +#if defined(TCCR2) && defined(CS22) + sbi(TCCR2, CS22); +#elif defined(TCCR2B) && defined(CS22) + sbi(TCCR2B, CS22); +#else + #warning Timer 2 not finished (may not be present on this CPU) +#endif + + // configure timer 2 for phase correct pwm (8-bit) +#if defined(TCCR2) && defined(WGM20) + sbi(TCCR2, WGM20); +#elif defined(TCCR2A) && defined(WGM20) + sbi(TCCR2A, WGM20); +#else + #warning Timer 2 not finished (may not be present on this CPU) +#endif + +#if defined(TCCR3B) && defined(CS31) && defined(WGM30) + sbi(TCCR3B, CS31); // set timer 3 prescale factor to 64 + sbi(TCCR3B, CS30); + sbi(TCCR3A, WGM30); // put timer 3 in 8-bit phase correct pwm mode +#endif + +#if defined(TCCR4B) && defined(CS41) && defined(WGM40) + sbi(TCCR4B, CS41); // set timer 4 prescale factor to 64 + sbi(TCCR4B, CS40); + sbi(TCCR4A, WGM40); // put timer 4 in 8-bit phase correct pwm mode +#endif + +#if defined(TCCR5B) && defined(CS51) && defined(WGM50) + sbi(TCCR5B, CS51); // set timer 5 prescale factor to 64 + sbi(TCCR5B, CS50); + sbi(TCCR5A, WGM50); // put timer 5 in 8-bit phase correct pwm mode +#endif + +#if defined(ADCSRA) + // set a2d prescale factor to 128 + // 16 MHz / 128 = 125 KHz, inside the desired 50-200 KHz range. + // XXX: this will not work properly for other clock speeds, and + // this code should use F_CPU to determine the prescale factor. + sbi(ADCSRA, ADPS2); + sbi(ADCSRA, ADPS1); + sbi(ADCSRA, ADPS0); + + // enable a2d conversions + sbi(ADCSRA, ADEN); +#endif + + // the bootloader connects pins 0 and 1 to the USART; disconnect them + // here so they can be used as normal digital i/o; they will be + // reconnected in Serial.begin() +#if defined(UCSRB) + UCSRB = 0; +#elif defined(UCSR0B) + UCSR0B = 0; +#endif +} diff --git a/arduinoSrc0022/wiring.h b/arduinoSrc0022/wiring.h new file mode 100644 index 0000000..e29959b --- /dev/null +++ b/arduinoSrc0022/wiring.h @@ -0,0 +1,135 @@ +/* + wiring.h - Partial implementation of the Wiring API for the ATmega8. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id$ +*/ + +#ifndef Wiring_h +#define Wiring_h + +#include +#include +#include "binary.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#define HIGH 0x1 +#define LOW 0x0 + +#define INPUT 0x0 +#define OUTPUT 0x1 + +#define true 0x1 +#define false 0x0 + +#define PI 3.1415926535897932384626433832795 +#define HALF_PI 1.5707963267948966192313216916398 +#define TWO_PI 6.283185307179586476925286766559 +#define DEG_TO_RAD 0.017453292519943295769236907684886 +#define RAD_TO_DEG 57.295779513082320876798154814105 + +#define SERIAL 0x0 +#define DISPLAY 0x1 + +#define LSBFIRST 0 +#define MSBFIRST 1 + +#define CHANGE 1 +#define FALLING 2 +#define RISING 3 + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +#define INTERNAL1V1 2 +#define INTERNAL2V56 3 +#else +#define INTERNAL 3 +#endif +#define DEFAULT 1 +#define EXTERNAL 0 + +// undefine stdlib's abs if encountered +#ifdef abs +#undef abs +#endif + +#define min(a,b) ((a)<(b)?(a):(b)) +#define max(a,b) ((a)>(b)?(a):(b)) +#define abs(x) ((x)>0?(x):-(x)) +#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt))) +#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5)) +#define radians(deg) ((deg)*DEG_TO_RAD) +#define degrees(rad) ((rad)*RAD_TO_DEG) +#define sq(x) ((x)*(x)) + +#define interrupts() sei() +#define noInterrupts() cli() + +#define clockCyclesPerMicrosecond() ( F_CPU / 1000000L ) +#define clockCyclesToMicroseconds(a) ( ((a) * 1000L) / (F_CPU / 1000L) ) +#define microsecondsToClockCycles(a) ( ((a) * (F_CPU / 1000L)) / 1000L ) + +#define lowByte(w) ((uint8_t) ((w) & 0xff)) +#define highByte(w) ((uint8_t) ((w) >> 8)) + +#define bitRead(value, bit) (((value) >> (bit)) & 0x01) +#define bitSet(value, bit) ((value) |= (1UL << (bit))) +#define bitClear(value, bit) ((value) &= ~(1UL << (bit))) +#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit)) + + +typedef unsigned int word; + +#define bit(b) (1UL << (b)) + +typedef uint8_t boolean; +typedef uint8_t byte; + +void init(void); + +void pinMode(uint8_t, uint8_t); +void digitalWrite(uint8_t, uint8_t); +int digitalRead(uint8_t); +int analogRead(uint8_t); +void analogReference(uint8_t mode); +void analogWrite(uint8_t, int); + +unsigned long millis(void); +unsigned long micros(void); +void delay(unsigned long); +void delayMicroseconds(unsigned int us); +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout); + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val); +uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder); + +void attachInterrupt(uint8_t, void (*)(void), int mode); +void detachInterrupt(uint8_t); + +void setup(void); +void loop(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/arduinoSrc0022/wiring_analog.c b/arduinoSrc0022/wiring_analog.c new file mode 100644 index 0000000..d248f4c --- /dev/null +++ b/arduinoSrc0022/wiring_analog.c @@ -0,0 +1,259 @@ +/* + wiring_analog.c - analog input and output + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 28 September 2010 by Mark Sproul + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +uint8_t analog_reference = DEFAULT; + +void analogReference(uint8_t mode) +{ + // can't actually set the register here because the default setting + // will connect AVCC and the AREF pin, which would cause a short if + // there's something connected to AREF. + analog_reference = mode; +} + +int analogRead(uint8_t pin) +{ + uint8_t low, high; + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) + if (pin >= 54) pin -= 54; // allow for channel or pin numbers +#else + if (pin >= 14) pin -= 14; // allow for channel or pin numbers +#endif + +#if defined(ADCSRB) && defined(MUX5) + // the MUX5 bit of ADCSRB selects whether we're reading from channels + // 0 to 7 (MUX5 low) or 8 to 15 (MUX5 high). + ADCSRB = (ADCSRB & ~(1 << MUX5)) | (((pin >> 3) & 0x01) << MUX5); +#endif + + // set the analog reference (high two bits of ADMUX) and select the + // channel (low 4 bits). this also sets ADLAR (left-adjust result) + // to 0 (the default). +#if defined(ADMUX) + ADMUX = (analog_reference << 6) | (pin & 0x07); +#endif + + // without a delay, we seem to read from the wrong channel + //delay(1); + +#if defined(ADCSRA) && defined(ADCL) + // start the conversion + sbi(ADCSRA, ADSC); + + // ADSC is cleared when the conversion finishes + while (bit_is_set(ADCSRA, ADSC)); + + // we have to read ADCL first; doing so locks both ADCL + // and ADCH until ADCH is read. reading ADCL second would + // cause the results of each conversion to be discarded, + // as ADCL and ADCH would be locked when it completed. + low = ADCL; + high = ADCH; +#else + // we dont have an ADC, return 0 + low = 0; + high = 0; +#endif + + // combine the two bytes + return (high << 8) | low; +} + +// Right now, PWM output only works on the pins with +// hardware support. These are defined in the appropriate +// pins_*.c file. For the rest of the pins, we default +// to digital output. +void analogWrite(uint8_t pin, int val) +{ + // We need to make sure the PWM output is enabled for those pins + // that support it, as we turn it off when digitally reading or + // writing with them. Also, make sure the pin is in output mode + // for consistenty with Wiring, which doesn't require a pinMode + // call for the analog output pins. + pinMode(pin, OUTPUT); + if (val == 0) + { + digitalWrite(pin, LOW); + } + else if (val == 255) + { + digitalWrite(pin, HIGH); + } + else + { + switch(digitalPinToTimer(pin)) + { + // XXX fix needed for atmega8 + #if defined(TCCR0) && defined(COM00) && !defined(__AVR_ATmega8__) + case TIMER0A: + // connect pwm to pin on timer 0 + sbi(TCCR0, COM00); + OCR0 = val; // set pwm duty + break; + #endif + + #if defined(TCCR0A) && defined(COM0A1) + case TIMER0A: + // connect pwm to pin on timer 0, channel A + sbi(TCCR0A, COM0A1); + OCR0A = val; // set pwm duty + break; + #endif + + #if defined(TCCR0A) && defined(COM0B1) + case TIMER0B: + // connect pwm to pin on timer 0, channel B + sbi(TCCR0A, COM0B1); + OCR0B = val; // set pwm duty + break; + #endif + + #if defined(TCCR1A) && defined(COM1A1) + case TIMER1A: + // connect pwm to pin on timer 1, channel A + sbi(TCCR1A, COM1A1); + OCR1A = val; // set pwm duty + break; + #endif + + #if defined(TCCR1A) && defined(COM1B1) + case TIMER1B: + // connect pwm to pin on timer 1, channel B + sbi(TCCR1A, COM1B1); + OCR1B = val; // set pwm duty + break; + #endif + + #if defined(TCCR2) && defined(COM21) + case TIMER2: + // connect pwm to pin on timer 2 + sbi(TCCR2, COM21); + OCR2 = val; // set pwm duty + break; + #endif + + #if defined(TCCR2A) && defined(COM2A1) + case TIMER2A: + // connect pwm to pin on timer 2, channel A + sbi(TCCR2A, COM2A1); + OCR2A = val; // set pwm duty + break; + #endif + + #if defined(TCCR2A) && defined(COM2B1) + case TIMER2B: + // connect pwm to pin on timer 2, channel B + sbi(TCCR2A, COM2B1); + OCR2B = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3A1) + case TIMER3A: + // connect pwm to pin on timer 3, channel A + sbi(TCCR3A, COM3A1); + OCR3A = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3B1) + case TIMER3B: + // connect pwm to pin on timer 3, channel B + sbi(TCCR3A, COM3B1); + OCR3B = val; // set pwm duty + break; + #endif + + #if defined(TCCR3A) && defined(COM3C1) + case TIMER3C: + // connect pwm to pin on timer 3, channel C + sbi(TCCR3A, COM3C1); + OCR3C = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4A1) + case TIMER4A: + // connect pwm to pin on timer 4, channel A + sbi(TCCR4A, COM4A1); + OCR4A = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4B1) + case TIMER4B: + // connect pwm to pin on timer 4, channel B + sbi(TCCR4A, COM4B1); + OCR4B = val; // set pwm duty + break; + #endif + + #if defined(TCCR4A) && defined(COM4C1) + case TIMER4C: + // connect pwm to pin on timer 4, channel C + sbi(TCCR4A, COM4C1); + OCR4C = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5A1) + case TIMER5A: + // connect pwm to pin on timer 5, channel A + sbi(TCCR5A, COM5A1); + OCR5A = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5B1) + case TIMER5B: + // connect pwm to pin on timer 5, channel B + sbi(TCCR5A, COM5B1); + OCR5B = val; // set pwm duty + break; + #endif + + #if defined(TCCR5A) && defined(COM5C1) + case TIMER5C: + // connect pwm to pin on timer 5, channel C + sbi(TCCR5A, COM5C1); + OCR5C = val; // set pwm duty + break; + #endif + + case NOT_ON_TIMER: + default: + if (val < 128) { + digitalWrite(pin, LOW); + } else { + digitalWrite(pin, HIGH); + } + } + } +} diff --git a/arduinoSrc0022/wiring_digital.c b/arduinoSrc0022/wiring_digital.c new file mode 100644 index 0000000..0949da4 --- /dev/null +++ b/arduinoSrc0022/wiring_digital.c @@ -0,0 +1,166 @@ +/* + wiring_digital.c - digital input and output functions + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + Modified 28 September 2010 by Mark Sproul + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +void pinMode(uint8_t pin, uint8_t mode) +{ + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *reg; + + if (port == NOT_A_PIN) return; + + // JWS: can I let the optimizer do this? + reg = portModeRegister(port); + + if (mode == INPUT) { + uint8_t oldSREG = SREG; + cli(); + *reg &= ~bit; + SREG = oldSREG; + } else { + uint8_t oldSREG = SREG; + cli(); + *reg |= bit; + SREG = oldSREG; + } +} + +// Forcing this inline keeps the callers from having to push their own stuff +// on the stack. It is a good performance win and only takes 1 more byte per +// user than calling. (It will take more bytes on the 168.) +// +// But shouldn't this be moved into pinMode? Seems silly to check and do on +// each digitalread or write. +// +// Mark Sproul: +// - Removed inline. Save 170 bytes on atmega1280 +// - changed to a switch statment; added 32 bytes but much easier to read and maintain. +// - Added more #ifdefs, now compiles for atmega645 +// +//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) + { + #if defined(TCCR1A) && defined(COM1A1) + case TIMER1A: cbi(TCCR1A, COM1A1); break; + #endif + #if defined(TCCR1A) && defined(COM1B1) + case TIMER1B: cbi(TCCR1A, COM1B1); break; + #endif + + #if defined(TCCR2) && defined(COM21) + case TIMER2: cbi(TCCR2, COM21); break; + #endif + + #if defined(TCCR0A) && defined(COM0A1) + case TIMER0A: cbi(TCCR0A, COM0A1); break; + #endif + + #if defined(TIMER0B) && defined(COM0B1) + case TIMER0B: cbi(TCCR0A, COM0B1); break; + #endif + #if defined(TCCR2A) && defined(COM2A1) + case TIMER2A: cbi(TCCR2A, COM2A1); break; + #endif + #if defined(TCCR2A) && defined(COM2B1) + case TIMER2B: cbi(TCCR2A, COM2B1); break; + #endif + + #if defined(TCCR3A) && defined(COM3A1) + case TIMER3A: cbi(TCCR3A, COM3A1); break; + #endif + #if defined(TCCR3A) && defined(COM3B1) + case TIMER3B: cbi(TCCR3A, COM3B1); break; + #endif + #if defined(TCCR3A) && defined(COM3C1) + case TIMER3C: cbi(TCCR3A, COM3C1); break; + #endif + + #if defined(TCCR4A) && defined(COM4A1) + case TIMER4A: cbi(TCCR4A, COM4A1); break; + #endif + #if defined(TCCR4A) && defined(COM4B1) + case TIMER4B: cbi(TCCR4A, COM4B1); break; + #endif + #if defined(TCCR4A) && defined(COM4C1) + case TIMER4C: cbi(TCCR4A, COM4C1); break; + #endif + #if defined(TCCR5A) + case TIMER5A: cbi(TCCR5A, COM5A1); break; + case TIMER5B: cbi(TCCR5A, COM5B1); break; + case TIMER5C: cbi(TCCR5A, COM5C1); break; + #endif + } +} + +void digitalWrite(uint8_t pin, uint8_t val) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + volatile uint8_t *out; + + if (port == NOT_A_PIN) return; + + // 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); + + out = portOutputRegister(port); + + if (val == LOW) { + uint8_t oldSREG = SREG; + cli(); + *out &= ~bit; + SREG = oldSREG; + } else { + uint8_t oldSREG = SREG; + cli(); + *out |= bit; + SREG = oldSREG; + } +} + +int digitalRead(uint8_t pin) +{ + uint8_t timer = digitalPinToTimer(pin); + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + + if (port == NOT_A_PIN) return LOW; + + // 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); + + if (*portInputRegister(port) & bit) return HIGH; + return LOW; +} diff --git a/arduinoSrc0022/wiring_private.h b/arduinoSrc0022/wiring_private.h new file mode 100644 index 0000000..11f6f00 --- /dev/null +++ b/arduinoSrc0022/wiring_private.h @@ -0,0 +1,68 @@ +/* + wiring_private.h - Internal header file. + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.h 239 2007-01-12 17:58:39Z mellis $ +*/ + +#ifndef WiringPrivate_h +#define WiringPrivate_h + +#include +#include +#include +#include +#include + +#include "wiring.h" + +#ifdef __cplusplus +extern "C"{ +#endif + +#ifndef cbi +#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit)) +#endif +#ifndef sbi +#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit)) +#endif + +#define EXTERNAL_INT_0 0 +#define EXTERNAL_INT_1 1 +#define EXTERNAL_INT_2 2 +#define EXTERNAL_INT_3 3 +#define EXTERNAL_INT_4 4 +#define EXTERNAL_INT_5 5 +#define EXTERNAL_INT_6 6 +#define EXTERNAL_INT_7 7 + +#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) +#define EXTERNAL_NUM_INTERRUPTS 8 +#else +#define EXTERNAL_NUM_INTERRUPTS 2 +#endif + +typedef void (*voidFuncPtr)(void); + +#ifdef __cplusplus +} // extern "C" +#endif + +#endif diff --git a/arduinoSrc0022/wiring_pulse.c b/arduinoSrc0022/wiring_pulse.c new file mode 100644 index 0000000..0d96886 --- /dev/null +++ b/arduinoSrc0022/wiring_pulse.c @@ -0,0 +1,69 @@ +/* + wiring_pulse.c - pulseIn() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" +#include "pins_arduino.h" + +/* Measures the length (in microseconds) of a pulse on the pin; state is HIGH + * or LOW, the type of pulse to measure. Works on pulses from 2-3 microseconds + * to 3 minutes in length, but must be called at least a few dozen microseconds + * before the start of the pulse. */ +unsigned long pulseIn(uint8_t pin, uint8_t state, unsigned long timeout) +{ + // cache the port and bit of the pin in order to speed up the + // pulse width measuring loop and achieve finer resolution. calling + // digitalRead() instead yields much coarser resolution. + uint8_t bit = digitalPinToBitMask(pin); + uint8_t port = digitalPinToPort(pin); + uint8_t stateMask = (state ? bit : 0); + unsigned long width = 0; // keep initialization out of time critical area + + // convert the timeout from microseconds to a number of times through + // the initial loop; it takes 16 clock cycles per iteration. + unsigned long numloops = 0; + unsigned long maxloops = microsecondsToClockCycles(timeout) / 16; + + // wait for any previous pulse to end + while ((*portInputRegister(port) & bit) == stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to start + while ((*portInputRegister(port) & bit) != stateMask) + if (numloops++ == maxloops) + return 0; + + // wait for the pulse to stop + while ((*portInputRegister(port) & bit) == stateMask) { + if (numloops++ == maxloops) + return 0; + width++; + } + + // convert the reading to microseconds. The loop has been determined + // to be 20 clock cycles long and have about 16 clocks between the edge + // and the start of the loop. There will be some error introduced by + // the interrupt handlers. + return clockCyclesToMicroseconds(width * 21 + 16); +} diff --git a/arduinoSrc0022/wiring_shift.c b/arduinoSrc0022/wiring_shift.c new file mode 100644 index 0000000..cfe7867 --- /dev/null +++ b/arduinoSrc0022/wiring_shift.c @@ -0,0 +1,55 @@ +/* + wiring_shift.c - shiftOut() function + Part of Arduino - http://www.arduino.cc/ + + Copyright (c) 2005-2006 David A. Mellis + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General + Public License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place, Suite 330, + Boston, MA 02111-1307 USA + + $Id: wiring.c 248 2007-02-03 15:36:30Z mellis $ +*/ + +#include "wiring_private.h" + +uint8_t shiftIn(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder) { + uint8_t value = 0; + uint8_t i; + + for (i = 0; i < 8; ++i) { + digitalWrite(clockPin, HIGH); + if (bitOrder == LSBFIRST) + value |= digitalRead(dataPin) << i; + else + value |= digitalRead(dataPin) << (7 - i); + digitalWrite(clockPin, LOW); + } + return value; +} + +void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val) +{ + uint8_t i; + + for (i = 0; i < 8; i++) { + if (bitOrder == LSBFIRST) + digitalWrite(dataPin, !!(val & (1 << i))); + else + digitalWrite(dataPin, !!(val & (1 << (7 - i)))); + + digitalWrite(clockPin, HIGH); + digitalWrite(clockPin, LOW); + } +} diff --git a/arduino_libs/ArduinoSerialManager.zip b/arduino_libs/ArduinoSerialManager.zip new file mode 100644 index 0000000..7693b72 Binary files /dev/null and b/arduino_libs/ArduinoSerialManager.zip differ diff --git a/arduino_libs/ByteBuffer/.svn/all-wcprops b/arduino_libs/ByteBuffer/.svn/all-wcprops new file mode 100755 index 0000000..de5c62d --- /dev/null +++ b/arduino_libs/ByteBuffer/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 55 +/r/prg/!svn/ver/5368/trunk/arduino/libraries/ByteBuffer +END +ByteBuffer.h +K 25 +svn:wc:ra_dav:version-url +V 68 +/r/prg/!svn/ver/5368/trunk/arduino/libraries/ByteBuffer/ByteBuffer.h +END +ByteBuffer.cpp +K 25 +svn:wc:ra_dav:version-url +V 70 +/r/prg/!svn/ver/5812/trunk/arduino/libraries/ByteBuffer/ByteBuffer.cpp +END diff --git a/arduino_libs/ByteBuffer/.svn/entries b/arduino_libs/ByteBuffer/.svn/entries new file mode 100755 index 0000000..4c4a628 --- /dev/null +++ b/arduino_libs/ByteBuffer/.svn/entries @@ -0,0 +1,120 @@ +10 + +dir +5368 +https://svn.media.mit.edu/r/prg/trunk/arduino/libraries/ByteBuffer +https://svn.media.mit.edu/r/prg + + + +2010-07-20T00:54:42.918731Z +5368 +siggi + + + + + + + + + + + + + + +bd000cc4-1869-4481-ad02-c3af97ea9c83 + +ByteBuffer.h +file + + + + +2010-07-19T22:27:55.000000Z +3b6d84df8e69905675772beb574cce67 +2010-07-20T00:54:42.918731Z +5368 +siggi + + + + + + + + + + + + + + + + + + + + + +844 + +SerialPacketHandler.cpp +file +5810 + + + + + + + + + + + + + + + + + + + +deleted + +ByteBuffer.cpp +file +5812 + + + +2010-09-02T16:31:44.000000Z +d95900d573ac73c8ccf95b384f8ec258 +2010-09-02T18:42:42.362483Z +5812 +siggi + + + + + + + + + + + + + + + + + + + + + +3483 + diff --git a/arduino_libs/ByteBuffer/.svn/text-base/ByteBuffer.cpp.svn-base b/arduino_libs/ByteBuffer/.svn/text-base/ByteBuffer.cpp.svn-base new file mode 100755 index 0000000..b91a586 --- /dev/null +++ b/arduino_libs/ByteBuffer/.svn/text-base/ByteBuffer.cpp.svn-base @@ -0,0 +1,205 @@ +/* + ByteBuffer.cpp - A circular buffer implementation for Arduino + Created by Sigurdur Orn, July 19, 2010. + */ + +#include "WProgram.h" +#include "ByteBuffer.h" + + +ByteBuffer::ByteBuffer(){ + +} + +void ByteBuffer::init(unsigned int buf_length){ + data = (byte*)malloc(sizeof(byte)*buf_length); + float_bytes = (byte*)malloc(sizeof(byte)*8); + capacity = buf_length; + position = 0; + length = 0; +} + +void ByteBuffer::clear(){ + position = 0; + length = 0; +} + +int ByteBuffer::getSize(){ + return length; +} + +int ByteBuffer::getCapacity(){ + return capacity; +} + +byte ByteBuffer::peek(unsigned int index){ + byte b = data[(position+index)%capacity]; + return b; +} + +int ByteBuffer::put(byte in){ + if(length < capacity){ + // save data byte at end of buffer + data[(position+length) % capacity] = in; + // increment the length + length++; + return 1; + } + // return failure + return 0; +} + +int ByteBuffer::putInFront(byte in){ + if(length < capacity){ + // save data byte at end of buffer + if( position == 0 ) + position = capacity-1; + else + position = (position-1)%capacity; + data[position] = in; + // increment the length + length++; + return 1; + } + // return failure + return 0; +} + +byte ByteBuffer::get(){ + byte b = 0; + if(length > 0){ + b = data[position]; + // move index down and decrement length + position = (position+1)%capacity; + length--; + } + + return b; +} + +byte ByteBuffer::getFromBack(){ + byte b = 0; + if(length > 0){ + b = data[(position+length-1)%capacity]; + length--; + } + + return b; +} + +// +// Ints +// + +int ByteBuffer::putIntInFront(int in){ + byte *pointer = (byte *)∈ + putInFront(pointer[0]); + putInFront(pointer[1]); +} + +int ByteBuffer::putInt(int in){ + byte *pointer = (byte *)∈ + put(pointer[1]); + put(pointer[0]); +} + + +int ByteBuffer::getInt(){ + int ret; + byte *pointer = (byte *)&ret; + pointer[1] = get(); + pointer[0] = get(); + return ret; +} + +int ByteBuffer::getIntFromBack(){ + int ret; + byte *pointer = (byte *)&ret; + pointer[0] = getFromBack(); + pointer[1] = getFromBack(); + return ret; +} + +// +// Longs +// + +int ByteBuffer::putLongInFront(long in){ + byte *pointer = (byte *)∈ + putInFront(pointer[0]); + putInFront(pointer[1]); + putInFront(pointer[2]); + putInFront(pointer[3]); +} + +int ByteBuffer::putLong(long in){ + byte *pointer = (byte *)∈ + put(pointer[3]); + put(pointer[2]); + put(pointer[1]); + put(pointer[0]); +} + + +long ByteBuffer::getLong(){ + long ret; + byte *pointer = (byte *)&ret; + pointer[3] = get(); + pointer[2] = get(); + pointer[1] = get(); + pointer[0] = get(); + return ret; +} + +long ByteBuffer::getLongFromBack(){ + long ret; + byte *pointer = (byte *)&ret; + pointer[0] = getFromBack(); + pointer[1] = getFromBack(); + pointer[2] = getFromBack(); + pointer[3] = getFromBack(); + return ret; +} + + +// +// Floats +// + +int ByteBuffer::putFloatInFront(float in){ + byte *pointer = (byte *)∈ + putInFront(pointer[0]); + putInFront(pointer[1]); + putInFront(pointer[2]); + putInFront(pointer[3]); +} + +int ByteBuffer::putFloat(float in){ + byte *pointer = (byte *)∈ + put(pointer[3]); + put(pointer[2]); + put(pointer[1]); + put(pointer[0]); +} + +float ByteBuffer::getFloat(){ + float ret; + byte *pointer = (byte *)&ret; + pointer[3] = get(); + pointer[2] = get(); + pointer[1] = get(); + pointer[0] = get(); + return ret; +} + +float ByteBuffer::getFloatFromBack(){ + float ret; + byte *pointer = (byte *)&ret; + pointer[0] = getFromBack(); + pointer[1] = getFromBack(); + pointer[2] = getFromBack(); + pointer[3] = getFromBack(); + return ret; +} + + diff --git a/arduino_libs/ByteBuffer/.svn/text-base/ByteBuffer.h.svn-base b/arduino_libs/ByteBuffer/.svn/text-base/ByteBuffer.h.svn-base new file mode 100755 index 0000000..b100c2f --- /dev/null +++ b/arduino_libs/ByteBuffer/.svn/text-base/ByteBuffer.h.svn-base @@ -0,0 +1,57 @@ +/* + ByteBuffer.h - A circular buffer implementation for Arduino + Created by Sigurdur Orn, July 19, 2010. + */ +#ifndef ByteBuffer_h +#define ByteBuffer_h + +#include "WProgram.h" + +class ByteBuffer +{ +public: + ByteBuffer(); + + void init(unsigned int buf_size); + + void clear(); + int getSize(); + int getCapacity(); + + int putInFront(byte in); + int put(byte in); + + byte get(); + byte getFromBack(); + + byte peek(unsigned int index); + + int putIntInFront(int in); + int putInt(int in); + + int putLongInFront(long in); + int putLong(long in); + + int getInt(); + int getIntFromBack(); + + long getLong(); + long getLongFromBack(); + + int putFloatInFront(float in); + int putFloat(float in); + + float getFloat(); + float getFloatFromBack(); + +private: + byte* data; + byte* float_bytes; + + unsigned int capacity; + unsigned int position; + unsigned int length; +}; + +#endif + diff --git a/arduino_libs/ByteBuffer/ByteBuffer.cpp b/arduino_libs/ByteBuffer/ByteBuffer.cpp new file mode 100755 index 0000000..b151cef --- /dev/null +++ b/arduino_libs/ByteBuffer/ByteBuffer.cpp @@ -0,0 +1,212 @@ +/* + ByteBuffer.cpp - A circular buffer implementation for Arduino + Created by Sigurdur Orn, July 19, 2010. + siggi@mit.edu + */ + +#include +#include "WProgram.h" +#include "ByteBuffer.h" + + +ByteBuffer::ByteBuffer(){ + +} + +void ByteBuffer::init(unsigned int buf_length){ + data = (byte*)malloc(sizeof(byte)*buf_length); + capacity = buf_length; + position = 0; + length = 0; +} + +void ByteBuffer::deAllocate(){ + free(data); +} + +void ByteBuffer::clear(){ + position = 0; + length = 0; +} + +int ByteBuffer::getSize(){ + return length; +} + +int ByteBuffer::getCapacity(){ + return capacity; +} + +byte ByteBuffer::peek(unsigned int index){ + byte b = data[(position+index)%capacity]; + return b; +} + +int ByteBuffer::put(byte in){ + if(length < capacity){ + // save data byte at end of buffer + data[(position+length) % capacity] = in; + // increment the length + length++; + return 1; + } + // return failure + return 0; +} + +int ByteBuffer::putInFront(byte in){ + if(length < capacity){ + // save data byte at end of buffer + if( position == 0 ) + position = capacity-1; + else + position = (position-1)%capacity; + data[position] = in; + // increment the length + length++; + return 1; + } + // return failure + return 0; +} + +byte ByteBuffer::get(){ + byte b = 0; + + + if(length > 0){ + b = data[position]; + // move index down and decrement length + position = (position+1)%capacity; + length--; + } + + return b; +} + +byte ByteBuffer::getFromBack(){ + byte b = 0; + if(length > 0){ + b = data[(position+length-1)%capacity]; + length--; + } + + return b; +} + +// +// Ints +// + +int ByteBuffer::putIntInFront(int in){ + byte *pointer = (byte *)∈ + putInFront(pointer[0]); + putInFront(pointer[1]); +} + +int ByteBuffer::putInt(int in){ + byte *pointer = (byte *)∈ + put(pointer[1]); + put(pointer[0]); +} + + +int ByteBuffer::getInt(){ + int ret; + byte *pointer = (byte *)&ret; + pointer[1] = get(); + pointer[0] = get(); + return ret; +} + +int ByteBuffer::getIntFromBack(){ + int ret; + byte *pointer = (byte *)&ret; + pointer[0] = getFromBack(); + pointer[1] = getFromBack(); + return ret; +} + +// +// Longs +// + +int ByteBuffer::putLongInFront(long in){ + byte *pointer = (byte *)∈ + putInFront(pointer[0]); + putInFront(pointer[1]); + putInFront(pointer[2]); + putInFront(pointer[3]); +} + +int ByteBuffer::putLong(long in){ + byte *pointer = (byte *)∈ + put(pointer[3]); + put(pointer[2]); + put(pointer[1]); + put(pointer[0]); +} + + +long ByteBuffer::getLong(){ + long ret; + byte *pointer = (byte *)&ret; + pointer[3] = get(); + pointer[2] = get(); + pointer[1] = get(); + pointer[0] = get(); + return ret; +} + +long ByteBuffer::getLongFromBack(){ + long ret; + byte *pointer = (byte *)&ret; + pointer[0] = getFromBack(); + pointer[1] = getFromBack(); + pointer[2] = getFromBack(); + pointer[3] = getFromBack(); + return ret; +} + + +// +// Floats +// + +int ByteBuffer::putFloatInFront(float in){ + byte *pointer = (byte *)∈ + putInFront(pointer[0]); + putInFront(pointer[1]); + putInFront(pointer[2]); + putInFront(pointer[3]); +} + +int ByteBuffer::putFloat(float in){ + byte *pointer = (byte *)∈ + put(pointer[3]); + put(pointer[2]); + put(pointer[1]); + put(pointer[0]); +} + +float ByteBuffer::getFloat(){ + float ret; + byte *pointer = (byte *)&ret; + pointer[3] = get(); + pointer[2] = get(); + pointer[1] = get(); + pointer[0] = get(); + return ret; +} + +float ByteBuffer::getFloatFromBack(){ + float ret; + byte *pointer = (byte *)&ret; + pointer[0] = getFromBack(); + pointer[1] = getFromBack(); + pointer[2] = getFromBack(); + pointer[3] = getFromBack(); + return ret; +} + + diff --git a/arduino_libs/ByteBuffer/ByteBuffer.h b/arduino_libs/ByteBuffer/ByteBuffer.h new file mode 100755 index 0000000..f6b4e48 --- /dev/null +++ b/arduino_libs/ByteBuffer/ByteBuffer.h @@ -0,0 +1,74 @@ +/* + ByteBuffer.h - A circular buffer implementation for Arduino + Created by Sigurdur Orn, July 19, 2010. + siggi@mit.edu + */ + +#ifndef ByteBuffer_h +#define ByteBuffer_h + +#include "WProgram.h" + +class ByteBuffer +{ +public: + ByteBuffer(); + + // This method initializes the datastore of the buffer to a certain sizem the buffer should NOT be used before this call is made + void init(unsigned int buf_size); + + // This method resets the buffer into an original state (with no data) + void clear(); + + // This releases resources for this buffer, after this has been called the buffer should NOT be used + void deAllocate(); + + // Returns how much space is left in the buffer for more data + int getSize(); + + // Returns the maximum capacity of the buffer + int getCapacity(); + + // This method returns the byte that is located at index in the buffer but doesn't modify the buffer like the get methods (doesn't remove the retured byte from the buffer) + byte peek(unsigned int index); + + // + // Put methods, either a regular put in back or put in front + // + int putInFront(byte in); + int put(byte in); + + int putIntInFront(int in); + int putInt(int in); + + int putLongInFront(long in); + int putLong(long in); + + int putFloatInFront(float in); + int putFloat(float in); + + // + // Get methods, either a regular get from front or from back + // + byte get(); + byte getFromBack(); + + int getInt(); + int getIntFromBack(); + + long getLong(); + long getLongFromBack(); + + float getFloat(); + float getFloatFromBack(); + +private: + byte* data; + + unsigned int capacity; + unsigned int position; + unsigned int length; +}; + +#endif + diff --git a/arduino_libs/NewSoftSerial/Examples/NewSoftSerialTest/NewSoftSerialTest.pde b/arduino_libs/NewSoftSerial/Examples/NewSoftSerialTest/NewSoftSerialTest.pde new file mode 100644 index 0000000..0d9e815 --- /dev/null +++ b/arduino_libs/NewSoftSerial/Examples/NewSoftSerialTest/NewSoftSerialTest.pde @@ -0,0 +1,25 @@ + +#include + +NewSoftSerial mySerial(2, 3); + +void setup() +{ + Serial.begin(57600); + Serial.println("Goodnight moon!"); + + // set the data rate for the NewSoftSerial port + mySerial.begin(4800); + mySerial.println("Hello, world?"); +} + +void loop() // run over and over again +{ + + if (mySerial.available()) { + Serial.print((char)mySerial.read()); + } + if (Serial.available()) { + mySerial.print((char)Serial.read()); + } +} diff --git a/arduino_libs/NewSoftSerial/Examples/TwoNSSTest/TwoNSSTest.pde b/arduino_libs/NewSoftSerial/Examples/TwoNSSTest/TwoNSSTest.pde new file mode 100644 index 0000000..73aa991 --- /dev/null +++ b/arduino_libs/NewSoftSerial/Examples/TwoNSSTest/TwoNSSTest.pde @@ -0,0 +1,33 @@ +#include + +NewSoftSerial nss(2, 3); +NewSoftSerial nss2(4, 5); + +void setup() +{ + nss2.begin(4800); + nss.begin(4800); + Serial.begin(115200); +} + +void loop() +{ + // Every 10 seconds switch from + // one serial GPS device to the other + if ((millis() / 10000) % 2 == 0) + { + if (nss.available()) + { + Serial.print(nss.read(), BYTE); + } + } + + else + { + if (nss2.available()) + { + Serial.print(nss2.read(), BYTE); + } + } +} + diff --git a/arduino_libs/NewSoftSerial/NewSoftSerial.cpp b/arduino_libs/NewSoftSerial/NewSoftSerial.cpp new file mode 100644 index 0000000..463ab01 --- /dev/null +++ b/arduino_libs/NewSoftSerial/NewSoftSerial.cpp @@ -0,0 +1,539 @@ +/* +NewSoftSerial.cpp - Multi-instance software serial library +Copyright (c) 2006 David A. Mellis. All rights reserved. +-- Interrupt-driven receive and other improvements by ladyada +-- Tuning, circular buffer, derivation from class Print, + multi-instance support, porting to 8MHz processors, + various optimizations, PROGMEM delay tables, inverse logic and + direct port writing by Mikal Hart + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +The latest version of this library can always be found at +http://arduiniana.org. +*/ + +// When set, _DEBUG co-opts pins 11 and 13 for debugging with an +// oscilloscope or logic analyzer. Beware: it also slightly modifies +// the bit times, so don't rely on it too much at high baud rates +#define _DEBUG 0 +#define _DEBUG_PIN1 11 +#define _DEBUG_PIN2 13 +// +// Includes +// +#include +#include +#include "WConstants.h" +#include "pins_arduino.h" +#include "NewSoftSerial.h" + +// Abstractions for maximum portability between processors +// These are macros to associate pins to pin change interrupts +#if !defined(digitalPinToPCICR) // Courtesy Paul Stoffregen +#if defined(__AVR_ATmega168__) || defined(__AVR_ATmega328P__) +#define digitalPinToPCICR(p) (((p) >= 0 && (p) <= 21) ? (&PCICR) : ((uint8_t *)NULL)) +#define digitalPinToPCICRbit(p) (((p) <= 7) ? 2 : (((p) <= 13) ? 0 : 1)) +#define digitalPinToPCMSK(p) (((p) <= 7) ? (&PCMSK2) : (((p) <= 13) ? (&PCMSK0) : (((p) <= 21) ? (&PCMSK1) : ((uint8_t *)NULL)))) +#define digitalPinToPCMSKbit(p) (((p) <= 7) ? (p) : (((p) <= 13) ? ((p) - 8) : ((p) - 14))) +#else +#define digitalPinToPCICR(p) ((uint8_t *)NULL) +#define digitalPinToPCICRbit(p) 0 +#define digitalPinToPCMSK(p) ((uint8_t *)NULL) +#define digitalPinToPCMSKbit(p) 0 +#endif +#endif + +// +// Lookup table +// +typedef struct _DELAY_TABLE +{ + long baud; + unsigned short rx_delay_centering; + unsigned short rx_delay_intrabit; + unsigned short rx_delay_stopbit; + unsigned short tx_delay; +} DELAY_TABLE; + +#if F_CPU == 16000000 + +static const DELAY_TABLE PROGMEM table[] = +{ + // baud rxcenter rxintra rxstop tx + { 115200, 1, 17, 17, 12, }, + { 57600, 10, 37, 37, 33, }, + { 38400, 25, 57, 57, 54, }, + { 31250, 31, 70, 70, 68, }, + { 28800, 34, 77, 77, 74, }, + { 19200, 54, 117, 117, 114, }, + { 14400, 74, 156, 156, 153, }, + { 9600, 114, 236, 236, 233, }, + { 4800, 233, 474, 474, 471, }, + { 2400, 471, 950, 950, 947, }, + { 1200, 947, 1902, 1902, 1899, }, + { 300, 3804, 7617, 7617, 7614, }, +}; + +const int XMIT_START_ADJUSTMENT = 5; + +#elif F_CPU == 8000000 + +static const DELAY_TABLE table[] PROGMEM = +{ + // baud rxcenter rxintra rxstop tx + { 115200, 1, 5, 5, 3, }, + { 57600, 1, 15, 15, 13, }, + { 38400, 2, 25, 26, 23, }, + { 31250, 7, 32, 33, 29, }, + { 28800, 11, 35, 35, 32, }, + { 19200, 20, 55, 55, 52, }, + { 14400, 30, 75, 75, 72, }, + { 9600, 50, 114, 114, 112, }, + { 4800, 110, 233, 233, 230, }, + { 2400, 229, 472, 472, 469, }, + { 1200, 467, 948, 948, 945, }, + { 300, 1895, 3805, 3805, 3802, }, +}; + +const int XMIT_START_ADJUSTMENT = 4; + +#elif F_CPU == 20000000 + +// 20MHz support courtesy of the good people at macegr.com. +// Thanks, Garrett! + +static const DELAY_TABLE PROGMEM table[] = +{ + // baud rxcenter rxintra rxstop tx + { 115200, 3, 21, 21, 18, }, + { 57600, 20, 43, 43, 41, }, + { 38400, 37, 73, 73, 70, }, + { 31250, 45, 89, 89, 88, }, + { 28800, 46, 98, 98, 95, }, + { 19200, 71, 148, 148, 145, }, + { 14400, 96, 197, 197, 194, }, + { 9600, 146, 297, 297, 294, }, + { 4800, 296, 595, 595, 592, }, + { 2400, 592, 1189, 1189, 1186, }, + { 1200, 1187, 2379, 2379, 2376, }, + { 300, 4759, 9523, 9523, 9520, }, +}; + +const int XMIT_START_ADJUSTMENT = 6; + +#else + +#error This version of NewSoftSerial supports only 20, 16 and 8MHz processors + +#endif + +// +// Statics +// +NewSoftSerial *NewSoftSerial::active_object = 0; +char NewSoftSerial::_receive_buffer[_NewSS_MAX_RX_BUFF]; +volatile uint8_t NewSoftSerial::_receive_buffer_tail = 0; +volatile uint8_t NewSoftSerial::_receive_buffer_head = 0; + +// +// Debugging +// +// This function generates a brief pulse +// for debugging or measuring on an oscilloscope. +inline void DebugPulse(uint8_t pin, uint8_t count) +{ +#if _DEBUG + volatile uint8_t *pport = portOutputRegister(digitalPinToPort(pin)); + + uint8_t val = *pport; + while (count--) + { + *pport = val | digitalPinToBitMask(pin); + *pport = val; + } +#endif +} + +// +// Private methods +// + +/* static */ +inline void NewSoftSerial::tunedDelay(uint16_t delay) { + uint8_t tmp=0; + + asm volatile("sbiw %0, 0x01 \n\t" + "ldi %1, 0xFF \n\t" + "cpi %A0, 0xFF \n\t" + "cpc %B0, %1 \n\t" + "brne .-10 \n\t" + : "+r" (delay), "+a" (tmp) + : "0" (delay) + ); +} + +// This function sets the current object as the "active" +// one and returns true if it replaces another +bool NewSoftSerial::activate(void) +{ + if (active_object != this) + { + _buffer_overflow = false; + uint8_t oldSREG = SREG; + cli(); + _receive_buffer_head = _receive_buffer_tail = 0; + active_object = this; + SREG = oldSREG; + return true; + } + + return false; +} + +// +// The receive routine called by the interrupt handler +// +void NewSoftSerial::recv() +{ + +#if GCC_VERSION < 40302 +// Work-around for avr-gcc 4.3.0 OSX version bug +// Preserve the registers that the compiler misses +// (courtesy of Arduino forum user *etracer*) + asm volatile( + "push r18 \n\t" + "push r19 \n\t" + "push r20 \n\t" + "push r21 \n\t" + "push r22 \n\t" + "push r23 \n\t" + "push r26 \n\t" + "push r27 \n\t" + ::); +#endif + + uint8_t d = 0; + + // If RX line is high, then we don't see any start bit + // so interrupt is probably not for us + if (_inverse_logic ? rx_pin_read() : !rx_pin_read()) + { + // Wait approximately 1/2 of a bit width to "center" the sample + tunedDelay(_rx_delay_centering); + DebugPulse(_DEBUG_PIN2, 1); + + // Read each of the 8 bits + for (uint8_t i=0x1; i; i <<= 1) + { + tunedDelay(_rx_delay_intrabit); + DebugPulse(_DEBUG_PIN2, 1); + uint8_t noti = ~i; + if (rx_pin_read()) + d |= i; + else // else clause added to ensure function timing is ~balanced + d &= noti; + } + + // skip the stop bit + tunedDelay(_rx_delay_stopbit); + DebugPulse(_DEBUG_PIN2, 1); + + if (_inverse_logic) + d = ~d; + + // if buffer full, set the overflow flag and return + if ((_receive_buffer_tail + 1) % _NewSS_MAX_RX_BUFF != _receive_buffer_head) + { + // save new data in buffer: tail points to where byte goes + _receive_buffer[_receive_buffer_tail] = d; // save new byte + _receive_buffer_tail = (_receive_buffer_tail + 1) % _NewSS_MAX_RX_BUFF; + } + else + { +#if _DEBUG // for scope: pulse pin as overflow indictator + DebugPulse(_DEBUG_PIN1, 1); +#endif + _buffer_overflow = true; + } + } + +#if GCC_VERSION < 40302 +// Work-around for avr-gcc 4.3.0 OSX version bug +// Restore the registers that the compiler misses + asm volatile( + "pop r27 \n\t" + "pop r26 \n\t" + "pop r23 \n\t" + "pop r22 \n\t" + "pop r21 \n\t" + "pop r20 \n\t" + "pop r19 \n\t" + "pop r18 \n\t" + ::); +#endif +} + +void NewSoftSerial::tx_pin_write(uint8_t pin_state) +{ + if (pin_state == LOW) + *_transmitPortRegister &= ~_transmitBitMask; + else + *_transmitPortRegister |= _transmitBitMask; +} + +uint8_t NewSoftSerial::rx_pin_read() +{ + return *_receivePortRegister & _receiveBitMask; +} + +// +// Interrupt handling +// + +/* static */ +inline void NewSoftSerial::handle_interrupt() +{ + if (active_object) + { + active_object->recv(); + } +} + +#if defined(PCINT0_vect) +ISR(PCINT0_vect) +{ + NewSoftSerial::handle_interrupt(); +} +#endif + +#if defined(PCINT1_vect) +ISR(PCINT1_vect) +{ + NewSoftSerial::handle_interrupt(); +} +#endif + +#if defined(PCINT2_vect) +ISR(PCINT2_vect) +{ + NewSoftSerial::handle_interrupt(); +} +#endif + +#if defined(PCINT3_vect) +ISR(PCINT3_vect) +{ + NewSoftSerial::handle_interrupt(); +} +#endif + +// +// Constructor +// +NewSoftSerial::NewSoftSerial(uint8_t receivePin, uint8_t transmitPin, bool inverse_logic /* = false */) : + _rx_delay_centering(0), + _rx_delay_intrabit(0), + _rx_delay_stopbit(0), + _tx_delay(0), + _buffer_overflow(false), + _inverse_logic(inverse_logic) +{ + setTX(transmitPin); + setRX(receivePin); +} + +// +// Destructor +// +NewSoftSerial::~NewSoftSerial() +{ + end(); +} + +void NewSoftSerial::setTX(uint8_t tx) +{ + pinMode(tx, OUTPUT); + digitalWrite(tx, HIGH); + _transmitBitMask = digitalPinToBitMask(tx); + uint8_t port = digitalPinToPort(tx); + _transmitPortRegister = portOutputRegister(port); +} + +void NewSoftSerial::setRX(uint8_t rx) +{ + pinMode(rx, INPUT); + if (!_inverse_logic) + digitalWrite(rx, HIGH); // pullup for normal logic! + _receivePin = rx; + _receiveBitMask = digitalPinToBitMask(rx); + uint8_t port = digitalPinToPort(rx); + _receivePortRegister = portInputRegister(port); +} + +// +// Public methods +// + +void NewSoftSerial::begin(long speed) +{ + _rx_delay_centering = _rx_delay_intrabit = _rx_delay_stopbit = _tx_delay = 0; + + for (unsigned i=0; i +#include "Print.h" + +/****************************************************************************** +* Definitions +******************************************************************************/ + +#define _NewSS_MAX_RX_BUFF 64 // RX buffer size +#define _NewSS_VERSION 10 // software version of this library +#ifndef GCC_VERSION +#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) +#endif + +class NewSoftSerial : public Print +{ +private: + // per object data + uint8_t _receivePin; + uint8_t _receiveBitMask; + volatile uint8_t *_receivePortRegister; + uint8_t _transmitBitMask; + volatile uint8_t *_transmitPortRegister; + + uint16_t _rx_delay_centering; + uint16_t _rx_delay_intrabit; + uint16_t _rx_delay_stopbit; + uint16_t _tx_delay; + + uint16_t _buffer_overflow:1; + uint16_t _inverse_logic:1; + + // static data + static char _receive_buffer[_NewSS_MAX_RX_BUFF]; + static volatile uint8_t _receive_buffer_tail; + static volatile uint8_t _receive_buffer_head; + static NewSoftSerial *active_object; + + // private methods + void recv(); + bool activate(); + virtual void write(uint8_t byte); + uint8_t rx_pin_read(); + void tx_pin_write(uint8_t pin_state); + void setTX(uint8_t transmitPin); + void setRX(uint8_t receivePin); + + // private static method for timing + static inline void tunedDelay(uint16_t delay); + +public: + // public methods + NewSoftSerial(uint8_t receivePin, uint8_t transmitPin, bool inverse_logic = false); + ~NewSoftSerial(); + void begin(long speed); + void end(); + int read(); + uint8_t available(void); + bool active() { return this == active_object; } + bool overflow() { bool ret = _buffer_overflow; _buffer_overflow = false; return ret; } + static int library_version() { return _NewSS_VERSION; } + static void enable_timer0(bool enable); + void flush(); + + // public only for easy access by interrupt handlers + static inline void handle_interrupt(); +}; + +// Arduino 0012 workaround +#undef int +#undef char +#undef long +#undef byte +#undef float +#undef abs +#undef round + +#endif diff --git a/arduino_libs/NewSoftSerial/keywords.txt b/arduino_libs/NewSoftSerial/keywords.txt new file mode 100644 index 0000000..0a39bea --- /dev/null +++ b/arduino_libs/NewSoftSerial/keywords.txt @@ -0,0 +1,30 @@ +####################################### +# Syntax Coloring Map for NewSoftSerial +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +NewSoftSerial KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +setTX KEYWORD2 +setRX KEYWORD2 +begin KEYWORD2 +end KEYWORD2 +read KEYWORD2 +available KEYWORD2 +active KEYWORD2 +overflow KEYWORD2 +library_version KEYWORD2 +enable_timer0 KEYWORD2 +flush KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### + diff --git a/arduino_libs/SerialManager/.DS_Store b/arduino_libs/SerialManager/.DS_Store new file mode 100755 index 0000000..5008ddf Binary files /dev/null and b/arduino_libs/SerialManager/.DS_Store differ diff --git a/arduino_libs/SerialManager/.svn/all-wcprops b/arduino_libs/SerialManager/.svn/all-wcprops new file mode 100755 index 0000000..e920984 --- /dev/null +++ b/arduino_libs/SerialManager/.svn/all-wcprops @@ -0,0 +1,17 @@ +K 25 +svn:wc:ra_dav:version-url +V 58 +/r/prg/!svn/ver/5369/trunk/arduino/libraries/SerialManager +END +SerialManager.h +K 25 +svn:wc:ra_dav:version-url +V 74 +/r/prg/!svn/ver/5812/trunk/arduino/libraries/SerialManager/SerialManager.h +END +SerialManager.cpp +K 25 +svn:wc:ra_dav:version-url +V 76 +/r/prg/!svn/ver/5812/trunk/arduino/libraries/SerialManager/SerialManager.cpp +END diff --git a/arduino_libs/SerialManager/.svn/entries b/arduino_libs/SerialManager/.svn/entries new file mode 100755 index 0000000..a965507 --- /dev/null +++ b/arduino_libs/SerialManager/.svn/entries @@ -0,0 +1,144 @@ +10 + +dir +5369 +https://svn.media.mit.edu/r/prg/trunk/arduino/libraries/SerialManager +https://svn.media.mit.edu/r/prg + + + +2010-07-20T00:55:06.830758Z +5369 +siggi + + + + + + + + + + + + + + +bd000cc4-1869-4481-ad02-c3af97ea9c83 + +SerialManager.h +file +5812 + + + +2010-09-02T16:01:59.000000Z +81120736a5f09269c146fab073728dcf +2010-09-02T18:42:42.362483Z +5812 +siggi + + + + + + + + + + + + + + + + + + + + + +1242 + +SerialPacketHandler.cpp +file +5812 + + + + + + + + + + + + + + + + + + + +deleted + +SerialManager.cpp +file +5812 + + + +2010-09-02T16:02:09.000000Z +d7812d43c015d22e6970f3b8884d9b37 +2010-09-02T18:42:42.362483Z +5812 +siggi + + + + + + + + + + + + + + + + + + + + + +4793 + +SerialPacketHandler.h +file +5812 + + + + + + + + + + + + + + + + + + + +deleted + diff --git a/arduino_libs/SerialManager/.svn/text-base/SerialManager.cpp.svn-base b/arduino_libs/SerialManager/.svn/text-base/SerialManager.cpp.svn-base new file mode 100755 index 0000000..ed06dbc --- /dev/null +++ b/arduino_libs/SerialManager/.svn/text-base/SerialManager.cpp.svn-base @@ -0,0 +1,197 @@ +/* + SerialManager.cpp - Library for doing packetized serial comm with Arduinos. + Created by Sigurdur Orn, May 23, 2010. + */ + +#include "WProgram.h" +#include "SerialManager.h" +#include "ByteBuffer.h" + + +SerialManager::SerialManager(unsigned int in_buf_size, unsigned int out_buf_size){ + serial_in_checksum = 0; + + incoming_buffer = (ByteBuffer*)malloc(sizeof(ByteBuffer)); + outgoing_buffer = (ByteBuffer*)malloc(sizeof(ByteBuffer)); + temp_buffer = (ByteBuffer*)malloc(sizeof(ByteBuffer)); + + incoming_buffer->init(in_buf_size); + outgoing_buffer->init(out_buf_size); + temp_buffer->init(10); + + byte1 = 0; + byte2 = 0; + byte3 = 0; + byte4 = 0; + + handlePacketFunction = 0; +} + +void SerialManager::init(int serial_port, int baud_rate){ + _serial_port = serial_port; + + if( serial_port == 0) + Serial.begin(baud_rate); +#if defined(__AVR_ATmega1280__) + else if( serial_port == 1) + Serial1.begin(baud_rate); + else if( serial_port == 2) + Serial2.begin(baud_rate); + else if( serial_port == 3) + Serial3.begin(baud_rate); +#endif +} + + + +bool SerialManager::isBusySending(){ + return ( outgoing_buffer->getSize() > 0 ); +} + +// Sends a single byte +int SerialManager::sendSerialByte(byte b){ + return outgoing_buffer->put(b); +} + +// Sends a packet with a header and a checksum +int SerialManager::sendSerialPacket(ByteBuffer* packet_buffer){ + // Copy buffer and calc checksum + byte checksum = 0; + while( packet_buffer->getSize() > 0 ){ + byte b = packet_buffer->get(); + outgoing_buffer->put(b); + checksum += b; + } + + outgoing_buffer->put( checksum ); + outgoing_buffer->put( 1 ); + outgoing_buffer->put( 2 ); + outgoing_buffer->put( 3 ); + outgoing_buffer->put( 4 ); + + return 0; +} + +// Sends a raw packet with no header or checksum +int SerialManager::sendRawSerial(ByteBuffer* packet_buffer){ + while( packet_buffer->getSize() > 0 ){ + byte b = packet_buffer->get(); + outgoing_buffer->put(b); + } + + return 0; +} + +void SerialManager::update(){ + + // If we have received stuff + if( _serial_port == 0 ){ + while( Serial.available() != 0 ) { + byte incoming = Serial.read(); + handleIncomingByte(incoming); + } + } + +#if defined(__AVR_ATmega1280__) + else if( _serial_port == 1 ){ + while( Serial1.available() != 0 ) { + byte incoming = Serial1.read(); + handleIncomingByte(incoming); + } + } + else if( _serial_port == 2 ){ + while( Serial2.available() != 0 ) { + byte incoming = Serial2.read(); + handleIncomingByte(incoming); + } + } + else if( _serial_port == 3 ){ + while( Serial3.available() != 0 ) { + byte incoming = Serial3.read(); + handleIncomingByte(incoming); + } + } +#endif + + + // If we should be sending stuff + if( outgoing_buffer->getSize() > 0 ){ + // If serial port not currently busy + if( _serial_port == 0 ) + if(((UCSRA) & (1 << UDRE)) ) Serial.write( outgoing_buffer->get() ); + +#if defined(__AVR_ATmega1280__) + else if( _serial_port == 1 ) + if(((UCSRA1) & (1 << UDRE1)) ) Serial1.write( outgoing_buffer->get() ); + else if( _serial_port == 2 ) + if(((UCSRA2) & (1 << UDRE2)) ) Serial2.write( outgoing_buffer->get() ); + else if( _serial_port == 3 ) + if(((UCSRA3) & (1 << UDRE3)) ) Serial3.write( outgoing_buffer->get() ); +#endif + } +} + +void SerialManager::setPacketHandler(void (*packetHandlerFunction)(ByteBuffer*)){ + handlePacketFunction = packetHandlerFunction; +} + + +void SerialManager::handleIncomingByte(byte incoming){ + + // If buffer overflows then reset (we could do something smarter here) +// if( incoming_buffer->getSize() == incoming_buffer->getCapacity() ){ +// incoming_buffer->clear(); +// } + + incoming_buffer->put( incoming ); + serial_in_checksum += incoming; + + byte1 = byte2; + byte2 = byte3; + byte3 = byte4; + byte4 = incoming; + + // If we have a full packet ready + if( byte1==1 && byte2==2 && byte3==3 && byte4==4 ){ + // Remove header from buffer + incoming_buffer->getFromBack(); + incoming_buffer->getFromBack(); + incoming_buffer->getFromBack(); + incoming_buffer->getFromBack(); + + byte checksum_received = incoming_buffer->getFromBack(); + + // Remove the whole header from the calculated checksum + serial_in_checksum -= checksum_received + 10; + + // If checksums don't match, then do something () + if( checksum_received != serial_in_checksum ){ + temp_buffer->clear(); + temp_buffer->put(123); + temp_buffer->put(234); + temp_buffer->put( checksum_received ); + temp_buffer->put( serial_in_checksum ); + sendSerialPacket(temp_buffer); + } + + // We have a successful packet + else{ + + if( handlePacketFunction != 0 ) + handlePacketFunction(incoming_buffer); + else + handlePacketDefault(incoming_buffer); + } + + // Clear variables + incoming_buffer->clear(); + serial_in_checksum = 0; + } + +} + +void SerialManager::handlePacketDefault(ByteBuffer* packet){ + // We could do something here like send the data to the host again for debug + // Or just do nothing + return; +} diff --git a/arduino_libs/SerialManager/.svn/text-base/SerialManager.h.svn-base b/arduino_libs/SerialManager/.svn/text-base/SerialManager.h.svn-base new file mode 100755 index 0000000..dcbdba6 --- /dev/null +++ b/arduino_libs/SerialManager/.svn/text-base/SerialManager.h.svn-base @@ -0,0 +1,63 @@ +/* + SerialManager.h - Library for doing packetized serial comm with Arduinos. + Created by Sigurdur Orn, May 23, 2010. + */ +#ifndef SerialManager_h +#define SerialManager_h + +#include "ByteBuffer.h" +#include "WProgram.h" + +typedef void (*voidFuncPtr)(ByteBuffer*); + +#if defined(__AVR_ATmega8__) + #define UCSRA UCSRA + #define UDRE UDRE +#else + #define UCSRA UCSR0A + #define UDRE UDRE0 +#endif + +#if defined(__AVR_ATmega1280__) + #define UCSRA1 UCSR1A + #define UDRE1 UDRE1 + #define UCSRA2 UCSR2A + #define UDRE2 UDRE2 + #define UCSRA3 UCSR3A + #define UDRE3 UDRE3 +#endif + + +class SerialManager +{ +public: + SerialManager(unsigned int in_buf_size, unsigned int out_buf_size); + void init(int serial_port, int baud_rate); + void setPacketHandler(void (*rx_func)(ByteBuffer*)); + + void update(); + bool isBusySending(); + + int sendSerialByte(byte b); + int sendSerialPacket(ByteBuffer* packet); + int sendRawSerial(ByteBuffer* packet); + +private: + void handleIncomingByte(byte incoming); + void handlePacketDefault(ByteBuffer* packet); + + voidFuncPtr handlePacketFunction; + + byte _serial_port; + ByteBuffer* incoming_buffer; + ByteBuffer* outgoing_buffer; + ByteBuffer* temp_buffer; + byte serial_in_checksum; + byte byte1; + byte byte2; + byte byte3; + byte byte4; +}; + +#endif + diff --git a/arduino_libs/SerialManager/SerialManager.cpp b/arduino_libs/SerialManager/SerialManager.cpp new file mode 100755 index 0000000..2e2d306 --- /dev/null +++ b/arduino_libs/SerialManager/SerialManager.cpp @@ -0,0 +1,193 @@ +/* + SerialManager.cpp - Library for doing packetized serial comm with Arduinos. + Created by Sigurdur Orn, May 23, 2010. + siggi@mit.edu + */ + +#include "WProgram.h" +#include "SerialManager.h" +#include "ByteBuffer.h" + + +SerialManager::SerialManager(unsigned int in_buf_size, unsigned int out_buf_size){ + serial_in_checksum = 0; + + incoming_buffer = (ByteBuffer*)malloc(sizeof(ByteBuffer)); + outgoing_buffer = (ByteBuffer*)malloc(sizeof(ByteBuffer)); + temp_buffer = (ByteBuffer*)malloc(sizeof(ByteBuffer)); + + incoming_buffer->init(in_buf_size); + outgoing_buffer->init(out_buf_size); + temp_buffer->init(10); + + byte1 = 0; + byte2 = 0; + byte3 = 0; + byte4 = 0; + + handlePacketFunction = 0; +} + +void SerialManager::init(int serial_port, int baud_rate){ + _serial_port = serial_port; + + if( serial_port == 0) + Serial.begin(baud_rate); +#if defined(__AVR_ATmega1280__) + else if( serial_port == 1) + Serial1.begin(baud_rate); + else if( serial_port == 2) + Serial2.begin(baud_rate); + else if( serial_port == 3) + Serial3.begin(baud_rate); +#endif +} + + + +bool SerialManager::isBusySending(){ + return ( outgoing_buffer->getSize() > 0 ); +} + +// Sends a single byte +int SerialManager::sendSerialByte(byte b){ + return outgoing_buffer->put(b); +} + +// Sends a packet with a header and a checksum +int SerialManager::sendSerialPacket(ByteBuffer* packet_buffer){ + // Copy buffer and calc checksum + byte checksum = 0; + while( packet_buffer->getSize() > 0 ){ + byte b = packet_buffer->get(); + outgoing_buffer->put(b); + checksum += b; + } + + outgoing_buffer->put( checksum ); + outgoing_buffer->put( 1 ); + outgoing_buffer->put( 2 ); + outgoing_buffer->put( 3 ); + outgoing_buffer->put( 4 ); + + return 0; +} + +// Sends a raw packet with no header or checksum +int SerialManager::sendRawSerial(ByteBuffer* packet_buffer){ + while( packet_buffer->getSize() > 0 ){ + byte b = packet_buffer->get(); + outgoing_buffer->put(b); + } + + return 0; +} + +void SerialManager::update(){ + + // If we have received stuff + if( _serial_port == 0 ){ + while( Serial.available() != 0 ) { + byte incoming = Serial.read(); + handleIncomingByte(incoming); + } + } + +#if defined(__AVR_ATmega1280__) + else if( _serial_port == 1 ){ + while( Serial1.available() != 0 ) { + byte incoming = Serial1.read(); + handleIncomingByte(incoming); + } + } + else if( _serial_port == 2 ){ + while( Serial2.available() != 0 ) { + byte incoming = Serial2.read(); + handleIncomingByte(incoming); + } + } + else if( _serial_port == 3 ){ + while( Serial3.available() != 0 ) { + byte incoming = Serial3.read(); + handleIncomingByte(incoming); + } + } +#endif + + + // If we should be sending stuff + if( outgoing_buffer->getSize() > 0 ){ + // If serial port not currently busy + if( _serial_port == 0 ) + if(((UCSRA) & (1 << UDRE)) ) Serial.write( outgoing_buffer->get() ); + +#if defined(__AVR_ATmega1280__) + else if( _serial_port == 1 ) + if(((UCSR1A) & (1 << UDRE1)) ) Serial1.write( outgoing_buffer->get() ); + else if( _serial_port == 2 ) + if(((UCSR2A) & (1 << UDRE2)) ) Serial2.write( outgoing_buffer->get() ); + else if( _serial_port == 3 ) + if(((UCSR3A) & (1 << UDRE3)) ) Serial3.write( outgoing_buffer->get() ); +#endif + } +} + +void SerialManager::setPacketHandler(void (*packetHandlerFunction)(ByteBuffer*)){ + handlePacketFunction = packetHandlerFunction; +} + + +void SerialManager::handleIncomingByte(byte incoming){ + + // If buffer overflows then reset (we could do something smarter here) + if( incoming_buffer->getSize() == incoming_buffer->getCapacity() ){ + incoming_buffer->clear(); + } + + incoming_buffer->put( incoming ); + serial_in_checksum += incoming; + + byte1 = byte2; + byte2 = byte3; + byte3 = byte4; + byte4 = incoming; + + // If we have a full packet ready + if( byte1==1 && byte2==2 && byte3==3 && byte4==4 ){ + // Remove header from buffer + incoming_buffer->getFromBack(); + incoming_buffer->getFromBack(); + incoming_buffer->getFromBack(); + incoming_buffer->getFromBack(); + + byte checksum_received = incoming_buffer->getFromBack(); + + // Remove the whole header from the calculated checksum + serial_in_checksum -= checksum_received + 10; + + // If checksums don't match, then do something () + if( checksum_received != serial_in_checksum ){ + ; // We could do something about this here + } + + // We have a successful packet + else{ + + if( handlePacketFunction != 0 ) + handlePacketFunction(incoming_buffer); + else + handlePacketDefault(incoming_buffer); + } + + // Clear variables + incoming_buffer->clear(); + serial_in_checksum = 0; + } + +} + +void SerialManager::handlePacketDefault(ByteBuffer* packet){ + // We could do something here like send the data to the host again for debug + // Or just do nothing + return; +} diff --git a/arduino_libs/SerialManager/SerialManager.h b/arduino_libs/SerialManager/SerialManager.h new file mode 100755 index 0000000..f1474c5 --- /dev/null +++ b/arduino_libs/SerialManager/SerialManager.h @@ -0,0 +1,62 @@ +/* + SerialManager.h - Library for doing packetized serial comm with Arduinos. + Created by Sigurdur Orn, May 23, 2010. + siggi@mit.edu + */ + +#ifndef SerialManager_h +#define SerialManager_h + +#include "ByteBuffer.h" +#include "WProgram.h" + +typedef void (*voidFuncPtr)(ByteBuffer*); + +#if defined(__AVR_ATmega8__) + #define UCSRA UCSRA + #define UDRE UDRE +#else + #define UCSRA UCSR0A + #define UDRE UDRE0 +#endif + +#if defined(__AVR_ATmega1280__) + #define UCSRA1 UCSR1A + #define UCSRA2 UCSR2A + #define UCSRA3 UCSR3A +#endif + + +class SerialManager +{ +public: + SerialManager(unsigned int in_buf_size, unsigned int out_buf_size); + void init(int serial_port, int baud_rate); + void setPacketHandler(void (*rx_func)(ByteBuffer*)); + + void update(); + bool isBusySending(); + + int sendSerialByte(byte b); + int sendSerialPacket(ByteBuffer* packet); + int sendRawSerial(ByteBuffer* packet); + +private: + void handleIncomingByte(byte incoming); + void handlePacketDefault(ByteBuffer* packet); + + voidFuncPtr handlePacketFunction; + + byte _serial_port; + ByteBuffer* incoming_buffer; + ByteBuffer* outgoing_buffer; + ByteBuffer* temp_buffer; + byte serial_in_checksum; + byte byte1; + byte byte2; + byte byte3; + byte byte4; +}; + +#endif + diff --git a/arduino_libs/core0022_2560.a b/arduino_libs/core0022_2560.a new file mode 100644 index 0000000..39936f0 Binary files /dev/null and b/arduino_libs/core0022_2560.a differ diff --git a/arduino_libs/core0022_328p.a b/arduino_libs/core0022_328p.a new file mode 100644 index 0000000..0141d8c Binary files /dev/null and b/arduino_libs/core0022_328p.a differ diff --git a/avr_libs/uartlib/doxygen.css b/avr_libs/uartlib/doxygen.css new file mode 100644 index 0000000..8cb8b2e --- /dev/null +++ b/avr_libs/uartlib/doxygen.css @@ -0,0 +1,49 @@ +H1 { text-align: center; } +CAPTION { font-weight: bold } +A.qindex {} +A.qindexRef {} +A.el { text-decoration: none; font-weight: bold } +A.elRef { font-weight: bold } +A.code { text-decoration: none; font-weight: normal; color: #4444ee } +A.codeRef { font-weight: normal; color: #4444ee } +A:hover { text-decoration: none; background-color: #f2f2ff } +DL.el { margin-left: -1cm } +DIV.fragment { width: 100%; border: none; background-color: #eeeeee } +DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } +TD.md { background-color: #f2f2ff; font-weight: bold; } +TD.mdname1 { background-color: #f2f2ff; font-weight: bold; color: #602020; } +TD.mdname { background-color: #f2f2ff; font-weight: bold; color: #602020; width: 600px; } +DIV.groupHeader { margin-left: 16px; margin-top: 12px; margin-bottom: 6px; font-weight: bold } +DIV.groupText { margin-left: 16px; font-style: italic; font-size: smaller } +BODY { background: white; color: black } +TD.indexkey { + background-color: #eeeeff; + font-weight: bold; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px +} +TD.indexvalue { + background-color: #eeeeff; + font-style: italic; + padding-right : 10px; + padding-top : 2px; + padding-left : 10px; + padding-bottom : 2px; + margin-left : 0px; + margin-right : 0px; + margin-top : 2px; + margin-bottom : 2px +} +span.keyword { color: #008000 } +span.keywordtype { color: #604020 } +span.keywordflow { color: #e08000 } +span.comment { color: #800000 } +span.preprocessor { color: #806020 } +span.stringliteral { color: #002080 } +span.charliteral { color: #008080 } diff --git a/avr_libs/uartlib/doxygen.png b/avr_libs/uartlib/doxygen.png new file mode 100644 index 0000000..f0a274b Binary files /dev/null and b/avr_libs/uartlib/doxygen.png differ diff --git a/avr_libs/uartlib/group__pfleury__uart.html b/avr_libs/uartlib/group__pfleury__uart.html new file mode 100644 index 0000000..7ab9c45 --- /dev/null +++ b/avr_libs/uartlib/group__pfleury__uart.html @@ -0,0 +1,560 @@ + + +AVR-GCC libraries: UART Library + + + +

UART Library


Detailed Description

+Interrupt UART library using the built-in UART with transmit and receive circular buffers. +

+

 #include <uart.h> 
+

+This library can be used to transmit and receive data through the built in UART.

+An interrupt is generated when the UART has finished transmitting or receiving a byte. The interrupt handling routines use circular buffers for buffering received and transmitted data.

+The UART_RX_BUFFER_SIZE and UART_TX_BUFFER_SIZE constants define the size of the circular buffers in bytes. Note that these constants must be a power of 2. You may need to adapt this constants to your target and your application by adding CDEFS += -DUART_RX_BUFFER_SIZE=nn -DUART_RX_BUFFER_SIZE=nn to your Makefile.

+

Note:
Based on Atmel Application Note AVR306
+
Author:
Peter Fleury pfleury@gmx.ch http://jump.to/fleury
+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Defines

#define UART_BAUD_SELECT(baudRate, xtalCpu)   ((xtalCpu)/((baudRate)*16l)-1)
 UART Baudrate Expression.
#define UART_BAUD_SELECT_DOUBLE_SPEED(baudRate, xtalCpu)   (((xtalCpu)/((baudRate)*8l)-1)|0x8000)
 UART Baudrate Expression for ATmega double speed mode.
#define UART_RX_BUFFER_SIZE   32
#define UART_TX_BUFFER_SIZE   32
+#define UART_FRAME_ERROR   0x0800
+#define UART_OVERRUN_ERROR   0x0400
+#define UART_BUFFER_OVERFLOW   0x0200
+#define UART_NO_DATA   0x0100
+#define uart_puts_P(__s)   uart_puts_p(PSTR(__s))
 Macro to automatically put a string constant into program memory.
+#define uart1_puts_P(__s)   uart1_puts_p(PSTR(__s))
 Macro to automatically put a string constant into program memory.

Functions

void uart_init (unsigned int baudrate)
 Initialize UART and set baudrate.
unsigned int uart_getc (void)
 Get received byte from ringbuffer.
void uart_putc (unsigned char data)
 Put byte to ringbuffer for transmitting via UART.
void uart_puts (const char *s)
 Put string to ringbuffer for transmitting via UART.
void uart_puts_p (const char *s)
 Put string from program memory to ringbuffer for transmitting via UART.
void uart1_init (unsigned int baudrate)
 Initialize USART1 (only available on selected ATmegas).
unsigned int uart1_getc (void)
 Get received byte of USART1 from ringbuffer. (only available on selected ATmega).
void uart1_putc (unsigned char data)
 Put byte to ringbuffer for transmitting via USART1 (only available on selected ATmega).
void uart1_puts (const char *s)
 Put string to ringbuffer for transmitting via USART1 (only available on selected ATmega).
void uart1_puts_p (const char *s)
 Put string from program memory to ringbuffer for transmitting via USART1 (only available on selected ATmega).
+


Define Documentation

+

+ + + + +
+ + + + + + + + + + + + +
#define UART_BAUD_SELECT baudRate,
xtalCpu   )    ((xtalCpu)/((baudRate)*16l)-1)
+
+ + + + + +
+   + + +

+UART Baudrate Expression. +

+

Parameters:
+ + + +
xtalcpu system clock in Mhz, e.g. 4000000L for 4Mhz
baudrate baudrate in bps, e.g. 1200, 2400, 9600
+
+
+

+ + + + +
+ + + + + + + + + + + + +
#define UART_BAUD_SELECT_DOUBLE_SPEED baudRate,
xtalCpu   )    (((xtalCpu)/((baudRate)*8l)-1)|0x8000)
+
+ + + + + +
+   + + +

+UART Baudrate Expression for ATmega double speed mode. +

+

Parameters:
+ + + +
xtalcpu system clock in Mhz, e.g. 4000000L for 4Mhz
baudrate baudrate in bps, e.g. 1200, 2400, 9600
+
+
+

+ + + + +
+ + + + +
#define UART_RX_BUFFER_SIZE   32
+
+ + + + + +
+   + + +

+Size of the circular receive buffer, must be power of 2

+

+ + + + +
+ + + + +
#define UART_TX_BUFFER_SIZE   32
+
+ + + + + +
+   + + +

+Size of the circular transmit buffer, must be power of 2

+


Function Documentation

+

+ + + + +
+ + + + + + + + + +
void uart_init unsigned int  baudrate  ) 
+
+ + + + + +
+   + + +

+Initialize UART and set baudrate. +

+

Parameters:
+ + +
baudrate Specify baudrate using macro UART_BAUD_SELECT()
+
+
Returns:
none
+
+

+ + + + +
+ + + + + + + + + +
unsigned int uart_getc void   ) 
+
+ + + + + +
+   + + +

+Get received byte from ringbuffer. +

+Returns in the lower byte the received character and in the higher byte the last receive error. UART_NO_DATA is returned when no data is available.

+

Parameters:
+ + +
void 
+
+
Returns:
lower byte: received byte from ringbuffer

+higher byte: last receive status

    +
  • 0 successfully received data from UART
  • UART_NO_DATA
    +no receive data available
  • UART_BUFFER_OVERFLOW
    +Receive ringbuffer overflow. We are not reading the receive buffer fast enough, one or more received character have been dropped
  • UART_OVERRUN_ERROR
    +Overrun condition by UART. A character already present in the UART UDR register was not read by the interrupt handler before the next character arrived, one or more received characters have been dropped.
  • UART_FRAME_ERROR
    +Framing Error by UART
+
+
+

+ + + + +
+ + + + + + + + + +
void uart_putc unsigned char  data  ) 
+
+ + + + + +
+   + + +

+Put byte to ringbuffer for transmitting via UART. +

+

Parameters:
+ + +
data byte to be transmitted
+
+
Returns:
none
+
+

+ + + + +
+ + + + + + + + + +
void uart_puts const char *  s  ) 
+
+ + + + + +
+   + + +

+Put string to ringbuffer for transmitting via UART. +

+The string is buffered by the uart library in a circular buffer and one character at a time is transmitted to the UART using interrupts. Blocks if it can not write the whole string into the circular buffer.

+

Parameters:
+ + +
s string to be transmitted
+
+
Returns:
none
+
+

+ + + + +
+ + + + + + + + + +
void uart_puts_p const char *  s  ) 
+
+ + + + + +
+   + + +

+Put string from program memory to ringbuffer for transmitting via UART. +

+The string is buffered by the uart library in a circular buffer and one character at a time is transmitted to the UART using interrupts. Blocks if it can not write the whole string into the circular buffer.

+

Parameters:
+ + +
s program memory string to be transmitted
+
+
Returns:
none
+
See also:
uart_puts_P
+
+

+ + + + +
+ + + + + + + + + +
void uart1_init unsigned int  baudrate  ) 
+
+ + + + + +
+   + + +

+Initialize USART1 (only available on selected ATmegas). +

+

See also:
uart_init
+
+

+ + + + +
+ + + + + + + + + +
unsigned int uart1_getc void   ) 
+
+ + + + + +
+   + + +

+Get received byte of USART1 from ringbuffer. (only available on selected ATmega). +

+

See also:
uart_getc
+
+

+ + + + +
+ + + + + + + + + +
void uart1_putc unsigned char  data  ) 
+
+ + + + + +
+   + + +

+Put byte to ringbuffer for transmitting via USART1 (only available on selected ATmega). +

+

See also:
uart_putc
+
+

+ + + + +
+ + + + + + + + + +
void uart1_puts const char *  s  ) 
+
+ + + + + +
+   + + +

+Put string to ringbuffer for transmitting via USART1 (only available on selected ATmega). +

+

See also:
uart_puts
+
+

+ + + + +
+ + + + + + + + + +
void uart1_puts_p const char *  s  ) 
+
+ + + + + +
+   + + +

+Put string from program memory to ringbuffer for transmitting via USART1 (only available on selected ATmega). +

+

See also:
uart_puts_p
+
+


Generated on Sun Jul 10 13:47:45 2005 for AVR-GCC libraries by  + +doxygen 1.4.1
+ + diff --git a/avr_libs/uartlib/makefile b/avr_libs/uartlib/makefile new file mode 100644 index 0000000..b90c0c4 --- /dev/null +++ b/avr_libs/uartlib/makefile @@ -0,0 +1,508 @@ +# ---------------------------------------------------------------------------- +# Makefile to compile and link the UART library and test program +# Author: Peter Fleury +# File: $Id: makefile.uart,v 1.3 2005/04/09 07:56:09 Peter Exp $ +# based on WinAVR Makefile Template written by Eric B. Weddington, Jörg Wunsch, et al. +# +# Adjust F_CPU below to the clock frequency in Mhz of your AVR target +# +# Adjust the size of the receive and transmit ringbuffer in bytes using the +# defines -DUART_RX_BUFFER_SIZE=128 and -DUART_TX_BUFFER_SIZE=128 in the +# CDEF section below +# +#---------------------------------------------------------------------------- +# On command line: +# +# make all = Make software. +# +# make clean = Clean out built project files. +# +# make coff = Convert ELF to AVR COFF. +# +# make extcoff = Convert ELF to AVR Extended COFF. +# +# make program = Download the hex file to the device, using avrdude. +# Please customize the avrdude settings below first! +# +# make debug = Start either simulavr or avarice as specified for debugging, +# with avr-gdb or avr-insight as the front end for debugging. +# +# make filename.s = Just compile filename.c into the assembler code only. +# +# make filename.i = Create a preprocessed source file for use in submitting +# bug reports to the GCC project. +# +# To rebuild project do "make clean" then "make all". +#---------------------------------------------------------------------------- + + +# MCU name +MCU = at90s8515 + + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +F_CPU = 4000000 + + +# Output format. (can be srec, ihex, binary) +FORMAT = ihex + + +# Target file name (without extension). +TARGET = test_uart + + +# List C source files here. (C dependencies are automatically generated.) +SRC = $(TARGET).c uart.c + + +# List Assembler source files here. +# Make them always end in a capital .S. Files ending in a lowercase .s +# will not be considered source files but generated files (assembler +# output from the compiler), and will be deleted upon "make clean"! +# Even though the DOS/Win* filesystem matches both .s and .S the same, +# it will preserve the spelling of the filenames, and gcc itself does +# care about how the name is spelled on its command-line. +ASRC = + + +# Optimization level, can be [0, 1, 2, 3, s]. +# 0 = turn off optimization. s = optimize for size. +# (Note: 3 is not always the best optimization level. See avr-libc FAQ.) +OPT = s + + +# Debugging format. +# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs. +# AVR Studio 4.10 requires dwarf-2. +# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run. +DEBUG = dwarf-2 + + +# List any extra directories to look for include files here. +# Each directory must be seperated by a space. +# Use forward slashes for directory separators. +# For a directory that has spaces, enclose it in quotes. +EXTRAINCDIRS = + + +# Compiler flag to set the C Standard level. +# c89 = "ANSI" C +# gnu89 = c89 plus GCC extensions +# c99 = ISO C99 standard (not yet fully implemented) +# gnu99 = c99 plus GCC extensions +CSTANDARD = -std=gnu99 + + +# Place -D or -U options here +CDEFS = -DF_CPU=$(F_CPU)UL + +# uncomment and adapt these line if you want different UART library buffer size +#CDEFS += -DUART_RX_BUFFER_SIZE=128 +#CDEFS += -DUART_TX_BUFFER_SIZE=128 + + +# Place -I options here +CINCS = + + + +#---------------- Compiler Options ---------------- +# -g*: generate debugging information +# -O*: optimization level +# -f...: tuning, see GCC manual and avr-libc documentation +# -Wall...: warning level +# -Wa,...: tell GCC to pass this to the assembler. +# -adhlns...: create assembler listing +CFLAGS = -g$(DEBUG) +CFLAGS += $(CDEFS) $(CINCS) +CFLAGS += -O$(OPT) +CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums +CFLAGS += -Wall -Wstrict-prototypes +CFLAGS += -Wa,-adhlns=$(<:.c=.lst) +CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS)) +CFLAGS += $(CSTANDARD) + + +#---------------- Assembler Options ---------------- +# -Wa,...: tell GCC to pass this to the assembler. +# -ahlms: create listing +# -gstabs: have the assembler create line number information; note that +# for use in COFF files, additional information about filenames +# and function names needs to be present in the assembler source +# files -- see avr-libc docs [FIXME: not yet described there] +ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs + + +#---------------- Library Options ---------------- +# Minimalistic printf version +PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min + +# Floating point printf version (requires MATH_LIB = -lm below) +PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt + +# If this is left blank, then it will use the Standard printf version. +PRINTF_LIB = +#PRINTF_LIB = $(PRINTF_LIB_MIN) +#PRINTF_LIB = $(PRINTF_LIB_FLOAT) + + +# Minimalistic scanf version +SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min + +# Floating point + %[ scanf version (requires MATH_LIB = -lm below) +SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt + +# If this is left blank, then it will use the Standard scanf version. +SCANF_LIB = +#SCANF_LIB = $(SCANF_LIB_MIN) +#SCANF_LIB = $(SCANF_LIB_FLOAT) + + +MATH_LIB = -lm + + + +#---------------- External Memory Options ---------------- + +# 64 KB of external RAM, starting after internal RAM (ATmega128!), +# used for variables (.data/.bss) and heap (malloc()). +#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff + +# 64 KB of external RAM, starting after internal RAM (ATmega128!), +# only used for heap (malloc()). +#EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff + +EXTMEMOPTS = + + + +#---------------- Linker Options ---------------- +# -Wl,...: tell GCC to pass this to linker. +# -Map: create map file +# --cref: add cross reference to map file +LDFLAGS = -Wl,-Map=$(TARGET).map,--cref +LDFLAGS += $(EXTMEMOPTS) +LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB) + + + +#---------------- Programming Options (avrdude) ---------------- + +# Programming hardware: alf avr910 avrisp bascom bsd +# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 +# +# Type: avrdude -c ? +# to get a full listing. +# +AVRDUDE_PROGRAMMER = stk500 + +# com1 = serial port. Use lpt1 to connect to parallel port. +AVRDUDE_PORT = com1 # programmer connected to serial device + +AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex +#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep + + +# Uncomment the following if you want avrdude's erase cycle counter. +# Note that this counter needs to be initialized first using -Yn, +# see avrdude manual. +#AVRDUDE_ERASE_COUNTER = -y + +# Uncomment the following if you do /not/ wish a verification to be +# performed after programming the device. +#AVRDUDE_NO_VERIFY = -V + +# Increase verbosity level. Please use this when submitting bug +# reports about avrdude. See +# to submit bug reports. +#AVRDUDE_VERBOSE = -v -v + +AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) +AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY) +AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE) +AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER) + + + +#---------------- Debugging Options ---------------- + +# For simulavr only - target MCU frequency. +DEBUG_MFREQ = $(F_CPU) + +# Set the DEBUG_UI to either gdb or insight. +# DEBUG_UI = gdb +DEBUG_UI = insight + +# Set the debugging back-end to either avarice, simulavr. +DEBUG_BACKEND = avarice +#DEBUG_BACKEND = simulavr + +# GDB Init Filename. +GDBINIT_FILE = __avr_gdbinit + +# When using avarice settings for the JTAG +JTAG_DEV = /dev/com1 + +# Debugging port used to communicate between GDB / avarice / simulavr. +DEBUG_PORT = 4242 + +# Debugging host used to communicate between GDB / avarice / simulavr, normally +# just set to localhost unless doing some sort of crazy debugging when +# avarice is running on a different computer. +DEBUG_HOST = localhost + + + +#============================================================================ + + +# Define programs and commands. +SHELL = sh +CC = avr-gcc +OBJCOPY = avr-objcopy +OBJDUMP = avr-objdump +SIZE = avr-size +NM = avr-nm +AVRDUDE = avrdude +REMOVE = rm -f +COPY = cp +WINSHELL = cmd + + +# Define Messages +# English +MSG_ERRORS_NONE = Errors: none +MSG_BEGIN = -------- begin -------- +MSG_END = -------- end -------- +MSG_SIZE_BEFORE = Size before: +MSG_SIZE_AFTER = Size after: +MSG_COFF = Converting to AVR COFF: +MSG_EXTENDED_COFF = Converting to AVR Extended COFF: +MSG_FLASH = Creating load file for Flash: +MSG_EEPROM = Creating load file for EEPROM: +MSG_EXTENDED_LISTING = Creating Extended Listing: +MSG_SYMBOL_TABLE = Creating Symbol Table: +MSG_LINKING = Linking: +MSG_COMPILING = Compiling: +MSG_ASSEMBLING = Assembling: +MSG_CLEANING = Cleaning project: + + + + +# Define all object files. +OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) + +# Define all listing files. +LST = $(SRC:.c=.lst) $(ASRC:.S=.lst) + + +# Compiler flags to generate dependency files. +GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d + + +# Combine all necessary flags and optional flags. +# Add target processor to flags. +ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS) +ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) + + + + + +# Default target. +all: begin gccversion sizebefore build sizeafter end + +build: elf hex eep lss sym + +elf: $(TARGET).elf +hex: $(TARGET).hex +eep: $(TARGET).eep +lss: $(TARGET).lss +sym: $(TARGET).sym + + + +# Eye candy. +# AVR Studio 3.x does not check make's exit code but relies on +# the following magic strings to be generated by the compile job. +begin: + @echo + @echo $(MSG_BEGIN) + +end: + @echo $(MSG_END) + @echo + + +# Display size of file. +HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex +ELFSIZE = $(SIZE) -A $(TARGET).elf +AVRMEM = avr-mem.sh $(TARGET).elf $(MCU) + +sizebefore: + @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \ + $(AVRMEM) 2>/dev/null; echo; fi + +sizeafter: + @if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \ + $(AVRMEM) 2>/dev/null; echo; fi + + + +# Display compiler version information. +gccversion : + @$(CC) --version + + + +# Program the device. +program: $(TARGET).hex $(TARGET).eep + $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM) + + +# Generate avr-gdb config/init file which does the following: +# define the reset signal, load the target file, connect to target, and set +# a breakpoint at main(). +gdb-config: + @$(REMOVE) $(GDBINIT_FILE) + @echo define reset >> $(GDBINIT_FILE) + @echo SIGNAL SIGHUP >> $(GDBINIT_FILE) + @echo end >> $(GDBINIT_FILE) + @echo file $(TARGET).elf >> $(GDBINIT_FILE) + @echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE) +ifeq ($(DEBUG_BACKEND),simulavr) + @echo load >> $(GDBINIT_FILE) +endif + @echo break main >> $(GDBINIT_FILE) + +debug: gdb-config $(TARGET).elf +ifeq ($(DEBUG_BACKEND), avarice) + @echo Starting AVaRICE - Press enter when "waiting to connect" message displays. + @$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \ + $(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT) + @$(WINSHELL) /c pause + +else + @$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \ + $(DEBUG_MFREQ) --port $(DEBUG_PORT) +endif + @$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE) + + + + +# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB. +COFFCONVERT=$(OBJCOPY) --debugging \ +--change-section-address .data-0x800000 \ +--change-section-address .bss-0x800000 \ +--change-section-address .noinit-0x800000 \ +--change-section-address .eeprom-0x810000 + + +coff: $(TARGET).elf + @echo + @echo $(MSG_COFF) $(TARGET).cof + $(COFFCONVERT) -O coff-avr $< $(TARGET).cof + + +extcoff: $(TARGET).elf + @echo + @echo $(MSG_EXTENDED_COFF) $(TARGET).cof + $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof + + + +# Create final output files (.hex, .eep) from ELF output file. +%.hex: %.elf + @echo + @echo $(MSG_FLASH) $@ + $(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@ + +%.eep: %.elf + @echo + @echo $(MSG_EEPROM) $@ + -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \ + --change-section-lma .eeprom=0 -O $(FORMAT) $< $@ + +# Create extended listing file from ELF output file. +%.lss: %.elf + @echo + @echo $(MSG_EXTENDED_LISTING) $@ + $(OBJDUMP) -h -S $< > $@ + +# Create a symbol table from ELF output file. +%.sym: %.elf + @echo + @echo $(MSG_SYMBOL_TABLE) $@ + $(NM) -n $< > $@ + + + +# Link: create ELF output file from object files. +.SECONDARY : $(TARGET).elf +.PRECIOUS : $(OBJ) +%.elf: $(OBJ) + @echo + @echo $(MSG_LINKING) $@ + $(CC) $(ALL_CFLAGS) $^ --output $@ $(LDFLAGS) + + +# Compile: create object files from C source files. +%.o : %.c + @echo + @echo $(MSG_COMPILING) $< + $(CC) -c $(ALL_CFLAGS) $< -o $@ + + +# Compile: create assembler files from C source files. +%.s : %.c + $(CC) -S $(ALL_CFLAGS) $< -o $@ + + +# Assemble: create object files from assembler source files. +%.o : %.S + @echo + @echo $(MSG_ASSEMBLING) $< + $(CC) -c $(ALL_ASFLAGS) $< -o $@ + +# Create preprocessed source for use in sending a bug report. +%.i : %.c + $(CC) -E -mmcu=$(MCU) -I. $(CFLAGS) $< -o $@ + + +# Target: clean project. +clean: begin clean_list end + +clean_list : + @echo + @echo $(MSG_CLEANING) + $(REMOVE) $(TARGET).hex + $(REMOVE) $(TARGET).eep + $(REMOVE) $(TARGET).cof + $(REMOVE) $(TARGET).elf + $(REMOVE) $(TARGET).map + $(REMOVE) $(TARGET).sym + $(REMOVE) $(TARGET).lss + $(REMOVE) $(OBJ) + $(REMOVE) $(LST) + $(REMOVE) $(SRC:.c=.s) + $(REMOVE) $(SRC:.c=.d) + $(REMOVE) .dep/* + + + +# Include the dependency files. +-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*) + + +# Listing of phony targets. +.PHONY : all begin finish end sizebefore sizeafter gccversion \ +build elf hex eep lss sym coff extcoff \ +clean clean_list program debug gdb-config + diff --git a/avr_libs/uartlib/test_uart.c b/avr_libs/uartlib/test_uart.c new file mode 100644 index 0000000..44346b0 --- /dev/null +++ b/avr_libs/uartlib/test_uart.c @@ -0,0 +1,130 @@ +/************************************************************************* +Title: example program for the Interrupt controlled UART library +Author: Peter Fleury http://jump.to/fleury +File: $Id: test_uart.c,v 1.4 2005/07/10 11:46:30 Peter Exp $ +Software: AVR-GCC 3.3 +Hardware: any AVR with built-in UART, tested on AT90S8515 at 4 Mhz + +DESCRIPTION: + This example shows how to use the UART library uart.c + +*************************************************************************/ +#include +#include +#include +#include +#include + +#include "uart.h" + + +/* define CPU frequency in Mhz here if not defined in Makefile */ +#ifndef F_CPU +#define F_CPU 4000000UL +#endif + +/* 9600 baud */ +#define UART_BAUD_RATE 9600 + + +int main(void) +{ + unsigned int c; + char buffer[7]; + int num=134; + + + /* + * Initialize UART library, pass baudrate and AVR cpu clock + * with the macro + * UART_BAUD_SELECT() (normal speed mode ) + * or + * UART_BAUD_SELECT_DOUBLE_SPEED() ( double speed mode) + */ + uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) ); + + /* + * now enable interrupt, since UART library is interrupt controlled + */ + sei(); + + /* + * Transmit string to UART + * The string is buffered by the uart library in a circular buffer + * and one character at a time is transmitted to the UART using interrupts. + * uart_puts() blocks if it can not write the whole string to the circular + * buffer + */ + uart_puts("String stored in SRAM\n"); + + /* + * Transmit string from program memory to UART + */ + uart_puts_P("String stored in FLASH\n"); + + + /* + * Use standard avr-libc functions to convert numbers into string + * before transmitting via UART + */ + itoa( num, buffer, 10); // convert interger into string (decimal format) + uart_puts(buffer); // and transmit string to UART + + + /* + * Transmit single character to UART + */ + uart_putc('\r'); + + for(;;) + { + /* + * Get received character from ringbuffer + * uart_getc() returns in the lower byte the received character and + * in the higher byte (bitmask) the last receive error + * UART_NO_DATA is returned when no data is available. + * + */ + c = uart_getc(); + if ( c & UART_NO_DATA ) + { + /* + * no data available from UART + */ + } + else + { + /* + * new data available from UART + * check for Frame or Overrun error + */ + if ( c & UART_FRAME_ERROR ) + { + /* Framing Error detected, i.e no stop bit detected */ + uart_puts_P("UART Frame Error: "); + } + if ( c & UART_OVERRUN_ERROR ) + { + /* + * Overrun, a character already present in the UART UDR register was + * not read by the interrupt handler before the next character arrived, + * one or more received characters have been dropped + */ + uart_puts_P("UART Overrun Error: "); + } + if ( c & UART_BUFFER_OVERFLOW ) + { + /* + * We are not reading the receive buffer fast enough, + * one or more received character have been dropped + */ + uart_puts_P("Buffer overflow error: "); + } + /* + * send received character back + */ + uart_putc( (unsigned char)c ); + } + } + +} diff --git a/avr_libs/uartlib/uart.c b/avr_libs/uartlib/uart.c new file mode 100644 index 0000000..6034070 --- /dev/null +++ b/avr_libs/uartlib/uart.c @@ -0,0 +1,651 @@ +/************************************************************************* +Title: Interrupt UART library with receive/transmit circular buffers +Author: Peter Fleury http://jump.to/fleury +File: $Id: uart.c,v 1.6.2.2 2009/11/29 08:56:12 Peter Exp $ +Software: AVR-GCC 4.1, AVR Libc 1.4.6 or higher +Hardware: any AVR with built-in UART, +License: GNU General Public License + +DESCRIPTION: + An interrupt is generated when the UART has finished transmitting or + receiving a byte. The interrupt handling routines use circular buffers + for buffering received and transmitted data. + + The UART_RX_BUFFER_SIZE and UART_TX_BUFFER_SIZE variables define + the buffer size in bytes. Note that these variables must be a + power of 2. + +USAGE: + Refere to the header file uart.h for a description of the routines. + See also example test_uart.c. + +NOTES: + Based on Atmel Application Note AVR306 + +LICENSE: + Copyright (C) 2006 Peter Fleury + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + +*************************************************************************/ +#include +#include +#include +#include "uart.h" + + +/* + * constants and macros + */ + +/* size of RX/TX buffers */ +#define UART_RX_BUFFER_MASK ( UART_RX_BUFFER_SIZE - 1) +#define UART_TX_BUFFER_MASK ( UART_TX_BUFFER_SIZE - 1) + +#if ( UART_RX_BUFFER_SIZE & UART_RX_BUFFER_MASK ) +#error RX buffer size is not a power of 2 +#endif +#if ( UART_TX_BUFFER_SIZE & UART_TX_BUFFER_MASK ) +#error TX buffer size is not a power of 2 +#endif + +#if defined(__AVR_AT90S2313__) \ + || defined(__AVR_AT90S4414__) || defined(__AVR_AT90S4434__) \ + || defined(__AVR_AT90S8515__) || defined(__AVR_AT90S8535__) \ + || defined(__AVR_ATmega103__) + /* old AVR classic or ATmega103 with one UART */ + #define AT90_UART + #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV + #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA + #define UART0_STATUS USR + #define UART0_CONTROL UCR + #define UART0_DATA UDR + #define UART0_UDRIE UDRIE +#elif defined(__AVR_AT90S2333__) || defined(__AVR_AT90S4433__) + /* old AVR classic with one UART */ + #define AT90_UART + #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV + #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA + #define UART0_STATUS UCSRA + #define UART0_CONTROL UCSRB + #define UART0_DATA UDR + #define UART0_UDRIE UDRIE +#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega16__) || defined(__AVR_ATmega32__) \ + || defined(__AVR_ATmega8515__) || defined(__AVR_ATmega8535__) \ + || defined(__AVR_ATmega323__) + /* ATmega with one USART */ + #define ATMEGA_USART + #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV + #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA + #define UART0_STATUS UCSRA + #define UART0_CONTROL UCSRB + #define UART0_DATA UDR + #define UART0_UDRIE UDRIE +#elif defined(__AVR_ATmega163__) + /* ATmega163 with one UART */ + #define ATMEGA_UART + #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV + #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA + #define UART0_STATUS UCSRA + #define UART0_CONTROL UCSRB + #define UART0_DATA UDR + #define UART0_UDRIE UDRIE +#elif defined(__AVR_ATmega162__) + /* ATmega with two USART */ + #define ATMEGA_USART0 + #define ATMEGA_USART1 + #define UART0_RECEIVE_INTERRUPT SIG_USART0_RECV + #define UART1_RECEIVE_INTERRUPT SIG_USART1_RECV + #define UART0_TRANSMIT_INTERRUPT SIG_USART0_DATA + #define UART1_TRANSMIT_INTERRUPT SIG_USART1_DATA + #define UART0_STATUS UCSR0A + #define UART0_CONTROL UCSR0B + #define UART0_DATA UDR0 + #define UART0_UDRIE UDRIE0 + #define UART1_STATUS UCSR1A + #define UART1_CONTROL UCSR1B + #define UART1_DATA UDR1 + #define UART1_UDRIE UDRIE1 +#elif defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__) + /* ATmega with two USART */ + #define ATMEGA_USART0 + #define ATMEGA_USART1 + #define UART0_RECEIVE_INTERRUPT SIG_UART0_RECV + #define UART1_RECEIVE_INTERRUPT SIG_UART1_RECV + #define UART0_TRANSMIT_INTERRUPT SIG_UART0_DATA + #define UART1_TRANSMIT_INTERRUPT SIG_UART1_DATA + #define UART0_STATUS UCSR0A + #define UART0_CONTROL UCSR0B + #define UART0_DATA UDR0 + #define UART0_UDRIE UDRIE0 + #define UART1_STATUS UCSR1A + #define UART1_CONTROL UCSR1B + #define UART1_DATA UDR1 + #define UART1_UDRIE UDRIE1 +#elif defined(__AVR_ATmega161__) + /* ATmega with UART */ + #error "AVR ATmega161 currently not supported by this libaray !" +#elif defined(__AVR_ATmega169__) + /* ATmega with one USART */ + #define ATMEGA_USART + #define UART0_RECEIVE_INTERRUPT SIG_USART_RECV + #define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA + #define UART0_STATUS UCSRA + #define UART0_CONTROL UCSRB + #define UART0_DATA UDR + #define UART0_UDRIE UDRIE +#elif defined(__AVR_ATmega48__) ||defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__) || defined(__AVR_ATmega48P__) || defined(__AVR_ATmega88P__) || defined(__AVR_ATmega168P__) || defined(__AVR_ATmega328P__) + /* ATmega with one USART */ + #define ATMEGA_USART0 + #define UART0_RECEIVE_INTERRUPT SIG_USART_RECV + #define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA + #define UART0_STATUS UCSR0A + #define UART0_CONTROL UCSR0B + #define UART0_DATA UDR0 + #define UART0_UDRIE UDRIE0 +#elif defined(__AVR_ATtiny2313__) + #define ATMEGA_USART + #define UART0_RECEIVE_INTERRUPT SIG_USART0_RX + #define UART0_TRANSMIT_INTERRUPT SIG_USART0_UDRE + #define UART0_STATUS UCSRA + #define UART0_CONTROL UCSRB + #define UART0_DATA UDR + #define UART0_UDRIE UDRIE +#elif defined(__AVR_ATmega329__) ||defined(__AVR_ATmega3290__) ||\ + defined(__AVR_ATmega649__) ||defined(__AVR_ATmega6490__) ||\ + defined(__AVR_ATmega325__) ||defined(__AVR_ATmega3250__) ||\ + defined(__AVR_ATmega645__) ||defined(__AVR_ATmega6450__) + /* ATmega with one USART */ + #define ATMEGA_USART0 + #define UART0_RECEIVE_INTERRUPT SIG_UART_RECV + #define UART0_TRANSMIT_INTERRUPT SIG_UART_DATA + #define UART0_STATUS UCSR0A + #define UART0_CONTROL UCSR0B + #define UART0_DATA UDR0 + #define UART0_UDRIE UDRIE0 +#elif defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) || defined(__AVR_ATmega640__) +/* ATmega with two USART */ + #define ATMEGA_USART0 + #define ATMEGA_USART1 + #define UART0_RECEIVE_INTERRUPT SIG_USART0_RECV + #define UART1_RECEIVE_INTERRUPT SIG_USART1_RECV + #define UART0_TRANSMIT_INTERRUPT SIG_USART0_DATA + #define UART1_TRANSMIT_INTERRUPT SIG_USART1_DATA + #define UART0_STATUS UCSR0A + #define UART0_CONTROL UCSR0B + #define UART0_DATA UDR0 + #define UART0_UDRIE UDRIE0 + #define UART1_STATUS UCSR1A + #define UART1_CONTROL UCSR1B + #define UART1_DATA UDR1 + #define UART1_UDRIE UDRIE1 +#elif defined(__AVR_ATmega644__) + /* ATmega with one USART */ + #define ATMEGA_USART0 + #define UART0_RECEIVE_INTERRUPT SIG_USART_RECV + #define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA + #define UART0_STATUS UCSR0A + #define UART0_CONTROL UCSR0B + #define UART0_DATA UDR0 + #define UART0_UDRIE UDRIE0 +#elif defined(__AVR_ATmega164P__) || defined(__AVR_ATmega324P__) || defined(__AVR_ATmega644P__) + /* ATmega with two USART */ + #define ATMEGA_USART0 + #define ATMEGA_USART1 + #define UART0_RECEIVE_INTERRUPT SIG_USART_RECV + #define UART1_RECEIVE_INTERRUPT SIG_USART1_RECV + #define UART0_TRANSMIT_INTERRUPT SIG_USART_DATA + #define UART1_TRANSMIT_INTERRUPT SIG_USART1_DATA + #define UART0_STATUS UCSR0A + #define UART0_CONTROL UCSR0B + #define UART0_DATA UDR0 + #define UART0_UDRIE UDRIE0 + #define UART1_STATUS UCSR1A + #define UART1_CONTROL UCSR1B + #define UART1_DATA UDR1 + #define UART1_UDRIE UDRIE1 +#else + #error "no UART definition for MCU available" +#endif + + +/* + * module global variables + */ +static volatile unsigned char UART_TxBuf[UART_TX_BUFFER_SIZE]; +static volatile unsigned char UART_RxBuf[UART_RX_BUFFER_SIZE]; +static volatile unsigned char UART_TxHead; +static volatile unsigned char UART_TxTail; +static volatile unsigned char UART_RxHead; +static volatile unsigned char UART_RxTail; +static volatile unsigned char UART_LastRxError; + +#if defined( ATMEGA_USART1 ) +static volatile unsigned char UART1_TxBuf[UART_TX_BUFFER_SIZE]; +static volatile unsigned char UART1_RxBuf[UART_RX_BUFFER_SIZE]; +static volatile unsigned char UART1_TxHead; +static volatile unsigned char UART1_TxTail; +static volatile unsigned char UART1_RxHead; +static volatile unsigned char UART1_RxTail; +static volatile unsigned char UART1_LastRxError; +#endif + + + +SIGNAL(UART0_RECEIVE_INTERRUPT) +/************************************************************************* +Function: UART Receive Complete interrupt +Purpose: called when the UART has received a character +**************************************************************************/ +{ + unsigned char tmphead; + unsigned char data; + unsigned char usr; + unsigned char lastRxError; + + + /* read UART status register and UART data register */ + usr = UART0_STATUS; + data = UART0_DATA; + + /* */ +#if defined( AT90_UART ) + lastRxError = (usr & (_BV(FE)|_BV(DOR)) ); +#elif defined( ATMEGA_USART ) + lastRxError = (usr & (_BV(FE)|_BV(DOR)) ); +#elif defined( ATMEGA_USART0 ) + lastRxError = (usr & (_BV(FE0)|_BV(DOR0)) ); +#elif defined ( ATMEGA_UART ) + lastRxError = (usr & (_BV(FE)|_BV(DOR)) ); +#endif + + /* calculate buffer index */ + tmphead = ( UART_RxHead + 1) & UART_RX_BUFFER_MASK; + + if ( tmphead == UART_RxTail ) { + /* error: receive buffer overflow */ + lastRxError = UART_BUFFER_OVERFLOW >> 8; + }else{ + /* store new index */ + UART_RxHead = tmphead; + /* store received data in buffer */ + UART_RxBuf[tmphead] = data; + } + UART_LastRxError = lastRxError; +} + + +SIGNAL(UART0_TRANSMIT_INTERRUPT) +/************************************************************************* +Function: UART Data Register Empty interrupt +Purpose: called when the UART is ready to transmit the next byte +**************************************************************************/ +{ + unsigned char tmptail; + + + if ( UART_TxHead != UART_TxTail) { + /* calculate and store new buffer index */ + tmptail = (UART_TxTail + 1) & UART_TX_BUFFER_MASK; + UART_TxTail = tmptail; + /* get one byte from buffer and write it to UART */ + UART0_DATA = UART_TxBuf[tmptail]; /* start transmission */ + }else{ + /* tx buffer empty, disable UDRE interrupt */ + UART0_CONTROL &= ~_BV(UART0_UDRIE); + } +} + + +/************************************************************************* +Function: uart_init() +Purpose: initialize UART and set baudrate +Input: baudrate using macro UART_BAUD_SELECT() +Returns: none +**************************************************************************/ +void uart_init(unsigned int baudrate) +{ + UART_TxHead = 0; + UART_TxTail = 0; + UART_RxHead = 0; + UART_RxTail = 0; + +#if defined( AT90_UART ) + /* set baud rate */ + UBRR = (unsigned char)baudrate; + + /* enable UART receiver and transmmitter and receive complete interrupt */ + UART0_CONTROL = _BV(RXCIE)|_BV(RXEN)|_BV(TXEN); + +#elif defined (ATMEGA_USART) + /* Set baud rate */ + if ( baudrate & 0x8000 ) + { + UART0_STATUS = (1<>8); + UBRRL = (unsigned char) baudrate; + + /* Enable USART receiver and transmitter and receive complete interrupt */ + UART0_CONTROL = _BV(RXCIE)|(1<>8); + UBRR0L = (unsigned char) baudrate; + + /* Enable USART receiver and transmitter and receive complete interrupt */ + UART0_CONTROL = _BV(RXCIE0)|(1<>8); + UBRR = (unsigned char) baudrate; + + /* Enable UART receiver and transmitter and receive complete interrupt */ + UART0_CONTROL = _BV(RXCIE)|(1<> 8; + }else{ + /* store new index */ + UART1_RxHead = tmphead; + /* store received data in buffer */ + UART1_RxBuf[tmphead] = data; + } + UART1_LastRxError = lastRxError; +} + + +SIGNAL(UART1_TRANSMIT_INTERRUPT) +/************************************************************************* +Function: UART1 Data Register Empty interrupt +Purpose: called when the UART1 is ready to transmit the next byte +**************************************************************************/ +{ + unsigned char tmptail; + + + if ( UART1_TxHead != UART1_TxTail) { + /* calculate and store new buffer index */ + tmptail = (UART1_TxTail + 1) & UART_TX_BUFFER_MASK; + UART1_TxTail = tmptail; + /* get one byte from buffer and write it to UART */ + UART1_DATA = UART1_TxBuf[tmptail]; /* start transmission */ + }else{ + /* tx buffer empty, disable UDRE interrupt */ + UART1_CONTROL &= ~_BV(UART1_UDRIE); + } +} + + +/************************************************************************* +Function: uart1_init() +Purpose: initialize UART1 and set baudrate +Input: baudrate using macro UART_BAUD_SELECT() +Returns: none +**************************************************************************/ +void uart1_init(unsigned int baudrate) +{ + UART1_TxHead = 0; + UART1_TxTail = 0; + UART1_RxHead = 0; + UART1_RxTail = 0; + + + /* Set baud rate */ + if ( baudrate & 0x8000 ) + { + UART1_STATUS = (1<>8); + UBRR1L = (unsigned char) baudrate; + + /* Enable USART receiver and transmitter and receive complete interrupt */ + UART1_CONTROL = _BV(RXCIE1)|(1< http://jump.to/fleury +File: $Id: uart.h,v 1.8.2.1 2007/07/01 11:14:38 peter Exp $ +Software: AVR-GCC 4.1, AVR Libc 1.4 +Hardware: any AVR with built-in UART, tested on AT90S8515 & ATmega8 at 4 Mhz +License: GNU General Public License +Usage: see Doxygen manual + +LICENSE: + Copyright (C) 2006 Peter Fleury + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + +************************************************************************/ + +/** + * @defgroup pfleury_uart UART Library + * @code #include @endcode + * + * @brief Interrupt UART library using the built-in UART with transmit and receive circular buffers. + * + * This library can be used to transmit and receive data through the built in UART. + * + * An interrupt is generated when the UART has finished transmitting or + * receiving a byte. The interrupt handling routines use circular buffers + * for buffering received and transmitted data. + * + * The UART_RX_BUFFER_SIZE and UART_TX_BUFFER_SIZE constants define + * the size of the circular buffers in bytes. Note that these constants must be a power of 2. + * You may need to adapt this constants to your target and your application by adding + * CDEFS += -DUART_RX_BUFFER_SIZE=nn -DUART_RX_BUFFER_SIZE=nn to your Makefile. + * + * @note Based on Atmel Application Note AVR306 + * @author Peter Fleury pfleury@gmx.ch http://jump.to/fleury + */ + +/**@{*/ + + +#if (__GNUC__ * 100 + __GNUC_MINOR__) < 304 +#error "This library requires AVR-GCC 3.4 or later, update to newer AVR-GCC compiler !" +#endif + + +/* +** constants and macros +*/ + +/** @brief UART Baudrate Expression + * @param xtalcpu system clock in Mhz, e.g. 4000000L for 4Mhz + * @param baudrate baudrate in bps, e.g. 1200, 2400, 9600 + */ +#define UART_BAUD_SELECT(baudRate,xtalCpu) ((xtalCpu)/((baudRate)*16l)-1) + +/** @brief UART Baudrate Expression for ATmega double speed mode + * @param xtalcpu system clock in Mhz, e.g. 4000000L for 4Mhz + * @param baudrate baudrate in bps, e.g. 1200, 2400, 9600 + */ +#define UART_BAUD_SELECT_DOUBLE_SPEED(baudRate,xtalCpu) (((xtalCpu)/((baudRate)*8l)-1)|0x8000) + + +/** Size of the circular receive buffer, must be power of 2 */ +#ifndef UART_RX_BUFFER_SIZE +#define UART_RX_BUFFER_SIZE 32 +#endif +/** Size of the circular transmit buffer, must be power of 2 */ +#ifndef UART_TX_BUFFER_SIZE +#define UART_TX_BUFFER_SIZE 32 +#endif + +/* test if the size of the circular buffers fits into SRAM */ +#if ( (UART_RX_BUFFER_SIZE+UART_TX_BUFFER_SIZE) >= (RAMEND-0x60 ) ) +#error "size of UART_RX_BUFFER_SIZE + UART_TX_BUFFER_SIZE larger than size of SRAM" +#endif + +/* +** high byte error return code of uart_getc() +*/ +#define UART_FRAME_ERROR 0x0800 /* Framing Error by UART */ +#define UART_OVERRUN_ERROR 0x0400 /* Overrun condition by UART */ +#define UART_BUFFER_OVERFLOW 0x0200 /* receive ringbuffer overflow */ +#define UART_NO_DATA 0x0100 /* no receive data available */ + + +/* +** function prototypes +*/ + +/** + @brief Initialize UART and set baudrate + @param baudrate Specify baudrate using macro UART_BAUD_SELECT() + @return none +*/ +extern void uart_init(unsigned int baudrate); + + +/** + * @brief Get received byte from ringbuffer + * + * Returns in the lower byte the received character and in the + * higher byte the last receive error. + * UART_NO_DATA is returned when no data is available. + * + * @param void + * @return lower byte: received byte from ringbuffer + * @return higher byte: last receive status + * - \b 0 successfully received data from UART + * - \b UART_NO_DATA + *
no receive data available + * - \b UART_BUFFER_OVERFLOW + *
Receive ringbuffer overflow. + * We are not reading the receive buffer fast enough, + * one or more received character have been dropped + * - \b UART_OVERRUN_ERROR + *
Overrun condition by UART. + * A character already present in the UART UDR register was + * not read by the interrupt handler before the next character arrived, + * one or more received characters have been dropped. + * - \b UART_FRAME_ERROR + *
Framing Error by UART + */ +extern unsigned int uart_getc(void); + + +/** + * @brief Put byte to ringbuffer for transmitting via UART + * @param data byte to be transmitted + * @return none + */ +extern void uart_putc(unsigned char data); + + +/** + * @brief Put string to ringbuffer for transmitting via UART + * + * The string is buffered by the uart library in a circular buffer + * and one character at a time is transmitted to the UART using interrupts. + * Blocks if it can not write the whole string into the circular buffer. + * + * @param s string to be transmitted + * @return none + */ +extern void uart_puts(const char *s ); + + +/** + * @brief Put string from program memory to ringbuffer for transmitting via UART. + * + * The string is buffered by the uart library in a circular buffer + * and one character at a time is transmitted to the UART using interrupts. + * Blocks if it can not write the whole string into the circular buffer. + * + * @param s program memory string to be transmitted + * @return none + * @see uart_puts_P + */ +extern void uart_puts_p(const char *s ); + +/** + * @brief Macro to automatically put a string constant into program memory + */ +#define uart_puts_P(__s) uart_puts_p(PSTR(__s)) + + + +/** @brief Initialize USART1 (only available on selected ATmegas) @see uart_init */ +extern void uart1_init(unsigned int baudrate); +/** @brief Get received byte of USART1 from ringbuffer. (only available on selected ATmega) @see uart_getc */ +extern unsigned int uart1_getc(void); +/** @brief Put byte to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_putc */ +extern void uart1_putc(unsigned char data); +/** @brief Put string to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_puts */ +extern void uart1_puts(const char *s ); +/** @brief Put string from program memory to ringbuffer for transmitting via USART1 (only available on selected ATmega) @see uart_puts_p */ +extern void uart1_puts_p(const char *s ); +/** @brief Macro to automatically put a string constant into program memory */ +#define uart1_puts_P(__s) uart1_puts_p(PSTR(__s)) + +/**@}*/ + + +#endif // UART_H + diff --git a/blinktest_328p/bin/Debug/blinktest_328p.elf.eep.hex b/blinktest_328p/bin/Debug/blinktest_328p.elf.eep.hex new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/blinktest_328p/bin/Debug/blinktest_328p.elf.eep.hex @@ -0,0 +1 @@ +:00000001FF diff --git a/blinktest_328p/bin/Debug/blinktest_328p.elf.hex b/blinktest_328p/bin/Debug/blinktest_328p.elf.hex new file mode 100644 index 0000000..562b5d7 --- /dev/null +++ b/blinktest_328p/bin/Debug/blinktest_328p.elf.hex @@ -0,0 +1,71 @@ +:100000000C945A000C9477000C9477000C947700B1 +:100010000C9477000C9477000C9477000C94770084 +:100020000C9477000C9477000C9477000C94770074 +:100030000C9477000C9477000C9477000C94770064 +:100040000C9498000C9477000C9477000C94770033 +:100050000C9477000C9477000C9477000C94770044 +:100060000C9477000C947700000024272A000025C8 +:10007000282B000023262904040404040404040299 +:100080000202020202030303030303010204081035 +:100090002040800102040810200102040810200002 +:1000A0000000070002010000030406000000000039 +:1000B0000000000011241FBECFEFD8E0DEBFCDBF8F +:1000C00011E0A0E0B1E0E8E5F4E002C005900D9297 +:1000D000A030B107D9F711E0A0E0B1E001C01D9256 +:1000E000A830B107E1F70E9479000C942A020C9421 +:1000F0000000DF93CF93CDB7DEB70E943B018DE0C8 +:1001000061E00E9475018DE061E00E94930168EE5C +:1001100073E080E090E00E9403018DE060E00E94C7 +:10012000930168EE73E080E090E00E940301EBCF62 +:100130001F920F920FB60F9211242F938F939F93BC +:10014000AF93BF938091000190910101A0910201B2 +:10015000B09103018050904CAF4FBF4F809300018E +:1001600090930101A0930201B093030127C08091F5 +:10017000000190910101A0910201B091030180580A +:100180009E43A040B0408093000190930101A09352 +:100190000201B09303018091040190910501A091A7 +:1001A0000601B09107010196A11DB11D80930401C4 +:1001B00090930501A0930601B0930701809100017F +:1001C00090910101A0910201B091030181589E43D9 +:1001D000A040B04060F6BF91AF919F918F912F9159 +:1001E0000F900FBE0F901F9018958FB7F894209125 +:1001F00004013091050140910601509107018FBF24 +:10020000B901CA010895EF92FF920F931F937B01EA +:100210008C018FB7F89440910401509105016091D1 +:100220000601709107018FBF2FB7F89480910401E8 +:1002300090910501A0910601B09107012FBF841B89 +:10024000950BA60BB70B8E159F05A007B10760F3A2 +:100250001F910F91FF90EF900895019759F0FC01C5 +:10026000EE0FFF1FEE0FFF1F32978FB7F8943197F5 +:10027000F1F78FBF0895789484B5826084BD84B50A +:10028000816084BD85B5826085BD85B5816085BD91 +:10029000EEE6F0E0808181608083E1E8F0E080813B +:1002A00082608083808181608083E0E8F0E08081EB +:1002B00081608083E1EBF0E0808184608083E0EB0B +:1002C000F0E0808181608083EAE7F0E080818460F3 +:1002D000808380818260808380818160808380814F +:1002E000806880831092C1000895282F30E0C901F2 +:1002F00085579F4FFC01949129583F4FF9018491F4 +:10030000882381F0E82FF0E0E859FF4FE491F0E016 +:10031000662329F4808190958923808308958081C4 +:10032000892B80830895482F50E0CA0181569F4F42 +:10033000FC012491CA0185579F4FFC0194914958B3 +:100340005F4FFA0134913323C1F1222331F123307D +:1003500021F4809180008F7705C0243031F48091A2 +:1003600080008F7D8093800018C0213019F484B5FF +:100370008F7704C0223021F484B58F7D84BD0DC0F9 +:10038000263021F48091B0008F7705C0273029F402 +:100390008091B0008F7D8093B000E32FF0E0E359AF +:1003A000FF4FE491F0E0662329F480819095892342 +:1003B000808308958081892B80830895482F50E0A1 +:1003C000CA0181569F4FFC012491CA0185579F4F56 +:1003D000FC01949149585F4FFA013491332319F489 +:1003E00020E030E035C0222331F1233021F4809128 +:1003F00080008F7705C0243031F4809180008F7D9C +:100400008093800018C0213019F484B58F7704C020 +:10041000223021F484B58F7D84BD0DC0263021F4B7 +:100420008091B0008F7705C0273029F48091B0000B +:100430008F7D8093B000E32FF0E0EE58FF4FE49102 +:10044000F0E0808120E030E0892311F021E030E00D +:08045000C9010895F894FFCFE3 +:00000001FF diff --git a/blinktest_328p/bin/Debug/blinktest_328p.elf.lss b/blinktest_328p/bin/Debug/blinktest_328p.elf.lss new file mode 100644 index 0000000..bee8588 --- /dev/null +++ b/blinktest_328p/bin/Debug/blinktest_328p.elf.lss @@ -0,0 +1,539 @@ + +bin/Debug/blinktest_328p.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000458 00000000 00000000 00000074 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .bss 00000008 00800100 00800100 000004cc 2**0 + ALLOC + 2 .stab 00000b28 00000000 00000000 000004cc 2**2 + CONTENTS, READONLY, DEBUGGING + 3 .stabstr 0000188e 00000000 00000000 00000ff4 2**0 + CONTENTS, READONLY, DEBUGGING + 4 .debug_aranges 00000040 00000000 00000000 00002882 2**0 + CONTENTS, READONLY, DEBUGGING + 5 .debug_pubnames 0000016c 00000000 00000000 000028c2 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_info 000006f2 00000000 00000000 00002a2e 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_abbrev 000002e1 00000000 00000000 00003120 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 00000551 00000000 00000000 00003401 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_frame 000000a0 00000000 00000000 00003954 2**2 + CONTENTS, READONLY, DEBUGGING + 10 .debug_str 00000227 00000000 00000000 000039f4 2**0 + CONTENTS, READONLY, DEBUGGING + 11 .debug_loc 000001fa 00000000 00000000 00003c1b 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 5a 00 jmp 0xb4 ; 0xb4 <__ctors_end> + 4: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 8: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 10: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 14: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 18: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 1c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 20: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 24: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 28: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 2c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 30: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 34: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 38: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 3c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 40: 0c 94 98 00 jmp 0x130 ; 0x130 <__vector_16> + 44: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 48: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 4c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 50: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 54: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 58: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 5c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 60: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 64: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + +00000068 : + 68: 00 00 24 27 2a ..$'* + +0000006d : + 6d: 00 00 25 28 2b ..%(+ + +00000072 : + 72: 00 00 23 26 29 ..#&) + +00000077 : + 77: 04 04 04 04 04 04 04 04 02 02 02 02 02 02 03 03 ................ + 87: 03 03 03 03 .... + +0000008b : + 8b: 01 02 04 08 10 20 40 80 01 02 04 08 10 20 01 02 ..... @...... .. + 9b: 04 08 10 20 ... + +0000009f : + 9f: 00 00 00 07 00 02 01 00 00 03 04 06 00 00 00 00 ................ + af: 00 00 00 00 00 ..... + +000000b4 <__ctors_end>: + b4: 11 24 eor r1, r1 + b6: 1f be out 0x3f, r1 ; 63 + b8: cf ef ldi r28, 0xFF ; 255 + ba: d8 e0 ldi r29, 0x08 ; 8 + bc: de bf out 0x3e, r29 ; 62 + be: cd bf out 0x3d, r28 ; 61 + +000000c0 <__do_copy_data>: + c0: 11 e0 ldi r17, 0x01 ; 1 + c2: a0 e0 ldi r26, 0x00 ; 0 + c4: b1 e0 ldi r27, 0x01 ; 1 + c6: e8 e5 ldi r30, 0x58 ; 88 + c8: f4 e0 ldi r31, 0x04 ; 4 + ca: 02 c0 rjmp .+4 ; 0xd0 <.do_copy_data_start> + +000000cc <.do_copy_data_loop>: + cc: 05 90 lpm r0, Z+ + ce: 0d 92 st X+, r0 + +000000d0 <.do_copy_data_start>: + d0: a0 30 cpi r26, 0x00 ; 0 + d2: b1 07 cpc r27, r17 + d4: d9 f7 brne .-10 ; 0xcc <.do_copy_data_loop> + +000000d6 <__do_clear_bss>: + d6: 11 e0 ldi r17, 0x01 ; 1 + d8: a0 e0 ldi r26, 0x00 ; 0 + da: b1 e0 ldi r27, 0x01 ; 1 + dc: 01 c0 rjmp .+2 ; 0xe0 <.do_clear_bss_start> + +000000de <.do_clear_bss_loop>: + de: 1d 92 st X+, r1 + +000000e0 <.do_clear_bss_start>: + e0: a8 30 cpi r26, 0x08 ; 8 + e2: b1 07 cpc r27, r17 + e4: e1 f7 brne .-8 ; 0xde <.do_clear_bss_loop> + e6: 0e 94 79 00 call 0xf2 ; 0xf2
+ ea: 0c 94 2a 02 jmp 0x454 ; 0x454 <_exit> + +000000ee <__bad_interrupt>: + ee: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +000000f2
: + + +#include //import main Arduino header file + + +int main(){ + f2: df 93 push r29 + f4: cf 93 push r28 + f6: cd b7 in r28, 0x3d ; 61 + f8: de b7 in r29, 0x3e ; 62 + + init(); //-- init Arduino library - delay, PWM setup messes with timers, millis(), micros() etc don't work without it + fa: 0e 94 3b 01 call 0x276 ; 0x276 + pinMode(13, OUTPUT); + fe: 8d e0 ldi r24, 0x0D ; 13 + 100: 61 e0 ldi r22, 0x01 ; 1 + 102: 0e 94 75 01 call 0x2ea ; 0x2ea + + + + while(1) { + digitalWrite(13, HIGH); // set the LED on + 106: 8d e0 ldi r24, 0x0D ; 13 + 108: 61 e0 ldi r22, 0x01 ; 1 + 10a: 0e 94 93 01 call 0x326 ; 0x326 + delay(1000); // wait for a second + 10e: 68 ee ldi r22, 0xE8 ; 232 + 110: 73 e0 ldi r23, 0x03 ; 3 + 112: 80 e0 ldi r24, 0x00 ; 0 + 114: 90 e0 ldi r25, 0x00 ; 0 + 116: 0e 94 03 01 call 0x206 ; 0x206 + digitalWrite(13, LOW); // set the LED off + 11a: 8d e0 ldi r24, 0x0D ; 13 + 11c: 60 e0 ldi r22, 0x00 ; 0 + 11e: 0e 94 93 01 call 0x326 ; 0x326 + delay(1000); // wait for a second + 122: 68 ee ldi r22, 0xE8 ; 232 + 124: 73 e0 ldi r23, 0x03 ; 3 + 126: 80 e0 ldi r24, 0x00 ; 0 + 128: 90 e0 ldi r25, 0x00 ; 0 + 12a: 0e 94 03 01 call 0x206 ; 0x206 + 12e: eb cf rjmp .-42 ; 0x106 + +00000130 <__vector_16>: + 130: 1f 92 push r1 + 132: 0f 92 push r0 + 134: 0f b6 in r0, 0x3f ; 63 + 136: 0f 92 push r0 + 138: 11 24 eor r1, r1 + 13a: 2f 93 push r18 + 13c: 8f 93 push r24 + 13e: 9f 93 push r25 + 140: af 93 push r26 + 142: bf 93 push r27 + 144: 80 91 00 01 lds r24, 0x0100 + 148: 90 91 01 01 lds r25, 0x0101 + 14c: a0 91 02 01 lds r26, 0x0102 + 150: b0 91 03 01 lds r27, 0x0103 + 154: 80 50 subi r24, 0x00 ; 0 + 156: 90 4c sbci r25, 0xC0 ; 192 + 158: af 4f sbci r26, 0xFF ; 255 + 15a: bf 4f sbci r27, 0xFF ; 255 + 15c: 80 93 00 01 sts 0x0100, r24 + 160: 90 93 01 01 sts 0x0101, r25 + 164: a0 93 02 01 sts 0x0102, r26 + 168: b0 93 03 01 sts 0x0103, r27 + 16c: 27 c0 rjmp .+78 ; 0x1bc <__vector_16+0x8c> + 16e: 80 91 00 01 lds r24, 0x0100 + 172: 90 91 01 01 lds r25, 0x0101 + 176: a0 91 02 01 lds r26, 0x0102 + 17a: b0 91 03 01 lds r27, 0x0103 + 17e: 80 58 subi r24, 0x80 ; 128 + 180: 9e 43 sbci r25, 0x3E ; 62 + 182: a0 40 sbci r26, 0x00 ; 0 + 184: b0 40 sbci r27, 0x00 ; 0 + 186: 80 93 00 01 sts 0x0100, r24 + 18a: 90 93 01 01 sts 0x0101, r25 + 18e: a0 93 02 01 sts 0x0102, r26 + 192: b0 93 03 01 sts 0x0103, r27 + 196: 80 91 04 01 lds r24, 0x0104 + 19a: 90 91 05 01 lds r25, 0x0105 + 19e: a0 91 06 01 lds r26, 0x0106 + 1a2: b0 91 07 01 lds r27, 0x0107 + 1a6: 01 96 adiw r24, 0x01 ; 1 + 1a8: a1 1d adc r26, r1 + 1aa: b1 1d adc r27, r1 + 1ac: 80 93 04 01 sts 0x0104, r24 + 1b0: 90 93 05 01 sts 0x0105, r25 + 1b4: a0 93 06 01 sts 0x0106, r26 + 1b8: b0 93 07 01 sts 0x0107, r27 + 1bc: 80 91 00 01 lds r24, 0x0100 + 1c0: 90 91 01 01 lds r25, 0x0101 + 1c4: a0 91 02 01 lds r26, 0x0102 + 1c8: b0 91 03 01 lds r27, 0x0103 + 1cc: 81 58 subi r24, 0x81 ; 129 + 1ce: 9e 43 sbci r25, 0x3E ; 62 + 1d0: a0 40 sbci r26, 0x00 ; 0 + 1d2: b0 40 sbci r27, 0x00 ; 0 + 1d4: 60 f6 brcc .-104 ; 0x16e <__vector_16+0x3e> + 1d6: bf 91 pop r27 + 1d8: af 91 pop r26 + 1da: 9f 91 pop r25 + 1dc: 8f 91 pop r24 + 1de: 2f 91 pop r18 + 1e0: 0f 90 pop r0 + 1e2: 0f be out 0x3f, r0 ; 63 + 1e4: 0f 90 pop r0 + 1e6: 1f 90 pop r1 + 1e8: 18 95 reti + +000001ea : + 1ea: 8f b7 in r24, 0x3f ; 63 + 1ec: f8 94 cli + 1ee: 20 91 04 01 lds r18, 0x0104 + 1f2: 30 91 05 01 lds r19, 0x0105 + 1f6: 40 91 06 01 lds r20, 0x0106 + 1fa: 50 91 07 01 lds r21, 0x0107 + 1fe: 8f bf out 0x3f, r24 ; 63 + 200: b9 01 movw r22, r18 + 202: ca 01 movw r24, r20 + 204: 08 95 ret + +00000206 : + 206: ef 92 push r14 + 208: ff 92 push r15 + 20a: 0f 93 push r16 + 20c: 1f 93 push r17 + 20e: 7b 01 movw r14, r22 + 210: 8c 01 movw r16, r24 + 212: 8f b7 in r24, 0x3f ; 63 + 214: f8 94 cli + 216: 40 91 04 01 lds r20, 0x0104 + 21a: 50 91 05 01 lds r21, 0x0105 + 21e: 60 91 06 01 lds r22, 0x0106 + 222: 70 91 07 01 lds r23, 0x0107 + 226: 8f bf out 0x3f, r24 ; 63 + 228: 2f b7 in r18, 0x3f ; 63 + 22a: f8 94 cli + 22c: 80 91 04 01 lds r24, 0x0104 + 230: 90 91 05 01 lds r25, 0x0105 + 234: a0 91 06 01 lds r26, 0x0106 + 238: b0 91 07 01 lds r27, 0x0107 + 23c: 2f bf out 0x3f, r18 ; 63 + 23e: 84 1b sub r24, r20 + 240: 95 0b sbc r25, r21 + 242: a6 0b sbc r26, r22 + 244: b7 0b sbc r27, r23 + 246: 8e 15 cp r24, r14 + 248: 9f 05 cpc r25, r15 + 24a: a0 07 cpc r26, r16 + 24c: b1 07 cpc r27, r17 + 24e: 60 f3 brcs .-40 ; 0x228 + 250: 1f 91 pop r17 + 252: 0f 91 pop r16 + 254: ff 90 pop r15 + 256: ef 90 pop r14 + 258: 08 95 ret + +0000025a : + 25a: 01 97 sbiw r24, 0x01 ; 1 + 25c: 59 f0 breq .+22 ; 0x274 + 25e: fc 01 movw r30, r24 + 260: ee 0f add r30, r30 + 262: ff 1f adc r31, r31 + 264: ee 0f add r30, r30 + 266: ff 1f adc r31, r31 + 268: 32 97 sbiw r30, 0x02 ; 2 + 26a: 8f b7 in r24, 0x3f ; 63 + 26c: f8 94 cli + 26e: 31 97 sbiw r30, 0x01 ; 1 + 270: f1 f7 brne .-4 ; 0x26e + 272: 8f bf out 0x3f, r24 ; 63 + 274: 08 95 ret + +00000276 : + 276: 78 94 sei + 278: 84 b5 in r24, 0x24 ; 36 + 27a: 82 60 ori r24, 0x02 ; 2 + 27c: 84 bd out 0x24, r24 ; 36 + 27e: 84 b5 in r24, 0x24 ; 36 + 280: 81 60 ori r24, 0x01 ; 1 + 282: 84 bd out 0x24, r24 ; 36 + 284: 85 b5 in r24, 0x25 ; 37 + 286: 82 60 ori r24, 0x02 ; 2 + 288: 85 bd out 0x25, r24 ; 37 + 28a: 85 b5 in r24, 0x25 ; 37 + 28c: 81 60 ori r24, 0x01 ; 1 + 28e: 85 bd out 0x25, r24 ; 37 + 290: ee e6 ldi r30, 0x6E ; 110 + 292: f0 e0 ldi r31, 0x00 ; 0 + 294: 80 81 ld r24, Z + 296: 81 60 ori r24, 0x01 ; 1 + 298: 80 83 st Z, r24 + 29a: e1 e8 ldi r30, 0x81 ; 129 + 29c: f0 e0 ldi r31, 0x00 ; 0 + 29e: 80 81 ld r24, Z + 2a0: 82 60 ori r24, 0x02 ; 2 + 2a2: 80 83 st Z, r24 + 2a4: 80 81 ld r24, Z + 2a6: 81 60 ori r24, 0x01 ; 1 + 2a8: 80 83 st Z, r24 + 2aa: e0 e8 ldi r30, 0x80 ; 128 + 2ac: f0 e0 ldi r31, 0x00 ; 0 + 2ae: 80 81 ld r24, Z + 2b0: 81 60 ori r24, 0x01 ; 1 + 2b2: 80 83 st Z, r24 + 2b4: e1 eb ldi r30, 0xB1 ; 177 + 2b6: f0 e0 ldi r31, 0x00 ; 0 + 2b8: 80 81 ld r24, Z + 2ba: 84 60 ori r24, 0x04 ; 4 + 2bc: 80 83 st Z, r24 + 2be: e0 eb ldi r30, 0xB0 ; 176 + 2c0: f0 e0 ldi r31, 0x00 ; 0 + 2c2: 80 81 ld r24, Z + 2c4: 81 60 ori r24, 0x01 ; 1 + 2c6: 80 83 st Z, r24 + 2c8: ea e7 ldi r30, 0x7A ; 122 + 2ca: f0 e0 ldi r31, 0x00 ; 0 + 2cc: 80 81 ld r24, Z + 2ce: 84 60 ori r24, 0x04 ; 4 + 2d0: 80 83 st Z, r24 + 2d2: 80 81 ld r24, Z + 2d4: 82 60 ori r24, 0x02 ; 2 + 2d6: 80 83 st Z, r24 + 2d8: 80 81 ld r24, Z + 2da: 81 60 ori r24, 0x01 ; 1 + 2dc: 80 83 st Z, r24 + 2de: 80 81 ld r24, Z + 2e0: 80 68 ori r24, 0x80 ; 128 + 2e2: 80 83 st Z, r24 + 2e4: 10 92 c1 00 sts 0x00C1, r1 + 2e8: 08 95 ret + +000002ea : + 2ea: 28 2f mov r18, r24 + 2ec: 30 e0 ldi r19, 0x00 ; 0 + 2ee: c9 01 movw r24, r18 + 2f0: 85 57 subi r24, 0x75 ; 117 + 2f2: 9f 4f sbci r25, 0xFF ; 255 + 2f4: fc 01 movw r30, r24 + 2f6: 94 91 lpm r25, Z+ + 2f8: 29 58 subi r18, 0x89 ; 137 + 2fa: 3f 4f sbci r19, 0xFF ; 255 + 2fc: f9 01 movw r30, r18 + 2fe: 84 91 lpm r24, Z+ + 300: 88 23 and r24, r24 + 302: 81 f0 breq .+32 ; 0x324 + 304: e8 2f mov r30, r24 + 306: f0 e0 ldi r31, 0x00 ; 0 + 308: e8 59 subi r30, 0x98 ; 152 + 30a: ff 4f sbci r31, 0xFF ; 255 + 30c: e4 91 lpm r30, Z+ + 30e: f0 e0 ldi r31, 0x00 ; 0 + 310: 66 23 and r22, r22 + 312: 29 f4 brne .+10 ; 0x31e + 314: 80 81 ld r24, Z + 316: 90 95 com r25 + 318: 89 23 and r24, r25 + 31a: 80 83 st Z, r24 + 31c: 08 95 ret + 31e: 80 81 ld r24, Z + 320: 89 2b or r24, r25 + 322: 80 83 st Z, r24 + 324: 08 95 ret + +00000326 : + 326: 48 2f mov r20, r24 + 328: 50 e0 ldi r21, 0x00 ; 0 + 32a: ca 01 movw r24, r20 + 32c: 81 56 subi r24, 0x61 ; 97 + 32e: 9f 4f sbci r25, 0xFF ; 255 + 330: fc 01 movw r30, r24 + 332: 24 91 lpm r18, Z+ + 334: ca 01 movw r24, r20 + 336: 85 57 subi r24, 0x75 ; 117 + 338: 9f 4f sbci r25, 0xFF ; 255 + 33a: fc 01 movw r30, r24 + 33c: 94 91 lpm r25, Z+ + 33e: 49 58 subi r20, 0x89 ; 137 + 340: 5f 4f sbci r21, 0xFF ; 255 + 342: fa 01 movw r30, r20 + 344: 34 91 lpm r19, Z+ + 346: 33 23 and r19, r19 + 348: c1 f1 breq .+112 ; 0x3ba + 34a: 22 23 and r18, r18 + 34c: 31 f1 breq .+76 ; 0x39a + 34e: 23 30 cpi r18, 0x03 ; 3 + 350: 21 f4 brne .+8 ; 0x35a + 352: 80 91 80 00 lds r24, 0x0080 + 356: 8f 77 andi r24, 0x7F ; 127 + 358: 05 c0 rjmp .+10 ; 0x364 + 35a: 24 30 cpi r18, 0x04 ; 4 + 35c: 31 f4 brne .+12 ; 0x36a + 35e: 80 91 80 00 lds r24, 0x0080 + 362: 8f 7d andi r24, 0xDF ; 223 + 364: 80 93 80 00 sts 0x0080, r24 + 368: 18 c0 rjmp .+48 ; 0x39a + 36a: 21 30 cpi r18, 0x01 ; 1 + 36c: 19 f4 brne .+6 ; 0x374 + 36e: 84 b5 in r24, 0x24 ; 36 + 370: 8f 77 andi r24, 0x7F ; 127 + 372: 04 c0 rjmp .+8 ; 0x37c + 374: 22 30 cpi r18, 0x02 ; 2 + 376: 21 f4 brne .+8 ; 0x380 + 378: 84 b5 in r24, 0x24 ; 36 + 37a: 8f 7d andi r24, 0xDF ; 223 + 37c: 84 bd out 0x24, r24 ; 36 + 37e: 0d c0 rjmp .+26 ; 0x39a + 380: 26 30 cpi r18, 0x06 ; 6 + 382: 21 f4 brne .+8 ; 0x38c + 384: 80 91 b0 00 lds r24, 0x00B0 + 388: 8f 77 andi r24, 0x7F ; 127 + 38a: 05 c0 rjmp .+10 ; 0x396 + 38c: 27 30 cpi r18, 0x07 ; 7 + 38e: 29 f4 brne .+10 ; 0x39a + 390: 80 91 b0 00 lds r24, 0x00B0 + 394: 8f 7d andi r24, 0xDF ; 223 + 396: 80 93 b0 00 sts 0x00B0, r24 + 39a: e3 2f mov r30, r19 + 39c: f0 e0 ldi r31, 0x00 ; 0 + 39e: e3 59 subi r30, 0x93 ; 147 + 3a0: ff 4f sbci r31, 0xFF ; 255 + 3a2: e4 91 lpm r30, Z+ + 3a4: f0 e0 ldi r31, 0x00 ; 0 + 3a6: 66 23 and r22, r22 + 3a8: 29 f4 brne .+10 ; 0x3b4 + 3aa: 80 81 ld r24, Z + 3ac: 90 95 com r25 + 3ae: 89 23 and r24, r25 + 3b0: 80 83 st Z, r24 + 3b2: 08 95 ret + 3b4: 80 81 ld r24, Z + 3b6: 89 2b or r24, r25 + 3b8: 80 83 st Z, r24 + 3ba: 08 95 ret + +000003bc : + 3bc: 48 2f mov r20, r24 + 3be: 50 e0 ldi r21, 0x00 ; 0 + 3c0: ca 01 movw r24, r20 + 3c2: 81 56 subi r24, 0x61 ; 97 + 3c4: 9f 4f sbci r25, 0xFF ; 255 + 3c6: fc 01 movw r30, r24 + 3c8: 24 91 lpm r18, Z+ + 3ca: ca 01 movw r24, r20 + 3cc: 85 57 subi r24, 0x75 ; 117 + 3ce: 9f 4f sbci r25, 0xFF ; 255 + 3d0: fc 01 movw r30, r24 + 3d2: 94 91 lpm r25, Z+ + 3d4: 49 58 subi r20, 0x89 ; 137 + 3d6: 5f 4f sbci r21, 0xFF ; 255 + 3d8: fa 01 movw r30, r20 + 3da: 34 91 lpm r19, Z+ + 3dc: 33 23 and r19, r19 + 3de: 19 f4 brne .+6 ; 0x3e6 + 3e0: 20 e0 ldi r18, 0x00 ; 0 + 3e2: 30 e0 ldi r19, 0x00 ; 0 + 3e4: 35 c0 rjmp .+106 ; 0x450 + 3e6: 22 23 and r18, r18 + 3e8: 31 f1 breq .+76 ; 0x436 + 3ea: 23 30 cpi r18, 0x03 ; 3 + 3ec: 21 f4 brne .+8 ; 0x3f6 + 3ee: 80 91 80 00 lds r24, 0x0080 + 3f2: 8f 77 andi r24, 0x7F ; 127 + 3f4: 05 c0 rjmp .+10 ; 0x400 + 3f6: 24 30 cpi r18, 0x04 ; 4 + 3f8: 31 f4 brne .+12 ; 0x406 + 3fa: 80 91 80 00 lds r24, 0x0080 + 3fe: 8f 7d andi r24, 0xDF ; 223 + 400: 80 93 80 00 sts 0x0080, r24 + 404: 18 c0 rjmp .+48 ; 0x436 + 406: 21 30 cpi r18, 0x01 ; 1 + 408: 19 f4 brne .+6 ; 0x410 + 40a: 84 b5 in r24, 0x24 ; 36 + 40c: 8f 77 andi r24, 0x7F ; 127 + 40e: 04 c0 rjmp .+8 ; 0x418 + 410: 22 30 cpi r18, 0x02 ; 2 + 412: 21 f4 brne .+8 ; 0x41c + 414: 84 b5 in r24, 0x24 ; 36 + 416: 8f 7d andi r24, 0xDF ; 223 + 418: 84 bd out 0x24, r24 ; 36 + 41a: 0d c0 rjmp .+26 ; 0x436 + 41c: 26 30 cpi r18, 0x06 ; 6 + 41e: 21 f4 brne .+8 ; 0x428 + 420: 80 91 b0 00 lds r24, 0x00B0 + 424: 8f 77 andi r24, 0x7F ; 127 + 426: 05 c0 rjmp .+10 ; 0x432 + 428: 27 30 cpi r18, 0x07 ; 7 + 42a: 29 f4 brne .+10 ; 0x436 + 42c: 80 91 b0 00 lds r24, 0x00B0 + 430: 8f 7d andi r24, 0xDF ; 223 + 432: 80 93 b0 00 sts 0x00B0, r24 + 436: e3 2f mov r30, r19 + 438: f0 e0 ldi r31, 0x00 ; 0 + 43a: ee 58 subi r30, 0x8E ; 142 + 43c: ff 4f sbci r31, 0xFF ; 255 + 43e: e4 91 lpm r30, Z+ + 440: f0 e0 ldi r31, 0x00 ; 0 + 442: 80 81 ld r24, Z + 444: 20 e0 ldi r18, 0x00 ; 0 + 446: 30 e0 ldi r19, 0x00 ; 0 + 448: 89 23 and r24, r25 + 44a: 11 f0 breq .+4 ; 0x450 + 44c: 21 e0 ldi r18, 0x01 ; 1 + 44e: 30 e0 ldi r19, 0x00 ; 0 + 450: c9 01 movw r24, r18 + 452: 08 95 ret + +00000454 <_exit>: + 454: f8 94 cli + +00000456 <__stop_program>: + 456: ff cf rjmp .-2 ; 0x456 <__stop_program> diff --git a/blinktest_328p/bin/Debug/blinktest_328p.elf.map b/blinktest_328p/bin/Debug/blinktest_328p.elf.map new file mode 100644 index 0000000..dfdd957 --- /dev/null +++ b/blinktest_328p/bin/Debug/blinktest_328p.elf.map @@ -0,0 +1,501 @@ +Archive member included because of file (symbol) + +../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Debug/main.o (delay) +../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Debug/main.o (pinMode) +../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) (port_to_mode_PGM) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o (exit) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) (__do_copy_data) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) (__do_clear_bss) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +LOAD obj/Debug/main.o +LOAD ../arduino_libs/core0022_328p.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a + +.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 0x00000000 0x458 + *(.vectors) + .vectors 0x00000000 0x68 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + *(.progmem*) + .progmem.data 0x00000068 0x4b ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + 0x00000068 port_to_mode_PGM + 0x0000006d port_to_output_PGM + 0x00000072 port_to_input_PGM + 0x00000077 digital_pin_to_port_PGM + 0x0000008b digital_pin_to_bit_mask_PGM + 0x0000009f digital_pin_to_timer_PGM + 0x000000b4 . = ALIGN (0x2) + *fill* 0x000000b3 0x1 00 + 0x000000b4 __trampolines_start = . + *(.trampolines) + .trampolines 0x000000b4 0x0 linker stubs + *(.trampolines*) + 0x000000b4 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x000000b4 __ctors_start = . + *(.ctors) + 0x000000b4 __ctors_end = . + 0x000000b4 __dtors_start = . + *(.dtors) + 0x000000b4 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x000000b4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x000000b4 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x000000b4 0xc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x000000c0 0x16 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + 0x000000c0 __do_copy_data + .init4 0x000000d6 0x10 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x000000d6 __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x000000e6 0x8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init9) + *(.text) + .text 0x000000ee 0x4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x000000ee __vector_22 + 0x000000ee __vector_1 + 0x000000ee __vector_24 + 0x000000ee __vector_12 + 0x000000ee __bad_interrupt + 0x000000ee __vector_6 + 0x000000ee __vector_3 + 0x000000ee __vector_23 + 0x000000ee __vector_25 + 0x000000ee __vector_11 + 0x000000ee __vector_13 + 0x000000ee __vector_17 + 0x000000ee __vector_19 + 0x000000ee __vector_7 + 0x000000ee __vector_5 + 0x000000ee __vector_4 + 0x000000ee __vector_9 + 0x000000ee __vector_2 + 0x000000ee __vector_21 + 0x000000ee __vector_15 + 0x000000ee __vector_8 + 0x000000ee __vector_14 + 0x000000ee __vector_10 + 0x000000ee __vector_18 + 0x000000ee __vector_20 + .text 0x000000f2 0x3e obj/Debug/main.o + 0x000000f2 main + .text 0x00000130 0x1ba ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x00000130 __vector_16 + 0x000001ea millis + 0x00000206 delay + 0x0000025a delayMicroseconds + 0x00000276 init + .text 0x000002ea 0x16a ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + 0x000002ea pinMode + 0x00000326 digitalWrite + 0x000003bc digitalRead + .text 0x00000454 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .text 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x00000454 . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text.libgcc 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x00000454 . = ALIGN (0x2) + *(.fini9) + .fini9 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + 0x00000454 exit + 0x00000454 _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x00000454 0x4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x00000458 _etext = . + +.data 0x00800100 0x0 load address 0x00000458 + 0x00800100 PROVIDE (__data_start, .) + *(.data) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .data 0x00800100 0x0 obj/Debug/main.o + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(wiring.c.o) + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x00800100 . = ALIGN (0x2) + 0x00800100 _edata = . + 0x00800100 PROVIDE (__data_end, .) + +.bss 0x00800100 0x8 + 0x00800100 PROVIDE (__bss_start, .) + *(.bss) + .bss 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .bss 0x00800100 0x0 obj/Debug/main.o + .bss 0x00800100 0x8 ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x00800100 timer0_clock_cycles + 0x00800104 timer0_millis + .bss 0x00800108 0x0 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .bss 0x00800108 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + *(.bss*) + *(COMMON) + 0x00800108 PROVIDE (__bss_end, .) + 0x00000458 __data_load_start = LOADADDR (.data) + 0x00000458 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800108 0x0 + 0x00800108 PROVIDE (__noinit_start, .) + *(.noinit*) + 0x00800108 PROVIDE (__noinit_end, .) + 0x00800108 _end = . + 0x00800108 PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0xb28 + *(.stab) + .stab 0x00000000 0x6b4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .stab 0x000006b4 0x474 obj/Debug/main.o + 0x480 (size before relaxing) + +.stabstr 0x00000000 0x188e + *(.stabstr) + .stabstr 0x00000000 0x188e /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment + *(.comment) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0x40 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x20 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_aranges + 0x00000020 0x20 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_pubnames + 0x00000000 0x16c + *(.debug_pubnames) + .debug_pubnames + 0x00000000 0x80 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_pubnames + 0x00000080 0x3f ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_pubnames + 0x000000bf 0xad ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_info 0x00000000 0x6f2 + *(.debug_info) + .debug_info 0x00000000 0x1dd ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_info 0x000001dd 0x3f6 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_info 0x000005d3 0x11f ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + *(.gnu.linkonce.wi.*) + +.debug_abbrev 0x00000000 0x2e1 + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x117 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_abbrev 0x00000117 0x162 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_abbrev 0x00000279 0x68 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_line 0x00000000 0x551 + *(.debug_line) + .debug_line 0x00000000 0x251 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_line 0x00000251 0x233 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_line 0x00000484 0xcd ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_frame 0x00000000 0xa0 + *(.debug_frame) + .debug_frame 0x00000000 0x60 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_frame 0x00000060 0x40 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_str 0x00000000 0x227 + *(.debug_str) + .debug_str 0x00000000 0xd5 ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x115 (size before relaxing) + .debug_str 0x000000d5 0x117 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + 0x197 (size before relaxing) + .debug_str 0x000001ec 0x3b ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + 0x13e (size before relaxing) + +.debug_loc 0x00000000 0x1fa + *(.debug_loc) + .debug_loc 0x00000000 0xb6 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_loc 0x000000b6 0x144 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(bin/Debug/blinktest_328p.elf elf32-avr) +LOAD linker stubs + +Cross Reference Table + +Symbol File +__bad_interrupt /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__bss_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__bss_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__data_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_load_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__do_clear_bss /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) +__do_copy_data /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) +__heap_end /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__init /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__stack /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_1 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_11 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_12 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_13 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_14 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_15 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_16 ../arduino_libs/core0022_328p.a(wiring.c.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_17 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_18 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_19 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_20 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_21 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_23 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_24 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_25 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_3 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_5 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_7 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_9 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_default /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vectors /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +_exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) +delay ../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Debug/main.o +delayMicroseconds ../arduino_libs/core0022_328p.a(wiring.c.o) +digitalRead ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +digitalWrite ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Debug/main.o +digital_pin_to_bit_mask_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +digital_pin_to_port_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +digital_pin_to_timer_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +init ../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Debug/main.o +main obj/Debug/main.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +millis ../arduino_libs/core0022_328p.a(wiring.c.o) +pinMode ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Debug/main.o +port_to_input_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +port_to_mode_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +port_to_output_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +timer0_clock_cycles ../arduino_libs/core0022_328p.a(wiring.c.o) +timer0_millis ../arduino_libs/core0022_328p.a(wiring.c.o) diff --git a/blinktest_328p/bin/Debug/electic_streaming.elf.map b/blinktest_328p/bin/Debug/electic_streaming.elf.map new file mode 100644 index 0000000..dfdd957 --- /dev/null +++ b/blinktest_328p/bin/Debug/electic_streaming.elf.map @@ -0,0 +1,501 @@ +Archive member included because of file (symbol) + +../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Debug/main.o (delay) +../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Debug/main.o (pinMode) +../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) (port_to_mode_PGM) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o (exit) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) (__do_copy_data) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) (__do_clear_bss) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +LOAD obj/Debug/main.o +LOAD ../arduino_libs/core0022_328p.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a + +.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 0x00000000 0x458 + *(.vectors) + .vectors 0x00000000 0x68 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + *(.progmem*) + .progmem.data 0x00000068 0x4b ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + 0x00000068 port_to_mode_PGM + 0x0000006d port_to_output_PGM + 0x00000072 port_to_input_PGM + 0x00000077 digital_pin_to_port_PGM + 0x0000008b digital_pin_to_bit_mask_PGM + 0x0000009f digital_pin_to_timer_PGM + 0x000000b4 . = ALIGN (0x2) + *fill* 0x000000b3 0x1 00 + 0x000000b4 __trampolines_start = . + *(.trampolines) + .trampolines 0x000000b4 0x0 linker stubs + *(.trampolines*) + 0x000000b4 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x000000b4 __ctors_start = . + *(.ctors) + 0x000000b4 __ctors_end = . + 0x000000b4 __dtors_start = . + *(.dtors) + 0x000000b4 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x000000b4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x000000b4 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x000000b4 0xc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x000000c0 0x16 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + 0x000000c0 __do_copy_data + .init4 0x000000d6 0x10 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x000000d6 __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x000000e6 0x8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init9) + *(.text) + .text 0x000000ee 0x4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x000000ee __vector_22 + 0x000000ee __vector_1 + 0x000000ee __vector_24 + 0x000000ee __vector_12 + 0x000000ee __bad_interrupt + 0x000000ee __vector_6 + 0x000000ee __vector_3 + 0x000000ee __vector_23 + 0x000000ee __vector_25 + 0x000000ee __vector_11 + 0x000000ee __vector_13 + 0x000000ee __vector_17 + 0x000000ee __vector_19 + 0x000000ee __vector_7 + 0x000000ee __vector_5 + 0x000000ee __vector_4 + 0x000000ee __vector_9 + 0x000000ee __vector_2 + 0x000000ee __vector_21 + 0x000000ee __vector_15 + 0x000000ee __vector_8 + 0x000000ee __vector_14 + 0x000000ee __vector_10 + 0x000000ee __vector_18 + 0x000000ee __vector_20 + .text 0x000000f2 0x3e obj/Debug/main.o + 0x000000f2 main + .text 0x00000130 0x1ba ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x00000130 __vector_16 + 0x000001ea millis + 0x00000206 delay + 0x0000025a delayMicroseconds + 0x00000276 init + .text 0x000002ea 0x16a ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + 0x000002ea pinMode + 0x00000326 digitalWrite + 0x000003bc digitalRead + .text 0x00000454 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .text 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x00000454 . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text.libgcc 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x00000454 . = ALIGN (0x2) + *(.fini9) + .fini9 0x00000454 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + 0x00000454 exit + 0x00000454 _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x00000454 0x4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x00000458 _etext = . + +.data 0x00800100 0x0 load address 0x00000458 + 0x00800100 PROVIDE (__data_start, .) + *(.data) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .data 0x00800100 0x0 obj/Debug/main.o + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(wiring.c.o) + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x00800100 . = ALIGN (0x2) + 0x00800100 _edata = . + 0x00800100 PROVIDE (__data_end, .) + +.bss 0x00800100 0x8 + 0x00800100 PROVIDE (__bss_start, .) + *(.bss) + .bss 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .bss 0x00800100 0x0 obj/Debug/main.o + .bss 0x00800100 0x8 ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x00800100 timer0_clock_cycles + 0x00800104 timer0_millis + .bss 0x00800108 0x0 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .bss 0x00800108 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + *(.bss*) + *(COMMON) + 0x00800108 PROVIDE (__bss_end, .) + 0x00000458 __data_load_start = LOADADDR (.data) + 0x00000458 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800108 0x0 + 0x00800108 PROVIDE (__noinit_start, .) + *(.noinit*) + 0x00800108 PROVIDE (__noinit_end, .) + 0x00800108 _end = . + 0x00800108 PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0xb28 + *(.stab) + .stab 0x00000000 0x6b4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .stab 0x000006b4 0x474 obj/Debug/main.o + 0x480 (size before relaxing) + +.stabstr 0x00000000 0x188e + *(.stabstr) + .stabstr 0x00000000 0x188e /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment + *(.comment) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0x40 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x20 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_aranges + 0x00000020 0x20 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_pubnames + 0x00000000 0x16c + *(.debug_pubnames) + .debug_pubnames + 0x00000000 0x80 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_pubnames + 0x00000080 0x3f ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_pubnames + 0x000000bf 0xad ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_info 0x00000000 0x6f2 + *(.debug_info) + .debug_info 0x00000000 0x1dd ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_info 0x000001dd 0x3f6 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_info 0x000005d3 0x11f ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + *(.gnu.linkonce.wi.*) + +.debug_abbrev 0x00000000 0x2e1 + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x117 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_abbrev 0x00000117 0x162 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_abbrev 0x00000279 0x68 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_line 0x00000000 0x551 + *(.debug_line) + .debug_line 0x00000000 0x251 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_line 0x00000251 0x233 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_line 0x00000484 0xcd ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_frame 0x00000000 0xa0 + *(.debug_frame) + .debug_frame 0x00000000 0x60 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_frame 0x00000060 0x40 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_str 0x00000000 0x227 + *(.debug_str) + .debug_str 0x00000000 0xd5 ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x115 (size before relaxing) + .debug_str 0x000000d5 0x117 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + 0x197 (size before relaxing) + .debug_str 0x000001ec 0x3b ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + 0x13e (size before relaxing) + +.debug_loc 0x00000000 0x1fa + *(.debug_loc) + .debug_loc 0x00000000 0xb6 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_loc 0x000000b6 0x144 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(bin/Debug/blinktest_328p.elf elf32-avr) +LOAD linker stubs + +Cross Reference Table + +Symbol File +__bad_interrupt /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__bss_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__bss_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__data_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_load_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__do_clear_bss /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) +__do_copy_data /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) +__heap_end /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__init /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__stack /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_1 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_11 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_12 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_13 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_14 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_15 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_16 ../arduino_libs/core0022_328p.a(wiring.c.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_17 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_18 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_19 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_20 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_21 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_23 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_24 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_25 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_3 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_5 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_7 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_9 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_default /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vectors /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +_exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) +delay ../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Debug/main.o +delayMicroseconds ../arduino_libs/core0022_328p.a(wiring.c.o) +digitalRead ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +digitalWrite ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Debug/main.o +digital_pin_to_bit_mask_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +digital_pin_to_port_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +digital_pin_to_timer_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +init ../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Debug/main.o +main obj/Debug/main.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +millis ../arduino_libs/core0022_328p.a(wiring.c.o) +pinMode ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Debug/main.o +port_to_input_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +port_to_mode_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +port_to_output_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +timer0_clock_cycles ../arduino_libs/core0022_328p.a(wiring.c.o) +timer0_millis ../arduino_libs/core0022_328p.a(wiring.c.o) diff --git a/blinktest_328p/bin/Release/blinktest_328p.elf b/blinktest_328p/bin/Release/blinktest_328p.elf new file mode 100755 index 0000000..1c8b6ca Binary files /dev/null and b/blinktest_328p/bin/Release/blinktest_328p.elf differ diff --git a/blinktest_328p/bin/Release/blinktest_328p.elf.eep.hex b/blinktest_328p/bin/Release/blinktest_328p.elf.eep.hex new file mode 100644 index 0000000..1996e8f --- /dev/null +++ b/blinktest_328p/bin/Release/blinktest_328p.elf.eep.hex @@ -0,0 +1 @@ +:00000001FF diff --git a/blinktest_328p/bin/Release/blinktest_328p.elf.hex b/blinktest_328p/bin/Release/blinktest_328p.elf.hex new file mode 100644 index 0000000..5f4344d --- /dev/null +++ b/blinktest_328p/bin/Release/blinktest_328p.elf.hex @@ -0,0 +1,70 @@ +:100000000C945A000C9477000C9477000C947700B1 +:100010000C9477000C9477000C9477000C94770084 +:100020000C9477000C9477000C9477000C94770074 +:100030000C9477000C9477000C9477000C94770064 +:100040000C9494000C9477000C9477000C94770037 +:100050000C9477000C9477000C9477000C94770044 +:100060000C9477000C947700000024272A000025C8 +:10007000282B000023262904040404040404040299 +:100080000202020202030303030303010204081035 +:100090002040800102040810200102040810200002 +:1000A0000000070002010000030406000000000039 +:1000B0000000000011241FBECFEFD8E0DEBFCDBF8F +:1000C00011E0A0E0B1E0E0E5F4E002C005900D929F +:1000D000A030B107D9F711E0A0E0B1E001C01D9256 +:1000E000A830B107E1F70E9479000C9426020C9425 +:1000F00000000E9437018DE061E00E9471018DE0F7 +:1001000061E00E948F0168EE73E080E090E00E9461 +:10011000FF008DE060E00E948F0168EE73E080E0F8 +:1001200090E00E94FF00EBCF1F920F920FB60F924C +:1001300011242F938F939F93AF93BF9380910001CE +:1001400090910101A0910201B09103018050904C67 +:10015000AF4FBF4F8093000190930101A093020124 +:10016000B093030127C08091000190910101A091FB +:100170000201B091030180589E43A040B04080939B +:10018000000190930101A0930201B09303018091BB +:10019000040190910501A0910601B091070101961B +:1001A000A11DB11D8093040190930501A093060148 +:1001B000B09307018091000190910101A09102018B +:1001C000B091030181589E43A040B04060F6BF91BA +:1001D000AF919F918F912F910F900FBE0F901F9015 +:1001E00018958FB7F8942091040130910501409142 +:1001F0000601509107018FBFB901CA010895EF921E +:10020000FF920F931F937B018C018FB7F89440915D +:1002100004015091050160910601709107018FBFA3 +:100220002FB7F8948091040190910501A0910601E7 +:10023000B09107012FBF841B950BA60BB70B8E1532 +:100240009F05A007B10760F31F910F91FF90EF90FA +:100250000895019759F0FC01EE0FFF1FEE0FFF1FED +:1002600032978FB7F8943197F1F78FBF089578944C +:1002700084B5826084BD84B5816084BD85B58260AB +:1002800085BD85B5816085BDEEE6F0E08081816049 +:100290008083E1E8F0E080818260808380818160FA +:1002A0008083E0E8F0E0808181608083E1EBF0E032 +:1002B000808184608083E0EBF0E0808181608083D6 +:1002C000EAE7F0E0808184608083808182608083BF +:1002D0008081816080838081806880831092C100EA +:1002E0000895282F30E0C90185579F4FFC01949154 +:1002F00029583F4FF9018491882381F0E82FF0E0DD +:10030000E859FF4FE491F0E0662329F4808190954D +:100310008923808308958081892B80830895482FC5 +:1003200050E0CA0181569F4FFC012491CA018557B4 +:100330009F4FFC01949149585F4FFA013491332348 +:10034000C1F1222331F1233021F4809180008F7795 +:1003500005C0243031F4809180008F7D809380002F +:1003600018C0213019F484B58F7704C0223021F4ED +:1003700084B58F7D84BD0DC0263021F48091B000FE +:100380008F7705C0273029F48091B0008F7D80934E +:10039000B000E32FF0E0E359FF4FE491F0E0662373 +:1003A00029F4808190958923808308958081892B09 +:1003B00080830895482F50E0CA0181569F4FFC0169 +:1003C0002491CA0185579F4FFC01949149585F4F72 +:1003D000FA013491332319F420E030E035C02223B0 +:1003E00031F1233021F4809180008F7705C02430D3 +:1003F00031F4809180008F7D8093800018C021307F +:1004000019F484B58F7704C0223021F484B58F7D30 +:1004100084BD0DC0263021F48091B0008F7705C0D7 +:10042000273029F48091B0008F7D8093B000E32FB6 +:10043000F0E0EE58FF4FE491F0E0808120E030E002 +:10044000892311F021E030E0C9010895F894FFCF2D +:00000001FF diff --git a/blinktest_328p/bin/Release/blinktest_328p.elf.lss b/blinktest_328p/bin/Release/blinktest_328p.elf.lss new file mode 100644 index 0000000..a9a11be --- /dev/null +++ b/blinktest_328p/bin/Release/blinktest_328p.elf.lss @@ -0,0 +1,518 @@ + +bin/Release/blinktest_328p.elf: file format elf32-avr + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 00000450 00000000 00000000 00000074 2**1 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .bss 00000008 00800100 00800100 000004c4 2**0 + ALLOC + 2 .stab 000006b4 00000000 00000000 000004c4 2**2 + CONTENTS, READONLY, DEBUGGING + 3 .stabstr 00000054 00000000 00000000 00000b78 2**0 + CONTENTS, READONLY, DEBUGGING + 4 .debug_aranges 00000040 00000000 00000000 00000bcc 2**0 + CONTENTS, READONLY, DEBUGGING + 5 .debug_pubnames 0000016c 00000000 00000000 00000c0c 2**0 + CONTENTS, READONLY, DEBUGGING + 6 .debug_info 000006f2 00000000 00000000 00000d78 2**0 + CONTENTS, READONLY, DEBUGGING + 7 .debug_abbrev 000002e1 00000000 00000000 0000146a 2**0 + CONTENTS, READONLY, DEBUGGING + 8 .debug_line 00000551 00000000 00000000 0000174b 2**0 + CONTENTS, READONLY, DEBUGGING + 9 .debug_frame 000000a0 00000000 00000000 00001c9c 2**2 + CONTENTS, READONLY, DEBUGGING + 10 .debug_str 00000227 00000000 00000000 00001d3c 2**0 + CONTENTS, READONLY, DEBUGGING + 11 .debug_loc 000001fa 00000000 00000000 00001f63 2**0 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +00000000 <__vectors>: + 0: 0c 94 5a 00 jmp 0xb4 ; 0xb4 <__ctors_end> + 4: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 8: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 10: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 14: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 18: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 1c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 20: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 24: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 28: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 2c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 30: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 34: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 38: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 3c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 40: 0c 94 94 00 jmp 0x128 ; 0x128 <__vector_16> + 44: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 48: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 4c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 50: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 54: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 58: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 5c: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 60: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + 64: 0c 94 77 00 jmp 0xee ; 0xee <__bad_interrupt> + +00000068 : + 68: 00 00 24 27 2a ..$'* + +0000006d : + 6d: 00 00 25 28 2b ..%(+ + +00000072 : + 72: 00 00 23 26 29 ..#&) + +00000077 : + 77: 04 04 04 04 04 04 04 04 02 02 02 02 02 02 03 03 ................ + 87: 03 03 03 03 .... + +0000008b : + 8b: 01 02 04 08 10 20 40 80 01 02 04 08 10 20 01 02 ..... @...... .. + 9b: 04 08 10 20 ... + +0000009f : + 9f: 00 00 00 07 00 02 01 00 00 03 04 06 00 00 00 00 ................ + af: 00 00 00 00 00 ..... + +000000b4 <__ctors_end>: + b4: 11 24 eor r1, r1 + b6: 1f be out 0x3f, r1 ; 63 + b8: cf ef ldi r28, 0xFF ; 255 + ba: d8 e0 ldi r29, 0x08 ; 8 + bc: de bf out 0x3e, r29 ; 62 + be: cd bf out 0x3d, r28 ; 61 + +000000c0 <__do_copy_data>: + c0: 11 e0 ldi r17, 0x01 ; 1 + c2: a0 e0 ldi r26, 0x00 ; 0 + c4: b1 e0 ldi r27, 0x01 ; 1 + c6: e0 e5 ldi r30, 0x50 ; 80 + c8: f4 e0 ldi r31, 0x04 ; 4 + ca: 02 c0 rjmp .+4 ; 0xd0 <.do_copy_data_start> + +000000cc <.do_copy_data_loop>: + cc: 05 90 lpm r0, Z+ + ce: 0d 92 st X+, r0 + +000000d0 <.do_copy_data_start>: + d0: a0 30 cpi r26, 0x00 ; 0 + d2: b1 07 cpc r27, r17 + d4: d9 f7 brne .-10 ; 0xcc <.do_copy_data_loop> + +000000d6 <__do_clear_bss>: + d6: 11 e0 ldi r17, 0x01 ; 1 + d8: a0 e0 ldi r26, 0x00 ; 0 + da: b1 e0 ldi r27, 0x01 ; 1 + dc: 01 c0 rjmp .+2 ; 0xe0 <.do_clear_bss_start> + +000000de <.do_clear_bss_loop>: + de: 1d 92 st X+, r1 + +000000e0 <.do_clear_bss_start>: + e0: a8 30 cpi r26, 0x08 ; 8 + e2: b1 07 cpc r27, r17 + e4: e1 f7 brne .-8 ; 0xde <.do_clear_bss_loop> + e6: 0e 94 79 00 call 0xf2 ; 0xf2
+ ea: 0c 94 26 02 jmp 0x44c ; 0x44c <_exit> + +000000ee <__bad_interrupt>: + ee: 0c 94 00 00 jmp 0 ; 0x0 <__vectors> + +000000f2
: + f2: 0e 94 37 01 call 0x26e ; 0x26e + f6: 8d e0 ldi r24, 0x0D ; 13 + f8: 61 e0 ldi r22, 0x01 ; 1 + fa: 0e 94 71 01 call 0x2e2 ; 0x2e2 + fe: 8d e0 ldi r24, 0x0D ; 13 + 100: 61 e0 ldi r22, 0x01 ; 1 + 102: 0e 94 8f 01 call 0x31e ; 0x31e + 106: 68 ee ldi r22, 0xE8 ; 232 + 108: 73 e0 ldi r23, 0x03 ; 3 + 10a: 80 e0 ldi r24, 0x00 ; 0 + 10c: 90 e0 ldi r25, 0x00 ; 0 + 10e: 0e 94 ff 00 call 0x1fe ; 0x1fe + 112: 8d e0 ldi r24, 0x0D ; 13 + 114: 60 e0 ldi r22, 0x00 ; 0 + 116: 0e 94 8f 01 call 0x31e ; 0x31e + 11a: 68 ee ldi r22, 0xE8 ; 232 + 11c: 73 e0 ldi r23, 0x03 ; 3 + 11e: 80 e0 ldi r24, 0x00 ; 0 + 120: 90 e0 ldi r25, 0x00 ; 0 + 122: 0e 94 ff 00 call 0x1fe ; 0x1fe + 126: eb cf rjmp .-42 ; 0xfe + +00000128 <__vector_16>: + 128: 1f 92 push r1 + 12a: 0f 92 push r0 + 12c: 0f b6 in r0, 0x3f ; 63 + 12e: 0f 92 push r0 + 130: 11 24 eor r1, r1 + 132: 2f 93 push r18 + 134: 8f 93 push r24 + 136: 9f 93 push r25 + 138: af 93 push r26 + 13a: bf 93 push r27 + 13c: 80 91 00 01 lds r24, 0x0100 + 140: 90 91 01 01 lds r25, 0x0101 + 144: a0 91 02 01 lds r26, 0x0102 + 148: b0 91 03 01 lds r27, 0x0103 + 14c: 80 50 subi r24, 0x00 ; 0 + 14e: 90 4c sbci r25, 0xC0 ; 192 + 150: af 4f sbci r26, 0xFF ; 255 + 152: bf 4f sbci r27, 0xFF ; 255 + 154: 80 93 00 01 sts 0x0100, r24 + 158: 90 93 01 01 sts 0x0101, r25 + 15c: a0 93 02 01 sts 0x0102, r26 + 160: b0 93 03 01 sts 0x0103, r27 + 164: 27 c0 rjmp .+78 ; 0x1b4 <__vector_16+0x8c> + 166: 80 91 00 01 lds r24, 0x0100 + 16a: 90 91 01 01 lds r25, 0x0101 + 16e: a0 91 02 01 lds r26, 0x0102 + 172: b0 91 03 01 lds r27, 0x0103 + 176: 80 58 subi r24, 0x80 ; 128 + 178: 9e 43 sbci r25, 0x3E ; 62 + 17a: a0 40 sbci r26, 0x00 ; 0 + 17c: b0 40 sbci r27, 0x00 ; 0 + 17e: 80 93 00 01 sts 0x0100, r24 + 182: 90 93 01 01 sts 0x0101, r25 + 186: a0 93 02 01 sts 0x0102, r26 + 18a: b0 93 03 01 sts 0x0103, r27 + 18e: 80 91 04 01 lds r24, 0x0104 + 192: 90 91 05 01 lds r25, 0x0105 + 196: a0 91 06 01 lds r26, 0x0106 + 19a: b0 91 07 01 lds r27, 0x0107 + 19e: 01 96 adiw r24, 0x01 ; 1 + 1a0: a1 1d adc r26, r1 + 1a2: b1 1d adc r27, r1 + 1a4: 80 93 04 01 sts 0x0104, r24 + 1a8: 90 93 05 01 sts 0x0105, r25 + 1ac: a0 93 06 01 sts 0x0106, r26 + 1b0: b0 93 07 01 sts 0x0107, r27 + 1b4: 80 91 00 01 lds r24, 0x0100 + 1b8: 90 91 01 01 lds r25, 0x0101 + 1bc: a0 91 02 01 lds r26, 0x0102 + 1c0: b0 91 03 01 lds r27, 0x0103 + 1c4: 81 58 subi r24, 0x81 ; 129 + 1c6: 9e 43 sbci r25, 0x3E ; 62 + 1c8: a0 40 sbci r26, 0x00 ; 0 + 1ca: b0 40 sbci r27, 0x00 ; 0 + 1cc: 60 f6 brcc .-104 ; 0x166 <__vector_16+0x3e> + 1ce: bf 91 pop r27 + 1d0: af 91 pop r26 + 1d2: 9f 91 pop r25 + 1d4: 8f 91 pop r24 + 1d6: 2f 91 pop r18 + 1d8: 0f 90 pop r0 + 1da: 0f be out 0x3f, r0 ; 63 + 1dc: 0f 90 pop r0 + 1de: 1f 90 pop r1 + 1e0: 18 95 reti + +000001e2 : + 1e2: 8f b7 in r24, 0x3f ; 63 + 1e4: f8 94 cli + 1e6: 20 91 04 01 lds r18, 0x0104 + 1ea: 30 91 05 01 lds r19, 0x0105 + 1ee: 40 91 06 01 lds r20, 0x0106 + 1f2: 50 91 07 01 lds r21, 0x0107 + 1f6: 8f bf out 0x3f, r24 ; 63 + 1f8: b9 01 movw r22, r18 + 1fa: ca 01 movw r24, r20 + 1fc: 08 95 ret + +000001fe : + 1fe: ef 92 push r14 + 200: ff 92 push r15 + 202: 0f 93 push r16 + 204: 1f 93 push r17 + 206: 7b 01 movw r14, r22 + 208: 8c 01 movw r16, r24 + 20a: 8f b7 in r24, 0x3f ; 63 + 20c: f8 94 cli + 20e: 40 91 04 01 lds r20, 0x0104 + 212: 50 91 05 01 lds r21, 0x0105 + 216: 60 91 06 01 lds r22, 0x0106 + 21a: 70 91 07 01 lds r23, 0x0107 + 21e: 8f bf out 0x3f, r24 ; 63 + 220: 2f b7 in r18, 0x3f ; 63 + 222: f8 94 cli + 224: 80 91 04 01 lds r24, 0x0104 + 228: 90 91 05 01 lds r25, 0x0105 + 22c: a0 91 06 01 lds r26, 0x0106 + 230: b0 91 07 01 lds r27, 0x0107 + 234: 2f bf out 0x3f, r18 ; 63 + 236: 84 1b sub r24, r20 + 238: 95 0b sbc r25, r21 + 23a: a6 0b sbc r26, r22 + 23c: b7 0b sbc r27, r23 + 23e: 8e 15 cp r24, r14 + 240: 9f 05 cpc r25, r15 + 242: a0 07 cpc r26, r16 + 244: b1 07 cpc r27, r17 + 246: 60 f3 brcs .-40 ; 0x220 + 248: 1f 91 pop r17 + 24a: 0f 91 pop r16 + 24c: ff 90 pop r15 + 24e: ef 90 pop r14 + 250: 08 95 ret + +00000252 : + 252: 01 97 sbiw r24, 0x01 ; 1 + 254: 59 f0 breq .+22 ; 0x26c + 256: fc 01 movw r30, r24 + 258: ee 0f add r30, r30 + 25a: ff 1f adc r31, r31 + 25c: ee 0f add r30, r30 + 25e: ff 1f adc r31, r31 + 260: 32 97 sbiw r30, 0x02 ; 2 + 262: 8f b7 in r24, 0x3f ; 63 + 264: f8 94 cli + 266: 31 97 sbiw r30, 0x01 ; 1 + 268: f1 f7 brne .-4 ; 0x266 + 26a: 8f bf out 0x3f, r24 ; 63 + 26c: 08 95 ret + +0000026e : + 26e: 78 94 sei + 270: 84 b5 in r24, 0x24 ; 36 + 272: 82 60 ori r24, 0x02 ; 2 + 274: 84 bd out 0x24, r24 ; 36 + 276: 84 b5 in r24, 0x24 ; 36 + 278: 81 60 ori r24, 0x01 ; 1 + 27a: 84 bd out 0x24, r24 ; 36 + 27c: 85 b5 in r24, 0x25 ; 37 + 27e: 82 60 ori r24, 0x02 ; 2 + 280: 85 bd out 0x25, r24 ; 37 + 282: 85 b5 in r24, 0x25 ; 37 + 284: 81 60 ori r24, 0x01 ; 1 + 286: 85 bd out 0x25, r24 ; 37 + 288: ee e6 ldi r30, 0x6E ; 110 + 28a: f0 e0 ldi r31, 0x00 ; 0 + 28c: 80 81 ld r24, Z + 28e: 81 60 ori r24, 0x01 ; 1 + 290: 80 83 st Z, r24 + 292: e1 e8 ldi r30, 0x81 ; 129 + 294: f0 e0 ldi r31, 0x00 ; 0 + 296: 80 81 ld r24, Z + 298: 82 60 ori r24, 0x02 ; 2 + 29a: 80 83 st Z, r24 + 29c: 80 81 ld r24, Z + 29e: 81 60 ori r24, 0x01 ; 1 + 2a0: 80 83 st Z, r24 + 2a2: e0 e8 ldi r30, 0x80 ; 128 + 2a4: f0 e0 ldi r31, 0x00 ; 0 + 2a6: 80 81 ld r24, Z + 2a8: 81 60 ori r24, 0x01 ; 1 + 2aa: 80 83 st Z, r24 + 2ac: e1 eb ldi r30, 0xB1 ; 177 + 2ae: f0 e0 ldi r31, 0x00 ; 0 + 2b0: 80 81 ld r24, Z + 2b2: 84 60 ori r24, 0x04 ; 4 + 2b4: 80 83 st Z, r24 + 2b6: e0 eb ldi r30, 0xB0 ; 176 + 2b8: f0 e0 ldi r31, 0x00 ; 0 + 2ba: 80 81 ld r24, Z + 2bc: 81 60 ori r24, 0x01 ; 1 + 2be: 80 83 st Z, r24 + 2c0: ea e7 ldi r30, 0x7A ; 122 + 2c2: f0 e0 ldi r31, 0x00 ; 0 + 2c4: 80 81 ld r24, Z + 2c6: 84 60 ori r24, 0x04 ; 4 + 2c8: 80 83 st Z, r24 + 2ca: 80 81 ld r24, Z + 2cc: 82 60 ori r24, 0x02 ; 2 + 2ce: 80 83 st Z, r24 + 2d0: 80 81 ld r24, Z + 2d2: 81 60 ori r24, 0x01 ; 1 + 2d4: 80 83 st Z, r24 + 2d6: 80 81 ld r24, Z + 2d8: 80 68 ori r24, 0x80 ; 128 + 2da: 80 83 st Z, r24 + 2dc: 10 92 c1 00 sts 0x00C1, r1 + 2e0: 08 95 ret + +000002e2 : + 2e2: 28 2f mov r18, r24 + 2e4: 30 e0 ldi r19, 0x00 ; 0 + 2e6: c9 01 movw r24, r18 + 2e8: 85 57 subi r24, 0x75 ; 117 + 2ea: 9f 4f sbci r25, 0xFF ; 255 + 2ec: fc 01 movw r30, r24 + 2ee: 94 91 lpm r25, Z+ + 2f0: 29 58 subi r18, 0x89 ; 137 + 2f2: 3f 4f sbci r19, 0xFF ; 255 + 2f4: f9 01 movw r30, r18 + 2f6: 84 91 lpm r24, Z+ + 2f8: 88 23 and r24, r24 + 2fa: 81 f0 breq .+32 ; 0x31c + 2fc: e8 2f mov r30, r24 + 2fe: f0 e0 ldi r31, 0x00 ; 0 + 300: e8 59 subi r30, 0x98 ; 152 + 302: ff 4f sbci r31, 0xFF ; 255 + 304: e4 91 lpm r30, Z+ + 306: f0 e0 ldi r31, 0x00 ; 0 + 308: 66 23 and r22, r22 + 30a: 29 f4 brne .+10 ; 0x316 + 30c: 80 81 ld r24, Z + 30e: 90 95 com r25 + 310: 89 23 and r24, r25 + 312: 80 83 st Z, r24 + 314: 08 95 ret + 316: 80 81 ld r24, Z + 318: 89 2b or r24, r25 + 31a: 80 83 st Z, r24 + 31c: 08 95 ret + +0000031e : + 31e: 48 2f mov r20, r24 + 320: 50 e0 ldi r21, 0x00 ; 0 + 322: ca 01 movw r24, r20 + 324: 81 56 subi r24, 0x61 ; 97 + 326: 9f 4f sbci r25, 0xFF ; 255 + 328: fc 01 movw r30, r24 + 32a: 24 91 lpm r18, Z+ + 32c: ca 01 movw r24, r20 + 32e: 85 57 subi r24, 0x75 ; 117 + 330: 9f 4f sbci r25, 0xFF ; 255 + 332: fc 01 movw r30, r24 + 334: 94 91 lpm r25, Z+ + 336: 49 58 subi r20, 0x89 ; 137 + 338: 5f 4f sbci r21, 0xFF ; 255 + 33a: fa 01 movw r30, r20 + 33c: 34 91 lpm r19, Z+ + 33e: 33 23 and r19, r19 + 340: c1 f1 breq .+112 ; 0x3b2 + 342: 22 23 and r18, r18 + 344: 31 f1 breq .+76 ; 0x392 + 346: 23 30 cpi r18, 0x03 ; 3 + 348: 21 f4 brne .+8 ; 0x352 + 34a: 80 91 80 00 lds r24, 0x0080 + 34e: 8f 77 andi r24, 0x7F ; 127 + 350: 05 c0 rjmp .+10 ; 0x35c + 352: 24 30 cpi r18, 0x04 ; 4 + 354: 31 f4 brne .+12 ; 0x362 + 356: 80 91 80 00 lds r24, 0x0080 + 35a: 8f 7d andi r24, 0xDF ; 223 + 35c: 80 93 80 00 sts 0x0080, r24 + 360: 18 c0 rjmp .+48 ; 0x392 + 362: 21 30 cpi r18, 0x01 ; 1 + 364: 19 f4 brne .+6 ; 0x36c + 366: 84 b5 in r24, 0x24 ; 36 + 368: 8f 77 andi r24, 0x7F ; 127 + 36a: 04 c0 rjmp .+8 ; 0x374 + 36c: 22 30 cpi r18, 0x02 ; 2 + 36e: 21 f4 brne .+8 ; 0x378 + 370: 84 b5 in r24, 0x24 ; 36 + 372: 8f 7d andi r24, 0xDF ; 223 + 374: 84 bd out 0x24, r24 ; 36 + 376: 0d c0 rjmp .+26 ; 0x392 + 378: 26 30 cpi r18, 0x06 ; 6 + 37a: 21 f4 brne .+8 ; 0x384 + 37c: 80 91 b0 00 lds r24, 0x00B0 + 380: 8f 77 andi r24, 0x7F ; 127 + 382: 05 c0 rjmp .+10 ; 0x38e + 384: 27 30 cpi r18, 0x07 ; 7 + 386: 29 f4 brne .+10 ; 0x392 + 388: 80 91 b0 00 lds r24, 0x00B0 + 38c: 8f 7d andi r24, 0xDF ; 223 + 38e: 80 93 b0 00 sts 0x00B0, r24 + 392: e3 2f mov r30, r19 + 394: f0 e0 ldi r31, 0x00 ; 0 + 396: e3 59 subi r30, 0x93 ; 147 + 398: ff 4f sbci r31, 0xFF ; 255 + 39a: e4 91 lpm r30, Z+ + 39c: f0 e0 ldi r31, 0x00 ; 0 + 39e: 66 23 and r22, r22 + 3a0: 29 f4 brne .+10 ; 0x3ac + 3a2: 80 81 ld r24, Z + 3a4: 90 95 com r25 + 3a6: 89 23 and r24, r25 + 3a8: 80 83 st Z, r24 + 3aa: 08 95 ret + 3ac: 80 81 ld r24, Z + 3ae: 89 2b or r24, r25 + 3b0: 80 83 st Z, r24 + 3b2: 08 95 ret + +000003b4 : + 3b4: 48 2f mov r20, r24 + 3b6: 50 e0 ldi r21, 0x00 ; 0 + 3b8: ca 01 movw r24, r20 + 3ba: 81 56 subi r24, 0x61 ; 97 + 3bc: 9f 4f sbci r25, 0xFF ; 255 + 3be: fc 01 movw r30, r24 + 3c0: 24 91 lpm r18, Z+ + 3c2: ca 01 movw r24, r20 + 3c4: 85 57 subi r24, 0x75 ; 117 + 3c6: 9f 4f sbci r25, 0xFF ; 255 + 3c8: fc 01 movw r30, r24 + 3ca: 94 91 lpm r25, Z+ + 3cc: 49 58 subi r20, 0x89 ; 137 + 3ce: 5f 4f sbci r21, 0xFF ; 255 + 3d0: fa 01 movw r30, r20 + 3d2: 34 91 lpm r19, Z+ + 3d4: 33 23 and r19, r19 + 3d6: 19 f4 brne .+6 ; 0x3de + 3d8: 20 e0 ldi r18, 0x00 ; 0 + 3da: 30 e0 ldi r19, 0x00 ; 0 + 3dc: 35 c0 rjmp .+106 ; 0x448 + 3de: 22 23 and r18, r18 + 3e0: 31 f1 breq .+76 ; 0x42e + 3e2: 23 30 cpi r18, 0x03 ; 3 + 3e4: 21 f4 brne .+8 ; 0x3ee + 3e6: 80 91 80 00 lds r24, 0x0080 + 3ea: 8f 77 andi r24, 0x7F ; 127 + 3ec: 05 c0 rjmp .+10 ; 0x3f8 + 3ee: 24 30 cpi r18, 0x04 ; 4 + 3f0: 31 f4 brne .+12 ; 0x3fe + 3f2: 80 91 80 00 lds r24, 0x0080 + 3f6: 8f 7d andi r24, 0xDF ; 223 + 3f8: 80 93 80 00 sts 0x0080, r24 + 3fc: 18 c0 rjmp .+48 ; 0x42e + 3fe: 21 30 cpi r18, 0x01 ; 1 + 400: 19 f4 brne .+6 ; 0x408 + 402: 84 b5 in r24, 0x24 ; 36 + 404: 8f 77 andi r24, 0x7F ; 127 + 406: 04 c0 rjmp .+8 ; 0x410 + 408: 22 30 cpi r18, 0x02 ; 2 + 40a: 21 f4 brne .+8 ; 0x414 + 40c: 84 b5 in r24, 0x24 ; 36 + 40e: 8f 7d andi r24, 0xDF ; 223 + 410: 84 bd out 0x24, r24 ; 36 + 412: 0d c0 rjmp .+26 ; 0x42e + 414: 26 30 cpi r18, 0x06 ; 6 + 416: 21 f4 brne .+8 ; 0x420 + 418: 80 91 b0 00 lds r24, 0x00B0 + 41c: 8f 77 andi r24, 0x7F ; 127 + 41e: 05 c0 rjmp .+10 ; 0x42a + 420: 27 30 cpi r18, 0x07 ; 7 + 422: 29 f4 brne .+10 ; 0x42e + 424: 80 91 b0 00 lds r24, 0x00B0 + 428: 8f 7d andi r24, 0xDF ; 223 + 42a: 80 93 b0 00 sts 0x00B0, r24 + 42e: e3 2f mov r30, r19 + 430: f0 e0 ldi r31, 0x00 ; 0 + 432: ee 58 subi r30, 0x8E ; 142 + 434: ff 4f sbci r31, 0xFF ; 255 + 436: e4 91 lpm r30, Z+ + 438: f0 e0 ldi r31, 0x00 ; 0 + 43a: 80 81 ld r24, Z + 43c: 20 e0 ldi r18, 0x00 ; 0 + 43e: 30 e0 ldi r19, 0x00 ; 0 + 440: 89 23 and r24, r25 + 442: 11 f0 breq .+4 ; 0x448 + 444: 21 e0 ldi r18, 0x01 ; 1 + 446: 30 e0 ldi r19, 0x00 ; 0 + 448: c9 01 movw r24, r18 + 44a: 08 95 ret + +0000044c <_exit>: + 44c: f8 94 cli + +0000044e <__stop_program>: + 44e: ff cf rjmp .-2 ; 0x44e <__stop_program> diff --git a/blinktest_328p/bin/Release/blinktest_328p.elf.map b/blinktest_328p/bin/Release/blinktest_328p.elf.map new file mode 100644 index 0000000..2ddc9aa --- /dev/null +++ b/blinktest_328p/bin/Release/blinktest_328p.elf.map @@ -0,0 +1,499 @@ +Archive member included because of file (symbol) + +../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Release/main.o (delay) +../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Release/main.o (pinMode) +../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) (port_to_mode_PGM) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o (exit) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) (__do_copy_data) +/usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) (__do_clear_bss) + +Memory Configuration + +Name Origin Length Attributes +text 0x00000000 0x00020000 xr +data 0x00800060 0x0000ffa0 rw !x +eeprom 0x00810000 0x00010000 rw !x +fuse 0x00820000 0x00000400 rw !x +lock 0x00830000 0x00000400 rw !x +signature 0x00840000 0x00000400 rw !x +*default* 0x00000000 0xffffffff + +Linker script and memory map + +Address of section .data set to 0x800100 +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +LOAD obj/Release/main.o +LOAD ../arduino_libs/core0022_328p.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libm.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a +LOAD /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/libc.a +LOAD /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a + +.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 0x00000000 0x450 + *(.vectors) + .vectors 0x00000000 0x68 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x00000000 __vectors + 0x00000000 __vector_default + *(.vectors) + *(.progmem.gcc*) + *(.progmem*) + .progmem.data 0x00000068 0x4b ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + 0x00000068 port_to_mode_PGM + 0x0000006d port_to_output_PGM + 0x00000072 port_to_input_PGM + 0x00000077 digital_pin_to_port_PGM + 0x0000008b digital_pin_to_bit_mask_PGM + 0x0000009f digital_pin_to_timer_PGM + 0x000000b4 . = ALIGN (0x2) + *fill* 0x000000b3 0x1 00 + 0x000000b4 __trampolines_start = . + *(.trampolines) + .trampolines 0x000000b4 0x0 linker stubs + *(.trampolines*) + 0x000000b4 __trampolines_end = . + *(.jumptables) + *(.jumptables*) + *(.lowtext) + *(.lowtext*) + 0x000000b4 __ctors_start = . + *(.ctors) + 0x000000b4 __ctors_end = . + 0x000000b4 __dtors_start = . + *(.dtors) + 0x000000b4 __dtors_end = . + SORT(*)(.ctors) + SORT(*)(.dtors) + *(.init0) + .init0 0x000000b4 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x000000b4 __init + *(.init0) + *(.init1) + *(.init1) + *(.init2) + .init2 0x000000b4 0xc /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init2) + *(.init3) + *(.init3) + *(.init4) + .init4 0x000000c0 0x16 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + 0x000000c0 __do_copy_data + .init4 0x000000d6 0x10 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x000000d6 __do_clear_bss + *(.init4) + *(.init5) + *(.init5) + *(.init6) + *(.init6) + *(.init7) + *(.init7) + *(.init8) + *(.init8) + *(.init9) + .init9 0x000000e6 0x8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + *(.init9) + *(.text) + .text 0x000000ee 0x4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + 0x000000ee __vector_22 + 0x000000ee __vector_1 + 0x000000ee __vector_24 + 0x000000ee __vector_12 + 0x000000ee __bad_interrupt + 0x000000ee __vector_6 + 0x000000ee __vector_3 + 0x000000ee __vector_23 + 0x000000ee __vector_25 + 0x000000ee __vector_11 + 0x000000ee __vector_13 + 0x000000ee __vector_17 + 0x000000ee __vector_19 + 0x000000ee __vector_7 + 0x000000ee __vector_5 + 0x000000ee __vector_4 + 0x000000ee __vector_9 + 0x000000ee __vector_2 + 0x000000ee __vector_21 + 0x000000ee __vector_15 + 0x000000ee __vector_8 + 0x000000ee __vector_14 + 0x000000ee __vector_10 + 0x000000ee __vector_18 + 0x000000ee __vector_20 + .text 0x000000f2 0x36 obj/Release/main.o + 0x000000f2 main + .text 0x00000128 0x1ba ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x00000128 __vector_16 + 0x000001e2 millis + 0x000001fe delay + 0x00000252 delayMicroseconds + 0x0000026e init + .text 0x000002e2 0x16a ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + 0x000002e2 pinMode + 0x0000031e digitalWrite + 0x000003b4 digitalRead + .text 0x0000044c 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .text 0x0000044c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text 0x0000044c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text 0x0000044c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x0000044c . = ALIGN (0x2) + *(.text.*) + .text.libgcc 0x0000044c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .text.libgcc 0x0000044c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .text.libgcc 0x0000044c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + 0x0000044c . = ALIGN (0x2) + *(.fini9) + .fini9 0x0000044c 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + 0x0000044c exit + 0x0000044c _exit + *(.fini9) + *(.fini8) + *(.fini8) + *(.fini7) + *(.fini7) + *(.fini6) + *(.fini6) + *(.fini5) + *(.fini5) + *(.fini4) + *(.fini4) + *(.fini3) + *(.fini3) + *(.fini2) + *(.fini2) + *(.fini1) + *(.fini1) + *(.fini0) + .fini0 0x0000044c 0x4 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + *(.fini0) + 0x00000450 _etext = . + +.data 0x00800100 0x0 load address 0x00000450 + 0x00800100 PROVIDE (__data_start, .) + *(.data) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .data 0x00800100 0x0 obj/Release/main.o + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(wiring.c.o) + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .data 0x00800100 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .data 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + *(.data*) + *(.rodata) + *(.rodata*) + *(.gnu.linkonce.d*) + 0x00800100 . = ALIGN (0x2) + 0x00800100 _edata = . + 0x00800100 PROVIDE (__data_end, .) + +.bss 0x00800100 0x8 + 0x00800100 PROVIDE (__bss_start, .) + *(.bss) + .bss 0x00800100 0x0 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + .bss 0x00800100 0x0 obj/Release/main.o + .bss 0x00800100 0x8 ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x00800100 timer0_clock_cycles + 0x00800104 timer0_millis + .bss 0x00800108 0x0 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .bss 0x00800108 0x0 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + .bss 0x00800108 0x0 /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + *(.bss*) + *(COMMON) + 0x00800108 PROVIDE (__bss_end, .) + 0x00000450 __data_load_start = LOADADDR (.data) + 0x00000450 __data_load_end = (__data_load_start + SIZEOF (.data)) + +.noinit 0x00800108 0x0 + 0x00800108 PROVIDE (__noinit_start, .) + *(.noinit*) + 0x00800108 PROVIDE (__noinit_end, .) + 0x00800108 _end = . + 0x00800108 PROVIDE (__heap_start, .) + +.eeprom 0x00810000 0x0 + *(.eeprom*) + 0x00810000 __eeprom_end = . + +.fuse + *(.fuse) + *(.lfuse) + *(.hfuse) + *(.efuse) + +.lock + *(.lock*) + +.signature + *(.signature*) + +.stab 0x00000000 0x6b4 + *(.stab) + .stab 0x00000000 0x6b4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + +.stabstr 0x00000000 0x54 + *(.stabstr) + .stabstr 0x00000000 0x54 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o + +.stab.excl + *(.stab.excl) + +.stab.exclstr + *(.stab.exclstr) + +.stab.index + *(.stab.index) + +.stab.indexstr + *(.stab.indexstr) + +.comment + *(.comment) + +.debug + *(.debug) + +.line + *(.line) + +.debug_srcinfo + *(.debug_srcinfo) + +.debug_sfnames + *(.debug_sfnames) + +.debug_aranges 0x00000000 0x40 + *(.debug_aranges) + .debug_aranges + 0x00000000 0x20 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_aranges + 0x00000020 0x20 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_pubnames + 0x00000000 0x16c + *(.debug_pubnames) + .debug_pubnames + 0x00000000 0x80 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_pubnames + 0x00000080 0x3f ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_pubnames + 0x000000bf 0xad ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_info 0x00000000 0x6f2 + *(.debug_info) + .debug_info 0x00000000 0x1dd ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_info 0x000001dd 0x3f6 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_info 0x000005d3 0x11f ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + *(.gnu.linkonce.wi.*) + +.debug_abbrev 0x00000000 0x2e1 + *(.debug_abbrev) + .debug_abbrev 0x00000000 0x117 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_abbrev 0x00000117 0x162 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_abbrev 0x00000279 0x68 ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_line 0x00000000 0x551 + *(.debug_line) + .debug_line 0x00000000 0x251 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_line 0x00000251 0x233 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + .debug_line 0x00000484 0xcd ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + +.debug_frame 0x00000000 0xa0 + *(.debug_frame) + .debug_frame 0x00000000 0x60 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_frame 0x00000060 0x40 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_str 0x00000000 0x227 + *(.debug_str) + .debug_str 0x00000000 0xd5 ../arduino_libs/core0022_328p.a(wiring.c.o) + 0x115 (size before relaxing) + .debug_str 0x000000d5 0x117 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + 0x197 (size before relaxing) + .debug_str 0x000001ec 0x3b ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + 0x13e (size before relaxing) + +.debug_loc 0x00000000 0x1fa + *(.debug_loc) + .debug_loc 0x00000000 0xb6 ../arduino_libs/core0022_328p.a(wiring.c.o) + .debug_loc 0x000000b6 0x144 ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + +.debug_macinfo + *(.debug_macinfo) +OUTPUT(bin/Release/blinktest_328p.elf elf32-avr) +LOAD linker stubs + +Cross Reference Table + +Symbol File +__bad_interrupt /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__bss_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__bss_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) +__data_end /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_load_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__data_start /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) +__do_clear_bss /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_clear_bss.o) + ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) +__do_copy_data /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_copy_data.o) + ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + ../arduino_libs/core0022_328p.a(wiring.c.o) +__heap_end /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__init /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__stack /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_1 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_10 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_11 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_12 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_13 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_14 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_15 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_16 ../arduino_libs/core0022_328p.a(wiring.c.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_17 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_18 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_19 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_2 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_20 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_21 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_22 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_23 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_24 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_25 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_3 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_4 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_5 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_6 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_7 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_8 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_9 /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vector_default /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +__vectors /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +_exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) +delay ../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Release/main.o +delayMicroseconds ../arduino_libs/core0022_328p.a(wiring.c.o) +digitalRead ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +digitalWrite ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Release/main.o +digital_pin_to_bit_mask_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +digital_pin_to_port_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +digital_pin_to_timer_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +exit /usr/lib/gcc/avr/4.3.5/avr5/libgcc.a(_exit.o) + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +init ../arduino_libs/core0022_328p.a(wiring.c.o) + obj/Release/main.o +main obj/Release/main.o + /usr/lib/gcc/avr/4.3.5/../../../avr/lib/avr5/crtm328p.o +millis ../arduino_libs/core0022_328p.a(wiring.c.o) +pinMode ../arduino_libs/core0022_328p.a(wiring_digital.c.o) + obj/Release/main.o +port_to_input_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +port_to_mode_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +port_to_output_PGM ../arduino_libs/core0022_328p.a(pins_arduino.c.o) + ../arduino_libs/core0022_328p.a(wiring_digital.c.o) +timer0_clock_cycles ../arduino_libs/core0022_328p.a(wiring.c.o) +timer0_millis ../arduino_libs/core0022_328p.a(wiring.c.o) diff --git a/blinktest_328p/blinktest_328p.cbp b/blinktest_328p/blinktest_328p.cbp new file mode 100644 index 0000000..3c64663 --- /dev/null +++ b/blinktest_328p/blinktest_328p.cbp @@ -0,0 +1,66 @@ + + + + + + diff --git a/blinktest_328p/blinktest_328p.depend b/blinktest_328p/blinktest_328p.depend new file mode 100644 index 0000000..9f1e890 --- /dev/null +++ b/blinktest_328p/blinktest_328p.depend @@ -0,0 +1,43 @@ +# depslib dependency file v1.0 +1320937395 source:/home/tim/workspace/electic_AVR/blinktest_328p/main.cpp + + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/WProgram.h + + + + + "wiring.h" + "WCharacter.h" + "WString.h" + "HardwareSerial.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/wiring.h + + + "binary.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/binary.h + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/WCharacter.h + + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/WString.h + + + + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/HardwareSerial.h + + "Stream.h" + "usb_api.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/Stream.h + + "Print.h" + +1319028644 /home/tim/workspace/electic_AVR/arduinoSrc0022/Print.h + + + "WString.h" + diff --git a/blinktest_328p/blinktest_328p.layout b/blinktest_328p/blinktest_328p.layout new file mode 100644 index 0000000..9010247 --- /dev/null +++ b/blinktest_328p/blinktest_328p.layout @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/blinktest_328p/burn b/blinktest_328p/burn new file mode 100755 index 0000000..8fe9ec1 --- /dev/null +++ b/blinktest_328p/burn @@ -0,0 +1 @@ +avrdude -p m328p -c avrispmkII -P usb -b 1000000 -F -u -U flash:w:bin/Release/blinktest_328p.elf.hex diff --git a/blinktest_328p/main.cpp b/blinktest_328p/main.cpp new file mode 100644 index 0000000..f96336c --- /dev/null +++ b/blinktest_328p/main.cpp @@ -0,0 +1,28 @@ +extern "C" void __cxa_pure_virtual(void); //for C++ defines + +/* +Blink test + +F_CPU setting is not working + +*/ + + +#include //import main Arduino header file + + +int main(){ + + init(); //-- init Arduino library - delay, PWM setup messes with timers, millis(), micros() etc don't work without it + pinMode(13, OUTPUT); + + + + while(1) { + digitalWrite(13, HIGH); // set the LED on + delay(1000); // wait for a second + digitalWrite(13, LOW); // set the LED off + delay(1000); // wait for a second + } +} + diff --git a/blinktest_328p/obj/Release/main.o b/blinktest_328p/obj/Release/main.o new file mode 100644 index 0000000..8370812 Binary files /dev/null and b/blinktest_328p/obj/Release/main.o differ diff --git a/electicAndroid/.classpath b/electicAndroid/.classpath new file mode 100644 index 0000000..6efcbb7 --- /dev/null +++ b/electicAndroid/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/electicAndroid/.project b/electicAndroid/.project new file mode 100644 index 0000000..f9aa56f --- /dev/null +++ b/electicAndroid/.project @@ -0,0 +1,33 @@ + + + BluetoothChat + + + + + + com.android.ide.eclipse.adt.ResourceManagerBuilder + + + + + com.android.ide.eclipse.adt.PreCompilerBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.android.ide.eclipse.adt.ApkBuilder + + + + + + com.android.ide.eclipse.adt.AndroidNature + org.eclipse.jdt.core.javanature + + diff --git a/electicAndroid/AndroidManifest.xml b/electicAndroid/AndroidManifest.xml new file mode 100644 index 0000000..caea1eb --- /dev/null +++ b/electicAndroid/AndroidManifest.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + diff --git a/electicAndroid/bin/classes.dex b/electicAndroid/bin/classes.dex new file mode 100644 index 0000000..1016160 Binary files /dev/null and b/electicAndroid/bin/classes.dex differ diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/AdapticsBluetooth$ConnectThread.class b/electicAndroid/bin/com/futureproof/adaptics/electic/AdapticsBluetooth$ConnectThread.class new file mode 100644 index 0000000..0bacc78 Binary files /dev/null and b/electicAndroid/bin/com/futureproof/adaptics/electic/AdapticsBluetooth$ConnectThread.class differ diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/AdapticsBluetooth$ConnectedThread.class b/electicAndroid/bin/com/futureproof/adaptics/electic/AdapticsBluetooth$ConnectedThread.class new file mode 100644 index 0000000..4fc5fa3 Binary files /dev/null and b/electicAndroid/bin/com/futureproof/adaptics/electic/AdapticsBluetooth$ConnectedThread.class differ diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/AdapticsBluetooth.class b/electicAndroid/bin/com/futureproof/adaptics/electic/AdapticsBluetooth.class new file mode 100644 index 0000000..7e96169 Binary files /dev/null and b/electicAndroid/bin/com/futureproof/adaptics/electic/AdapticsBluetooth.class differ diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity$1.class b/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity$1.class new file mode 100644 index 0000000..0f77230 Binary files /dev/null and b/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity$1.class differ diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity$2.class b/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity$2.class new file mode 100644 index 0000000..8893047 Binary files /dev/null and b/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity$2.class differ diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity$3.class b/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity$3.class new file mode 100644 index 0000000..ddbb75c Binary files /dev/null and b/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity$3.class differ diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity.class b/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity.class new file mode 100644 index 0000000..502440a Binary files /dev/null and b/electicAndroid/bin/com/futureproof/adaptics/electic/DeviceListActivity.class differ diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/Electic$1.class b/electicAndroid/bin/com/futureproof/adaptics/electic/Electic$1.class new file mode 100644 index 0000000..8c80152 Binary files /dev/null and b/electicAndroid/bin/com/futureproof/adaptics/electic/Electic$1.class differ diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/Electic$2.class b/electicAndroid/bin/com/futureproof/adaptics/electic/Electic$2.class new file mode 100644 index 0000000..79a3bcd Binary files /dev/null and b/electicAndroid/bin/com/futureproof/adaptics/electic/Electic$2.class differ diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/Electic.class b/electicAndroid/bin/com/futureproof/adaptics/electic/Electic.class new file mode 100644 index 0000000..1b6fba2 Binary files /dev/null and b/electicAndroid/bin/com/futureproof/adaptics/electic/Electic.class differ diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/R$attr.class b/electicAndroid/bin/com/futureproof/adaptics/electic/R$attr.class new file mode 100644 index 0000000..eebe2bc Binary files /dev/null and b/electicAndroid/bin/com/futureproof/adaptics/electic/R$attr.class differ diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/R$drawable.class b/electicAndroid/bin/com/futureproof/adaptics/electic/R$drawable.class new file mode 100644 index 0000000..043f5b2 Binary files /dev/null and b/electicAndroid/bin/com/futureproof/adaptics/electic/R$drawable.class differ diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/R$id.class b/electicAndroid/bin/com/futureproof/adaptics/electic/R$id.class new file mode 100644 index 0000000..a72686e Binary files /dev/null and b/electicAndroid/bin/com/futureproof/adaptics/electic/R$id.class differ diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/R$layout.class b/electicAndroid/bin/com/futureproof/adaptics/electic/R$layout.class new file mode 100644 index 0000000..65e3e00 Binary files /dev/null and b/electicAndroid/bin/com/futureproof/adaptics/electic/R$layout.class differ diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/R$menu.class b/electicAndroid/bin/com/futureproof/adaptics/electic/R$menu.class new file mode 100644 index 0000000..f918045 Binary files /dev/null and b/electicAndroid/bin/com/futureproof/adaptics/electic/R$menu.class differ diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/R$string.class b/electicAndroid/bin/com/futureproof/adaptics/electic/R$string.class new file mode 100644 index 0000000..1c3724b Binary files /dev/null and b/electicAndroid/bin/com/futureproof/adaptics/electic/R$string.class differ diff --git a/electicAndroid/bin/com/futureproof/adaptics/electic/R.class b/electicAndroid/bin/com/futureproof/adaptics/electic/R.class new file mode 100644 index 0000000..1d95ec5 Binary files /dev/null and b/electicAndroid/bin/com/futureproof/adaptics/electic/R.class differ diff --git a/electicAndroid/bin/electicAndroid.apk b/electicAndroid/bin/electicAndroid.apk new file mode 100644 index 0000000..4b58706 Binary files /dev/null and b/electicAndroid/bin/electicAndroid.apk differ diff --git a/electicAndroid/bin/resources.ap_ b/electicAndroid/bin/resources.ap_ new file mode 100644 index 0000000..550355c Binary files /dev/null and b/electicAndroid/bin/resources.ap_ differ diff --git a/electicAndroid/default.properties b/electicAndroid/default.properties new file mode 100644 index 0000000..66db0d1 --- /dev/null +++ b/electicAndroid/default.properties @@ -0,0 +1,11 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system use, +# "build.properties", and override values to adapt the script to your +# project structure. + +# Project target. +target=android-10 diff --git a/electicAndroid/gen/com/futureproof/adaptics/electic/R.java b/electicAndroid/gen/com/futureproof/adaptics/electic/R.java new file mode 100644 index 0000000..2c0a7e3 --- /dev/null +++ b/electicAndroid/gen/com/futureproof/adaptics/electic/R.java @@ -0,0 +1,97 @@ +/* AUTO-GENERATED FILE. DO NOT MODIFY. + * + * This class was automatically generated by the + * aapt tool from the resource data it found. It + * should not be modified by hand. + */ + +package com.futureproof.adaptics.electic; + +public final class R { + public static final class attr { + } + public static final class drawable { + public static final int app_icon=0x7f020000; + } + public static final class id { + public static final int alarmBox=0x7f060014; + public static final int button_scan=0x7f060006; + public static final int discoverable=0x7f060022; + public static final int fadcText=0x7f06000b; + public static final int fadcText1=0x7f06000c; + public static final int insecure_connect_scan=0x7f060021; + public static final int new_devices=0x7f060005; + public static final int paired_devices=0x7f060003; + public static final int pmaxBox=0x7f060010; + public static final int pminBox=0x7f060012; + public static final int rb_01=0x7f06001e; + public static final int rb_05=0x7f06001d; + public static final int rb_2=0x7f06001c; + public static final int sadcText=0x7f060008; + public static final int sadcText1=0x7f060009; + public static final int samplespeed_group=0x7f06001b; + public static final int secure_connect_scan=0x7f060020; + public static final int tableLayout1=0x7f06000e; + public static final int tableLayout2=0x7f060016; + public static final int tableRow1=0x7f06000f; + public static final int tableRow2=0x7f060011; + public static final int tableRow3=0x7f060013; + public static final int tableRow4=0x7f060015; + public static final int tableRow5=0x7f060017; + public static final int tableRow6=0x7f060019; + public static final int tableRow7=0x7f06001a; + public static final int tableRow8=0x7f06001f; + public static final int textView1=0x7f060018; + public static final int textView2=0x7f060007; + public static final int textView3=0x7f06000a; + public static final int textView5=0x7f06000d; + public static final int title_left_text=0x7f060000; + public static final int title_new_devices=0x7f060004; + public static final int title_paired_devices=0x7f060002; + public static final int title_right_text=0x7f060001; + } + public static final class layout { + public static final int custom_title=0x7f030000; + public static final int device_list=0x7f030001; + public static final int device_name=0x7f030002; + public static final int main=0x7f030003; + } + public static final class menu { + public static final int option_menu=0x7f050000; + } + public static final class string { + public static final int app_name=0x7f040000; + public static final int bt_not_enabled_leaving=0x7f040003; + public static final int button_scan=0x7f04000d; + public static final int discoverable=0x7f040010; + public static final int insecure_connect=0x7f04000f; + public static final int labelAlarm=0x7f040016; + public static final int label_01=0x7f04001a; + public static final int label_05=0x7f040019; + public static final int label_2=0x7f040017; + public static final int label_PMAX=0x7f040014; + public static final int label_PMIN=0x7f040015; + public static final int label_flags=0x7f040013; + public static final int label_interval=0x7f040018; + public static final int none_found=0x7f04000a; + public static final int none_paired=0x7f040009; + public static final int not_connected=0x7f040002; + /** DeviceListActivity + */ + public static final int scanning=0x7f040007; + /** Options Menu + */ + public static final int secure_connect=0x7f04000e; + public static final int select_device=0x7f040008; + /** BluetoothChat + */ + public static final int send=0x7f040001; + public static final int title_connected_to=0x7f040005; + public static final int title_connecting=0x7f040004; + public static final int title_fadc=0x7f040012; + public static final int title_not_connected=0x7f040006; + public static final int title_other_devices=0x7f04000c; + public static final int title_paired_devices=0x7f04000b; + public static final int title_sadc=0x7f040011; + } +} diff --git a/electicAndroid/res/drawable-hdpi/app_icon.png b/electicAndroid/res/drawable-hdpi/app_icon.png new file mode 100644 index 0000000..8836ff6 Binary files /dev/null and b/electicAndroid/res/drawable-hdpi/app_icon.png differ diff --git a/electicAndroid/res/drawable/app_icon.png b/electicAndroid/res/drawable/app_icon.png new file mode 100644 index 0000000..d3e09a5 Binary files /dev/null and b/electicAndroid/res/drawable/app_icon.png differ diff --git a/electicAndroid/res/layout/custom_title.xml b/electicAndroid/res/layout/custom_title.xml new file mode 100644 index 0000000..57eb6b4 --- /dev/null +++ b/electicAndroid/res/layout/custom_title.xml @@ -0,0 +1,39 @@ + + + + + + \ No newline at end of file diff --git a/electicAndroid/res/layout/device_list.xml b/electicAndroid/res/layout/device_list.xml new file mode 100644 index 0000000..395695f --- /dev/null +++ b/electicAndroid/res/layout/device_list.xml @@ -0,0 +1,56 @@ + + + + + + + +