| 151 | kaklik | 1 | GAS LISTING /tmp/ccAE2QZt.s 			page 1
 | 
        
           |  |  | 2 |   | 
        
           |  |  | 3 |   | 
        
           |  |  | 4 |    1               		.file	"CamInterface.c"
 | 
        
           |  |  | 5 |    2               		.arch atmega8
 | 
        
           |  |  | 6 |    3               	__SREG__ = 0x3f
 | 
        
           |  |  | 7 |    4               	__SP_H__ = 0x3e
 | 
        
           |  |  | 8 |    5               	__SP_L__ = 0x3d
 | 
        
           |  |  | 9 |    6               	__tmp_reg__ = 0
 | 
        
           |  |  | 10 |    7               	__zero_reg__ = 1
 | 
        
           |  |  | 11 |    8               		.global __do_copy_data
 | 
        
           |  |  | 12 |    9               		.global __do_clear_bss
 | 
        
           |  |  | 13 |   10               		.stabs	"/home/kaklik/projects/roboti/istrobot/2007/ATmega8/AVRcam/",100,0,2,.Ltext0
 | 
        
           |  |  | 14 |   11               		.stabs	"CamInterface.c",100,0,2,.Ltext0
 | 
        
           |  |  | 15 |   12               		.text
 | 
        
           |  |  | 16 |   13               	.Ltext0:
 | 
        
           |  |  | 17 |   14               		.stabs	"gcc2_compiled.",60,0,0,0
 | 
        
           |  |  | 18 |   15               		.stabs	"int:t(0,1)=r(0,1);-32768;32767;",128,0,0,0
 | 
        
           |  |  | 19 |   16               		.stabs	"char:t(0,2)=@s8;r(0,2);0;255;",128,0,0,0
 | 
        
           |  |  | 20 |   17               		.stabs	"long int:t(0,3)=@s32;r(0,3);020000000000;017777777777;",128,0,0,0
 | 
        
           |  |  | 21 |   18               		.stabs	"unsigned int:t(0,4)=r(0,4);0;0177777;",128,0,0,0
 | 
        
           |  |  | 22 |   19               		.stabs	"long unsigned int:t(0,5)=@s32;r(0,5);0;037777777777;",128,0,0,0
 | 
        
           |  |  | 23 |   20               		.stabs	"long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,0,
 | 
        
           |  |  | 24 |   21               		.stabs	"long long unsigned int:t(0,7)=@s64;r(0,7);0;01777777777777777777777;",128,0,0,0
 | 
        
           |  |  | 25 |   22               		.stabs	"short int:t(0,8)=r(0,8);-32768;32767;",128,0,0,0
 | 
        
           |  |  | 26 |   23               		.stabs	"short unsigned int:t(0,9)=r(0,9);0;0177777;",128,0,0,0
 | 
        
           |  |  | 27 |   24               		.stabs	"signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,0,0
 | 
        
           |  |  | 28 |   25               		.stabs	"unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,0,0
 | 
        
           |  |  | 29 |   26               		.stabs	"float:t(0,12)=r(0,1);4;0;",128,0,0,0
 | 
        
           |  |  | 30 |   27               		.stabs	"double:t(0,13)=r(0,1);4;0;",128,0,0,0
 | 
        
           |  |  | 31 |   28               		.stabs	"long double:t(0,14)=r(0,1);4;0;",128,0,0,0
 | 
        
           |  |  | 32 |   29               		.stabs	"void:t(0,15)=(0,15)",128,0,0,0
 | 
        
           |  |  | 33 |   30               		.stabs	"/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/interrupt.h",130,0,0,0
 | 
        
           |  |  | 34 |   31               		.stabs	"/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/io.h",130,0,0,0
 | 
        
           |  |  | 35 |   32               		.stabs	"/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/sfr_defs.h",130,0,0,0
 | 
        
           |  |  | 36 |   33               		.stabs	"/usr/lib/gcc/avr/4.1.0/../../../../avr/include/inttypes.h",130,0,0,0
 | 
        
           |  |  | 37 |   34               		.stabs	"/usr/lib/gcc/avr/4.1.0/../../../../avr/include/stdint.h",130,0,0,0
 | 
        
           |  |  | 38 |   35               		.stabs	"int8_t:t(5,1)=(0,10)",128,0,116,0
 | 
        
           |  |  | 39 |   36               		.stabs	"uint8_t:t(5,2)=(0,11)",128,0,117,0
 | 
        
           |  |  | 40 |   37               		.stabs	"int16_t:t(5,3)=(0,1)",128,0,118,0
 | 
        
           |  |  | 41 |   38               		.stabs	"uint16_t:t(5,4)=(0,4)",128,0,119,0
 | 
        
           |  |  | 42 |   39               		.stabs	"int32_t:t(5,5)=(0,3)",128,0,120,0
 | 
        
           |  |  | 43 |   40               		.stabs	"uint32_t:t(5,6)=(0,5)",128,0,121,0
 | 
        
           |  |  | 44 |   41               		.stabs	"int64_t:t(5,7)=(0,6)",128,0,122,0
 | 
        
           |  |  | 45 |   42               		.stabs	"uint64_t:t(5,8)=(0,7)",128,0,123,0
 | 
        
           |  |  | 46 |   43               		.stabs	"intptr_t:t(5,9)=(5,3)",128,0,135,0
 | 
        
           |  |  | 47 |   44               		.stabs	"uintptr_t:t(5,10)=(5,4)",128,0,140,0
 | 
        
           |  |  | 48 |   45               		.stabs	"int_least8_t:t(5,11)=(5,1)",128,0,152,0
 | 
        
           |  |  | 49 |   46               		.stabs	"uint_least8_t:t(5,12)=(5,2)",128,0,157,0
 | 
        
           |  |  | 50 |   47               		.stabs	"int_least16_t:t(5,13)=(5,3)",128,0,162,0
 | 
        
           |  |  | 51 |   48               		.stabs	"uint_least16_t:t(5,14)=(5,4)",128,0,167,0
 | 
        
           |  |  | 52 |   49               		.stabs	"int_least32_t:t(5,15)=(5,5)",128,0,172,0
 | 
        
           |  |  | 53 |   50               		.stabs	"uint_least32_t:t(5,16)=(5,6)",128,0,177,0
 | 
        
           |  |  | 54 |   51               		.stabs	"int_least64_t:t(5,17)=(5,7)",128,0,182,0
 | 
        
           |  |  | 55 |   52               		.stabs	"uint_least64_t:t(5,18)=(5,8)",128,0,187,0
 | 
        
           |  |  | 56 |   53               		.stabs	"int_fast8_t:t(5,19)=(5,1)",128,0,200,0
 | 
        
           |  |  | 57 |   54               		.stabs	"uint_fast8_t:t(5,20)=(5,2)",128,0,205,0
 | 
        
           |  |  | 58 |   55               		.stabs	"int_fast16_t:t(5,21)=(5,3)",128,0,210,0
 | 
        
           |  |  | 59 |   56               		.stabs	"uint_fast16_t:t(5,22)=(5,4)",128,0,215,0
 | 
        
           |  |  | 60 |   57               		.stabs	"int_fast32_t:t(5,23)=(5,5)",128,0,220,0
 | 
        
           |  |  | 61 | GAS LISTING /tmp/ccAE2QZt.s 			page 2
 | 
        
           |  |  | 62 |   | 
        
           |  |  | 63 |   | 
        
           |  |  | 64 |   58               		.stabs	"uint_fast32_t:t(5,24)=(5,6)",128,0,225,0
 | 
        
           |  |  | 65 |   59               		.stabs	"int_fast64_t:t(5,25)=(5,7)",128,0,230,0
 | 
        
           |  |  | 66 |   60               		.stabs	"uint_fast64_t:t(5,26)=(5,8)",128,0,235,0
 | 
        
           |  |  | 67 |   61               		.stabs	"intmax_t:t(5,27)=(5,7)",128,0,249,0
 | 
        
           |  |  | 68 |   62               		.stabs	"uintmax_t:t(5,28)=(5,8)",128,0,254,0
 | 
        
           |  |  | 69 |   63               		.stabn	162,0,0,0
 | 
        
           |  |  | 70 |   64               		.stabs	"int_farptr_t:t(4,1)=(5,5)",128,0,76,0
 | 
        
           |  |  | 71 |   65               		.stabs	"uint_farptr_t:t(4,2)=(5,6)",128,0,80,0
 | 
        
           |  |  | 72 |   66               		.stabn	162,0,0,0
 | 
        
           |  |  | 73 |   67               		.stabn	162,0,0,0
 | 
        
           |  |  | 74 |   68               		.stabn	162,0,0,0
 | 
        
           |  |  | 75 |   69               		.stabn	162,0,0,0
 | 
        
           |  |  | 76 |   70               		.stabs	"/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h",130,0,0,0
 | 
        
           |  |  | 77 |   71               		.stabs	"/usr/lib/gcc/avr/4.1.0/include/stddef.h",130,0,0,0
 | 
        
           |  |  | 78 |   72               		.stabs	"size_t:t(7,1)=(0,4)",128,0,214,0
 | 
        
           |  |  | 79 |   73               		.stabn	162,0,0,0
 | 
        
           |  |  | 80 |   74               		.stabn	162,0,0,0
 | 
        
           |  |  | 81 |   75               		.stabs	"/usr/lib/gcc/avr/4.1.0/../../../../avr/include/stdlib.h",130,0,0,0
 | 
        
           |  |  | 82 |   76               		.stabs	"/usr/lib/gcc/avr/4.1.0/include/stddef.h",130,0,0,0
 | 
        
           |  |  | 83 |   77               		.stabs	"wchar_t:t(9,1)=(0,1)",128,0,326,0
 | 
        
           |  |  | 84 |   78               		.stabn	162,0,0,0
 | 
        
           |  |  | 85 |   79               		.stabs	"div_t:t(8,1)=(8,2)=s4quot:(0,1),0,16;rem:(0,1),16,16;;",128,0,69,0
 | 
        
           |  |  | 86 |   80               		.stabs	"ldiv_t:t(8,3)=(8,4)=s8quot:(0,3),0,32;rem:(0,3),32,32;;",128,0,75,0
 | 
        
           |  |  | 87 |   81               		.stabs	"__compar_fn_t:t(8,5)=(8,6)=*(8,7)=f(0,1)",128,0,78,0
 | 
        
           |  |  | 88 |   82               		.stabn	162,0,0,0
 | 
        
           |  |  | 89 |   83               		.stabs	"CommonDefs.h",130,0,0,0
 | 
        
           |  |  | 90 |   84               		.stabs	"bool_t:t(10,1)=(0,11)",128,0,56,0
 | 
        
           |  |  | 91 |   85               		.stabn	162,0,0,0
 | 
        
           |  |  | 92 |   86               		.stabs	"CamInt_resetCam:F(0,15)",36,0,226,CamInt_resetCam
 | 
        
           |  |  | 93 |   87               	.global	CamInt_resetCam
 | 
        
           |  |  | 94 |   88               		.type	CamInt_resetCam, @function
 | 
        
           |  |  | 95 |   89               	CamInt_resetCam:
 | 
        
           |  |  | 96 |   90               		.stabd	46,0,0
 | 
        
           |  |  | 97 |    1:CamInterface.c **** /*
 | 
        
           |  |  | 98 |    2:CamInterface.c ****     Copyright (C) 2004    John Orlando
 | 
        
           |  |  | 99 |    3:CamInterface.c ****     
 | 
        
           |  |  | 100 |    4:CamInterface.c ****    AVRcam: a small real-time image processing engine.
 | 
        
           |  |  | 101 |    5:CamInterface.c **** 
 | 
        
           |  |  | 102 |    6:CamInterface.c ****     This program is free software; you can redistribute it and/or
 | 
        
           |  |  | 103 |    7:CamInterface.c ****     modify it under the terms of the GNU General Public
 | 
        
           |  |  | 104 |    8:CamInterface.c ****     License as published by the Free Software Foundation; either
 | 
        
           |  |  | 105 |    9:CamInterface.c ****     version 2 of the License, or (at your option) any later version.
 | 
        
           |  |  | 106 |   10:CamInterface.c **** 
 | 
        
           |  |  | 107 |   11:CamInterface.c ****     This program is distributed in the hope that it will be useful,
 | 
        
           |  |  | 108 |   12:CamInterface.c ****     but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
        
           |  |  | 109 |   13:CamInterface.c ****     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
        
           |  |  | 110 |   14:CamInterface.c ****     General Public License for more details.
 | 
        
           |  |  | 111 |   15:CamInterface.c **** 
 | 
        
           |  |  | 112 |   16:CamInterface.c ****     You should have received a copy of the GNU General Public
 | 
        
           |  |  | 113 |   17:CamInterface.c ****     License along with this program; if not, write to the Free Software
 | 
        
           |  |  | 114 |   18:CamInterface.c ****     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | 
        
           |  |  | 115 |   19:CamInterface.c **** 
 | 
        
           |  |  | 116 |   20:CamInterface.c ****    For more information on the AVRcam, please contact:
 | 
        
           |  |  | 117 |   21:CamInterface.c **** 
 | 
        
           |  |  | 118 |   22:CamInterface.c ****    john@jrobot.net
 | 
        
           |  |  | 119 |   23:CamInterface.c **** 
 | 
        
           |  |  | 120 |   24:CamInterface.c ****    or go to www.jrobot.net for more details regarding the system.
 | 
        
           |  |  | 121 | GAS LISTING /tmp/ccAE2QZt.s 			page 3
 | 
        
           |  |  | 122 |   | 
        
           |  |  | 123 |   | 
        
           |  |  | 124 |   25:CamInterface.c **** */
 | 
        
           |  |  | 125 |   26:CamInterface.c **** /***********************************************************
 | 
        
           |  |  | 126 |   27:CamInterface.c **** 	Module Name: CamInterface.c
 | 
        
           |  |  | 127 |   28:CamInterface.c **** 	Module Date: 04/12/2004
 | 
        
           |  |  | 128 |   29:CamInterface.c **** 	Module Auth: John Orlando
 | 
        
           |  |  | 129 |   30:CamInterface.c **** 	
 | 
        
           |  |  | 130 |   31:CamInterface.c **** 	Description: This file is responsible for providing an
 | 
        
           |  |  | 131 |   32:CamInterface.c **** 	interface to the OV6620 camera hardware.  This includes
 | 
        
           |  |  | 132 |   33:CamInterface.c **** 	an interface to CamInterface.S for certain low-level,
 | 
        
           |  |  | 133 |   34:CamInterface.c **** 	optimized camera access routines.
 | 
        
           |  |  | 134 |   35:CamInterface.c ****     
 | 
        
           |  |  | 135 |   36:CamInterface.c ****     Revision History:
 | 
        
           |  |  | 136 |   37:CamInterface.c ****     Date        Rel Ver.    Notes
 | 
        
           |  |  | 137 |   38:CamInterface.c ****     4/10/2004      0.1     Module created
 | 
        
           |  |  | 138 |   39:CamInterface.c ****     6/30/2004      1.0     Initial release for Circuit Cellar
 | 
        
           |  |  | 139 |   40:CamInterface.c ****                            contest.
 | 
        
           |  |  | 140 |   41:CamInterface.c ****     11/15/2004     1.2     ifdef'd out the resetCam routine, since
 | 
        
           |  |  | 141 |   42:CamInterface.c ****                            resetting the cam now causes the OV6620's
 | 
        
           |  |  | 142 |   43:CamInterface.c ****                            clock to not be output (we have to start
 | 
        
           |  |  | 143 |   44:CamInterface.c ****                            it up after each reset with the external
 | 
        
           |  |  | 144 |   45:CamInterface.c ****                            tiny12 processor).
 | 
        
           |  |  | 145 |   46:CamInterface.c ****     1/16/2005      1.4     Ensure that the TCCR1B register is set so
 | 
        
           |  |  | 146 |   47:CamInterface.c ****                            nothing is clocking timer1 at startup.                             
 | 
        
           |  |  | 147 |   48:CamInterface.c **** ***********************************************************/
 | 
        
           |  |  | 148 |   49:CamInterface.c **** 
 | 
        
           |  |  | 149 |   50:CamInterface.c **** /*	Includes */
 | 
        
           |  |  | 150 |   51:CamInterface.c **** #include <avr/interrupt.h>
 | 
        
           |  |  | 151 |   52:CamInterface.c **** #include <avr/signal.h>
 | 
        
           |  |  | 152 |   53:CamInterface.c **** #include <avr/sleep.h>
 | 
        
           |  |  | 153 |   54:CamInterface.c **** #include <avr/eeprom.h>
 | 
        
           |  |  | 154 |   55:CamInterface.c **** #include <stdlib.h>
 | 
        
           |  |  | 155 |   56:CamInterface.c **** #include <string.h>
 | 
        
           |  |  | 156 |   57:CamInterface.c **** #include "CommonDefs.h"
 | 
        
           |  |  | 157 |   58:CamInterface.c **** #include "CamInterface.h"
 | 
        
           |  |  | 158 |   59:CamInterface.c **** #include "Utility.h"
 | 
        
           |  |  | 159 |   60:CamInterface.c **** #include "UIMgr.h"
 | 
        
           |  |  | 160 |   61:CamInterface.c **** #include "Executive.h"
 | 
        
           |  |  | 161 |   62:CamInterface.c **** #include "UartInterface.h"
 | 
        
           |  |  | 162 |   63:CamInterface.c **** 
 | 
        
           |  |  | 163 |   64:CamInterface.c **** /*  Local Variables */
 | 
        
           |  |  | 164 |   65:CamInterface.c **** 
 | 
        
           |  |  | 165 |   66:CamInterface.c **** /* 	Local Structures and Typedefs */
 | 
        
           |  |  | 166 |   67:CamInterface.c **** 
 | 
        
           |  |  | 167 |   68:CamInterface.c **** /*  Definitions */
 | 
        
           |  |  | 168 |   69:CamInterface.c **** //#define OUTPUT_INITIAL_COLOR_MAP 1
 | 
        
           |  |  | 169 |   70:CamInterface.c **** 
 | 
        
           |  |  | 170 |   71:CamInterface.c **** #define FAST_ACQUIRE 1
 | 
        
           |  |  | 171 |   72:CamInterface.c **** #define CAM_G_BUS          	PINB
 | 
        
           |  |  | 172 |   73:CamInterface.c **** #define CAM_G_BUS_DIR      	DDRB
 | 
        
           |  |  | 173 |   74:CamInterface.c **** #define CAM_RB_BUS          PINC
 | 
        
           |  |  | 174 |   75:CamInterface.c **** #define CAM_RB_BUS_DIR 		DDRC
 | 
        
           |  |  | 175 |   76:CamInterface.c **** 
 | 
        
           |  |  | 176 |   77:CamInterface.c **** #define CAM_CONTROL_PORT     PORTD
 | 
        
           |  |  | 177 |   78:CamInterface.c **** #define CAM_CONTROL_PORT_DIR DDRD
 | 
        
           |  |  | 178 |   79:CamInterface.c **** #define CAM_RESET_LINE       BIT7
 | 
        
           |  |  | 179 |   80:CamInterface.c **** #define CAM_PIXEL_CLK_COUNT  BIT5
 | 
        
           |  |  | 180 |   81:CamInterface.c **** #define CAM_HREF             BIT4
 | 
        
           |  |  | 181 | GAS LISTING /tmp/ccAE2QZt.s 			page 4
 | 
        
           |  |  | 182 |   | 
        
           |  |  | 183 |   | 
        
           |  |  | 184 |   82:CamInterface.c **** #define CAM_PIXEL_CLK_INT    BIT3
 | 
        
           |  |  | 185 |   83:CamInterface.c **** #define CAM_VSYNC            BIT2
 | 
        
           |  |  | 186 |   84:CamInterface.c **** 
 | 
        
           |  |  | 187 |   85:CamInterface.c **** /*  Global Variables */
 | 
        
           |  |  | 188 |   86:CamInterface.c **** /* NOTE: This file MUST appear first in the Makefile for these variables to
 | 
        
           |  |  | 189 |   87:CamInterface.c **** be placed properly in RAM */
 | 
        
           |  |  | 190 |   88:CamInterface.c **** 
 | 
        
           |  |  | 191 |   89:CamInterface.c **** /* The colorMap[] table provides the membership lookup table to convert 
 | 
        
           |  |  | 192 |   90:CamInterface.c **** RGB or YUV pixel values into actual colors.  The membership table contains
 | 
        
           |  |  | 193 |   91:CamInterface.c **** 16 elements for each color channel, concatenated together.  The Red (or Y)
 | 
        
           |  |  | 194 |   92:CamInterface.c **** value is located in the first 16 bytes, the G (or U) value is located in
 | 
        
           |  |  | 195 |   93:CamInterface.c **** the second 16 bytes, and the B (or V) value is located in the last 16 bytes:
 | 
        
           |  |  | 196 |   94:CamInterface.c **** 
 | 
        
           |  |  | 197 |   95:CamInterface.c ****     ----------------------------------------------------------------------------------
 | 
        
           |  |  | 198 |   96:CamInterface.c ****     |red0|red1|red2|...|red15|green0|green1|green2|...|green15|blue0|blue1|...|blue15|
 | 
        
           |  |  | 199 |   97:CamInterface.c **** mem:|0x00 0x01 0x02     0x15   0x16   0x17   0x18       0x31   0x32  0x33       0x47 |
 | 
        
           |  |  | 200 |   98:CamInterface.c ****     ---------------------------------------------------------------------------------
 | 
        
           |  |  | 201 |   99:CamInterface.c **** Thus, the red lookup is accessed at colorMap+0, the green lookup is accessed 
 | 
        
           |  |  | 202 |  100:CamInterface.c **** at colorMap+16, and the blue lookup is accessed at colorMap+32.  */	
 | 
        
           |  |  | 203 |  101:CamInterface.c **** unsigned char colorMap[NUM_ELEMENTS_IN_COLOR_MAP] __attribute__ ((section (".noinit")));
 | 
        
           |  |  | 204 |  102:CamInterface.c **** 
 | 
        
           |  |  | 205 |  103:CamInterface.c **** /*  Extern Variables */
 | 
        
           |  |  | 206 |  104:CamInterface.c **** /* These two buffers hold the current and previous lines
 | 
        
           |  |  | 207 |  105:CamInterface.c **** of pixel data.  They are sized to the worst case scenario,
 | 
        
           |  |  | 208 |  106:CamInterface.c **** where the color changes between every pixel (unrealistic).
 | 
        
           |  |  | 209 |  107:CamInterface.c **** The format of each buffer is for all the even bytes to hold
 | 
        
           |  |  | 210 |  108:CamInterface.c **** the run-length, and the odd bytes to hold the color data. */
 | 
        
           |  |  | 211 |  109:CamInterface.c **** 
 | 
        
           |  |  | 212 |  110:CamInterface.c **** /* In addition, if we are in frameDump mode, we use these buffers
 | 
        
           |  |  | 213 |  111:CamInterface.c **** to store the acquired line data...we are actually grabbing ALL of the
 | 
        
           |  |  | 214 |  112:CamInterface.c **** pixels in a line (176) instead of the 88 we get normally during tracking.
 | 
        
           |  |  | 215 |  113:CamInterface.c **** But since we have enough to hold 88-RLE blocks, we already have the 176
 | 
        
           |  |  | 216 |  114:CamInterface.c **** allocated for this... */
 | 
        
           |  |  | 217 |  115:CamInterface.c **** unsigned char currentLineBuffer[LENGTH_OF_LINE_BUFFER];
 | 
        
           |  |  | 218 |  116:CamInterface.c **** unsigned char previousLineBuffer[LENGTH_OF_LINE_BUFFER];
 | 
        
           |  |  | 219 |  117:CamInterface.c **** 
 | 
        
           |  |  | 220 |  118:CamInterface.c **** /*  Extern Functions */
 | 
        
           |  |  | 221 |  119:CamInterface.c **** /* These functions are located in assembly files, and thus
 | 
        
           |  |  | 222 |  120:CamInterface.c **** must be externed here so they can be referenced in the source below. */
 | 
        
           |  |  | 223 |  121:CamInterface.c **** extern void CamIntAsm_waitForNewTrackingFrame(unsigned char *pBuffer, unsigned char *pMemLookup);
 | 
        
           |  |  | 224 |  122:CamInterface.c **** extern void CamIntAsm_waitForNewDumpFrame(unsigned char *pCurrBuffer, unsigned char *pPrevBuffer);
 | 
        
           |  |  | 225 |  123:CamInterface.c **** extern void CamIntAsm_acquireTrackingLine(unsigned char *pBuffer, unsigned char *pMemLookup);
 | 
        
           |  |  | 226 |  124:CamInterface.c **** extern void CamIntAsm_acquireDumpLine(unsigned char *pCurrBuffer, unsigned char *pPrevBuffer);
 | 
        
           |  |  | 227 |  125:CamInterface.c **** 
 | 
        
           |  |  | 228 |  126:CamInterface.c **** /***********************************************************
 | 
        
           |  |  | 229 |  127:CamInterface.c **** 	Function Name: CamInt_init
 | 
        
           |  |  | 230 |  128:CamInterface.c **** 	Function Description: This function is responsible
 | 
        
           |  |  | 231 |  129:CamInterface.c **** 	for initializing the camera interface.  This includes
 | 
        
           |  |  | 232 |  130:CamInterface.c **** 	setting up the i/o ports that are used to read the
 | 
        
           |  |  | 233 |  131:CamInterface.c **** 	camera busses, as well as resetting the camera.
 | 
        
           |  |  | 234 |  132:CamInterface.c **** 	Inputs:  none
 | 
        
           |  |  | 235 |  133:CamInterface.c **** 	Outputs: none
 | 
        
           |  |  | 236 |  134:CamInterface.c **** ***********************************************************/	
 | 
        
           |  |  | 237 |  135:CamInterface.c **** void CamInt_init(void)
 | 
        
           |  |  | 238 |  136:CamInterface.c **** {
 | 
        
           |  |  | 239 |  137:CamInterface.c **** #if OUTPUT_INITIAL_COLOR_MAP
 | 
        
           |  |  | 240 |  138:CamInterface.c **** 	unsigned char asciiBuffer[5];
 | 
        
           |  |  | 241 | GAS LISTING /tmp/ccAE2QZt.s 			page 5
 | 
        
           |  |  | 242 |   | 
        
           |  |  | 243 |   | 
        
           |  |  | 244 |  139:CamInterface.c ****     unsigned char i;
 | 
        
           |  |  | 245 |  140:CamInterface.c **** #endif    
 | 
        
           |  |  | 246 |  141:CamInterface.c ****     
 | 
        
           |  |  | 247 |  142:CamInterface.c **** 	/* set up the mega8 ports that will be interfacing
 | 
        
           |  |  | 248 |  143:CamInterface.c **** 	with the camera */	
 | 
        
           |  |  | 249 |  144:CamInterface.c **** 	CAM_CONTROL_PORT_DIR |= (1<<CAM_RESET_LINE); /* cam reset is output */
 | 
        
           |  |  | 250 |  145:CamInterface.c **** 	CAM_CONTROL_PORT_DIR |= 0x80;   /* set just the MSB as an output */
 | 
        
           |  |  | 251 |  146:CamInterface.c **** 	CAM_CONTROL_PORT_DIR &= 0xFB;   /* make sure bit2 is clear (input) */
 | 
        
           |  |  | 252 |  147:CamInterface.c **** 	CAM_CONTROL_PORT &= 0x7F;   /* set reset line low */
 | 
        
           |  |  | 253 |  148:CamInterface.c **** 	CAM_G_BUS_DIR &= 0xF0;  /* 4-bit G bus all inputs */
 | 
        
           |  |  | 254 |  149:CamInterface.c ****     CAM_G_BUS_DIR |= 0xF0;  /* disable the pull-up on PB4 and PB5 */
 | 
        
           |  |  | 255 |  150:CamInterface.c **** 	CAM_RB_BUS_DIR &= 0xF0;  /* 4-bit RB bus all inputs */
 | 
        
           |  |  | 256 |  151:CamInterface.c **** 	
 | 
        
           |  |  | 257 |  152:CamInterface.c ****     /* ensure that timer1 is disabled to start...eventually, when PCLK needs
 | 
        
           |  |  | 258 |  153:CamInterface.c ****     to feed timer1 through the external counter, it will be enabled on an
 | 
        
           |  |  | 259 |  154:CamInterface.c ****     "as needed" basis...*/
 | 
        
           |  |  | 260 |  155:CamInterface.c **** 	TCCR1B &= ~( (1<<CS12)|(1<<CS11)|(1<<CS10) );
 | 
        
           |  |  | 261 |  156:CamInterface.c **** 	
 | 
        
           |  |  | 262 |  157:CamInterface.c **** 	/* we'll turn on the interrupt after we assign the initial TCNT value */
 | 
        
           |  |  | 263 |  158:CamInterface.c **** 	
 | 
        
           |  |  | 264 |  159:CamInterface.c **** 	/* set up External Interrupt1 to interrupt us on rising edges (HREF)...
 | 
        
           |  |  | 265 |  160:CamInterface.c **** 	this is needed to indicate when the first pixel of each line is about to start, so
 | 
        
           |  |  | 266 |  161:CamInterface.c **** 	we can synch up with it...this interrupt will be disabled once HREF goes high */
 | 
        
           |  |  | 267 |  162:CamInterface.c **** 	
 | 
        
           |  |  | 268 |  163:CamInterface.c **** 	MCUCR |= (1<<ISC11) | (1<<ISC10);  /* rising edge interrupt */
 | 
        
           |  |  | 269 |  164:CamInterface.c **** 	/* the interrupt will be enabled when we are ready to detect the rising edge of
 | 
        
           |  |  | 270 |  165:CamInterface.c **** 	HREF...its now primed and ready to go */
 | 
        
           |  |  | 271 |  166:CamInterface.c **** 	
 | 
        
           |  |  | 272 |  167:CamInterface.c **** 	/* set up External Interrupt0 to interrupt us on rising edges (VSYNC) */
 | 
        
           |  |  | 273 |  168:CamInterface.c **** 	MCUCR |= (1<<ISC01) | (1<<ISC00);	/* rising edge interrupt */ 
 | 
        
           |  |  | 274 |  169:CamInterface.c **** 	GICR  |= (1<<INT0);    /* interrupt request enabled */
 | 
        
           |  |  | 275 |  170:CamInterface.c **** 	
 | 
        
           |  |  | 276 |  171:CamInterface.c **** 	/* set up TimerO to count and be clocked from an external pulse source
 | 
        
           |  |  | 277 |  172:CamInterface.c **** 	(HREF) on falling edges...eventually, we need to enable the interrupt
 | 
        
           |  |  | 278 |  173:CamInterface.c **** 	for this!  FIX THIS */
 | 
        
           |  |  | 279 |  174:CamInterface.c **** 	TCCR0 = (1<<CS02)|(1<<CS01)|(0<<CS00);
 | 
        
           |  |  | 280 |  175:CamInterface.c **** 	
 | 
        
           |  |  | 281 |  176:CamInterface.c **** 	/* setting up the PCLK counter with Timer1 will be done right after
 | 
        
           |  |  | 282 |  177:CamInterface.c **** 	we start receiving pixels in each line...we sacrifice the first pixel
 | 
        
           |  |  | 283 |  178:CamInterface.c **** 	in each line, but we'll account for it...*/
 | 
        
           |  |  | 284 |  179:CamInterface.c **** 	
 | 
        
           |  |  | 285 |  180:CamInterface.c **** 	/* set up the mega8 so that its sleep mode puts it in an IDLE sleep
 | 
        
           |  |  | 286 |  181:CamInterface.c **** 	mode, where it can wake up as fast as possible */
 | 
        
           |  |  | 287 |  182:CamInterface.c **** 	set_sleep_mode(SLEEP_MODE_IDLE);
 | 
        
           |  |  | 288 |  183:CamInterface.c **** 	/* umm....we need to actually enable the sleep mode...*/
 | 
        
           |  |  | 289 |  184:CamInterface.c **** 	MCUCR |= 0x80;
 | 
        
           |  |  | 290 |  185:CamInterface.c **** 	
 | 
        
           |  |  | 291 |  186:CamInterface.c **** 	/* initialize the memLookup table */
 | 
        
           |  |  | 292 |  187:CamInterface.c **** 	memset(colorMap,0x00,NUM_ELEMENTS_IN_COLOR_MAP);   
 | 
        
           |  |  | 293 |  188:CamInterface.c **** 	
 | 
        
           |  |  | 294 |  189:CamInterface.c **** 	/* read the color map out of EEPROM */
 | 
        
           |  |  | 295 |  190:CamInterface.c **** 	eeprom_read_block(colorMap, (unsigned char*)0x01,NUM_ELEMENTS_IN_COLOR_MAP);
 | 
        
           |  |  | 296 |  191:CamInterface.c **** 
 | 
        
           |  |  | 297 |  192:CamInterface.c **** #if OUTPUT_INITIAL_COLOR_MAP    
 | 
        
           |  |  | 298 |  193:CamInterface.c ****     UIMgr_txBuffer("\r\n",2);
 | 
        
           |  |  | 299 |  194:CamInterface.c ****     for (i=0; i<NUM_ELEMENTS_IN_COLOR_MAP; i++)
 | 
        
           |  |  | 300 |  195:CamInterface.c **** 	{
 | 
        
           |  |  | 301 | GAS LISTING /tmp/ccAE2QZt.s 			page 6
 | 
        
           |  |  | 302 |   | 
        
           |  |  | 303 |   | 
        
           |  |  | 304 |  196:CamInterface.c **** 		memset(asciiBuffer,0x00,5);
 | 
        
           |  |  | 305 |  197:CamInterface.c **** 		itoa(colorMap[i],asciiBuffer,10);
 | 
        
           |  |  | 306 |  198:CamInterface.c **** 		UIMgr_txBuffer(asciiBuffer,3);
 | 
        
           |  |  | 307 |  199:CamInterface.c **** 		UIMgr_txBuffer(" ",1);
 | 
        
           |  |  | 308 |  200:CamInterface.c **** 		if (i==15 || i == 31)
 | 
        
           |  |  | 309 |  201:CamInterface.c **** 		{
 | 
        
           |  |  | 310 |  202:CamInterface.c **** 			/* break up the output */
 | 
        
           |  |  | 311 |  203:CamInterface.c **** 			UIMgr_txBuffer("\r\n",2);
 | 
        
           |  |  | 312 |  204:CamInterface.c **** 		}
 | 
        
           |  |  | 313 |  205:CamInterface.c **** 	}
 | 
        
           |  |  | 314 |  206:CamInterface.c **** #endif    
 | 
        
           |  |  | 315 |  207:CamInterface.c **** 
 | 
        
           |  |  | 316 |  208:CamInterface.c **** #ifndef NO_CRYSTAL
 | 
        
           |  |  | 317 |  209:CamInterface.c **** 	CamInt_resetCam();	
 | 
        
           |  |  | 318 |  210:CamInterface.c **** #endif    
 | 
        
           |  |  | 319 |  211:CamInterface.c **** }
 | 
        
           |  |  | 320 |  212:CamInterface.c **** 
 | 
        
           |  |  | 321 |  213:CamInterface.c **** /***********************************************************
 | 
        
           |  |  | 322 |  214:CamInterface.c **** 	Function Name: CamInt_resetCam
 | 
        
           |  |  | 323 |  215:CamInterface.c **** 	Function Description: This function is responsible
 | 
        
           |  |  | 324 |  216:CamInterface.c **** 	for resetting the camera.  This is accomplished by
 | 
        
           |  |  | 325 |  217:CamInterface.c **** 	toggling the reset line on the OV6620 for ~100 mS.
 | 
        
           |  |  | 326 |  218:CamInterface.c **** 	Inputs:  none
 | 
        
           |  |  | 327 |  219:CamInterface.c **** 	Outputs: none
 | 
        
           |  |  | 328 |  220:CamInterface.c ****     IMPORTANT NOTE: This function has effectively been removed
 | 
        
           |  |  | 329 |  221:CamInterface.c ****     since resetting the camera now causes the camera to not
 | 
        
           |  |  | 330 |  222:CamInterface.c ****     output the clock signal.  Thus, if we reset the cam, the
 | 
        
           |  |  | 331 |  223:CamInterface.c ****     AVR has no clock, and thus doesn't run...
 | 
        
           |  |  | 332 |  224:CamInterface.c **** ***********************************************************/	
 | 
        
           |  |  | 333 |  225:CamInterface.c **** void CamInt_resetCam(void)
 | 
        
           |  |  | 334 |  226:CamInterface.c **** {
 | 
        
           |  |  | 335 |   91               		.stabn	68,0,226,.LM0-CamInt_resetCam
 | 
        
           |  |  | 336 |   92               	.LM0:
 | 
        
           |  |  | 337 |   93               	/* prologue: frame size=0 */
 | 
        
           |  |  | 338 |   94               	/* prologue end (size=0) */
 | 
        
           |  |  | 339 |   95               	/* epilogue: frame size=0 */
 | 
        
           |  |  | 340 |   96 0000 0895      		ret
 | 
        
           |  |  | 341 |   97               	/* epilogue end (size=1) */
 | 
        
           |  |  | 342 |   98               	/* function CamInt_resetCam size 1 (0) */
 | 
        
           |  |  | 343 |   99               		.size	CamInt_resetCam, .-CamInt_resetCam
 | 
        
           |  |  | 344 |  100               	.Lscope0:
 | 
        
           |  |  | 345 |  101               		.stabs	"",36,0,0,.Lscope0-CamInt_resetCam
 | 
        
           |  |  | 346 |  102               		.stabd	78,0,0
 | 
        
           |  |  | 347 |  103               		.stabs	"CamInt_init:F(0,15)",36,0,136,CamInt_init
 | 
        
           |  |  | 348 |  104               	.global	CamInt_init
 | 
        
           |  |  | 349 |  105               		.type	CamInt_init, @function
 | 
        
           |  |  | 350 |  106               	CamInt_init:
 | 
        
           |  |  | 351 |  107               		.stabd	46,0,0
 | 
        
           |  |  | 352 |  108               		.stabn	68,0,136,.LM1-CamInt_init
 | 
        
           |  |  | 353 |  109               	.LM1:
 | 
        
           |  |  | 354 |  110               	/* prologue: frame size=0 */
 | 
        
           |  |  | 355 |  111               	/* prologue end (size=0) */
 | 
        
           |  |  | 356 |  112               		.stabn	68,0,144,.LM2-CamInt_init
 | 
        
           |  |  | 357 |  113               	.LM2:
 | 
        
           |  |  | 358 |  114 0002 8F9A      		sbi 49-0x20,7
 | 
        
           |  |  | 359 |  115               		.stabn	68,0,145,.LM3-CamInt_init
 | 
        
           |  |  | 360 |  116               	.LM3:
 | 
        
           |  |  | 361 | GAS LISTING /tmp/ccAE2QZt.s 			page 7
 | 
        
           |  |  | 362 |   | 
        
           |  |  | 363 |   | 
        
           |  |  | 364 |  117 0004 8F9A      		sbi 49-0x20,7
 | 
        
           |  |  | 365 |  118               		.stabn	68,0,146,.LM4-CamInt_init
 | 
        
           |  |  | 366 |  119               	.LM4:
 | 
        
           |  |  | 367 |  120 0006 8A98      		cbi 49-0x20,2
 | 
        
           |  |  | 368 |  121               		.stabn	68,0,147,.LM5-CamInt_init
 | 
        
           |  |  | 369 |  122               	.LM5:
 | 
        
           |  |  | 370 |  123 0008 9798      		cbi 50-0x20,7
 | 
        
           |  |  | 371 |  124               		.stabn	68,0,148,.LM6-CamInt_init
 | 
        
           |  |  | 372 |  125               	.LM6:
 | 
        
           |  |  | 373 |  126 000a 87B3      		in r24,55-0x20
 | 
        
           |  |  | 374 |  127 000c 807F      		andi r24,lo8(-16)
 | 
        
           |  |  | 375 |  128 000e 87BB      		out 55-0x20,r24
 | 
        
           |  |  | 376 |  129               		.stabn	68,0,149,.LM7-CamInt_init
 | 
        
           |  |  | 377 |  130               	.LM7:
 | 
        
           |  |  | 378 |  131 0010 87B3      		in r24,55-0x20
 | 
        
           |  |  | 379 |  132 0012 806F      		ori r24,lo8(-16)
 | 
        
           |  |  | 380 |  133 0014 87BB      		out 55-0x20,r24
 | 
        
           |  |  | 381 |  134               		.stabn	68,0,150,.LM8-CamInt_init
 | 
        
           |  |  | 382 |  135               	.LM8:
 | 
        
           |  |  | 383 |  136 0016 84B3      		in r24,52-0x20
 | 
        
           |  |  | 384 |  137 0018 807F      		andi r24,lo8(-16)
 | 
        
           |  |  | 385 |  138 001a 84BB      		out 52-0x20,r24
 | 
        
           |  |  | 386 |  139               		.stabn	68,0,155,.LM9-CamInt_init
 | 
        
           |  |  | 387 |  140               	.LM9:
 | 
        
           |  |  | 388 |  141 001c 8EB5      		in r24,78-0x20
 | 
        
           |  |  | 389 |  142 001e 887F      		andi r24,lo8(-8)
 | 
        
           |  |  | 390 |  143 0020 8EBD      		out 78-0x20,r24
 | 
        
           |  |  | 391 |  144               		.stabn	68,0,163,.LM10-CamInt_init
 | 
        
           |  |  | 392 |  145               	.LM10:
 | 
        
           |  |  | 393 |  146 0022 85B7      		in r24,85-0x20
 | 
        
           |  |  | 394 |  147 0024 8C60      		ori r24,lo8(12)
 | 
        
           |  |  | 395 |  148 0026 85BF      		out 85-0x20,r24
 | 
        
           |  |  | 396 |  149               		.stabn	68,0,168,.LM11-CamInt_init
 | 
        
           |  |  | 397 |  150               	.LM11:
 | 
        
           |  |  | 398 |  151 0028 85B7      		in r24,85-0x20
 | 
        
           |  |  | 399 |  152 002a 8360      		ori r24,lo8(3)
 | 
        
           |  |  | 400 |  153 002c 85BF      		out 85-0x20,r24
 | 
        
           |  |  | 401 |  154               		.stabn	68,0,169,.LM12-CamInt_init
 | 
        
           |  |  | 402 |  155               	.LM12:
 | 
        
           |  |  | 403 |  156 002e 8BB7      		in r24,91-0x20
 | 
        
           |  |  | 404 |  157 0030 8064      		ori r24,lo8(64)
 | 
        
           |  |  | 405 |  158 0032 8BBF      		out 91-0x20,r24
 | 
        
           |  |  | 406 |  159               		.stabn	68,0,174,.LM13-CamInt_init
 | 
        
           |  |  | 407 |  160               	.LM13:
 | 
        
           |  |  | 408 |  161 0034 86E0      		ldi r24,lo8(6)
 | 
        
           |  |  | 409 |  162 0036 83BF      		out 83-0x20,r24
 | 
        
           |  |  | 410 |  163               		.stabn	68,0,182,.LM14-CamInt_init
 | 
        
           |  |  | 411 |  164               	.LM14:
 | 
        
           |  |  | 412 |  165 0038 85B7      		in r24,85-0x20
 | 
        
           |  |  | 413 |  166 003a 8F78      		andi r24,lo8(-113)
 | 
        
           |  |  | 414 |  167 003c 85BF      		out 85-0x20,r24
 | 
        
           |  |  | 415 |  168               		.stabn	68,0,184,.LM15-CamInt_init
 | 
        
           |  |  | 416 |  169               	.LM15:
 | 
        
           |  |  | 417 |  170 003e 85B7      		in r24,85-0x20
 | 
        
           |  |  | 418 |  171 0040 8068      		ori r24,lo8(-128)
 | 
        
           |  |  | 419 |  172 0042 85BF      		out 85-0x20,r24
 | 
        
           |  |  | 420 |  173               		.stabn	68,0,187,.LM16-CamInt_init
 | 
        
           |  |  | 421 | GAS LISTING /tmp/ccAE2QZt.s 			page 8
 | 
        
           |  |  | 422 |   | 
        
           |  |  | 423 |   | 
        
           |  |  | 424 |  174               	.LM16:
 | 
        
           |  |  | 425 |  175 0044 E0E0      		ldi r30,lo8(colorMap)
 | 
        
           |  |  | 426 |  176 0046 F0E0      		ldi r31,hi8(colorMap)
 | 
        
           |  |  | 427 |  177 0048 80E3      		ldi r24,lo8(48)
 | 
        
           |  |  | 428 |  178 004a DF01      		movw r26,r30
 | 
        
           |  |  | 429 |  179 004c 982F      		mov r25,r24
 | 
        
           |  |  | 430 |  180 004e 1D92      		st X+,__zero_reg__
 | 
        
           |  |  | 431 |  181 0050 9A95      	        dec r25
 | 
        
           |  |  | 432 |  182 0052 E9F7      		brne .-6
 | 
        
           |  |  | 433 |  183               	.LBB6:
 | 
        
           |  |  | 434 |  184               	.LBB7:
 | 
        
           |  |  | 435 |  185               	.LBB8:
 | 
        
           |  |  | 436 |  186               		.stabs	"/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h",132,0,0,.Ltext1
 | 
        
           |  |  | 437 |  187               	.Ltext1:
 | 
        
           |  |  | 438 |    1:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** /* Copyright (c) 2002, 2003, 2004 Marek Michalkiewicz
 | 
        
           |  |  | 439 |    2:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****    Copyright (c) 2005, 2006 Bjoern Haase
 | 
        
           |  |  | 440 |    3:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****    All rights reserved.
 | 
        
           |  |  | 441 |    4:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 442 |    5:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****    Redistribution and use in source and binary forms, with or without
 | 
        
           |  |  | 443 |    6:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****    modification, are permitted provided that the following conditions are met:
 | 
        
           |  |  | 444 |    7:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 445 |    8:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****    * Redistributions of source code must retain the above copyright
 | 
        
           |  |  | 446 |    9:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      notice, this list of conditions and the following disclaimer.
 | 
        
           |  |  | 447 |   10:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 448 |   11:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****    * Redistributions in binary form must reproduce the above copyright
 | 
        
           |  |  | 449 |   12:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      notice, this list of conditions and the following disclaimer in
 | 
        
           |  |  | 450 |   13:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      the documentation and/or other materials provided with the
 | 
        
           |  |  | 451 |   14:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      distribution.
 | 
        
           |  |  | 452 |   15:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 453 |   16:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****    * Neither the name of the copyright holders nor the names of
 | 
        
           |  |  | 454 |   17:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      contributors may be used to endorse or promote products derived
 | 
        
           |  |  | 455 |   18:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      from this software without specific prior written permission.
 | 
        
           |  |  | 456 |   19:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 457 |   20:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
        
           |  |  | 458 |   21:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
        
           |  |  | 459 |   22:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
        
           |  |  | 460 |   23:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
 | 
        
           |  |  | 461 |   24:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | 
        
           |  |  | 462 |   25:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | 
        
           |  |  | 463 |   26:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 | 
        
           |  |  | 464 |   27:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 | 
        
           |  |  | 465 |   28:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 | 
        
           |  |  | 466 |   29:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | 
        
           |  |  | 467 |   30:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****   POSSIBILITY OF SUCH DAMAGE. */
 | 
        
           |  |  | 468 |   31:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 469 |   32:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** /* $Id: eeprom.h,v 1.17.2.1 2006/02/26 21:51:04 aesok Exp $ */
 | 
        
           |  |  | 470 |   33:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 471 |   34:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** /*
 | 
        
           |  |  | 472 |   35:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****    eeprom.h
 | 
        
           |  |  | 473 |   36:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 474 |   37:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****    Contributors:
 | 
        
           |  |  | 475 |   38:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      Created by Marek Michalkiewicz <marekm@linux.org.pl>
 | 
        
           |  |  | 476 |   39:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      eeprom_write_word and eeprom_write_block added by Artur Lipowski 
 | 
        
           |  |  | 477 |   40:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      <LAL@pro.onet.pl>
 | 
        
           |  |  | 478 |   41:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      Complete rewrite using the original interface by Bjoern Haase 
 | 
        
           |  |  | 479 |   42:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      <bjoern.haase@de.bosch.com>. 
 | 
        
           |  |  | 480 |   43:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****  */
 | 
        
           |  |  | 481 | GAS LISTING /tmp/ccAE2QZt.s 			page 9
 | 
        
           |  |  | 482 |   | 
        
           |  |  | 483 |   | 
        
           |  |  | 484 |   44:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 485 |   45:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #ifndef _EEPROM_H_
 | 
        
           |  |  | 486 |   46:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #define _EEPROM_H_ 1
 | 
        
           |  |  | 487 |   47:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 488 |   48:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #define __need_size_t
 | 
        
           |  |  | 489 |   49:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #include <stddef.h>
 | 
        
           |  |  | 490 |   50:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #include <inttypes.h>
 | 
        
           |  |  | 491 |   51:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 492 |   52:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 493 |   53:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #ifdef __AVR_MEGA__
 | 
        
           |  |  | 494 |   54:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #define XCALL "call"
 | 
        
           |  |  | 495 |   55:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #else
 | 
        
           |  |  | 496 |   56:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #define XCALL "rcall"
 | 
        
           |  |  | 497 |   57:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #endif
 | 
        
           |  |  | 498 |   58:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 499 |   59:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #include <avr/io.h>
 | 
        
           |  |  | 500 |   60:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #ifndef __EEPROM_REG_LOCATIONS__
 | 
        
           |  |  | 501 |   61:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** /** \def __EEPROM_REG_LOCATIONS__
 | 
        
           |  |  | 502 |   62:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     \ingroup avr_eeprom
 | 
        
           |  |  | 503 |   63:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      In order to be able to work without a requiring a multilib 
 | 
        
           |  |  | 504 |   64:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      approach for dealing with controllers having the EEPROM registers
 | 
        
           |  |  | 505 |   65:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      at different positions in memory space, the eeprom functions evaluate
 | 
        
           |  |  | 506 |   66:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      __EEPROM_REG_LOCATIONS__: It is assumed to be defined by
 | 
        
           |  |  | 507 |   67:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      the device io header and contains 6 uppercase hex digits encoding the 
 | 
        
           |  |  | 508 |   68:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      addresses of EECR,EEDR and EEAR. 
 | 
        
           |  |  | 509 |   69:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      First two letters:  EECR address.
 | 
        
           |  |  | 510 |   70:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      Second two letters: EEDR address.
 | 
        
           |  |  | 511 |   71:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      Last two letters:   EEAR address.
 | 
        
           |  |  | 512 |   72:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      The default 1C1D1E corresponds to the
 | 
        
           |  |  | 513 |   73:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      register location that is valid for most controllers. The value
 | 
        
           |  |  | 514 |   74:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      of this define symbol is used for appending it to the base name of the
 | 
        
           |  |  | 515 |   75:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      assembler functions.  */
 | 
        
           |  |  | 516 |   76:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #define __EEPROM_REG_LOCATIONS__ 1C1D1E
 | 
        
           |  |  | 517 |   77:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #endif
 | 
        
           |  |  | 518 |   78:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #define _STR2(EXP) _STR1(EXP)
 | 
        
           |  |  | 519 |   79:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #define _STR1(EXP) #EXP
 | 
        
           |  |  | 520 |   80:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #define _REG_LOCATION_SUFFIX _STR2(__EEPROM_REG_LOCATIONS__)
 | 
        
           |  |  | 521 |   81:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 522 |   82:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #ifndef CR_TAB
 | 
        
           |  |  | 523 |   83:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #define CR_TAB "\n\t"
 | 
        
           |  |  | 524 |   84:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #endif
 | 
        
           |  |  | 525 |   85:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 526 |   86:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 527 |   87:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** /** \defgroup avr_eeprom <avr/eeprom.h>: EEPROM handling
 | 
        
           |  |  | 528 |   88:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     \code #include <avr/eeprom.h> \endcode
 | 
        
           |  |  | 529 |   89:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 530 |   90:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     This header file declares the interface to some simple library
 | 
        
           |  |  | 531 |   91:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     routines suitable for handling the data EEPROM contained in the
 | 
        
           |  |  | 532 |   92:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     AVR microcontrollers.  The implementation uses a simple polled
 | 
        
           |  |  | 533 |   93:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     mode interface.  Applications that require interrupt-controlled
 | 
        
           |  |  | 534 |   94:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     EEPROM access to ensure that no time will be wasted in spinloops
 | 
        
           |  |  | 535 |   95:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     will have to deploy their own implementation.
 | 
        
           |  |  | 536 |   96:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 537 |   97:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     \note All of the read/write functions first make sure the EEPROM
 | 
        
           |  |  | 538 |   98:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      is ready to be accessed.  Since this may cause long delays if a
 | 
        
           |  |  | 539 |   99:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      write operation is still pending, time-critical applications
 | 
        
           |  |  | 540 |  100:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      should first poll the EEPROM e. g. using eeprom_is_ready() before
 | 
        
           |  |  | 541 | GAS LISTING /tmp/ccAE2QZt.s 			page 10
 | 
        
           |  |  | 542 |   | 
        
           |  |  | 543 |   | 
        
           |  |  | 544 |  101:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      attempting any actual I/O.
 | 
        
           |  |  | 545 |  102:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 546 |  103:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     \note This header file declares inline functions that call the
 | 
        
           |  |  | 547 |  104:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      assembler subroutines directly. This prevents that the compiler
 | 
        
           |  |  | 548 |  105:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      generates push/pops for the call-clobbered registers. This way
 | 
        
           |  |  | 549 |  106:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      also a specific calling convention could be used for the eeprom
 | 
        
           |  |  | 550 |  107:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      routines e.g. by passing values in __tmp_reg__, eeprom addresses in
 | 
        
           |  |  | 551 |  108:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      X and memory addresses in Z registers. Method is optimized for code 
 | 
        
           |  |  | 552 |  109:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      size.
 | 
        
           |  |  | 553 |  110:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 554 |  111:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     \note Presently supported are two locations of the EEPROM register
 | 
        
           |  |  | 555 |  112:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      set: 0x1F,0x20,0x21 and 0x1C,0x1D,0x1E 
 | 
        
           |  |  | 556 |  113:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      (see ::__EEPROM_REG_LOCATIONS__).
 | 
        
           |  |  | 557 |  114:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 558 |  115:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     \note As these functions modify IO registers, they are known to be
 | 
        
           |  |  | 559 |  116:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      non-reentrant.  If any of these functions are used from both,
 | 
        
           |  |  | 560 |  117:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      standard and interrupt context, the applications must ensure
 | 
        
           |  |  | 561 |  118:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      proper protection (e.g. by disabling interrupts before accessing
 | 
        
           |  |  | 562 |  119:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      them).
 | 
        
           |  |  | 563 |  120:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 564 |  121:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** */
 | 
        
           |  |  | 565 |  122:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 566 |  123:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 567 |  124:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** /* forward declarations of the inline functions so that doxygen does
 | 
        
           |  |  | 568 |  125:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****    not get confused by the attribute expression.  */
 | 
        
           |  |  | 569 |  126:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 570 |  127:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** static inline uint8_t __attribute__ ((always_inline))
 | 
        
           |  |  | 571 |  128:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** eeprom_read_byte (const uint8_t *addr);
 | 
        
           |  |  | 572 |  129:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 573 |  130:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** static inline uint16_t __attribute__ ((always_inline)) 
 | 
        
           |  |  | 574 |  131:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** eeprom_read_word (const uint16_t *addr);
 | 
        
           |  |  | 575 |  132:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 576 |  133:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** static inline void __attribute__ ((always_inline))
 | 
        
           |  |  | 577 |  134:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** eeprom_read_block (void *pointer_ram,
 | 
        
           |  |  | 578 |  135:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****                    const void *pointer_eeprom,
 | 
        
           |  |  | 579 |  136:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****                    size_t size);
 | 
        
           |  |  | 580 |  137:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 581 |  138:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** static inline void __attribute__ ((always_inline))
 | 
        
           |  |  | 582 |  139:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** eeprom_write_byte (uint8_t *addr,uint8_t value);
 | 
        
           |  |  | 583 |  140:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 584 |  141:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** static inline void __attribute__ ((always_inline))
 | 
        
           |  |  | 585 |  142:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** eeprom_write_word (uint16_t *addr,uint16_t value);
 | 
        
           |  |  | 586 |  143:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 587 |  144:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** static inline void __attribute__ ((always_inline))
 | 
        
           |  |  | 588 |  145:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** eeprom_write_block (const void *pointer_ram,
 | 
        
           |  |  | 589 |  146:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****                     void *pointer_eeprom,
 | 
        
           |  |  | 590 |  147:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****                     size_t size);
 | 
        
           |  |  | 591 |  148:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 592 |  149:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** /** \name avr-libc declarations */
 | 
        
           |  |  | 593 |  150:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 594 |  151:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** /*@{*/
 | 
        
           |  |  | 595 |  152:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 596 |  153:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** /** \def EEMEM
 | 
        
           |  |  | 597 |  154:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     \ingroup avr_eeprom
 | 
        
           |  |  | 598 |  155:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     Attribute expression causing a variable to be allocated within the .eeprom
 | 
        
           |  |  | 599 |  156:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****      section.  */
 | 
        
           |  |  | 600 |  157:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #define EEMEM __attribute__((section(".eeprom")))
 | 
        
           |  |  | 601 | GAS LISTING /tmp/ccAE2QZt.s 			page 11
 | 
        
           |  |  | 602 |   | 
        
           |  |  | 603 |   | 
        
           |  |  | 604 |  158:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 605 |  159:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** /** \def eeprom_is_ready
 | 
        
           |  |  | 606 |  160:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     \ingroup avr_eeprom
 | 
        
           |  |  | 607 |  161:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     \returns 1 if EEPROM is ready for a new read/write operation, 0 if not. */
 | 
        
           |  |  | 608 |  162:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 609 |  163:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #if defined(__DOXYGEN__)
 | 
        
           |  |  | 610 |  164:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** # define eeprom_is_ready()
 | 
        
           |  |  | 611 |  165:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #elif defined(EEWE)
 | 
        
           |  |  | 612 |  166:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** # define eeprom_is_ready() bit_is_clear(EECR, EEWE)
 | 
        
           |  |  | 613 |  167:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #elif defined(EEPE)
 | 
        
           |  |  | 614 |  168:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** # define eeprom_is_ready() bit_is_clear(EECR, EEPE)
 | 
        
           |  |  | 615 |  169:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #elif defined(DEECR) && defined(EEL)
 | 
        
           |  |  | 616 |  170:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** # define eeprom_is_ready() bit_is_clear(DEECR, EEL)
 | 
        
           |  |  | 617 |  171:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #else
 | 
        
           |  |  | 618 |  172:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** # error "No write enable bit known for this device's EEPROM."
 | 
        
           |  |  | 619 |  173:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #endif
 | 
        
           |  |  | 620 |  174:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 621 |  175:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** /** \def eeprom_busy_wait
 | 
        
           |  |  | 622 |  176:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     \ingroup avr_eeprom
 | 
        
           |  |  | 623 |  177:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 624 |  178:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     Loops until the eeprom is no longer busy.
 | 
        
           |  |  | 625 |  179:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 626 |  180:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     \returns Nothing. */
 | 
        
           |  |  | 627 |  181:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 628 |  182:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** #define eeprom_busy_wait() do {} while (!eeprom_is_ready())
 | 
        
           |  |  | 629 |  183:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 630 |  184:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 631 |  185:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** /** \ingroup avr_eeprom
 | 
        
           |  |  | 632 |  186:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     Read one byte from EEPROM address \c addr. */
 | 
        
           |  |  | 633 |  187:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 634 |  188:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** uint8_t 
 | 
        
           |  |  | 635 |  189:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** eeprom_read_byte (const uint8_t *addr) 
 | 
        
           |  |  | 636 |  190:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** {
 | 
        
           |  |  | 637 |  191:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****   uint8_t result;
 | 
        
           |  |  | 638 |  192:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****   asm volatile
 | 
        
           |  |  | 639 |  193:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****       ( XCALL " __eeprom_read_byte_" _REG_LOCATION_SUFFIX CR_TAB
 | 
        
           |  |  | 640 |  194:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****         "mov %1,__tmp_reg__"
 | 
        
           |  |  | 641 |  195:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****        : "+x" (addr),
 | 
        
           |  |  | 642 |  196:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****          "=r" (result)
 | 
        
           |  |  | 643 |  197:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****        : );
 | 
        
           |  |  | 644 |  198:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****   return result;
 | 
        
           |  |  | 645 |  199:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** }
 | 
        
           |  |  | 646 |  200:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 647 |  201:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** /** \ingroup avr_eeprom
 | 
        
           |  |  | 648 |  202:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     Read one 16-bit word (little endian) from EEPROM address \c addr. */
 | 
        
           |  |  | 649 |  203:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** uint16_t
 | 
        
           |  |  | 650 |  204:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** eeprom_read_word (const uint16_t *addr)
 | 
        
           |  |  | 651 |  205:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** {
 | 
        
           |  |  | 652 |  206:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****   uint16_t result;
 | 
        
           |  |  | 653 |  207:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 654 |  208:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****   asm ( 
 | 
        
           |  |  | 655 |  209:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****         XCALL " __eeprom_read_word_" _REG_LOCATION_SUFFIX CR_TAB
 | 
        
           |  |  | 656 |  210:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****        : "+x" (addr),
 | 
        
           |  |  | 657 |  211:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****          "=z" (result)
 | 
        
           |  |  | 658 |  212:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****        : );
 | 
        
           |  |  | 659 |  213:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****   return result;
 | 
        
           |  |  | 660 |  214:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** }
 | 
        
           |  |  | 661 | GAS LISTING /tmp/ccAE2QZt.s 			page 12
 | 
        
           |  |  | 662 |   | 
        
           |  |  | 663 |   | 
        
           |  |  | 664 |  215:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 665 |  216:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** /** \ingroup avr_eeprom
 | 
        
           |  |  | 666 |  217:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     Read a block of \c n bytes from EEPROM address \c pointer_eeprom to
 | 
        
           |  |  | 667 |  218:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     \c pointer_ram.  For constant n <= 256 bytes a library function is used.
 | 
        
           |  |  | 668 |  219:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     For block sizes unknown at compile time or block sizes > 256 an inline
 | 
        
           |  |  | 669 |  220:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     loop is expanded. */
 | 
        
           |  |  | 670 |  221:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 671 |  222:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** void 
 | 
        
           |  |  | 672 |  223:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** eeprom_read_block (void *pointer_ram,
 | 
        
           |  |  | 673 |  224:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****                    const void *pointer_eeprom,
 | 
        
           |  |  | 674 |  225:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****                    size_t n)
 | 
        
           |  |  | 675 |  226:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** {
 | 
        
           |  |  | 676 |  227:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****   if (!__builtin_constant_p (n)
 | 
        
           |  |  | 677 |  228:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****       || n > 256)
 | 
        
           |  |  | 678 |  229:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     {
 | 
        
           |  |  | 679 |  230:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****       /* make sure size is a 16 bit variable.  */
 | 
        
           |  |  | 680 |  231:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****       uint16_t size = n; 
 | 
        
           |  |  | 681 |  232:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 682 |  233:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****       asm volatile ( 
 | 
        
           |  |  | 683 |  234:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****             ".%=_start:" CR_TAB
 | 
        
           |  |  | 684 |  235:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****             "sbiw %2,1" CR_TAB
 | 
        
           |  |  | 685 |  236:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****             "brlt .%=_finished" CR_TAB
 | 
        
           |  |  | 686 |  237:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****              XCALL " __eeprom_read_byte_" _REG_LOCATION_SUFFIX CR_TAB
 | 
        
           |  |  | 687 |  238:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****             "st z+,__tmp_reg__" CR_TAB
 | 
        
           |  |  | 688 |  239:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****             "rjmp .%=_start" CR_TAB
 | 
        
           |  |  | 689 |  240:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****             ".%=_finished:" 
 | 
        
           |  |  | 690 |  241:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****           : "=x" (pointer_eeprom),
 | 
        
           |  |  | 691 |  242:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****             "=z" (pointer_ram),
 | 
        
           |  |  | 692 |  243:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****             "+w" (size)
 | 
        
           |  |  | 693 |  244:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****            : "x" (pointer_eeprom), 
 | 
        
           |  |  | 694 |  245:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****              "z" (pointer_ram)
 | 
        
           |  |  | 695 |  246:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****            : "memory");
 | 
        
           |  |  | 696 |  247:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     }
 | 
        
           |  |  | 697 |  248:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****   else
 | 
        
           |  |  | 698 |  249:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****     {
 | 
        
           |  |  | 699 |  250:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****       if (n != 0)
 | 
        
           |  |  | 700 |  251:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****         {
 | 
        
           |  |  | 701 |  252:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****           if (n == 256)
 | 
        
           |  |  | 702 |  253:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****             {
 | 
        
           |  |  | 703 |  254:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****               asm volatile (
 | 
        
           |  |  | 704 |  255:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****                   XCALL " __eeprom_read_block_" _REG_LOCATION_SUFFIX 
 | 
        
           |  |  | 705 |  256:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****                 : "+x" (pointer_eeprom),
 | 
        
           |  |  | 706 |  257:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****                   "=z" (pointer_ram)
 | 
        
           |  |  | 707 |  258:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****                 : "z"  (pointer_ram)
 | 
        
           |  |  | 708 |  259:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****                 : "memory");
 | 
        
           |  |  | 709 |  260:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****             }
 | 
        
           |  |  | 710 |  261:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****           else
 | 
        
           |  |  | 711 |  262:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****             {
 | 
        
           |  |  | 712 |  263:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****               /* Needed in order to truncate to 8 bit.  */
 | 
        
           |  |  | 713 |  264:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****               uint8_t len;
 | 
        
           |  |  | 714 |  265:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****               len = (uint8_t) n; 
 | 
        
           |  |  | 715 |  266:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h **** 
 | 
        
           |  |  | 716 |  267:/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/eeprom.h ****               asm volatile (
 | 
        
           |  |  | 717 |  188               		.stabn	68,0,267,.LM17-CamInt_init
 | 
        
           |  |  | 718 |  189               	.LM17:
 | 
        
           |  |  | 719 |  190 0054 A1E0      		ldi r26,lo8(1)
 | 
        
           |  |  | 720 |  191 0056 B0E0      		ldi r27,hi8(1)
 | 
        
           |  |  | 721 | GAS LISTING /tmp/ccAE2QZt.s 			page 13
 | 
        
           |  |  | 722 |   | 
        
           |  |  | 723 |   | 
        
           |  |  | 724 |  192               	/* #APP */
 | 
        
           |  |  | 725 |  193 0058 182E      		mov __zero_reg__,r24
 | 
        
           |  |  | 726 |  194 005a 00D0      		rcall __eeprom_read_block_1C1D1E
 | 
        
           |  |  | 727 |  195               	/* #NOAPP */
 | 
        
           |  |  | 728 |  196               	.LBE8:
 | 
        
           |  |  | 729 |  197               	.LBE7:
 | 
        
           |  |  | 730 |  198               	.LBE6:
 | 
        
           |  |  | 731 |  199               	/* epilogue: frame size=0 */
 | 
        
           |  |  | 732 |  200 005c 0895      		ret
 | 
        
           |  |  | 733 |  201               	/* epilogue end (size=1) */
 | 
        
           |  |  | 734 |  202               	/* function CamInt_init size 48 (47) */
 | 
        
           |  |  | 735 |  203               		.size	CamInt_init, .-CamInt_init
 | 
        
           |  |  | 736 |  204               		.stabs	"pointer_eeprom:r(0,16)=*(0,17)=k(0,15)",64,0,190,26
 | 
        
           |  |  | 737 |  205               		.stabs	"pointer_ram:r(0,18)=*(0,15)",64,0,190,30
 | 
        
           |  |  | 738 |  206               		.stabn	192,0,0,.LBB6-CamInt_init
 | 
        
           |  |  | 739 |  207               		.stabn	224,0,0,.LBE6-CamInt_init
 | 
        
           |  |  | 740 |  208               	.Lscope1:
 | 
        
           |  |  | 741 |  209               		.stabs	"",36,0,0,.Lscope1-CamInt_init
 | 
        
           |  |  | 742 |  210               		.stabd	78,0,0
 | 
        
           |  |  | 743 |  211               		.comm currentLineBuffer,176,1
 | 
        
           |  |  | 744 |  212               		.comm previousLineBuffer,176,1
 | 
        
           |  |  | 745 |  213               	.global	colorMap
 | 
        
           |  |  | 746 |  214               		.section	.noinit,"aw",@nobits
 | 
        
           |  |  | 747 |  215               		.type	colorMap, @object
 | 
        
           |  |  | 748 |  216               		.size	colorMap, 48
 | 
        
           |  |  | 749 |  217               	colorMap:
 | 
        
           |  |  | 750 |  218 0000 0000 0000 		.skip 48,0
 | 
        
           |  |  | 751 |  218      0000 0000 
 | 
        
           |  |  | 752 |  218      0000 0000 
 | 
        
           |  |  | 753 |  218      0000 0000 
 | 
        
           |  |  | 754 |  218      0000 0000 
 | 
        
           |  |  | 755 |  219               		.stabs	"currentLineBuffer:G(0,19)=ar(0,20)=r(0,20);0;0177777;;0;175;(0,11)",32,0,115,0
 | 
        
           |  |  | 756 |  220               		.stabs	"previousLineBuffer:G(0,19)",32,0,116,0
 | 
        
           |  |  | 757 |  221               		.stabs	"colorMap:G(0,21)=ar(0,20);0;47;(0,11)",32,0,101,0
 | 
        
           |  |  | 758 |  222               		.text
 | 
        
           |  |  | 759 |  223               		.stabs	"",100,0,0,.Letext0
 | 
        
           |  |  | 760 |  224               	.Letext0:
 | 
        
           |  |  | 761 |  225               	/* File "CamInterface.c": code   49 = 0x0031 (  47), prologues   0, epilogues   2 */
 | 
        
           |  |  | 762 | GAS LISTING /tmp/ccAE2QZt.s 			page 14
 | 
        
           |  |  | 763 |   | 
        
           |  |  | 764 |   | 
        
           |  |  | 765 | DEFINED SYMBOLS
 | 
        
           |  |  | 766 |                             *ABS*:00000000 CamInterface.c
 | 
        
           |  |  | 767 |      /tmp/ccAE2QZt.s:3      *ABS*:0000003f __SREG__
 | 
        
           |  |  | 768 |      /tmp/ccAE2QZt.s:4      *ABS*:0000003e __SP_H__
 | 
        
           |  |  | 769 |      /tmp/ccAE2QZt.s:5      *ABS*:0000003d __SP_L__
 | 
        
           |  |  | 770 |      /tmp/ccAE2QZt.s:6      *ABS*:00000000 __tmp_reg__
 | 
        
           |  |  | 771 |      /tmp/ccAE2QZt.s:7      *ABS*:00000001 __zero_reg__
 | 
        
           |  |  | 772 |      /tmp/ccAE2QZt.s:89     .text:00000000 CamInt_resetCam
 | 
        
           |  |  | 773 |      /tmp/ccAE2QZt.s:106    .text:00000002 CamInt_init
 | 
        
           |  |  | 774 |      /tmp/ccAE2QZt.s:217    .noinit:00000000 colorMap
 | 
        
           |  |  | 775 |                             *COM*:000000b0 currentLineBuffer
 | 
        
           |  |  | 776 |                             *COM*:000000b0 previousLineBuffer
 | 
        
           |  |  | 777 |   | 
        
           |  |  | 778 | UNDEFINED SYMBOLS
 | 
        
           |  |  | 779 | __do_copy_data
 | 
        
           |  |  | 780 | __do_clear_bss
 | 
        
           |  |  | 781 | __eeprom_read_block_1C1D1E
 |