   1              		.code	16
   2              		.file	"ALMY.c"
  10              	.Ltext0:
  11              		.align	2
  12              		.code 16
  13              		.thumb_func
  15              	GetInt:
  16              	.LFB2:
  17              		.file 1 "ALMY.c"
   1:ALMY.c        **** /***************************************
   2:ALMY.c        **** Project : almy
   3:ALMY.c        **** Version : 3.1
   4:ALMY.c        **** Date    : 10 Dec 2007
   5:ALMY.c        **** Company : Max-Planck-Institut for Physics 
   6:ALMY.c        **** Comments: 
   7:ALMY.c        **** 
   8:ALMY.c        **** Author  : Varuzhan Danielyan              
   9:ALMY.c        **** 
  10:ALMY.c        **** Chip type        : ADuc7020
  11:ALMY.c        **** ***************************************/
  12:ALMY.c        **** #include "defs.h"
  13:ALMY.c        **** 
  14:ALMY.c        **** //#define _ExcelTest_
  15:ALMY.c        **** #ifdef  _ExcelTest_
  16:ALMY.c        **** #include <stdlib.h>
  17:ALMY.c        **** #endif
  18:ALMY.c        **** 
  19:ALMY.c        **** const WORD Version = 3;
  20:ALMY.c        **** 
  21:ALMY.c        **** int IamSelected;
  22:ALMY.c        **** 
  23:ALMY.c        **** #define InStrLen 24
  24:ALMY.c        **** char InStr[InStrLen + 1];
  25:ALMY.c        **** char *SPtr;
  26:ALMY.c        **** 
  27:ALMY.c        **** static int GetInt(void)
  28:ALMY.c        **** {
  18              	h	{r4, r5, r6, r7, lr}
  19 0000 F0B5     	.LCFI0:
  20              		.loc 1 34 0
  29:ALMY.c        ****   int result;
  30:ALMY.c        ****   BYTE neg;
  31:ALMY.c        ****   
  32:ALMY.c        ****   result = 0;
  33:ALMY.c        ****   neg = 0;
  34:ALMY.c        ****   if (*SPtr == '-') {
  21              	r	r1, .L14
  22 0002 1349     		ldr	r3, [r1]
  23 0004 0B68     		ldrb	r2, [r3]
  24 0006 1A78     		cmp	r2, #45
  25 0008 2D2A     		bne	.L2
  26 000a 03D1     		.loc 1 36 0
  35:ALMY.c        ****     neg = 1;
  36:ALMY.c        ****     SPtr++;
  27              	3, r3, #1
  28 000c 0133     		mov	r5, #1
  29 000e 0125     	.LVL0:
  30              		str	r3, [r1]
  31 0010 0B60     		b	.L4
  32 0012 04E0     	.LVL1:
  33              	.L2:
  34              		.loc 1 38 0
  37:ALMY.c        ****   }
  38:ALMY.c        ****   else if (*SPtr == '+')
  35              	 #43
  36 0014 2B2A     		bne	.L13
  37 0016 01D1     		.loc 1 39 0
  39:ALMY.c        ****     SPtr++;
  38              	d	r3, r3, #1
  39 0018 0133     		str	r3, [r1]
  40 001a 0B60     	.L13:
  41              		mov	r5, #0
  42 001c 0025     	.LVL2:
  43              	.L4:
  44              		.loc 1 40 0
  40:ALMY.c        ****   while (isdigit(*SPtr))
  45              	, .L14+4
  46 001e 0D4B     		ldr	r6, [r3]
  47 0020 1E68     		mov	r0, #0
  48 0022 0020     	.LVL3:
  49              		b	.L7
  50 0024 07E0     	.L8:
  51              		.loc 1 41 0
  41:ALMY.c        ****     result = 10*result + (*SPtr++ - '0');
  52              	, r2
  53 0026 131C     		lsl	r2, r0, #2
  54 0028 8200     		add	r2, r2, r0
  55 002a 1218     		sub	r3, r3, #48
  56 002c 303B     		lsl	r2, r2, #1
  57 002e 5200     		add	r0, r3, r2
  58 0030 9818     		add	r3, r1, #1
  59 0032 4B1C     		str	r3, [r4]
  60 0034 2360     	.L7:
  61              		.loc 1 40 0
  62              		ldr	r4, .L14
  63 0036 064C     		ldr	r1, [r4]
  64 0038 2168     		ldrb	r2, [r1]
  65 003a 0A78     		ldrb	r3, [r6, r2]
  66 003c B35C     		lsl	r7, r3, #29
  67 003e 5F07     		bmi	.L8
  68 0040 F1D4     		.loc 1 42 0
  42:ALMY.c        ****   return neg ? -result : result;
  69              	.L10
  70 0042 002D     		neg	r0, r0
  71 0044 00D0     	.L10:
  72 0046 4042     	.LVL4:
  73              		.loc 1 43 0
  74              		@ sp needed for prologue
  43:ALMY.c        **** }
  75              	
  76              		pop	{r4, r5, r6, r7}
  77              		pop	{r1}
  78 0048 F0BC     		bx	r1
  79 004a 02BC     	.L15:
  80 004c 0847     		.align	2
  81              	.L14:
  82 004e 0000     		.word	SPtr
  83              		.word	__ctype_ptr
  84 0050 00000000 	.LFE2:
  86              		.align	2
  87              		.code 16
  88              		.thumb_func
  90              	GetString:
  91              	.LFB4:
  92              		.loc 1 73 0
  93              		push	{r4, r5, r6, lr}
  44:ALMY.c        **** 
  45:ALMY.c        **** static void GetStringEcho(char *str, BYTE len)
  46:ALMY.c        **** {
  47:ALMY.c        ****   BYTE cpos;
  48:ALMY.c        ****   char ch;
  49:ALMY.c        **** 
  50:ALMY.c        ****   for(cpos = 0; cpos < len;) {
  51:ALMY.c        ****     ch = toupper(getchar());
  52:ALMY.c        ****     switch (ch) {
  53:ALMY.c        ****     case ESC :
  54:ALMY.c        ****       cpos = 0;
  55:ALMY.c        ****     case '\r' :
  56:ALMY.c        ****       goto gsout;
  57:ALMY.c        ****     case '\b' :
  58:ALMY.c        ****       if (cpos > 0)
  59:ALMY.c        ****         cpos--;
  60:ALMY.c        ****       putchar(ch);
  61:ALMY.c        ****     break;
  62:ALMY.c        ****     default :
  63:ALMY.c        ****       str[cpos++] = ch;
  64:ALMY.c        ****       putchar(ch);
  65:ALMY.c        ****     }
  66:ALMY.c        ****   }
  67:ALMY.c        **** gsout:
  68:ALMY.c        ****   str[cpos] = 0;
  69:ALMY.c        ****   rprintf("\n");
  70:ALMY.c        **** }
  71:ALMY.c        **** 
  72:ALMY.c        **** static void GetString(char *str, BYTE len)
  73:ALMY.c        **** {
  94              	oc 1 73 0
  95 0058 70B5     		mov	r5, r0
  96              		mov	r6, r1
  97              		mov	r4, #0
  98              	.LVL7:
  99 005a 051C     		b	.L32
 100 005c 0E1C     	.LVL8:
 101 005e 0024     	.L18:
 102              	.LBB2:
 103 0060 1AE0     		.loc 1 78 0
 104              		bl	getchar
 105              	.LVL9:
 106              		ldr	r3, .L33
  74:ALMY.c        ****   BYTE cpos;
  75:ALMY.c        ****   char ch;
  76:ALMY.c        **** 
  77:ALMY.c        ****   for(cpos = 0; cpos < len;) {
  78:ALMY.c        ****     ch = toupper(getchar());
 107              	
 108 0062 FFF7FEFF 		ldrb	r3, [r3, r0]
 109              	.LVL10:
 110 0066 104B     		lsl	r2, r3, #30
 111 0068 1B68     		bpl	.L19
 112 006a 1B5C     		sub	r0, r0, #32
 113              	.L19:
 114 006c 9A07     	.LBE2:
 115 006e 00D5     		lsl	r3, r0, #24
 116 0070 2038     		lsr	r0, r3, #24
 117              	.LVL11:
 118              		.loc 1 79 0
 119 0072 0306     		cmp	r0, #13
 120 0074 180E     		beq	.L23
 121              		cmp	r0, #27
  79:ALMY.c        ****     switch (ch) {
 122              		r0, #8
 123 0076 0D28     		bne	.L29
 124 0078 10D0     		b	.L22
 125 007a 1B28     	.L24:
 126 007c 02D0     		mov	r4, #0
 127 007e 0828     		b	.L23
 128 0080 06D1     	.L22:
 129 0082 01E0     		.loc 1 85 0
 130              		cmp	r4, #0
 131 0084 0024     		beq	.L32
 132 0086 09E0     		.loc 1 86 0
 133              		sub	r3, r4, #1
  80:ALMY.c        ****     case ESC :
  81:ALMY.c        ****       cpos = 0;
  82:ALMY.c        ****     case '\r' :
  83:ALMY.c        ****       goto gsout;
  84:ALMY.c        ****     case '\b' :
  85:ALMY.c        ****       if (cpos > 0)
 134              	:
 135 0088 002C     		.loc 1 89 0
 136 008a 05D0     		strb	r0, [r5, r4]
  86:ALMY.c        ****         cpos--;
 137              	d	r3, r4, #1
 138 008c 631E     	.L31:
 139 008e 01E0     		lsl	r3, r3, #24
 140              		lsr	r4, r3, #24
  87:ALMY.c        ****     break;
  88:ALMY.c        ****     default :
  89:ALMY.c        ****       str[cpos++] = ch;
 141              	12:
 142 0090 2855     	.L32:
 143 0092 631C     		.loc 1 77 0
 144              		cmp	r4, r6
 145 0094 1B06     		bcc	.L18
 146 0096 1C0E     	.L23:
 147              		.loc 1 93 0
 148              		mov	r3, #0
 149              		strb	r3, [r5, r4]
 150 0098 B442     		.loc 1 94 0
 151 009a E2D3     		@ sp needed for prologue
 152              	.LVL13:
  90:ALMY.c        ****     }
  91:ALMY.c        ****   }
  92:ALMY.c        **** gsout:
  93:ALMY.c        ****   str[cpos] = 0;
 153              	15:
 154 009c 0023     		pop	{r4, r5, r6}
 155 009e 2B55     		pop	{r0}
  94:ALMY.c        **** }
 156              		r0
 157              	.L34:
 158              		.align	2
 159              	.L33:
 160              		.word	__ctype_ptr
 161 00a0 70BC     	.LFE4:
 163 00a4 0047     		.section	.rodata.str1.4,"aMS",%progbits,1
 164              		.align	2
 165 00a6 0000     	.LC8:
 166              		.ascii	"%u %u\012\000"
 167 00a8 00000000 		.align	2
 168              	.LC13:
 169              		.ascii	"\012\000"
 170              		.align	2
 171              	.LC17:
 172              		.ascii	"A%u\012\000"
 173 0000 25752025 		.align	2
 173      750A00
 174 0007 00       	.LC20:
 175              		.ascii	"D%u\012\000"
 176 0008 0A00     		.align	2
 177 000a 0000     	.LC22:
 178              		.ascii	"V%u\012\000"
 179 000c 4125750A 		.align	2
 179      00
 180 0011 000000   	.LC27:
 181              		.ascii	"IDN%u\012\000"
 182 0014 4425750A 		.align	2
 182      00
 183 0019 000000   	.LC29:
 184              		.ascii	"S%u\012\000"
 185 001c 5625750A 		.text
 185      00
 186 0021 000000   		.align	2
 187              		.global	main
 188 0024 49444E25 		.code 16
 188      750A00
 189 002b 00       		.thumb_func
 191 002c 5325750A 	main:
 191      00
 192 0031 000000   	.LFB6:
 193              		.loc 1 117 0
 194              		push	{r4, r5, r6, lr}
 195              	.LCFI2:
 196              	.LBB10:
 197              	.LBB11:
 198              		.loc 1 109 0
 199              		ldr	r2, .L97
  95:ALMY.c        **** 
  96:ALMY.c        **** DWORD Error;
  97:ALMY.c        **** 
  98:ALMY.c        **** DWORD MyAddress;
  99:ALMY.c        **** 
 100:ALMY.c        **** //BYTE ResetSource;
 101:ALMY.c        **** DWORD ErrorCode;
 102:ALMY.c        **** #define BadCommand 1
 103:ALMY.c        **** 
 104:ALMY.c        **** //#define _echo_
 105:ALMY.c        **** //#define _Standalone_
 106:ALMY.c        **** 
 107:ALMY.c        **** static void InitController(void)
 108:ALMY.c        **** {
 109:ALMY.c        ****   GP0DAT = 0xF0000000;		//	Configure P0.4 - P0.7 as output
 110:ALMY.c        ****   GP1DAT = 0xF0000000;		//	Configure P1.4 - P1.7 as output
 111:ALMY.c        ****   GP4DAT = 0x04000000;		// LED output
 112:ALMY.c        ****   GP4DAT |= 0x00040000;		// Switch off LED  
 113:ALMY.c        ****   T1CON = 0x180;
 114:ALMY.c        **** }
 115:ALMY.c        **** 
 116:ALMY.c        **** int main(void)
 117:ALMY.c        **** {
 200              		add	r3, r3, #16
 201 00ac 70B5     		str	r2, [r3]
 202              		.loc 1 111 0
 203              		ldr	r1, .L97+8
 204              		mov	r3, #128
 205              		lsl	r3, r3, #19
 206 00ae 814A     		str	r3, [r1]
 207 00b0 814B     		.loc 1 112 0
 208 00b2 1A60     		mov	r3, #128
 209              		ldr	r2, [r1]
 210 00b4 1033     		lsl	r3, r3, #11
 211 00b6 1A60     		orr	r2, r2, r3
 212              		str	r2, [r1]
 213 00b8 8049     		.loc 1 113 0
 214 00ba 8023     		mov	r3, #192
 215 00bc DB04     		ldr	r2, .L97+12
 216 00be 0B60     		lsl	r3, r3, #1
 217              		str	r3, [r2]
 218 00c0 8023     	.LBE11:
 219 00c2 0A68     	.LBE10:
 220 00c4 DB02     		.loc 1 125 0
 221 00c6 1A43     		bl	InitADC
 222 00c8 0A60     		.loc 1 126 0
 223              		bl	InitSerial
 224 00ca C023     		.loc 1 128 0
 225 00cc 7C4A     		ldr	r2, .L97+16
 226 00ce 5B00     		mov	r3, #1
 227 00d0 1360     		str	r3, [r2]
 228              		.loc 1 146 0
 229              		ldr	r0, .L97+20
 118:ALMY.c        ****   char ch;
 119:ALMY.c        ****   WORD w;
 120:ALMY.c        ****   BYTE i;
 121:ALMY.c        **** 
 122:ALMY.c        **** //Start:  
 123:ALMY.c        **** 
 124:ALMY.c        ****   InitController();
 125:ALMY.c        ****   InitADC();
 230              	2, .L97+24
 231 00d2 FFF7FEFF 	.LVL16:
 126:ALMY.c        ****   InitSerial();
 232              	93:
 233 00d6 FFF7FEFF 		mov	r3, #0
 127:ALMY.c        **** 
 128:ALMY.c        ****   MyAddress = 1;//ReadEEPROM_WORD(aMyAddress);
 234              	tr	r3, [r2]
 235 00da 7A4A     	.LVL17:
 236 00dc 0123     	.L96:
 237 00de 1360     		.loc 1 167 0
 129:ALMY.c        **** 
 130:ALMY.c        **** #ifdef _ExcelTest_
 131:ALMY.c        ****   while (1) {
 132:ALMY.c        ****     switch (rand() & 3) {
 133:ALMY.c        **** 	case 0:
 134:ALMY.c        **** 	  rprintf("99\r");
 135:ALMY.c        **** 	break;
 136:ALMY.c        **** 	case 1:
 137:ALMY.c        **** 	  rprintf("101\r");
 138:ALMY.c        **** 	break;
 139:ALMY.c        **** 	default:
 140:ALMY.c        **** 	  rprintf("100\r");
 141:ALMY.c        **** 	}
 142:ALMY.c        **** 	delay(2000);
 143:ALMY.c        ****   }
 144:ALMY.c        **** #endif
 145:ALMY.c        **** 
 146:ALMY.c        ****   delay(10000);
 238              		r3, .L97+24
 239 00e0 7948     		ldr	r3, [r3]
 240 00e2 FFF7FEFF 		ldr	r4, .L97+28
 147:ALMY.c        **** 
 148:ALMY.c        **** //  ChDel = ReadEEPROM_WORD(aChDel);
 149:ALMY.c        **** //  Averaging = ReadEEPROM_WORD(aAveraging);
 150:ALMY.c        **** 
 151:ALMY.c        **** //Unselect:
 152:ALMY.c        ****   IamSelected = 0;
 241              	L18:
 242 00e6 794A     		cmp	r3, #0
 243              		bne	.LCB246
 244              		b	.L37	@long jump
 245 00e8 0023     	.LCB246:
 246 00ea 1360     	.LBB12:
 247              		.loc 1 168 0
 248              		bl	getchar
 153:ALMY.c        **** 
 154:ALMY.c        **** #ifdef _Standalone_
 155:ALMY.c        ****   rprintf("Started\n");
 156:ALMY.c        **** #endif
 157:ALMY.c        **** 
 158:ALMY.c        **** #ifdef _echo_
 159:ALMY.c        ****   while (1) {
 160:ALMY.c        ****     ch = getchar();
 161:ALMY.c        ****     putchar(ch);
 162:ALMY.c        ****   }
 163:ALMY.c        **** #endif
 164:ALMY.c        **** 
 165:ALMY.c        ****   while (1) {
 166:ALMY.c        **** //    FeedWatchdog();
 167:ALMY.c        ****     if (IamSelected) {
 249              		ldr	r3, [r4]
 250 00ec 774B     		ldrb	r3, [r3, r0]
 251 00ee 1B68     	.LVL20:
 252 00f0 774C     		lsl	r2, r3, #30
 253              		bpl	.L39
 254 00f2 002B     		sub	r0, r0, #32
 255 00f4 00D1     	.L39:
 256 00f6 94E0     	.LBE12:
 257              		lsl	r3, r0, #24
 258              		lsr	r4, r3, #24
 168:ALMY.c        ****       ch = toupper(getchar());
 259              	loc 1 169 0
 260 00f8 FFF7FEFF 		cmp	r4, #82
 261              		beq	.L43
 262 00fc 2368     		cmp	r4, #82
 263 00fe 1B5C     		bhi	.L46
 264              		cmp	r4, #77
 265 0100 9A07     		bne	.L41
 266 0102 00D5     		b	.L42
 267 0104 2038     	.L46:
 268              		cmp	r4, #83
 269              		bne	.LCB277
 270 0106 0306     		b	.L44	@long jump
 271 0108 1C0E     	.LCB277:
 272              		cmp	r4, #90
 169:ALMY.c        ****       switch (ch) {
 273              	:
 274 010a 522C     		b	.L87
 275 010c 0AD0     	.L43:
 276 010e 522C     		.loc 1 180 0
 277 0110 02D8     		mov	r0, #82
 278 0112 4D2C     	.LVL22:
 279 0114 17D1     		bl	putchar
 280 0116 AEE0     		mov	r4, #0
 281              	.LVL23:
 282 0118 532C     	.L47:
 283 011a 00D1     		.loc 1 182 0
 284 011c AEE0     		ldr	r3, .L97+32
 285              		ldr	r1, [r4, r3]
 286 011e 5A2C     		ldr	r3, .L97+36
 287 0120 11D1     		ldr	r0, .L97+40
 288              		ldr	r2, [r4, r3]
 289 0122 FEE7     		bl	rprintf
 290              		.loc 1 181 0
 170:ALMY.c        ****       case 'S' :
 171:ALMY.c        ****         goto Select;
 172:ALMY.c        ****       case 'M' :
 173:ALMY.c        ****         goto Measure;
 174:ALMY.c        ****       case 'Z' :
 175:ALMY.c        **** //	    IOCLR0 = Bit(21);
 176:ALMY.c        **** 		while(1);
 177:ALMY.c        **** //	    IODIR0 |= Bit(21);
 178:ALMY.c        **** //        goto Start; 
 179:ALMY.c        ****       case 'R' :      
 180:ALMY.c        ****         putchar(ch);
 291              	c 1 182 0
 292 0124 5220     		add	r4, r4, #4
 293              		.loc 1 181 0
 294 0126 FFF7FEFF 		lsl	r3, r3, #1
 295 012a 0024     		cmp	r4, r3
 296              		beq	.L96
 297              		b	.L47
 181:ALMY.c        ****         for (i = 0; i < 64; i++) {
 182:ALMY.c        ****           rprintf("%u %u\n", xs[i], ys[i]);
 298              	
 299 012c 694B     	.L41:
 300 012e E158     		.loc 1 186 0
 301 0130 694B     		mov	r0, r4
 302 0132 6A48     	.LVL25:
 303 0134 E258     		bl	putchar
 304 0136 FFF7FEFF 		mov	r6, #0
 305              	.L48:
 306 013a 8023     	.LBB13:
 307              		.loc 1 51 0
 308 013c 0434     		bl	getchar
 309              	.LBB14:
 310 013e 5B00     	.LBB15:
 311 0140 9C42     		ldr	r3, .L97+28
 312 0142 D3D0     		ldr	r3, [r3]
 313 0144 F2E7     		ldrb	r3, [r3, r0]
 314              	.LVL26:
 315              		lsl	r2, r3, #30
 183:ALMY.c        ****         }       
 184:ALMY.c        ****         continue;
 185:ALMY.c        ****       }
 186:ALMY.c        ****       putchar(ch);
 316              	, r0, #32
 317 0146 201C     	.L49:
 318              	.LBE15:
 319 0148 FFF7FEFF 		lsl	r3, r0, #24
 320 014c 0026     		lsr	r0, r3, #24
 321              	.LVL27:
 322              		.loc 1 52 0
 323              		cmp	r0, #13
 324 014e FFF7FEFF 		beq	.L53
 325              		cmp	r0, #27
 326              		beq	.L54
 327 0152 5F4B     		cmp	r0, #8
 328 0154 1B68     		bne	.L88
 329 0156 1B5C     		b	.L52
 330              	.L54:
 331 0158 9A07     		mov	r6, #0
 332 015a 00D5     		b	.L53
 333 015c 2038     	.L52:
 334              		.loc 1 58 0
 335              		cmp	r6, #0
 336 015e 0306     		beq	.L55
 337 0160 180E     		.loc 1 59 0
 338              		sub	r3, r6, #1
 339              		lsl	r3, r3, #24
 340 0162 0D28     		lsr	r6, r3, #24
 341 0164 16D0     	.L55:
 342 0166 1B28     		.loc 1 60 0
 343 0168 02D0     		mov	r0, #8
 344 016a 0828     		b	.L95
 345 016c 09D1     	.L88:
 346 016e 01E0     		.loc 1 63 0
 347              		ldr	r3, .L97+44
 348 0170 0026     		strb	r0, [r6, r3]
 349 0172 0FE0     		add	r3, r6, #1
 350              		lsl	r3, r3, #24
 351              		lsr	r6, r3, #24
 352 0174 002E     	.L95:
 353 0176 02D0     		.loc 1 64 0
 354              		bl	putchar
 355 0178 731E     		.loc 1 50 0
 356 017a 1B06     		cmp	r6, #23
 357 017c 1E0E     		bls	.L48
 358              	.L53:
 359              		.loc 1 68 0
 360 017e 0820     		ldr	r5, .L97+44
 361 0180 04E0     		mov	r3, #0
 362              		strb	r3, [r6, r5]
 363              		.loc 1 69 0
 364 0182 574B     		ldr	r0, .L97+48
 365 0184 F054     		bl	rprintf
 366 0186 731C     	.LBE14:
 367 0188 1B06     	.LBE13:
 368 018a 1E0E     		.loc 1 188 0
 369              		ldr	r3, .L97+52
 370              		str	r5, [r3]
 371 018c FFF7FEFF 		.loc 1 189 0
 372              		cmp	r4, #76
 373 0190 172E     		beq	.L61
 374 0192 DCD9     		cmp	r4, #76
 375              		bhi	.L64
 376              		cmp	r4, #65
 377 0194 524D     		beq	.L59
 378 0196 0023     		cmp	r4, #68
 379 0198 7355     		bne	.L58
 380              		b	.L60
 381 019a 5248     	.L64:
 382 019c FFF7FEFF 		cmp	r4, #86
 383              		beq	.L62
 384              		cmp	r4, #90
 187:ALMY.c        ****       GetStringEcho(InStr, InStrLen);
 188:ALMY.c        ****       SPtr = InStr;
 385              	r	r0, r0, #16
 386 01a0 514B     	.LVL28:
 387 01a2 1D60     		.loc 1 192 0
 189:ALMY.c        ****       switch (ch) {
 388              	p	r0, #0
 389 01a4 4C2C     		beq	.L65
 390 01a6 2AD0     		ldr	r2, .L97+56
 391 01a8 4C2C     		ldr	r3, [r2]
 392 01aa 04D8     		cmp	r0, r3
 393 01ac 412C     		beq	.L65
 394 01ae 07D0     		.loc 1 193 0
 395 01b0 442C     		str	r0, [r2]
 396 01b2 2FD1     	.L65:
 397 01b4 12E0     		.loc 1 195 0
 398              		ldr	r0, .L97+60
 399 01b6 562C     	.LVL29:
 400 01b8 25D0     		ldr	r3, .L97+56
 401 01ba 5A2C     		b	.L92
 402 01bc 2AD1     	.L60:
 403 01be 21E0     		.loc 1 198 0
 404              		bl	GetInt
 190:ALMY.c        ****       case 'A' :		// Set Averaging value
 191:ALMY.c        ****         w = GetInt();
 405              		lsr	r0, r0, #16
 406 01c0 FFF71EFF 	.LVL30:
 407 01c4 0004     		.loc 1 199 0
 408 01c6 000C     		cmp	r0, #0
 409              		beq	.L68
 192:ALMY.c        ****         if (w && (w != Averaging)) {
 410              	r2, .L97+64
 411 01c8 0028     		ldr	r3, [r2]
 412 01ca 04D0     		cmp	r0, r3
 413 01cc 474A     		beq	.L68
 414 01ce 1368     		.loc 1 200 0
 415 01d0 9842     		str	r0, [r2]
 416 01d2 00D0     	.L68:
 193:ALMY.c        ****           Averaging = w;
 417              	 202 0
 418 01d4 1060     		ldr	r0, .L97+68
 419              	.LVL31:
 194:ALMY.c        ****         }
 195:ALMY.c        ****         rprintf("A%u\n", Averaging);
 420              	r	r3, .L97+64
 421 01d6 4648     	.L92:
 422              		ldr	r1, [r3]
 423 01d8 444B     	.LVL32:
 424 01da 0CE0     	.L94:
 425              		bl	rprintf
 196:ALMY.c        ****       break;
 197:ALMY.c        ****       case 'D' :		// Set Delay value
 198:ALMY.c        ****         w = GetInt();
 426              	:
 427 01dc FFF710FF 		b	.L96
 428 01e0 0004     	.L61:
 429 01e2 000C     		.loc 1 205 0
 430              		bl	DumpXY
 199:ALMY.c        ****         if (w && (w != ChDel)) {
 431              	96
 432 01e4 0028     	.L63:
 433 01e6 04D0     	.L89:
 434 01e8 424A     		b	.L89
 435 01ea 1368     	.L62:
 436 01ec 9842     		.loc 1 214 0
 437 01ee 00D0     		ldrb	r3, [r5]
 200:ALMY.c        ****           ChDel = w;
 438              	, #0
 439 01f0 1060     		beq	.LCB497
 440              		b	.L96	@long jump
 201:ALMY.c        ****         }
 202:ALMY.c        ****         rprintf("D%u\n", ChDel);
 441              	B497:
 442 01f2 4148     		.loc 1 215 0
 443              		ldr	r0, .L97+72
 444 01f4 3F4B     		mov	r1, #3
 445              		b	.L94
 446 01f6 1968     	.L58:
 447              		.loc 1 218 0
 448              		ldr	r2, .L97+76
 449 01f8 FFF7FEFF 		mov	r3, #1
 450              		str	r3, [r2]
 451 01fc 76E7     		.loc 1 219 0
 452              		mov	r0, #63
 203:ALMY.c        ****       break;       
 204:ALMY.c        ****       case 'L' :
 205:ALMY.c        ****         DumpXY();
 453              		b	.L96
 454 01fe FFF7FEFF 	.LVL34:
 455 0202 73E7     	.L37:
 456              	.LBB16:
 457              		.loc 1 223 0
 458 0204 FEE7     		bl	getchar
 459              	.LVL35:
 206:ALMY.c        ****       break;
 207:ALMY.c        ****       case 'Z' :		// Reset microcontroller
 208:ALMY.c        **** //	    IOCLR0 = Bit(21);
 209:ALMY.c        **** //	    IODIR0 |= Bit(21);
 210:ALMY.c        **** //        goto Start;
 211:ALMY.c        ****         while(1);		// WDT to be added !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!  
 212:ALMY.c        ****       case 'V' :		// Read firmware version
 213:ALMY.c        ****         w = Version;
 214:ALMY.c        ****         if (*SPtr == 0)
 460              	, [r4]
 461 0206 2B78     		ldrb	r3, [r3, r0]
 462 0208 002B     	.LVL36:
 463 020a 00D0     		lsl	r2, r3, #30
 464 020c 6EE7     		bpl	.L72
 465              		sub	r0, r0, #32
 215:ALMY.c        ****           rprintf("V%u\n", w);
 466              	.LBE16:
 467 020e 3B48     		.loc 1 224 0
 468 0210 0321     		lsl	r3, r0, #24
 469 0212 F1E7     		lsr	r0, r3, #24
 470              	.LVL37:
 216:ALMY.c        ****       break;
 217:ALMY.c        ****       default :
 218:ALMY.c        ****         ErrorCode = BadCommand;
 471              	r0, #77
 472 0214 3A4A     		beq	.L42
 473 0216 0123     		cmp	r0, #77
 474 0218 1360     		bhi	.L77
 219:ALMY.c        ****         putchar('?');
 475              		r0, #73
 476 021a 3F20     		bne	.L74
 477 021c FFF7FEFF 		b	.L75
 478 0220 64E7     	.L77:
 479              		cmp	r0, #83
 480              		beq	.L44
 481              		cmp	r0, #90
 220:ALMY.c        ****       }
 221:ALMY.c        ****     }
 222:ALMY.c        ****     else {
 223:ALMY.c        ****       ch = toupper(getchar());
 482              	74
 483 0222 FFF7FEFF 		b	.L76
 484              	.L75:
 485 0226 2368     		.loc 1 227 0
 486 0228 1B5C     		ldr	r4, .L97+44
 487              		mov	r1, #24
 488 022a 9A07     		mov	r0, r4
 489 022c 00D5     		bl	GetString
 490 022e 2038     		.loc 1 228 0
 491              		ldr	r1, .L97+52
 492              		.loc 1 229 0
 224:ALMY.c        ****       switch (ch) {
 493              	r4]
 494 0230 0306     		add	r3, r4, #1
 495 0232 180E     		str	r3, [r1]
 496              		cmp	r2, #68
 497 0234 4D28     		beq	.LCB567
 498 0236 1ED0     		b	.L96	@long jump
 499 0238 4D28     	.LCB567:
 500 023a 02D8     		.loc 1 230 0
 501 023c 4928     		ldrb	r2, [r4, #1]
 502 023e 33D1     		add	r3, r4, #2
 503 0240 04E0     		str	r3, [r1]
 504              		cmp	r2, #78
 505 0242 5328     		beq	.LCB573
 506 0244 1AD0     		b	.L96	@long jump
 507 0246 5A28     	.LCB573:
 508 0248 2ED1     		.loc 1 238 0
 509 024a 2CE0     		ldr	r0, .L97+80
 510              		ldr	r3, .L97+16
 225:ALMY.c        ****       // Should be called only when single sensor is connected to the RS485 line!
 226:ALMY.c        ****       case 'I' :
 227:ALMY.c        ****         GetString(InStr, InStrLen);
 511              	42:
 512 024c 244C     		.loc 1 244 0
 513 024e 1821     		bl	ScanXY
 514 0250 201C     	.LVL39:
 515 0252 FFF701FF 		b	.L96
 228:ALMY.c        ****         SPtr = InStr;
 516              	0:
 517 0256 2449     	.L44:
 229:ALMY.c        ****         if (*SPtr++ == 'D') {
 518              	loc 1 248 0
 519 0258 2278     		ldr	r4, .L97+44
 520 025a 631C     	.LVL41:
 521 025c 0B60     		mov	r1, #24
 522 025e 442A     		mov	r0, r4
 523 0260 00D0     	.LVL42:
 524 0262 43E7     		bl	GetString
 525              		.loc 1 249 0
 230:ALMY.c        ****           if (*SPtr++ == 'N') {
 526              	 .L97+52
 527 0264 6278     		str	r4, [r3]
 528 0266 A31C     		.loc 1 250 0
 529 0268 0B60     		bl	GetInt
 530 026a 4E2A     		.loc 1 251 0
 531 026c 00D0     		ldr	r3, .L97+16
 532 026e 3DE7     		.loc 1 250 0
 533              		lsl	r0, r0, #16
 231:ALMY.c        **** //            w = GetInt();
 232:ALMY.c        **** //            if (w) {
 233:ALMY.c        **** //              MyAddress = w;
 234:ALMY.c        **** //			  WriteEEPROM_WORD(aMyAddress, MyAddress);
 235:ALMY.c        **** //            }
 236:ALMY.c        **** //            else
 237:ALMY.c        **** //              MyAddress = ReadEEPROM_WORD(aMyAddress);
 238:ALMY.c        ****             rprintf("IDN%u\n", MyAddress);
 534              	251 0
 535 0270 2448     		ldr	r3, [r3]
 536 0272 144B     		.loc 1 250 0
 537 0274 BFE7     		lsr	r1, r0, #16
 538              	.LVL43:
 539              		ldr	r2, .L97+24
 239:ALMY.c        ****           }
 240:ALMY.c        ****         }
 241:ALMY.c        ****       break;
 242:ALMY.c        ****       case 'M' :
 243:ALMY.c        **** Measure:
 244:ALMY.c        ****         ScanXY();
 540              	1 251 0
 541 0276 FFF7FEFF 		cmp	r1, r3
 542              		beq	.LCB617
 543 027a 37E7     		b	.L93	@long jump
 544              	.LCB617:
 545              		.loc 1 253 0
 245:ALMY.c        ****       break; 
 246:ALMY.c        ****       case 'S' :				// address Select
 247:ALMY.c        **** Select:
 248:ALMY.c        ****         GetString(InStr, InStrLen);
 546              	0, .L97+84
 547 027c 184C     		.loc 1 252 0
 548              		mov	r3, #1
 549 027e 1821     		str	r3, [r2]
 550 0280 201C     		b	.L94
 551              	.LVL44:
 552 0282 FFF7E9FE 	.L76:
 249:ALMY.c        ****         SPtr = InStr;
 553              	b	.L90
 554 0286 184B     	.L74:
 555 0288 1C60     		.loc 1 261 0
 250:ALMY.c        ****         w = GetInt();
 556              	r	r3, .L97+88
 557 028a FFF7B9FE 		ldr	r2, [r3]
 251:ALMY.c        ****         if (w == MyAddress) {
 558              	ov	r1, #1
 559 028e 0D4B     		orr	r2, r2, r1
 560              		str	r2, [r3]
 561 0290 0004     		b	.L96
 562              	.L98:
 563 0292 1B68     		.align	2
 564              	.L97:
 565 0294 010C     		.word	-268435456
 566              		.word	-3040
 567 0296 0D4A     		.word	-2976
 568              		.word	-64728
 569 0298 9942     		.word	MyAddress
 570 029a 00D0     		.word	10000
 571 029c 24E7     		.word	IamSelected
 572              		.word	__ctype_ptr
 252:ALMY.c        ****           IamSelected = 1;
 253:ALMY.c        ****           rprintf("S%u\n", w);            
 573              	d	ys
 574 029e 1A48     		.word	.LC8
 575              		.word	InStr
 576 02a0 0123     		.word	.LC13
 577 02a2 1360     		.word	SPtr
 578 02a4 A8E7     		.word	Averaging
 579              		.word	.LC17
 580              		.word	ChDel
 581              		.word	.LC20
 582 02a6 FEE7     		.word	.LC22
 583              		.word	ErrorCode
 254:ALMY.c        ****         }
 255:ALMY.c        ****         else
 256:ALMY.c        ****           IamSelected = 0;
 257:ALMY.c        ****       break;
 258:ALMY.c        ****       case 'Z' :
 259:ALMY.c        **** 		while(1);
 260:ALMY.c        ****       default :
 261:ALMY.c        ****         Error |= BadCommand; 
 584              	7
 585 02a8 184B     		.word	.LC29
 586 02aa 1A68     		.word	Error
 587 02ac 0121     	.LFE6:
 589 02b0 1A60     		.global	Version
 590 02b2 1BE7     		.section	.rodata
 591              		.align	1
 594 02b4 000000F0 	Version:
 595 02b8 20F4FFFF 		.short	3
 596 02bc 60F4FFFF 		.comm	IRQ,4,4
 597 02c0 2803FFFF 		.comm	SWI,4,4
 598 02c4 00000000 		.comm	FIQ,4,4
 599 02c8 10270000 		.comm	UNDEF,4,4
 600 02cc 00000000 		.comm	PABORT,4,4
 601 02d0 00000000 		.comm	DABORT,4,4
 602 02d4 00000000 		.comm	IamSelected,4,4
 603 02d8 00000000 		.comm	InStr,25,1
 604 02dc 00000000 		.comm	SPtr,4,4
 605 02e0 00000000 		.comm	Error,4,4
 606 02e4 08000000 		.comm	MyAddress,4,4
 607 02e8 00000000 		.comm	ErrorCode,4,4
 608 02ec 00000000 		.section	.debug_frame,"",%progbits
 609 02f0 0C000000 	.Lframe0:
 610 02f4 00000000 		.4byte	.LECIE0-.LSCIE0
 611 02f8 14000000 	.LSCIE0:
 612 02fc 1C000000 		.4byte	0xffffffff
 613 0300 00000000 		.byte	0x1
 614 0304 24000000 		.ascii	"\000"
 615 0308 2C000000 		.uleb128 0x1
 616 030c 00000000 		.sleb128 -4
 617              		.byte	0xe
 618              		.byte	0xc
 619              		.uleb128 0xd
 620              		.uleb128 0x0
 621              		.align	2
 622              	.LECIE0:
 623              	.LSFDE0:
 624              		.4byte	.LEFDE0-.LASFDE0
 625 0000 0300     	.LASFDE0:
 626              		.4byte	.Lframe0
 627              		.4byte	.LFB2
 628              		.4byte	.LFE2-.LFB2
 629              		.byte	0x4
 630              		.4byte	.LCFI0-.LFB2
 631              		.byte	0xe
 632              		.uleb128 0x14
 633              		.byte	0x84
 634              		.uleb128 0x5
 635              		.byte	0x85
 636              		.uleb128 0x4
 637              		.byte	0x86
 716              		.byte	0x55
DEFINED SYMBOLS
                            *ABS*:00000000 ALMY.c
C:\Users\danielya\LOCALS~1\Temp/ccTDzYDu.s:1      .text:00000000 $t
C:\Users\danielya\LOCALS~1\Temp/ccTDzYDu.s:15     .text:00000000 GetInt
C:\Users\danielya\LOCALS~1\Temp/ccTDzYDu.s:84     .text:00000050 $d
                            *COM*:00000004 SPtr
C:\Users\danielya\LOCALS~1\Temp/ccTDzYDu.s:89     .text:00000058 $t
C:\Users\danielya\LOCALS~1\Temp/ccTDzYDu.s:92     .text:00000058 GetString
C:\Users\danielya\LOCALS~1\Temp/ccTDzYDu.s:167    .text:000000a8 $d
C:\Users\danielya\LOCALS~1\Temp/ccTDzYDu.s:198    .text:000000ac main
C:\Users\danielya\LOCALS~1\Temp/ccTDzYDu.s:195    .text:000000ac $t
C:\Users\danielya\LOCALS~1\Temp/ccTDzYDu.s:594    .text:000002b4 $d
                            *COM*:00000004 MyAddress
                            *COM*:00000004 IamSelected
                            *COM*:00000019 InStr
                            *COM*:00000004 ErrorCode
                            *COM*:00000004 Error
C:\Users\danielya\LOCALS~1\Temp/ccTDzYDu.s:624    .rodata:00000000 Version
                            *COM*:00000004 IRQ
                            *COM*:00000004 SWI
                            *COM*:00000004 FIQ
                            *COM*:00000004 UNDEF
                            *COM*:00000004 PABORT
                            *COM*:00000004 DABORT

UNDEFINED SYMBOLS
__ctype_ptr
getchar
InitADC
InitSerial
delay
putchar
rprintf
DumpXY
ScanXY
xs
ys
Averaging
ChDel
