Zilog Z8 Encore! Macro Assembler Version 2.50 (08031703) 15-Aug-09 17:02:34 page: 1 PC Object I Line Source A 1 ; Zilog Z8 Encore! ANSI C Compiler Release 3.60 A 2 ; -nolocalcse -optsize -nofastcall -const=RAM -model=L A 3 ; -nooptlink -regvar -reduceopt -debug -norevaa -peephole A 4 ; -alias A 5 DEFINE mazer_TEXT,SPACE=ROM A 6 FILE "..\MAZER.C" A 7 .debug "C" A 8 SEGMENT FAR_BSS 000000 A 9 _a: 000000 A 10 DS 2*1 A 11 .define "a" A 12 .alias "_a" A 13 .class 83 A 14 .value _a A 15 .type 3 A 16 .type 0 A 17 .endef 000002 A 18 _b: 000002 A 19 DS 2*1 A 20 .define "b" A 21 .alias "_b" A 22 .class 83 A 23 .value _b A 24 .type 3 A 25 .type 0 A 26 .endef 000004 A 27 _d: 000004 A 28 DS 2*1 A 29 .define "d" A 30 .alias "_d" A 31 .class 83 A 32 .value _d A 33 .type 3 A 34 .type 0 A 35 .endef A 36 SEGMENT ROM_DATA A 37 A 38 A 39 ;**************************** _main *************************** A 40 ;Name Addr/Register Size Type A 41 ;_rotateL IMPORT ----- function A 42 ;_forward IMPORT ----- function A 43 ;_rotateR IMPORT ----- function A 44 ;_reverse IMPORT ----- function A 45 ;_b STATIC 1 variable A 46 ;_a STATIC 1 variable A 47 ;input RR0 1 variable A 48 A 49 A 50 ; Aggregate Stack Size: 0 (words) A 51 A 52 Zilog Z8 Encore! Macro Assembler Version 2.50 (08031703) 15-Aug-09 17:02:34 page: 2 PC Object I Line Source mazer.src A 53 .FRAME _n_main,?_n_main,RDATA A 54 .FCALL _n_reverse A 55 .FCALL _n_rotateR A 56 .FCALL _n_forward A 57 .FCALL _n_rotateL A 58 .FRAME _f_main,?_f_main,EDATA A 59 .FCALL _f_reverse A 60 .FCALL _f_rotateR A 61 .FCALL _f_forward A 62 .FCALL _f_rotateL A 63 SEGMENT mazer_TEXT 000000 A 64 _main: A 65 .define "_main" A 66 .value _main A 67 .class 2 A 68 .type 65 A 69 .type 0 A 70 .endef A 71 .begfunc "main",13,"_main" A 72 ; 1 A 73 ; 2 A 74 ; 3 void forward(int ontime1, int offtime1); A 75 ; 4 void reverse(int ontime1, int offtime1); A 76 ; 5 void left(int ontime1, int offtime1); A 77 ; 6 void rotateL(int ontime1, int offtime1); A 78 ; 7 void right(int ontime1, int offtime1); A 79 ; 8 void rotateR(int ontime1, int offtime1); A 80 ; 9 A 81 ; 10 int a, b, d; A 82 ; 11 A 83 ; 12 void main() A 84 ; 13 { A 85 .define "input" A 86 .class 4 A 87 .reg 17 A 88 .type 3 A 89 .type 0 A 90 .endef 000000 D6 0000 A 91 CALL __b_frameset00 A 92 ; 14 int input; A 93 ; 15 a=0; A 94 .line 15 000003 E9000000 A 95 LDX _a,#-0 000007 E9000001 A 96 LDX _a+1,#-0 A 97 ; 16 A 98 ; 17 // PAADDR=0x01; A 99 ; 18 PADD=0xff; //Port A all input A 100 .line 18 00000B E9010FD0 A 101 LDX 4048,#1 00000F E9FF0FD1 A 102 LDX 4049,#255 A 103 ; 19 // PBADDR=0x01; A 104 ; 20 PBDD=0x00; //Port B all output Zilog Z8 Encore! Macro Assembler Version 2.50 (08031703) 15-Aug-09 17:02:34 page: 3 PC Object I Line Source mazer.src A 105 .line 20 000013 E9010FD4 A 106 LDX 4052,#1 000017 E9000FD5 A 107 LDX 4053,#-0 A 108 ; 21 // PCADDR=0x01; A 109 ; 22 PCDD=0xff; //Port C all input A 110 .line 22 00001B E9010FD8 A 111 LDX 4056,#1 00001F E9FF0FD9 A 112 LDX 4057,#255 A 113 ; 23 A 114 ; 24 input=PAIN; A 115 .line 24 000023 841FD2 A 116 LDX R1,4050 A 117 ; 25 input=input&0x70; A 118 .line 25 000026 56E170 A 119 AND R1,#112 000029 B0E0 A 120 CLR R0 A 121 ; 26 A 122 ; 27 /* PB truth table: hex value: A 123 ; 28 0000 = stop 0x00 A 124 ; 29 0010 = left 0x02 A 125 ; 30 1111 = reverse 0x0f A 126 ; 31 1110 = rotateL 0x0e A 127 ; 32 1000 = right 0x08 A 128 ; 33 1011 = rotateR 0x0b A 129 ; 34 1010 = forward 0x0a A 130 ; 35 A 131 ; 36 Sensor truth table: hex value: A 132 ; 37 000 = reverse 0x00 A 133 ; 38 001 = rotateR 0x01 A 134 ; 39 010 = forward 0x02 A 135 ; 40 011 = right 0x03 A 136 ; 41 100 = rotateL 0x04 A 137 ; 42 101 = 0x05 A 138 ; 43 110 = left 0x06 A 139 ; 44 111 = forward 0x07 A 140 ; 45 */ A 141 ; 46 while(1) 00002B A 142 _1_L_35: A 143 .line 46 A 144 ; 47 { A 145 ; 48 while(input==0x00) 00002B A 146 _1_L_6: A 147 .line 48 00002B E4E0E2 A 148 LD R2,R0 00002E 4221 A 149 OR R2,R1 000030 6B 0F A 150 JR Z,_1_L_1 000032 8B 42 A 151 JR _1_L_8 A 152 ; 49 { A 153 ; 50 for(b=0;b<10;b++){ 000034 A 154 _1_L_2: A 155 .line 50 000034 A90A0003 A 156 CPX _b+1,#10 Zilog Z8 Encore! Macro Assembler Version 2.50 (08031703) 15-Aug-09 17:02:34 page: 4 PC Object I Line Source mazer.src 000038 1FA90000 02 A 157 CPCX _b,#0 00003D 1B 0C A 158 JR LT,_1_L_4 00003F 8B 2B A 159 JR _1_L_5 000041 A 160 _1_L_1: 000041 E9000002 A 161 LDX _b,#-0 000045 E9000003 A 162 LDX _b+1,#-0 000049 8B E9 A 163 JR _1_L_2 00004B A 164 _1_L_4: A 165 ; 51 reverse(400,800);} A 166 .line 51 00004B 1F7020 A 167 PUSH #32 00004E 1F7003 A 168 PUSH #3 000051 1F7090 A 169 PUSH #144 000054 1F7001 A 170 PUSH #1 000057 D6 0209 A 171 CALL _reverse 00005A 50E0 A 172 POP R0 00005C 50E0 A 173 POP R0 00005E 50E0 A 174 POP R0 000060 50E0 A 175 POP R0 A 176 .line 50 000062 09010003 A 177 ADDX _b+1,#1 000066 19000002 A 178 ADCX _b,#-0 A 179 .line 51 00006A 8B C8 A 180 JR _1_L_2 00006C A 181 _1_L_5: A 182 ; 52 input=PAIN; A 183 .line 52 00006C 841FD2 A 184 LDX R1,4050 A 185 ; 53 input=input&0x70; A 186 .line 53 00006F 56E170 A 187 AND R1,#112 000072 B0E0 A 188 CLR R0 A 189 ; 54 } A 190 .line 54 000074 8B B5 A 191 JR _1_L_6 A 192 ; 55 while(input==0x10) 000076 A 193 _1_L_8: A 194 .line 55 000076 A6E110 A 195 CP R1,#16 000079 1FA6E000 A 196 CPC R0,#-0 00007D EB 29 A 197 JR NE,_1_L_11 A 198 ; 56 { A 199 ; 57 rotateR(700,500); A 200 .line 57 00007F 1F70F4 A 201 PUSH #244 000082 1F7001 A 202 PUSH #1 000085 1F70BC A 203 PUSH #188 000088 1F7002 A 204 PUSH #2 00008B D6 038D A 205 CALL _rotateR 00008E 50E0 A 206 POP R0 000090 50E0 A 207 POP R0 000092 50E0 A 208 POP R0 Zilog Z8 Encore! Macro Assembler Version 2.50 (08031703) 15-Aug-09 17:02:34 page: 5 PC Object I Line Source mazer.src 000094 50E0 A 209 POP R0 A 210 ; 58 a=1; A 211 .line 58 000096 E9000000 A 212 LDX _a,#-0 00009A E9010001 A 213 LDX _a+1,#1 A 214 ; 59 input=PAIN; A 215 .line 59 00009E 841FD2 A 216 LDX R1,4050 A 217 ; 60 input=input&0x70; A 218 .line 60 0000A1 56E170 A 219 AND R1,#112 0000A4 B0E0 A 220 CLR R0 A 221 ; 61 } A 222 .line 61 0000A6 8B CE A 223 JR _1_L_8 A 224 ; 62 while(input==0x20) 0000A8 A 225 _1_L_11: A 226 .line 62 0000A8 A6E120 A 227 CP R1,#32 0000AB 1FA6E000 A 228 CPC R0,#-0 0000AF EB 21 A 229 JR NE,_1_L_14 A 230 ; 63 { A 231 ; 64 forward(250,950); A 232 .line 64 0000B1 1F70B6 A 233 PUSH #182 0000B4 1F7003 A 234 PUSH #3 0000B7 1F70FA A 235 PUSH #250 0000BA 1F7000 A 236 PUSH #0 0000BD D6 03EE A 237 CALL _forward 0000C0 50E0 A 238 POP R0 0000C2 50E0 A 239 POP R0 0000C4 50E0 A 240 POP R0 0000C6 50E0 A 241 POP R0 A 242 ; 65 input=PAIN; A 243 .line 65 0000C8 841FD2 A 244 LDX R1,4050 A 245 ; 66 input=input&0x70; A 246 .line 66 0000CB 56E170 A 247 AND R1,#112 0000CE B0E0 A 248 CLR R0 A 249 ; 67 } A 250 .line 67 0000D0 8B D6 A 251 JR _1_L_11 A 252 ; 68 while(input==0x30) 0000D2 A 253 _1_L_14: A 254 .line 68 0000D2 A6E130 A 255 CP R1,#48 0000D5 1FA6E000 A 256 CPC R0,#-0 0000D9 EB 29 A 257 JR NE,_1_L_17 A 258 ; 69 { A 259 ; 70 rotateR(600,600); A 260 .line 70 Zilog Z8 Encore! Macro Assembler Version 2.50 (08031703) 15-Aug-09 17:02:34 page: 6 PC Object I Line Source mazer.src 0000DB 1F7058 A 261 PUSH #88 0000DE 1F7002 A 262 PUSH #2 0000E1 1F7058 A 263 PUSH #88 0000E4 1F7002 A 264 PUSH #2 0000E7 D6 038D A 265 CALL _rotateR 0000EA 50E0 A 266 POP R0 0000EC 50E0 A 267 POP R0 0000EE 50E0 A 268 POP R0 0000F0 50E0 A 269 POP R0 A 270 ; 71 a=1; A 271 .line 71 0000F2 E9000000 A 272 LDX _a,#-0 0000F6 E9010001 A 273 LDX _a+1,#1 A 274 ; 72 input=PAIN; A 275 .line 72 0000FA 841FD2 A 276 LDX R1,4050 A 277 ; 73 input=input&0x70; A 278 .line 73 0000FD 56E170 A 279 AND R1,#112 000100 B0E0 A 280 CLR R0 A 281 ; 74 } A 282 .line 74 000102 8B CE A 283 JR _1_L_14 A 284 ; 75 while(input==0x40) 000104 A 285 _1_L_17: A 286 .line 75 000104 A6E140 A 287 CP R1,#64 000107 1FA6E000 A 288 CPC R0,#-0 00010B EB 29 A 289 JR NE,_1_L_21 A 290 ; 76 { A 291 ; 77 rotateL(700,500); A 292 .line 77 00010D 1F70F4 A 293 PUSH #244 000110 1F7001 A 294 PUSH #1 000113 1F70BC A 295 PUSH #188 000116 1F7002 A 296 PUSH #2 000119 D6 02CB A 297 CALL _rotateL 00011C 50E0 A 298 POP R0 00011E 50E0 A 299 POP R0 000120 50E0 A 300 POP R0 000122 50E0 A 301 POP R0 A 302 ; 78 a=0; A 303 .line 78 000124 E9000000 A 304 LDX _a,#-0 000128 E9000001 A 305 LDX _a+1,#-0 A 306 ; 79 input=PAIN; A 307 .line 79 00012C 841FD2 A 308 LDX R1,4050 A 309 ; 80 input=input&0x70; A 310 .line 80 00012F 56E170 A 311 AND R1,#112 000132 B0E0 A 312 CLR R0 Zilog Z8 Encore! Macro Assembler Version 2.50 (08031703) 15-Aug-09 17:02:34 page: 7 PC Object I Line Source mazer.src A 313 ; 81 } A 314 .line 81 000134 8B CE A 315 JR _1_L_17 A 316 ; 82 while(input==0x50 && a==1) 000136 A 317 _1_L_21: A 318 .line 82 000136 A6E150 A 319 CP R1,#80 000139 1FA6E000 A 320 CPC R0,#-0 00013D EB 2C A 321 JR NE,_1_L_25 00013F A9010001 A 322 CPX _a+1,#1 000143 1FA90000 00 A 323 CPCX _a,#0 000148 EB 21 A 324 JR NE,_1_L_25 A 325 ; 83 { A 326 ; 84 rotateR(700,500); A 327 .line 84 00014A 1F70F4 A 328 PUSH #244 00014D 1F7001 A 329 PUSH #1 000150 1F70BC A 330 PUSH #188 000153 1F7002 A 331 PUSH #2 000156 D6 038D A 332 CALL _rotateR 000159 50E0 A 333 POP R0 00015B 50E0 A 334 POP R0 00015D 50E0 A 335 POP R0 00015F 50E0 A 336 POP R0 A 337 ; 85 input=PAIN; A 338 .line 85 000161 841FD2 A 339 LDX R1,4050 A 340 ; 86 input=input&0x70; A 341 .line 86 000164 56E170 A 342 AND R1,#112 000167 B0E0 A 343 CLR R0 A 344 ; 87 } A 345 .line 87 000169 8B CB A 346 JR _1_L_21 A 347 ; 88 while(input==0x50 && a==0) 00016B A 348 _1_L_25: A 349 .line 88 00016B A6E150 A 350 CP R1,#80 00016E 1FA6E000 A 351 CPC R0,#-0 000172 EB 2A A 352 JR NE,_1_L_28 000174 842000 A 353 LDX R2,_a 000177 48 001EE2 A 354 ORX R2,_a+1 00017B EB 21 A 355 JR NE,_1_L_28 A 356 ; 89 { A 357 ; 90 rotateL(700,500); A 358 .line 90 00017D 1F70F4 A 359 PUSH #244 000180 1F7001 A 360 PUSH #1 000183 1F70BC A 361 PUSH #188 000186 1F7002 A 362 PUSH #2 000189 D6 02CB A 363 CALL _rotateL 00018C 50E0 A 364 POP R0 Zilog Z8 Encore! Macro Assembler Version 2.50 (08031703) 15-Aug-09 17:02:34 page: 8 PC Object I Line Source mazer.src 00018E 50E0 A 365 POP R0 000190 50E0 A 366 POP R0 000192 50E0 A 367 POP R0 A 368 ; 91 input=PAIN; A 369 .line 91 000194 841FD2 A 370 LDX R1,4050 A 371 ; 92 input=input&0x70; A 372 .line 92 000197 56E170 A 373 AND R1,#112 00019A B0E0 A 374 CLR R0 A 375 ; 93 } A 376 .line 93 00019C 8B CD A 377 JR _1_L_25 A 378 ; 94 while(input==0x60) 00019E A 379 _1_L_28: A 380 .line 94 00019E A6E160 A 381 CP R1,#96 0001A1 1FA6E000 A 382 CPC R0,#-0 0001A5 EB 29 A 383 JR NE,_1_L_31 A 384 ; 95 { A 385 ; 96 rotateL(600,600); A 386 .line 96 0001A7 1F7058 A 387 PUSH #88 0001AA 1F7002 A 388 PUSH #2 0001AD 1F7058 A 389 PUSH #88 0001B0 1F7002 A 390 PUSH #2 0001B3 D6 02CB A 391 CALL _rotateL 0001B6 50E0 A 392 POP R0 0001B8 50E0 A 393 POP R0 0001BA 50E0 A 394 POP R0 0001BC 50E0 A 395 POP R0 A 396 ; 97 a=0; A 397 .line 97 0001BE E9000000 A 398 LDX _a,#-0 0001C2 E9000001 A 399 LDX _a+1,#-0 A 400 ; 98 input=PAIN; A 401 .line 98 0001C6 841FD2 A 402 LDX R1,4050 A 403 ; 99 input=input&0x70; A 404 .line 99 0001C9 56E170 A 405 AND R1,#112 0001CC B0E0 A 406 CLR R0 A 407 ; 100 } A 408 .line 100 0001CE 8B CE A 409 JR _1_L_28 A 410 ; 101 while(input==0x70) 0001D0 A 411 _1_L_31: A 412 .line 101 0001D0 A6E170 A 413 CP R1,#112 0001D3 1FA6E000 A 414 CPC R0,#-0 0001D7 EB 21 A 415 JR NE,_1_L_34 A 416 ; 102 { Zilog Z8 Encore! Macro Assembler Version 2.50 (08031703) 15-Aug-09 17:02:34 page: 9 PC Object I Line Source mazer.src A 417 ; 103 forward(250,950); A 418 .line 103 0001D9 1F70B6 A 419 PUSH #182 0001DC 1F7003 A 420 PUSH #3 0001DF 1F70FA A 421 PUSH #250 0001E2 1F7000 A 422 PUSH #0 0001E5 D6 03EE A 423 CALL _forward 0001E8 50E0 A 424 POP R0 0001EA 50E0 A 425 POP R0 0001EC 50E0 A 426 POP R0 0001EE 50E0 A 427 POP R0 A 428 ; 104 input=PAIN; A 429 .line 104 0001F0 841FD2 A 430 LDX R1,4050 A 431 ; 105 input=input&0x70; A 432 .line 105 0001F3 56E170 A 433 AND R1,#112 0001F6 B0E0 A 434 CLR R0 A 435 ; 106 } A 436 .line 106 0001F8 8B D6 A 437 JR _1_L_31 0001FA A 438 _1_L_34: A 439 ; 107 input=PAIN; A 440 .line 107 0001FA 841FD2 A 441 LDX R1,4050 A 442 ; 108 input=input&0x70; A 443 .line 108 0001FD 56E170 A 444 AND R1,#112 000200 B0E0 A 445 CLR R0 A 446 ; 109 } A 447 .line 109 000202 8D 00 2B A 448 JR _1_L_35 A 449 ; 110 } A 450 .line 110 000205 D6 0000 A 451 CALL __b_framereset 000208 AF A 452 RET A 453 .endfunc "main",110,"_main" A 454 SEGMENT ROM_DATA A 455 A 456 A 457 ;**************************** _reverse *************************** A 458 ;Name Addr/Register Size Type A 459 ;_d STATIC 1 variable A 460 ;offtime1 R15+6 1 parameter A 461 ;ontime1 R15+4 1 parameter A 462 A 463 A 464 ; Aggregate Stack Size: 0 (words) A 465 A 466 A 467 .FRAME _n_reverse,?_n_reverse,RDATA A 468 .FRAME _f_reverse,?_f_reverse,EDATA Zilog Z8 Encore! Macro Assembler Version 2.50 (08031703) 15-Aug-09 17:02:34 page: 10 PC Object I Line Source mazer.src A 469 SEGMENT mazer_TEXT 000209 A 470 _reverse: A 471 .define "_reverse" A 472 .value _reverse A 473 .class 2 A 474 .type 65 A 475 .type 0 A 476 .endef A 477 .begfunc "reverse",113,"_reverse" A 478 .define "ontime1" A 479 .class 9 A 480 .value 4 A 481 .type 3 A 482 .type 0 A 483 .endef A 484 .define "offtime1" A 485 .class 9 A 486 .value 6 A 487 .type 3 A 488 .type 0 A 489 .endef 000209 D6 0000 A 490 CALL __b_frameset00 A 491 ; 111 A 492 ; 112 void reverse(int ontime1, int offtime1) A 493 ; 113 { A 494 ; 114 PBOUT=0x0f; // reverse A 495 .line 114 00020C E90F0FD7 A 496 LDX 4055,#15 000210 8B 13 A 497 JR _2_L_39 A 498 ; 115 for(d=0;d