Blame | Last modification | View Log | RSS feed
1 ;--------------------------------------------------------
2 ; File Created by SDCC : FreeWare ANSI-C Compiler
3 ; Version 2.4.4 #831 (Sep 8 2004)
4 ; This file generated Sat Sep 18 08:25:04 2004
5 ;--------------------------------------------------------
6 .module rt_task
7 .optsdcc -mmcs51 --model-large
8
9 ;--------------------------------------------------------
10 ; Public variables in this module
11 ;--------------------------------------------------------
12 .globl _priotab
13 .globl _TF1
14 .globl _TR1
15 .globl _TF0
16 .globl _TR0
17 .globl _IE1
18 .globl _IT1
19 .globl _IE0
20 .globl _IT0
21 .globl _T2CON_7
22 .globl _T2CON_6
23 .globl _T2CON_5
24 .globl _T2CON_4
25 .globl _T2CON_3
26 .globl _T2CON_2
27 .globl _T2CON_1
28 .globl _T2CON_0
29 .globl _TF2
30 .globl _EXF2
31 .globl _RCLK
32 .globl _TCLK
33 .globl _EXEN2
34 .globl _TR2
35 .globl _C_T2
36 .globl _CP_RL2
37 .globl _SM0
38 .globl _SM1
39 .globl _SM2
40 .globl _REN
41 .globl _TB8
42 .globl _RB8
43 .globl _TI
44 .globl _RI
45 .globl _CY
46 .globl _AC
47 .globl _F0
48 .globl _RS1
49 .globl _RS0
50 .globl _OV
51 .globl _F1
52 .globl _P
53 .globl _P5_7
54 .globl _P5_6
55 .globl _P5_5
56 .globl _P5_4
57 .globl _P5_3
58 .globl _P5_2
59 .globl _P5_1
60 .globl _P5_0
61 .globl _P4_7
62 .globl _P4_6
63 .globl _P4_5
64 .globl _P4_4
65 .globl _P4_3
66 .globl _P4_2
67 .globl _P4_1
68 .globl _P4_0
69 .globl _RD
70 .globl _WR
71 .globl _T1
72 .globl _T0
73 .globl _INT1
74 .globl _INT0
75 .globl _TXD0
76 .globl _TXD
77 .globl _RXD0
78 .globl _RXD
79 .globl _P3_7
80 .globl _P3_6
81 .globl _P3_5
82 .globl _P3_4
83 .globl _P3_3
84 .globl _P3_2
85 .globl _P3_1
86 .globl _P3_0
87 .globl _P2_7
88 .globl _P2_6
89 .globl _P2_5
90 .globl _P2_4
91 .globl _P2_3
92 .globl _P2_2
93 .globl _P2_1
94 .globl _P2_0
95 .globl _P1_7
96 .globl _P1_6
97 .globl _P1_5
98 .globl _P1_4
99 .globl _P1_3
100 .globl _P1_2
101 .globl _P1_1
102 .globl _P1_0
103 .globl _P0_7
104 .globl _P0_6
105 .globl _P0_5
106 .globl _P0_4
107 .globl _P0_3
108 .globl _P0_2
109 .globl _P0_1
110 .globl _P0_0
111 .globl _PPC
112 .globl _PT2
113 .globl _PS
114 .globl _PT1
115 .globl _PX1
116 .globl _PT0
117 .globl _PX0
118 .globl _EA
119 .globl _EC
120 .globl _ET2
121 .globl _ES
122 .globl _ET1
123 .globl _EX1
124 .globl _ET0
125 .globl _EX0
126 .globl _CF
127 .globl _CR
128 .globl _CCF4
129 .globl _CCF3
130 .globl _CCF2
131 .globl _CCF1
132 .globl _CCF0
133 .globl _BREG_F7
134 .globl _BREG_F6
135 .globl _BREG_F5
136 .globl _BREG_F4
137 .globl _BREG_F3
138 .globl _BREG_F2
139 .globl _BREG_F1
140 .globl _BREG_F0
141 .globl _WDTRST
142 .globl _WDTPRG
143 .globl _TMOD
144 .globl _TL2
145 .globl _TL1
146 .globl _TL0
147 .globl _TH2
148 .globl _TH1
149 .globl _TH0
150 .globl _TCON
151 .globl _T2CON
152 .globl _SP
153 .globl _SCON
154 .globl _SBUF0
155 .globl _SBUF
156 .globl _SADEN0
157 .globl _RCAP2L
158 .globl _RCAP2H
159 .globl _PSW
160 .globl _PCON
161 .globl _P5
162 .globl _P4
163 .globl _P3
164 .globl _P2
165 .globl _P1
166 .globl _P0
167 .globl _IPH
168 .globl _IP
169 .globl _IE
170 .globl _FCON
171 .globl _EETIM
172 .globl _EECON
173 .globl _DP0L
174 .globl _DPL
175 .globl _DP0H
176 .globl _DPH
177 .globl _CMOD
178 .globl _CL
179 .globl _CKCON
180 .globl _CH
181 .globl _CCON
182 .globl _CCAPM4
183 .globl _CCAPM3
184 .globl _CCAPM2
185 .globl _CCAPM1
186 .globl _CCAPM0
187 .globl _CCAP4L
188 .globl _CCAP3L
189 .globl _CCAP2L
190 .globl _CCAP1L
191 .globl _CCAP0L
192 .globl _CCAP4H
193 .globl _CCAP3H
194 .globl _CCAP2H
195 .globl _CCAP1H
196 .globl _CCAP0H
197 .globl _AUXR1
198 .globl _B
199 .globl _AUXR
200 .globl _ACC
201 .globl _signal_PARM_2
202 .globl _wait_timed_PARM_2
203 .globl _start_task_PARM_2
204 .globl _T10sec
205 .globl _T100ms
206 .globl _T0ctr
207 .globl _reschedule_ea
208 .globl _T0_interrupt_ea
209 .globl _start_stack
210 .globl _task_timer
211 .globl _task_masks
212 .globl _task_signals
213 .globl _stack_save
214 .globl _stack2
215 .globl _stack1
216 .globl _stack0
217 .globl _run
218 .globl _ready
219 .globl _rt_tasks_init
220 .globl _T0Interrupt
221 .globl _reschedule
222 .globl _start_task
223 .globl _end_run_task
224 .globl _wait_timed
225 .globl _sleep
226 .globl _clear_signal
227 .globl _signal
228 .globl _rt_system_init
229 ;--------------------------------------------------------
230 ; special function registers
231 ;--------------------------------------------------------
232 .area RSEG (DATA)
00E0 233 G$ACC$0$0 == 0x00e0
00E0 234 _ACC = 0x00e0
008E 235 G$AUXR$0$0 == 0x008e
008E 236 _AUXR = 0x008e
00F0 237 G$B$0$0 == 0x00f0
00F0 238 _B = 0x00f0
00A2 239 G$AUXR1$0$0 == 0x00a2
00A2 240 _AUXR1 = 0x00a2
00FA 241 G$CCAP0H$0$0 == 0x00fa
00FA 242 _CCAP0H = 0x00fa
00FB 243 G$CCAP1H$0$0 == 0x00fb
00FB 244 _CCAP1H = 0x00fb
00FC 245 G$CCAP2H$0$0 == 0x00fc
00FC 246 _CCAP2H = 0x00fc
00FD 247 G$CCAP3H$0$0 == 0x00fd
00FD 248 _CCAP3H = 0x00fd
00FE 249 G$CCAP4H$0$0 == 0x00fe
00FE 250 _CCAP4H = 0x00fe
00EA 251 G$CCAP0L$0$0 == 0x00ea
00EA 252 _CCAP0L = 0x00ea
00EB 253 G$CCAP1L$0$0 == 0x00eb
00EB 254 _CCAP1L = 0x00eb
00EC 255 G$CCAP2L$0$0 == 0x00ec
00EC 256 _CCAP2L = 0x00ec
00ED 257 G$CCAP3L$0$0 == 0x00ed
00ED 258 _CCAP3L = 0x00ed
00EE 259 G$CCAP4L$0$0 == 0x00ee
00EE 260 _CCAP4L = 0x00ee
00DA 261 G$CCAPM0$0$0 == 0x00da
00DA 262 _CCAPM0 = 0x00da
00DB 263 G$CCAPM1$0$0 == 0x00db
00DB 264 _CCAPM1 = 0x00db
00DC 265 G$CCAPM2$0$0 == 0x00dc
00DC 266 _CCAPM2 = 0x00dc
00DD 267 G$CCAPM3$0$0 == 0x00dd
00DD 268 _CCAPM3 = 0x00dd
00DE 269 G$CCAPM4$0$0 == 0x00de
00DE 270 _CCAPM4 = 0x00de
00D8 271 G$CCON$0$0 == 0x00d8
00D8 272 _CCON = 0x00d8
00F9 273 G$CH$0$0 == 0x00f9
00F9 274 _CH = 0x00f9
008F 275 G$CKCON$0$0 == 0x008f
008F 276 _CKCON = 0x008f
00E9 277 G$CL$0$0 == 0x00e9
00E9 278 _CL = 0x00e9
00D9 279 G$CMOD$0$0 == 0x00d9
00D9 280 _CMOD = 0x00d9
0083 281 G$DPH$0$0 == 0x0083
0083 282 _DPH = 0x0083
0083 283 G$DP0H$0$0 == 0x0083
0083 284 _DP0H = 0x0083
0082 285 G$DPL$0$0 == 0x0082
0082 286 _DPL = 0x0082
0082 287 G$DP0L$0$0 == 0x0082
0082 288 _DP0L = 0x0082
00D2 289 G$EECON$0$0 == 0x00d2
00D2 290 _EECON = 0x00d2
00D3 291 G$EETIM$0$0 == 0x00d3
00D3 292 _EETIM = 0x00d3
00D1 293 G$FCON$0$0 == 0x00d1
00D1 294 _FCON = 0x00d1
00A8 295 G$IE$0$0 == 0x00a8
00A8 296 _IE = 0x00a8
00B8 297 G$IP$0$0 == 0x00b8
00B8 298 _IP = 0x00b8
00B7 299 G$IPH$0$0 == 0x00b7
00B7 300 _IPH = 0x00b7
0080 301 G$P0$0$0 == 0x0080
0080 302 _P0 = 0x0080
0090 303 G$P1$0$0 == 0x0090
0090 304 _P1 = 0x0090
00A0 305 G$P2$0$0 == 0x00a0
00A0 306 _P2 = 0x00a0
00B0 307 G$P3$0$0 == 0x00b0
00B0 308 _P3 = 0x00b0
00C0 309 G$P4$0$0 == 0x00c0
00C0 310 _P4 = 0x00c0
00E8 311 G$P5$0$0 == 0x00e8
00E8 312 _P5 = 0x00e8
0087 313 G$PCON$0$0 == 0x0087
0087 314 _PCON = 0x0087
00D0 315 G$PSW$0$0 == 0x00d0
00D0 316 _PSW = 0x00d0
00CB 317 G$RCAP2H$0$0 == 0x00cb
00CB 318 _RCAP2H = 0x00cb
00CA 319 G$RCAP2L$0$0 == 0x00ca
00CA 320 _RCAP2L = 0x00ca
00B9 321 G$SADEN0$0$0 == 0x00b9
00B9 322 _SADEN0 = 0x00b9
0099 323 G$SBUF$0$0 == 0x0099
0099 324 _SBUF = 0x0099
0099 325 G$SBUF0$0$0 == 0x0099
0099 326 _SBUF0 = 0x0099
0098 327 G$SCON$0$0 == 0x0098
0098 328 _SCON = 0x0098
0081 329 G$SP$0$0 == 0x0081
0081 330 _SP = 0x0081
00C8 331 G$T2CON$0$0 == 0x00c8
00C8 332 _T2CON = 0x00c8
0088 333 G$TCON$0$0 == 0x0088
0088 334 _TCON = 0x0088
008C 335 G$TH0$0$0 == 0x008c
008C 336 _TH0 = 0x008c
008D 337 G$TH1$0$0 == 0x008d
008D 338 _TH1 = 0x008d
00CD 339 G$TH2$0$0 == 0x00cd
00CD 340 _TH2 = 0x00cd
008A 341 G$TL0$0$0 == 0x008a
008A 342 _TL0 = 0x008a
008B 343 G$TL1$0$0 == 0x008b
008B 344 _TL1 = 0x008b
00CC 345 G$TL2$0$0 == 0x00cc
00CC 346 _TL2 = 0x00cc
0089 347 G$TMOD$0$0 == 0x0089
0089 348 _TMOD = 0x0089
00A7 349 G$WDTPRG$0$0 == 0x00a7
00A7 350 _WDTPRG = 0x00a7
00A6 351 G$WDTRST$0$0 == 0x00a6
00A6 352 _WDTRST = 0x00a6
353 ;--------------------------------------------------------
354 ; special function bits
355 ;--------------------------------------------------------
356 .area RSEG (DATA)
00F0 357 G$BREG_F0$0$0 == 0x00f0
00F0 358 _BREG_F0 = 0x00f0
00F1 359 G$BREG_F1$0$0 == 0x00f1
00F1 360 _BREG_F1 = 0x00f1
00F2 361 G$BREG_F2$0$0 == 0x00f2
00F2 362 _BREG_F2 = 0x00f2
00F3 363 G$BREG_F3$0$0 == 0x00f3
00F3 364 _BREG_F3 = 0x00f3
00F4 365 G$BREG_F4$0$0 == 0x00f4
00F4 366 _BREG_F4 = 0x00f4
00F5 367 G$BREG_F5$0$0 == 0x00f5
00F5 368 _BREG_F5 = 0x00f5
00F6 369 G$BREG_F6$0$0 == 0x00f6
00F6 370 _BREG_F6 = 0x00f6
00F7 371 G$BREG_F7$0$0 == 0x00f7
00F7 372 _BREG_F7 = 0x00f7
00D8 373 G$CCF0$0$0 == 0x00d8
00D8 374 _CCF0 = 0x00d8
00D9 375 G$CCF1$0$0 == 0x00d9
00D9 376 _CCF1 = 0x00d9
00DA 377 G$CCF2$0$0 == 0x00da
00DA 378 _CCF2 = 0x00da
00DB 379 G$CCF3$0$0 == 0x00db
00DB 380 _CCF3 = 0x00db
00DC 381 G$CCF4$0$0 == 0x00dc
00DC 382 _CCF4 = 0x00dc
00DE 383 G$CR$0$0 == 0x00de
00DE 384 _CR = 0x00de
00DF 385 G$CF$0$0 == 0x00df
00DF 386 _CF = 0x00df
00A8 387 G$EX0$0$0 == 0x00a8
00A8 388 _EX0 = 0x00a8
00A9 389 G$ET0$0$0 == 0x00a9
00A9 390 _ET0 = 0x00a9
00AA 391 G$EX1$0$0 == 0x00aa
00AA 392 _EX1 = 0x00aa
00AB 393 G$ET1$0$0 == 0x00ab
00AB 394 _ET1 = 0x00ab
00AC 395 G$ES$0$0 == 0x00ac
00AC 396 _ES = 0x00ac
00AD 397 G$ET2$0$0 == 0x00ad
00AD 398 _ET2 = 0x00ad
00AE 399 G$EC$0$0 == 0x00ae
00AE 400 _EC = 0x00ae
00AF 401 G$EA$0$0 == 0x00af
00AF 402 _EA = 0x00af
00B8 403 G$PX0$0$0 == 0x00b8
00B8 404 _PX0 = 0x00b8
00B9 405 G$PT0$0$0 == 0x00b9
00B9 406 _PT0 = 0x00b9
00BA 407 G$PX1$0$0 == 0x00ba
00BA 408 _PX1 = 0x00ba
00BB 409 G$PT1$0$0 == 0x00bb
00BB 410 _PT1 = 0x00bb
00BC 411 G$PS$0$0 == 0x00bc
00BC 412 _PS = 0x00bc
00BD 413 G$PT2$0$0 == 0x00bd
00BD 414 _PT2 = 0x00bd
00BE 415 G$PPC$0$0 == 0x00be
00BE 416 _PPC = 0x00be
0080 417 G$P0_0$0$0 == 0x0080
0080 418 _P0_0 = 0x0080
0081 419 G$P0_1$0$0 == 0x0081
0081 420 _P0_1 = 0x0081
0082 421 G$P0_2$0$0 == 0x0082
0082 422 _P0_2 = 0x0082
0083 423 G$P0_3$0$0 == 0x0083
0083 424 _P0_3 = 0x0083
0084 425 G$P0_4$0$0 == 0x0084
0084 426 _P0_4 = 0x0084
0085 427 G$P0_5$0$0 == 0x0085
0085 428 _P0_5 = 0x0085
0086 429 G$P0_6$0$0 == 0x0086
0086 430 _P0_6 = 0x0086
0087 431 G$P0_7$0$0 == 0x0087
0087 432 _P0_7 = 0x0087
0090 433 G$P1_0$0$0 == 0x0090
0090 434 _P1_0 = 0x0090
0091 435 G$P1_1$0$0 == 0x0091
0091 436 _P1_1 = 0x0091
0092 437 G$P1_2$0$0 == 0x0092
0092 438 _P1_2 = 0x0092
0093 439 G$P1_3$0$0 == 0x0093
0093 440 _P1_3 = 0x0093
0094 441 G$P1_4$0$0 == 0x0094
0094 442 _P1_4 = 0x0094
0095 443 G$P1_5$0$0 == 0x0095
0095 444 _P1_5 = 0x0095
0096 445 G$P1_6$0$0 == 0x0096
0096 446 _P1_6 = 0x0096
0097 447 G$P1_7$0$0 == 0x0097
0097 448 _P1_7 = 0x0097
00A0 449 G$P2_0$0$0 == 0x00a0
00A0 450 _P2_0 = 0x00a0
00A1 451 G$P2_1$0$0 == 0x00a1
00A1 452 _P2_1 = 0x00a1
00A2 453 G$P2_2$0$0 == 0x00a2
00A2 454 _P2_2 = 0x00a2
00A3 455 G$P2_3$0$0 == 0x00a3
00A3 456 _P2_3 = 0x00a3
00A4 457 G$P2_4$0$0 == 0x00a4
00A4 458 _P2_4 = 0x00a4
00A5 459 G$P2_5$0$0 == 0x00a5
00A5 460 _P2_5 = 0x00a5
00A6 461 G$P2_6$0$0 == 0x00a6
00A6 462 _P2_6 = 0x00a6
00A7 463 G$P2_7$0$0 == 0x00a7
00A7 464 _P2_7 = 0x00a7
00B0 465 G$P3_0$0$0 == 0x00b0
00B0 466 _P3_0 = 0x00b0
00B1 467 G$P3_1$0$0 == 0x00b1
00B1 468 _P3_1 = 0x00b1
00B2 469 G$P3_2$0$0 == 0x00b2
00B2 470 _P3_2 = 0x00b2
00B3 471 G$P3_3$0$0 == 0x00b3
00B3 472 _P3_3 = 0x00b3
00B4 473 G$P3_4$0$0 == 0x00b4
00B4 474 _P3_4 = 0x00b4
00B5 475 G$P3_5$0$0 == 0x00b5
00B5 476 _P3_5 = 0x00b5
00B6 477 G$P3_6$0$0 == 0x00b6
00B6 478 _P3_6 = 0x00b6
00B7 479 G$P3_7$0$0 == 0x00b7
00B7 480 _P3_7 = 0x00b7
00B0 481 G$RXD$0$0 == 0x00b0
00B0 482 _RXD = 0x00b0
00B0 483 G$RXD0$0$0 == 0x00b0
00B0 484 _RXD0 = 0x00b0
00B1 485 G$TXD$0$0 == 0x00b1
00B1 486 _TXD = 0x00b1
00B1 487 G$TXD0$0$0 == 0x00b1
00B1 488 _TXD0 = 0x00b1
00B2 489 G$INT0$0$0 == 0x00b2
00B2 490 _INT0 = 0x00b2
00B3 491 G$INT1$0$0 == 0x00b3
00B3 492 _INT1 = 0x00b3
00B4 493 G$T0$0$0 == 0x00b4
00B4 494 _T0 = 0x00b4
00B5 495 G$T1$0$0 == 0x00b5
00B5 496 _T1 = 0x00b5
00B6 497 G$WR$0$0 == 0x00b6
00B6 498 _WR = 0x00b6
00B7 499 G$RD$0$0 == 0x00b7
00B7 500 _RD = 0x00b7
00C0 501 G$P4_0$0$0 == 0x00c0
00C0 502 _P4_0 = 0x00c0
00C1 503 G$P4_1$0$0 == 0x00c1
00C1 504 _P4_1 = 0x00c1
00C2 505 G$P4_2$0$0 == 0x00c2
00C2 506 _P4_2 = 0x00c2
00C3 507 G$P4_3$0$0 == 0x00c3
00C3 508 _P4_3 = 0x00c3
00C4 509 G$P4_4$0$0 == 0x00c4
00C4 510 _P4_4 = 0x00c4
00C5 511 G$P4_5$0$0 == 0x00c5
00C5 512 _P4_5 = 0x00c5
00C6 513 G$P4_6$0$0 == 0x00c6
00C6 514 _P4_6 = 0x00c6
00C7 515 G$P4_7$0$0 == 0x00c7
00C7 516 _P4_7 = 0x00c7
00E8 517 G$P5_0$0$0 == 0x00e8
00E8 518 _P5_0 = 0x00e8
00E9 519 G$P5_1$0$0 == 0x00e9
00E9 520 _P5_1 = 0x00e9
00EA 521 G$P5_2$0$0 == 0x00ea
00EA 522 _P5_2 = 0x00ea
00EB 523 G$P5_3$0$0 == 0x00eb
00EB 524 _P5_3 = 0x00eb
00EC 525 G$P5_4$0$0 == 0x00ec
00EC 526 _P5_4 = 0x00ec
00ED 527 G$P5_5$0$0 == 0x00ed
00ED 528 _P5_5 = 0x00ed
00EE 529 G$P5_6$0$0 == 0x00ee
00EE 530 _P5_6 = 0x00ee
00EF 531 G$P5_7$0$0 == 0x00ef
00EF 532 _P5_7 = 0x00ef
00D0 533 G$P$0$0 == 0x00d0
00D0 534 _P = 0x00d0
00D1 535 G$F1$0$0 == 0x00d1
00D1 536 _F1 = 0x00d1
00D2 537 G$OV$0$0 == 0x00d2
00D2 538 _OV = 0x00d2
00D3 539 G$RS0$0$0 == 0x00d3
00D3 540 _RS0 = 0x00d3
00D4 541 G$RS1$0$0 == 0x00d4
00D4 542 _RS1 = 0x00d4
00D5 543 G$F0$0$0 == 0x00d5
00D5 544 _F0 = 0x00d5
00D6 545 G$AC$0$0 == 0x00d6
00D6 546 _AC = 0x00d6
00D7 547 G$CY$0$0 == 0x00d7
00D7 548 _CY = 0x00d7
0098 549 G$RI$0$0 == 0x0098
0098 550 _RI = 0x0098
0099 551 G$TI$0$0 == 0x0099
0099 552 _TI = 0x0099
009A 553 G$RB8$0$0 == 0x009a
009A 554 _RB8 = 0x009a
009B 555 G$TB8$0$0 == 0x009b
009B 556 _TB8 = 0x009b
009C 557 G$REN$0$0 == 0x009c
009C 558 _REN = 0x009c
009D 559 G$SM2$0$0 == 0x009d
009D 560 _SM2 = 0x009d
009E 561 G$SM1$0$0 == 0x009e
009E 562 _SM1 = 0x009e
009F 563 G$SM0$0$0 == 0x009f
009F 564 _SM0 = 0x009f
00C8 565 G$CP_RL2$0$0 == 0x00c8
00C8 566 _CP_RL2 = 0x00c8
00C9 567 G$C_T2$0$0 == 0x00c9
00C9 568 _C_T2 = 0x00c9
00CA 569 G$TR2$0$0 == 0x00ca
00CA 570 _TR2 = 0x00ca
00CB 571 G$EXEN2$0$0 == 0x00cb
00CB 572 _EXEN2 = 0x00cb
00CC 573 G$TCLK$0$0 == 0x00cc
00CC 574 _TCLK = 0x00cc
00CD 575 G$RCLK$0$0 == 0x00cd
00CD 576 _RCLK = 0x00cd
00CE 577 G$EXF2$0$0 == 0x00ce
00CE 578 _EXF2 = 0x00ce
00CF 579 G$TF2$0$0 == 0x00cf
00CF 580 _TF2 = 0x00cf
00C8 581 G$T2CON_0$0$0 == 0x00c8
00C8 582 _T2CON_0 = 0x00c8
00C9 583 G$T2CON_1$0$0 == 0x00c9
00C9 584 _T2CON_1 = 0x00c9
00CA 585 G$T2CON_2$0$0 == 0x00ca
00CA 586 _T2CON_2 = 0x00ca
00CB 587 G$T2CON_3$0$0 == 0x00cb
00CB 588 _T2CON_3 = 0x00cb
00CC 589 G$T2CON_4$0$0 == 0x00cc
00CC 590 _T2CON_4 = 0x00cc
00CD 591 G$T2CON_5$0$0 == 0x00cd
00CD 592 _T2CON_5 = 0x00cd
00CE 593 G$T2CON_6$0$0 == 0x00ce
00CE 594 _T2CON_6 = 0x00ce
00CF 595 G$T2CON_7$0$0 == 0x00cf
00CF 596 _T2CON_7 = 0x00cf
0088 597 G$IT0$0$0 == 0x0088
0088 598 _IT0 = 0x0088
0089 599 G$IE0$0$0 == 0x0089
0089 600 _IE0 = 0x0089
008A 601 G$IT1$0$0 == 0x008a
008A 602 _IT1 = 0x008a
008B 603 G$IE1$0$0 == 0x008b
008B 604 _IE1 = 0x008b
008C 605 G$TR0$0$0 == 0x008c
008C 606 _TR0 = 0x008c
008D 607 G$TF0$0$0 == 0x008d
008D 608 _TF0 = 0x008d
008E 609 G$TR1$0$0 == 0x008e
008E 610 _TR1 = 0x008e
008F 611 G$TF1$0$0 == 0x008f
008F 612 _TF1 = 0x008f
613 ;--------------------------------------------------------
614 ; overlayable register banks
615 ;--------------------------------------------------------
616 .area REG_BANK_0 (REL,OVR,DATA)
0000 617 .ds 8
618 .area REG_BANK_1 (REL,OVR,DATA)
0000 619 .ds 8
620 .area REG_BANK_2 (REL,OVR,DATA)
0000 621 .ds 8
622 .area REG_BANK_3 (REL,OVR,DATA)
0000 623 .ds 8
624 ;--------------------------------------------------------
625 ; internal ram data
626 ;--------------------------------------------------------
627 .area DSEG (DATA)
0000 628 G$ready$0$0==.
0000 629 _ready::
0000 630 .ds 1
0001 631 G$run$0$0==.
0001 632 _run::
0001 633 .ds 1
634 ;--------------------------------------------------------
635 ; overlayable items in internal ram
636 ;--------------------------------------------------------
637 .area OSEG (OVR,DATA)
638 ;--------------------------------------------------------
639 ; indirectly addressable internal ram data
640 ;--------------------------------------------------------
641 .area ISEG (DATA)
0000 642 G$stack0$0$0==.
0000 643 _stack0::
0000 644 .ds 41
0029 645 G$stack1$0$0==.
0029 646 _stack1::
0029 647 .ds 46
0057 648 G$stack2$0$0==.
0057 649 _stack2::
0057 650 .ds 46
0085 651 G$stack_save$0$0==.
0085 652 _stack_save::
0085 653 .ds 3
0088 654 G$task_signals$0$0==.
0088 655 _task_signals::
0088 656 .ds 3
008B 657 G$task_masks$0$0==.
008B 658 _task_masks::
008B 659 .ds 3
008E 660 G$task_timer$0$0==.
008E 661 _task_timer::
008E 662 .ds 3
0091 663 G$start_stack$0$0==.
0091 664 _start_stack::
0091 665 .ds 3
666 ;--------------------------------------------------------
667 ; bit data
668 ;--------------------------------------------------------
669 .area BSEG (BIT)
0000 670 G$T0_interrupt_ea$0$0==.
0000 671 _T0_interrupt_ea::
0000 672 .ds 1
0001 673 G$reschedule_ea$0$0==.
0001 674 _reschedule_ea::
0001 675 .ds 1
0002 676 Lstart_task$EA_local$1$1==.
0002 677 _start_task_EA_local_1_1:
0002 678 .ds 1
0003 679 Lend_run_task$EA_local$1$1==.
0003 680 _end_run_task_EA_local_1_1:
0003 681 .ds 1
0004 682 Lwait_timed$EA_local$1$1==.
0004 683 _wait_timed_EA_local_1_1:
0004 684 .ds 1
0005 685 Lsleep$EA_local$1$1==.
0005 686 _sleep_EA_local_1_1:
0005 687 .ds 1
0006 688 Lclear_signal$EA_local$1$1==.
0006 689 _clear_signal_EA_local_1_1:
0006 690 .ds 1
0007 691 Lsignal$EA_local$1$1==.
0007 692 _signal_EA_local_1_1:
0007 693 .ds 1
694 ;--------------------------------------------------------
695 ; external ram data
696 ;--------------------------------------------------------
697 .area XSEG (XDATA)
0000 698 G$T0ctr$0$0==.
0000 699 _T0ctr::
0000 700 .ds 1
0001 701 G$T100ms$0$0==.
0001 702 _T100ms::
0001 703 .ds 1
0002 704 G$T10sec$0$0==.
0002 705 _T10sec::
0002 706 .ds 1
0003 707 Lstart_task$tasknum$1$1==.
0003 708 _start_task_PARM_2::
0003 709 .ds 1
0004 710 Lstart_task$f$1$1==.
0004 711 _start_task_f_1_1::
0004 712 .ds 2
0006 713 Lwait_timed$ticks$1$1==.
0006 714 _wait_timed_PARM_2::
0006 715 .ds 1
0007 716 Lwait_timed$signal$1$1==.
0007 717 _wait_timed_signal_1_1::
0007 718 .ds 1
0008 719 Lsleep$ticks$1$1==.
0008 720 _sleep_ticks_1_1::
0008 721 .ds 1
0009 722 Lclear_signal$pattern$1$1==.
0009 723 _clear_signal_pattern_1_1::
0009 724 .ds 1
000A 725 Lsignal$pattern$1$1==.
000A 726 _signal_PARM_2::
000A 727 .ds 1
000B 728 Lsignal$task$1$1==.
000B 729 _signal_task_1_1::
000B 730 .ds 1
731 ;--------------------------------------------------------
732 ; external initialized ram data
733 ;--------------------------------------------------------
734 .area XISEG (XDATA)
735 .area CSEG (CODE)
736 .area GSINIT0 (CODE)
737 .area GSINIT1 (CODE)
738 .area GSINIT2 (CODE)
739 .area GSINIT3 (CODE)
740 .area GSINIT4 (CODE)
741 .area GSINIT5 (CODE)
742 ;--------------------------------------------------------
743 ; global & static initialisations
744 ;--------------------------------------------------------
745 .area GSINIT (CODE)
746 .area GSFINAL (CODE)
747 .area GSINIT (CODE)
0000 748 G$rt_system_init$0$0 ==.
0000 749 C$rt_task.c$80$1$1 ==.
750 ;rt_task.c:80: const STACK_PTR_TYPE start_stack[]={
751 ; genPointerSet
752 ; genNearPointerSet
0000 78r91 753 mov r0,#_start_stack
0002 76r00 754 mov @r0,#_stack0
755 ; genPointerSet
756 ; genNearPointerSet
0004 78r92 757 mov r0,#(_start_stack + 0x0001)
0006 76r29 758 mov @r0,#_stack1
759 ; genPointerSet
760 ; genNearPointerSet
0008 78r93 761 mov r0,#(_start_stack + 0x0002)
000A 76r57 762 mov @r0,#_stack2
763 ;--------------------------------------------------------
764 ; Home
765 ;--------------------------------------------------------
766 .area HOME (CODE)
767 .area CSEG (CODE)
768 ;--------------------------------------------------------
769 ; code
770 ;--------------------------------------------------------
771 .area CSEG (CODE)
772 ;------------------------------------------------------------
773 ;Allocation info for local variables in function 'rt_tasks_init'
774 ;------------------------------------------------------------
775 ;i Allocated with name '_rt_tasks_init_i_1_1'
776 ;------------------------------------------------------------
0000 777 G$rt_tasks_init$0$0 ==.
0000 778 C$rt_task.c$143$0$0 ==.
779 ;rt_task.c:143: void rt_tasks_init (void)
780 ; -----------------------------------------
781 ; function rt_tasks_init
782 ; -----------------------------------------
0000 783 _rt_tasks_init:
0002 784 ar2 = 0x02
0003 785 ar3 = 0x03
0004 786 ar4 = 0x04
0005 787 ar5 = 0x05
0006 788 ar6 = 0x06
0007 789 ar7 = 0x07
0000 790 ar0 = 0x00
0001 791 ar1 = 0x01
0000 792 C$rt_task.c$146$1$1 ==.
793 ;rt_task.c:146: run = MAIN_TASK_ID;
794 ; genAssign
0000 75*01 00 795 mov _run,#0x00
0003 796 C$rt_task.c$147$1$1 ==.
797 ;rt_task.c:147: ready = TASK_BIT(MAIN_TASK_ID);
798 ; genAssign
0003 75*00 01 799 mov _ready,#0x01
0006 800 C$rt_task.c$149$1$1 ==.
801 ;rt_task.c:149: for(i=0;i<TASKS;i++)
802 ; genAssign
0006 7A 00 803 mov r2,#0x00
0008 804 00101$:
805 ; genCmpLt
806 ; genCmp
0008 C3 807 clr c
0009 EA 808 mov a,r2
000A 64 80 809 xrl a,#0x80
000C 94 83 810 subb a,#0x83
811 ; genIfxJump
812 ; Peephole 108 removed ljmp by inverse jump logic
000E 50 1D 813 jnc 00105$
0010 814 00109$:
0010 815 C$rt_task.c$151$2$2 ==.
816 ;rt_task.c:151: stack_save[i] = 0;
817 ; genPlus
818 ; Peephole 236.g used r2 instead of ar2
0010 EA 819 mov a,r2
0011 24r85 820 add a,#_stack_save
0013 F8 821 mov r0,a
822 ; genAssign
0014 7B 00 823 mov r3,#0x00
824 ; genPointerSet
825 ; genNearPointerSet
0016 A6 03 826 mov @r0,ar3
0018 827 C$rt_task.c$152$2$2 ==.
828 ;rt_task.c:152: task_signals[i]=0;
829 ; genPlus
830 ; Peephole 236.g used r2 instead of ar2
0018 EA 831 mov a,r2
0019 24r88 832 add a,#_task_signals
833 ; genPointerSet
834 ; genNearPointerSet
835 ; Peephole 239 used a instead of acc
001B F8 836 mov r0,a
001C 76 00 837 mov @r0,#0x00
001E 838 C$rt_task.c$153$2$2 ==.
839 ;rt_task.c:153: task_masks[i] =0;
840 ; genPlus
841 ; Peephole 236.g used r2 instead of ar2
001E EA 842 mov a,r2
001F 24r8B 843 add a,#_task_masks
844 ; genPointerSet
845 ; genNearPointerSet
846 ; Peephole 239 used a instead of acc
0021 F8 847 mov r0,a
0022 76 00 848 mov @r0,#0x00
0024 849 C$rt_task.c$154$2$2 ==.
850 ;rt_task.c:154: task_timer[i] =0;
851 ; genPlus
852 ; Peephole 236.g used r2 instead of ar2
0024 EA 853 mov a,r2
0025 24r8E 854 add a,#_task_timer
855 ; genPointerSet
856 ; genNearPointerSet
857 ; Peephole 239 used a instead of acc
0027 F8 858 mov r0,a
0028 76 00 859 mov @r0,#0x00
002A 860 C$rt_task.c$149$1$1 ==.
861 ;rt_task.c:149: for(i=0;i<TASKS;i++)
862 ; genPlus
863 ; genPlusIncr
002A 0A 864 inc r2
865 ; Peephole 112.b changed ljmp to sjmp
002B 80 DB 866 sjmp 00101$
002D 867 00105$:
002D 868 C$rt_task.c$157$1$1 ==.
002D 869 XG$rt_tasks_init$0$0 ==.
002D 22 870 ret
871 ;------------------------------------------------------------
872 ;Allocation info for local variables in function 'T0Interrupt'
873 ;------------------------------------------------------------
874 ;i Allocated with name '_T0Interrupt_i_2_2'
875 ;------------------------------------------------------------
002E 876 G$T0Interrupt$0$0 ==.
002E 877 C$rt_task.c$170$1$1 ==.
878 ;rt_task.c:170: void T0Interrupt(void) interrupt T0_INTVEC using T0_INTERRUPT_BANK
879 ; -----------------------------------------
880 ; function T0Interrupt
881 ; -----------------------------------------
002E 882 _T0Interrupt:
0012 883 ar2 = 0x12
0013 884 ar3 = 0x13
0014 885 ar4 = 0x14
0015 886 ar5 = 0x15
0016 887 ar6 = 0x16
0017 888 ar7 = 0x17
0010 889 ar0 = 0x10
0011 890 ar1 = 0x11
002E C0 E0 891 push acc
0030 C0 F0 892 push b
0032 C0 82 893 push dpl
0034 C0 83 894 push dph
0036 C0 D0 895 push psw
0038 75 D0 10 896 mov psw,#0x10
003B 897 C$rt_task.c$173$1$1 ==.
898 ;rt_task.c:173: T0ctr--;
899 ; genMinus
003B 90s00r00 900 mov dptr,#_T0ctr
901 ; genMinusDec
003E E0 902 movx a,@dptr
003F 14 903 dec a
904 ; genAssign
0040 90s00r00 905 mov dptr,#_T0ctr
0043 F0 906 movx @dptr,a
0044 907 C$rt_task.c$174$1$1 ==.
908 ;rt_task.c:174: if(T0ctr==0)
909 ; genAssign
0044 90s00r00 910 mov dptr,#_T0ctr
0047 E0 911 movx a,@dptr
0048 FA 912 mov r2,a
913 ; genCmpEq
0049 BA 00 02 914 cjne r2,#0x00,00135$
004C 80 03 915 sjmp 00136$
004E 916 00135$:
004E 02s00rEE 917 ljmp 00113$
0051 918 00136$:
0051 919 C$rt_task.c$177$2$2 ==.
920 ;rt_task.c:177: T100ms++;
921 ; genPlus
0051 90s00r01 922 mov dptr,#_T100ms
0054 E0 923 movx a,@dptr
0055 24 01 924 add a,#0x01
0057 F0 925 movx @dptr,a
0058 926 C$rt_task.c$178$2$2 ==.
927 ;rt_task.c:178: if(T100ms & 3)
928 ; genAssign
0058 90s00r01 929 mov dptr,#_T100ms
005B E0 930 movx a,@dptr
931 ; genAnd
932 ; Peephole 105 removed redundant mov
005C FA 933 mov r2,a
005D 54 03 934 anl a,#0x03
935 ; Peephole 110 removed ljmp by inverse jump logic
005F 60 08 936 jz 00102$
0061 937 00137$:
0061 938 C$rt_task.c$179$2$2 ==.
939 ;rt_task.c:179: T0ctr= 11;/* 01,10,11 */
940 ; genAssign
0061 90s00r00 941 mov dptr,#_T0ctr
0064 74 0B 942 mov a,#0x0B
0066 F0 943 movx @dptr,a
944 ; Peephole 112.b changed ljmp to sjmp
0067 80 06 945 sjmp 00130$
0069 946 00102$:
0069 947 C$rt_task.c$181$2$2 ==.
948 ;rt_task.c:181: T0ctr= 12;/* 00 */
949 ; genAssign
0069 90s00r00 950 mov dptr,#_T0ctr
006C 74 0C 951 mov a,#0x0C
006E F0 952 movx @dptr,a
006F 953 C$rt_task.c$183$1$1 ==.
954 ;rt_task.c:183: for (i=0;i<TASKS;i++)
006F 955 00130$:
956 ; genAssign
006F 7A 00 957 mov r2,#0x00
0071 7B 00 958 mov r3,#0x00
0073 959 00118$:
960 ; genCmpLt
961 ; genCmp
0073 C3 962 clr c
0074 EA 963 mov a,r2
0075 94 03 964 subb a,#0x03
0077 EB 965 mov a,r3
0078 64 80 966 xrl a,#0x80
007A 94 80 967 subb a,#0x80
968 ; genIfxJump
969 ; Peephole 108 removed ljmp by inverse jump logic
007C 50 5A 970 jnc 00121$
007E 971 00138$:
007E 972 C$rt_task.c$185$3$3 ==.
973 ;rt_task.c:185: if (task_timer[i] != 0)
974 ; genPlus
975 ; Peephole 236.g used r2 instead of ar2
007E EA 976 mov a,r2
007F 24r8E 977 add a,#_task_timer
0081 F8 978 mov r0,a
979 ; genPointerGet
980 ; genNearPointerGet
0082 86 14 981 mov ar4,@r0
982 ; genCmpEq
0084 BC 00 02 983 cjne r4,#0x00,00139$
984 ; Peephole 112.b changed ljmp to sjmp
0087 80 48 985 sjmp 00120$
0089 986 00139$:
0089 987 C$rt_task.c$187$4$4 ==.
988 ;rt_task.c:187: task_timer[i]--;
989 ; genPlus
990 ; Peephole 236.g used r2 instead of ar2
0089 EA 991 mov a,r2
008A 24r8E 992 add a,#_task_timer
008C F8 993 mov r0,a
994 ; genPointerGet
995 ; genNearPointerGet
008D 86 14 996 mov ar4,@r0
997 ; genMinus
998 ; genMinusDec
008F EC 999 mov a,r4
0090 14 1000 dec a
1001 ; genPointerSet
1002 ; genNearPointerSet
0091 A6 E0 1003 mov @r0,acc
0093 1004 C$rt_task.c$188$4$4 ==.
1005 ;rt_task.c:188: if (task_timer[i] == 0)
1006 ; genPlus
1007 ; Peephole 236.g used r2 instead of ar2
0093 EA 1008 mov a,r2
0094 24r8E 1009 add a,#_task_timer
0096 F8 1010 mov r0,a
1011 ; genPointerGet
1012 ; genNearPointerGet
0097 86 14 1013 mov ar4,@r0
1014 ; genCmpEq
1015 ; Peephole 112.b changed ljmp to sjmp
1016 ; Peephole 199 optimized misc jump sequence
0099 BC 00 35 1017 cjne r4,#0x00,00120$
1018 ;00140$:
1019 ; Peephole 200 removed redundant sjmp
009C 1020 00141$:
009C 1021 C$rt_task.c$190$5$5 ==.
1022 ;rt_task.c:190: task_signals[i] |= TIMER_SIG;
1023 ; genPlus
1024 ; Peephole 236.g used r2 instead of ar2
009C EA 1025 mov a,r2
009D 24r88 1026 add a,#_task_signals
009F F8 1027 mov r0,a
1028 ; genPlus
1029 ; Peephole 236.g used r2 instead of ar2
00A0 EA 1030 mov a,r2
00A1 24r88 1031 add a,#_task_signals
00A3 F9 1032 mov r1,a
1033 ; genPointerGet
1034 ; genNearPointerGet
00A4 87 14 1035 mov ar4,@r1
1036 ; genOr
00A6 74 80 1037 mov a,#0x80
00A8 4C 1038 orl a,r4
1039 ; genPointerSet
1040 ; genNearPointerSet
00A9 A6 E0 1041 mov @r0,acc
00AB 1042 C$rt_task.c$191$5$5 ==.
1043 ;rt_task.c:191: if(task_signals[i] & task_masks[i])
1044 ; genPlus
1045 ; Peephole 236.g used r2 instead of ar2
00AB EA 1046 mov a,r2
00AC 24r88 1047 add a,#_task_signals
00AE F8 1048 mov r0,a
1049 ; genPointerGet
1050 ; genNearPointerGet
00AF 86 14 1051 mov ar4,@r0
1052 ; genPlus
1053 ; Peephole 236.g used r2 instead of ar2
00B1 EA 1054 mov a,r2
00B2 24r8B 1055 add a,#_task_masks
00B4 F8 1056 mov r0,a
1057 ; genPointerGet
1058 ; genNearPointerGet
00B5 86 15 1059 mov ar5,@r0
1060 ; genAnd
00B7 ED 1061 mov a,r5
00B8 5C 1062 anl a,r4
1063 ; genIfx
1064 ; genIfxJump
1065 ; Peephole 110 removed ljmp by inverse jump logic
00B9 60 16 1066 jz 00120$
00BB 1067 00142$:
00BB 1068 C$rt_task.c$193$6$6 ==.
1069 ;rt_task.c:193: ready |= TASK_BIT(i); /* Mapping here */
1070 ; genLeftShift
00BB 8A F0 1071 mov b,r2
00BD 05 F0 1072 inc b
00BF 7C 01 1073 mov r4,#0x01
00C1 7D 00 1074 mov r5,#0x00
00C3 80 06 1075 sjmp 00144$
00C5 1076 00143$:
1077 ; Peephole 254 optimized left shift
00C5 EC 1078 mov a,r4
00C6 2C 1079 add a,r4
00C7 FC 1080 mov r4,a
00C8 ED 1081 mov a,r5
00C9 33 1082 rlc a
00CA FD 1083 mov r5,a
00CB 1084 00144$:
00CB D5 F0 F7 1085 djnz b,00143$
1086 ; genCast
1087 ; genOr
00CE EC 1088 mov a,r4
00CF 42*00 1089 orl _ready,a
00D1 1090 00120$:
00D1 1091 C$rt_task.c$183$2$2 ==.
1092 ;rt_task.c:183: for (i=0;i<TASKS;i++)
1093 ; genPlus
1094 ; genPlusIncr
00D1 0A 1095 inc r2
1096 ; Peephole 112.b changed ljmp to sjmp
1097 ; Peephole 243 avoided branch to sjmp
00D2 BA 00 9E 1098 cjne r2,#0x00,00118$
00D5 0B 1099 inc r3
00D6 1100 00145$:
00D6 80 9B 1101 sjmp 00118$
00D8 1102 00121$:
00D8 1103 C$rt_task.c$201$2$2 ==.
1104 ;rt_task.c:201: if(T100ms>=MAXT100ms)
1105 ; genAssign
00D8 90s00r01 1106 mov dptr,#_T100ms
00DB E0 1107 movx a,@dptr
00DC FA 1108 mov r2,a
1109 ; genCmpLt
1110 ; genCmp
00DD BA 64 00 1111 cjne r2,#0x64,00146$
00E0 1112 00146$:
1113 ; genIfxJump
1114 ; Peephole 112.b changed ljmp to sjmp
1115 ; Peephole 160 removed sjmp by inverse jump logic
00E0 40 0C 1116 jc 00113$
00E2 1117 00147$:
00E2 1118 C$rt_task.c$203$3$7 ==.
1119 ;rt_task.c:203: T10sec++;
1120 ; genPlus
00E2 90s00r02 1121 mov dptr,#_T10sec
00E5 E0 1122 movx a,@dptr
00E6 24 01 1123 add a,#0x01
00E8 F0 1124 movx @dptr,a
00E9 1125 C$rt_task.c$204$3$7 ==.
1126 ;rt_task.c:204: T100ms=0;
1127 ; genAssign
00E9 90s00r01 1128 mov dptr,#_T100ms
1129 ; Peephole 181 changed mov to clr
00EC E4 1130 clr a
00ED F0 1131 movx @dptr,a
00EE 1132 00113$:
00EE 1133 C$rt_task.c$211$1$1 ==.
1134 ;rt_task.c:211: if(!SIO1_CTS && !SIO1_TxBusy && SIO1_TxCount)
1135 ; genIfx
1136 ; genIfxJump
1137 ; Peephole 112.a removed ljmp by inverse jump logic
00EE 20 95 0C 1138 jb _P1_5,00115$
00F1 1139 00148$:
1140 ; genIfx
1141 ; genIfxJump
1142 ; Peephole 112.a removed ljmp by inverse jump logic
00F1 20*00 09 1143 jb _SIO1_TxBusy,00115$
00F4 1144 00149$:
1145 ; genAssign
00F4 90s00r00 1146 mov dptr,#_SIO1_TxCount
00F7 E0 1147 movx a,@dptr
1148 ; genIfx
1149 ; Peephole 105 removed redundant mov
00F8 FA 1150 mov r2,a
1151 ; genIfxJump
1152 ; Peephole 110 removed ljmp by inverse jump logic
00F9 60 02 1153 jz 00115$
00FB 1154 00150$:
00FB 1155 C$rt_task.c$213$2$8 ==.
1156 ;rt_task.c:213: TI=1;
1157 ; genAssign
00FB D2 99 1158 setb _TI
00FD 1159 00115$:
00FD 1160 C$rt_task.c$297$1$1 ==.
1161 ;rt_task.c:297: _endasm;
1162 ; genInline
1163 ; use assembler form of atomic operation for keeping ea
00FD 10 AF 04 1164 jbc ea,0001$
0100 C2*00 1165 clr _T0_interrupt_ea
0102 80 02 1166 sjmp 0002$
0104 1167 0001$:
0104 D2*00 1168 setb _T0_interrupt_ea
0106 1169 0002$:
1170 ; These are in bank 0
0106 C0 07 1171 push 7
0108 C0 06 1172 push 6
010A C0 05 1173 push 5
010C C0 04 1174 push 4
010E C0 03 1175 push 3
0110 C0 02 1176 push 2
0112 C0 01 1177 push 1
0114 C0 00 1178 push 0
1179 ;
1180 ;
1181 ; Determine which task was running
1182 ; and save the task SP
1183 ;
0116 E5*01 1184 mov a,_run
0118 24r85 1185 add a,#_stack_save
011A F8 1186 mov r0,a
011B E5 81 1187 mov a,sp
011D F6 1188 mov @r0,a
1189 ; *********** SCHEDULE CODE HERE
1190 ;
1191 ; look at the task ready flags
011E E5*00 1192 mov a,_ready
0120 24 10 1193 add a,#0x10
0122 54 3F 1194 anl a,#0x3F
0124 F5*00 1195 mov _ready,a
1196 ;
1197 ; get new running task ID
1198 ;
0126 90s03rEE 1199 mov dptr,#_priotab
0129 93 1200 movc a,@a+dptr
1201 ;
012A F5*01 1202 mov _run,a
1203 ;
012C 24r85 1204 add a,#_stack_save
012E F8 1205 mov r0,a
012F E6 1206 mov a,@r0
0130 F5 81 1207 mov sp,a
1208 ;
1209 ;
1210 ; Bank 0 registers in use here
1211 ;
0132 D0 00 1212 pop 0
0134 D0 01 1213 pop 1
0136 D0 02 1214 pop 2
0138 D0 03 1215 pop 3
013A D0 04 1216 pop 4
013C D0 05 1217 pop 5
013E D0 06 1218 pop 6
0140 D0 07 1219 pop 7
1220 ;
1221 ; this is done in the ISR
1222 ; pop psw
1223 ; pop dph
1224 ; pop dpl
1225 ; pop b
1226 ; pop acc
1227 ;
1228 ;
1229 ;
0142 30*00 02 1230 jnb _T0_interrupt_ea,0010$
0145 D2 AF 1231 setb ea
0147 1232 0010$:
0147 1233 00122$:
0147 D0 D0 1234 pop psw
0149 D0 83 1235 pop dph
014B D0 82 1236 pop dpl
014D D0 F0 1237 pop b
014F D0 E0 1238 pop acc
0151 1239 C$rt_task.c$301$1$1 ==.
0151 1240 XG$T0Interrupt$0$0 ==.
0151 32 1241 reti
1242 ;------------------------------------------------------------
1243 ;Allocation info for local variables in function 'reschedule'
1244 ;------------------------------------------------------------
1245 ;------------------------------------------------------------
0152 1246 G$reschedule$0$0 ==.
0152 1247 C$rt_task.c$328$1$1 ==.
1248 ;rt_task.c:328: void reschedule(void)
1249 ; -----------------------------------------
1250 ; function reschedule
1251 ; -----------------------------------------
0152 1252 _reschedule:
0002 1253 ar2 = 0x02
0003 1254 ar3 = 0x03
0004 1255 ar4 = 0x04
0005 1256 ar5 = 0x05
0006 1257 ar6 = 0x06
0007 1258 ar7 = 0x07
0000 1259 ar0 = 0x00
0001 1260 ar1 = 0x01
0152 1261 C$rt_task.c$413$1$1 ==.
1262 ;rt_task.c:413: _endasm;
1263 ; genInline
1264 ; use assembler form of atomic operation for keeping ea
0152 10 AF 04 1265 jbc ea,0001$
0155 C2*01 1266 clr _reschedule_ea
0157 80 02 1267 sjmp 0002$
0159 1268 0001$:
0159 D2*01 1269 setb _reschedule_ea
015B 1270 0002$:
1271 ; this is done in any ISR
015B C0 E0 1272 push acc
015D C0 F0 1273 push b
015F C0 82 1274 push dpl
0161 C0 83 1275 push dph
0163 C0 D0 1276 push psw
1277 ;
1278 ; These are in bank 0
1279 ;
0165 C0 07 1280 push 7
0167 C0 06 1281 push 6
0169 C0 05 1282 push 5
016B C0 04 1283 push 4
016D C0 03 1284 push 3
016F C0 02 1285 push 2
0171 C0 01 1286 push 1
0173 C0 00 1287 push 0
1288 ;
1289 ;
1290 ;
1291 ; Determine which task was running
1292 ; and save the task SP
1293 ;
0175 E5*01 1294 mov a,_run
0177 24r85 1295 add a,#_stack_save
0179 F8 1296 mov r0,a
017A E5 81 1297 mov a,sp
017C F6 1298 mov @r0,a
1299 ; *********** SCHEDULE CODE HERE
1300 ;
1301 ; look at the task ready flags
017D E5*00 1302 mov a,_ready
017F 24 10 1303 add a,#0x10
0181 54 3F 1304 anl a,#0x3F
0183 F5*00 1305 mov _ready,a
1306 ;
1307 ; get new running task ID
1308 ;
0185 90s03rEE 1309 mov dptr,#_priotab
0188 93 1310 movc a,@a+dptr
1311 ;
0189 F5*01 1312 mov _run,a
1313 ;
018B 24r85 1314 add a,#_stack_save
018D F8 1315 mov r0,a
018E E6 1316 mov a,@r0
018F F5 81 1317 mov sp,a
1318 ;
1319 ;
1320 ; Bank 0 registers in use here
1321 ;
0191 D0 00 1322 pop 0
0193 D0 01 1323 pop 1
0195 D0 02 1324 pop 2
0197 D0 03 1325 pop 3
0199 D0 04 1326 pop 4
019B D0 05 1327 pop 5
019D D0 06 1328 pop 6
019F D0 07 1329 pop 7
1330 ;
1331 ; this is done in the ISR
01A1 D0 D0 1332 pop psw
01A3 D0 83 1333 pop dph
01A5 D0 82 1334 pop dpl
01A7 D0 F0 1335 pop b
01A9 D0 E0 1336 pop acc
1337 ;
01AB 30*01 02 1338 jnb _reschedule_ea,0010$
01AE D2 AF 1339 setb ea
01B0 1340 0010$:
1341 ;
01B0 1342 00101$:
01B0 1343 C$rt_task.c$415$1$1 ==.
01B0 1344 XG$reschedule$0$0 ==.
01B0 22 1345 ret
1346 ;------------------------------------------------------------
1347 ;Allocation info for local variables in function 'start_task'
1348 ;------------------------------------------------------------
1349 ;tasknum Allocated with name '_start_task_PARM_2'
1350 ;f Allocated with name '_start_task_f_1_1'
1351 ;fp Allocated with name '_start_task_fp_1_1'
1352 ;csp Allocated to registers r0
1353 ;------------------------------------------------------------
01B1 1354 G$start_task$0$0 ==.
01B1 1355 C$rt_task.c$424$1$1 ==.
1356 ;rt_task.c:424: start_rc start_task(task_p f,char tasknum)
1357 ; -----------------------------------------
1358 ; function start_task
1359 ; -----------------------------------------
01B1 1360 _start_task:
1361 ; genReceive
01B1 AA 83 1362 mov r2,dph
01B3 E5 82 1363 mov a,dpl
01B5 90s00r04 1364 mov dptr,#_start_task_f_1_1
01B8 F0 1365 movx @dptr,a
01B9 A3 1366 inc dptr
01BA EA 1367 mov a,r2
01BB F0 1368 movx @dptr,a
01BC 1369 C$rt_task.c$429$1$1 ==.
1370 ;rt_task.c:429: if (tasknum >= TASKS)
1371 ; genAssign
01BC 90s00r03 1372 mov dptr,#_start_task_PARM_2
01BF E0 1373 movx a,@dptr
1374 ; genCmpLt
1375 ; genCmp
1376 ; Peephole 106 removed redundant mov
01C0 FA 1377 mov r2,a
01C1 C3 1378 clr c
01C2 64 80 1379 xrl a,#0x80
01C4 94 83 1380 subb a,#0x83
1381 ; genIfxJump
1382 ; Peephole 112.b changed ljmp to sjmp
1383 ; Peephole 160 removed sjmp by inverse jump logic
01C6 40 04 1384 jc 00102$
01C8 1385 00110$:
01C8 1386 C$rt_task.c$430$1$1 ==.
1387 ;rt_task.c:430: return FAILED;
1388 ; genRet
01C8 75 82 01 1389 mov dpl,#0x01
1390 ; Peephole 251.a replaced ljmp to ret with ret
01CB 22 1391 ret
01CC 1392 00102$:
01CC 1393 C$rt_task.c$432$2$2 ==.
1394 ;rt_task.c:432: BEGIN_CRITICAL;
1395 ; genIfx
1396 ; genIfxJump
1397 ; Peephole 111 removed ljmp by inverse jump logic
1398 ; genAssign
1399 ; Peephole 250.a using atomic test and clear
01CC 10 AF 02 1400 jbc _EA,00111$
01CF 80 04 1401 sjmp 00104$
01D1 1402 00111$:
1403 ; genAssign
01D1 D2*02 1404 setb _start_task_EA_local_1_1
1405 ; Peephole 112.b changed ljmp to sjmp
01D3 80 02 1406 sjmp 00105$
01D5 1407 00104$:
1408 ; genAssign
01D5 C2*02 1409 clr _start_task_EA_local_1_1
01D7 1410 00105$:
01D7 1411 C$rt_task.c$433$1$1 ==.
1412 ;rt_task.c:433: csp = start_stack[tasknum];
1413 ; genPlus
1414 ; Peephole 236.g used r2 instead of ar2
01D7 EA 1415 mov a,r2
01D8 24r91 1416 add a,#_start_stack
01DA F8 1417 mov r0,a
1418 ; genPointerGet
1419 ; genNearPointerGet
01DB 86 00 1420 mov ar0,@r0
01DD 1421 C$rt_task.c$434$1$1 ==.
1422 ;rt_task.c:434: stack_save[tasknum] = (STACK_PTR_TYPE)csp+16 ;
1423 ; genPlus
1424 ; Peephole 236.g used r2 instead of ar2
01DD EA 1425 mov a,r2
01DE 24r85 1426 add a,#_stack_save
01E0 F9 1427 mov r1,a
1428 ; genPlus
01E1 74 10 1429 mov a,#0x10
1430 ; Peephole 236.a used r0 instead of ar0
01E3 28 1431 add a,r0
1432 ; genPointerSet
1433 ; genNearPointerSet
01E4 A7 E0 1434 mov @r1,acc
01E6 1435 C$rt_task.c$436$1$1 ==.
1436 ;rt_task.c:436: fp = (int)&end_run_task;
1437 ; genCast
01E6 7Br50 1438 mov r3,#_end_run_task
01E8 7Cs02 1439 mov r4,#(_end_run_task >> 8)
01EA 1440 C$rt_task.c$437$1$1 ==.
1441 ;rt_task.c:437: *csp++ = (char)(fp & 0xff);
1442 ; genAnd
01EA 8B 05 1443 mov ar5,r3
01EC 7E 00 1444 mov r6,#0x00
1445 ; genCast
1446 ; genPointerSet
1447 ; genNearPointerSet
01EE A6 05 1448 mov @r0,ar5
01F0 08 1449 inc r0
01F1 1450 C$rt_task.c$438$1$1 ==.
1451 ;rt_task.c:438: *csp++ = (char)(fp >> 8) ;
1452 ; genRightShift
1453 ; genSignedRightShift
1454 ; genRightShiftLiteral
1455 ; genrshTwo
01F1 EC 1456 mov a,r4
01F2 FB 1457 mov r3,a
01F3 33 1458 rlc a
01F4 95 E0 1459 subb a,acc
01F6 FC 1460 mov r4,a
1461 ; genCast
1462 ; genPointerSet
1463 ; genNearPointerSet
01F7 A6 03 1464 mov @r0,ar3
01F9 08 1465 inc r0
01FA 1466 C$rt_task.c$440$1$1 ==.
1467 ;rt_task.c:440: fp = (int)f;
1468 ; genAssign
01FA 90s00r04 1469 mov dptr,#_start_task_f_1_1
01FD E0 1470 movx a,@dptr
01FE FB 1471 mov r3,a
01FF A3 1472 inc dptr
0200 E0 1473 movx a,@dptr
0201 FC 1474 mov r4,a
1475 ; genCast
0202 1476 C$rt_task.c$441$1$1 ==.
1477 ;rt_task.c:441: *csp++ = (char)(fp &0xff);
1478 ; genAnd
0202 8B 05 1479 mov ar5,r3
0204 7E 00 1480 mov r6,#0x00
1481 ; genCast
1482 ; genPointerSet
1483 ; genNearPointerSet
0206 A6 05 1484 mov @r0,ar5
0208 08 1485 inc r0
0209 1486 C$rt_task.c$442$1$1 ==.
1487 ;rt_task.c:442: *csp++ = (char)(fp >> 8) ;
1488 ; genRightShift
1489 ; genSignedRightShift
1490 ; genRightShiftLiteral
1491 ; genrshTwo
0209 EC 1492 mov a,r4
020A FB 1493 mov r3,a
020B 33 1494 rlc a
020C 95 E0 1495 subb a,acc
020E FC 1496 mov r4,a
1497 ; genCast
1498 ; genPointerSet
1499 ; genNearPointerSet
020F A6 03 1500 mov @r0,ar3
0211 08 1501 inc r0
0212 1502 C$rt_task.c$446$1$1 ==.
1503 ;rt_task.c:446: *csp++ = 0; /* csp[4] = acc could pass argument here */
1504 ; genPointerSet
1505 ; genNearPointerSet
0212 76 00 1506 mov @r0,#0x00
0214 08 1507 inc r0
0215 1508 C$rt_task.c$447$1$1 ==.
1509 ;rt_task.c:447: *csp++ = 0; /* csp[5] = b */
1510 ; genPointerSet
1511 ; genNearPointerSet
0215 76 00 1512 mov @r0,#0x00
0217 08 1513 inc r0
0218 1514 C$rt_task.c$448$1$1 ==.
1515 ;rt_task.c:448: *csp++ = 0; /* csp[6] = dpl */
1516 ; genPointerSet
1517 ; genNearPointerSet
0218 76 00 1518 mov @r0,#0x00
021A 08 1519 inc r0
021B 1520 C$rt_task.c$449$1$1 ==.
1521 ;rt_task.c:449: *csp++ = 0; /* csp[7] = dph */
1522 ; genPointerSet
1523 ; genNearPointerSet
021B 76 00 1524 mov @r0,#0x00
021D 08 1525 inc r0
021E 1526 C$rt_task.c$450$1$1 ==.
1527 ;rt_task.c:450: *csp++ = 0; /* psw VITAL */
1528 ; genPointerSet
1529 ; genNearPointerSet
021E 76 00 1530 mov @r0,#0x00
0220 08 1531 inc r0
0221 1532 C$rt_task.c$451$1$1 ==.
1533 ;rt_task.c:451: *csp++ = 0; /* csp [9] = r7 */
1534 ; genPointerSet
1535 ; genNearPointerSet
0221 76 00 1536 mov @r0,#0x00
0223 08 1537 inc r0
0224 1538 C$rt_task.c$452$1$1 ==.
1539 ;rt_task.c:452: *csp++ = 0; /* csp [10] = r6 */
1540 ; genPointerSet
1541 ; genNearPointerSet
0224 76 00 1542 mov @r0,#0x00
0226 08 1543 inc r0
0227 1544 C$rt_task.c$453$1$1 ==.
1545 ;rt_task.c:453: *csp++ = 0; /* csp [11] = r5 */
1546 ; genPointerSet
1547 ; genNearPointerSet
0227 76 00 1548 mov @r0,#0x00
0229 08 1549 inc r0
022A 1550 C$rt_task.c$454$1$1 ==.
1551 ;rt_task.c:454: *csp++ = 0; /* csp [12] = r4 */
1552 ; genPointerSet
1553 ; genNearPointerSet
022A 76 00 1554 mov @r0,#0x00
022C 08 1555 inc r0
022D 1556 C$rt_task.c$455$1$1 ==.
1557 ;rt_task.c:455: *csp++ = 0; /* csp [13] = r3 */
1558 ; genPointerSet
1559 ; genNearPointerSet
022D 76 00 1560 mov @r0,#0x00
022F 08 1561 inc r0
0230 1562 C$rt_task.c$456$1$1 ==.
1563 ;rt_task.c:456: *csp++ = 0; /* csp [14] = r2 */
1564 ; genPointerSet
1565 ; genNearPointerSet
0230 76 00 1566 mov @r0,#0x00
0232 08 1567 inc r0
0233 1568 C$rt_task.c$457$1$1 ==.
1569 ;rt_task.c:457: *csp++ = 0; /* csp [15] = r1 */
1570 ; genPointerSet
1571 ; genNearPointerSet
0233 76 00 1572 mov @r0,#0x00
0235 08 1573 inc r0
0236 1574 C$rt_task.c$458$1$1 ==.
1575 ;rt_task.c:458: *csp = 0; /* csp [16] = r0 */
1576 ; genPointerSet
1577 ; genNearPointerSet
0236 76 00 1578 mov @r0,#0x00
0238 1579 C$rt_task.c$462$1$1 ==.
1580 ;rt_task.c:462: ready |= TASK_BIT(tasknum);
1581 ; genLeftShift
0238 8A F0 1582 mov b,r2
023A 05 F0 1583 inc b
023C 74 01 1584 mov a,#0x01
023E 80 02 1585 sjmp 00114$
0240 1586 00112$:
0240 25 E0 1587 add a,acc
0242 1588 00114$:
0242 D5 F0 FB 1589 djnz b,00112$
1590 ; genOr
1591 ; Peephole 105 removed redundant mov
0245 FA 1592 mov r2,a
0246 42*00 1593 orl _ready,a
0248 1594 C$rt_task.c$463$2$5 ==.
1595 ;rt_task.c:463: END_CRITICAL;
1596 ; genAssign
0248 A2*02 1597 mov c,_start_task_EA_local_1_1
024A 92 AF 1598 mov _EA,c
024C 1599 C$rt_task.c$464$1$1 ==.
1600 ;rt_task.c:464: return STARTED;
1601 ; genRet
024C 75 82 02 1602 mov dpl,#0x02
024F 1603 00106$:
024F 1604 C$rt_task.c$465$1$1 ==.
024F 1605 XG$start_task$0$0 ==.
024F 22 1606 ret
1607 ;------------------------------------------------------------
1608 ;Allocation info for local variables in function 'end_run_task'
1609 ;------------------------------------------------------------
1610 ;------------------------------------------------------------
0250 1611 G$end_run_task$0$0 ==.
0250 1612 C$rt_task.c$471$1$1 ==.
1613 ;rt_task.c:471: void end_run_task(void)
1614 ; -----------------------------------------
1615 ; function end_run_task
1616 ; -----------------------------------------
0250 1617 _end_run_task:
0250 1618 C$rt_task.c$475$2$2 ==.
1619 ;rt_task.c:475: BEGIN_CRITICAL;
1620 ; genIfx
1621 ; genIfxJump
1622 ; Peephole 111 removed ljmp by inverse jump logic
1623 ; genAssign
1624 ; Peephole 250.a using atomic test and clear
0250 10 AF 02 1625 jbc _EA,00111$
0253 80 04 1626 sjmp 00102$
0255 1627 00111$:
1628 ; genAssign
0255 D2*03 1629 setb _end_run_task_EA_local_1_1
1630 ; Peephole 112.b changed ljmp to sjmp
0257 80 02 1631 sjmp 00103$
0259 1632 00102$:
1633 ; genAssign
0259 C2*03 1634 clr _end_run_task_EA_local_1_1
025B 1635 00103$:
025B 1636 C$rt_task.c$476$1$1 ==.
1637 ;rt_task.c:476: ready &= ~TASK_BIT(run);
1638 ; genLeftShift
025B 85*01 F0 1639 mov b,_run
025E 05 F0 1640 inc b
0260 74 01 1641 mov a,#0x01
0262 80 02 1642 sjmp 00114$
0264 1643 00112$:
0264 25 E0 1644 add a,acc
0266 1645 00114$:
0266 D5 F0 FB 1646 djnz b,00112$
1647 ; genCpl
1648 ; Peephole 105 removed redundant mov
1649 ; genAnd
1650 ; Peephole 105 removed redundant mov
1651 ; Peephole 184 removed redundant mov
0269 F4 1652 cpl a
026A FA 1653 mov r2,a
026B 52*00 1654 anl _ready,a
026D 1655 C$rt_task.c$477$1$1 ==.
1656 ;rt_task.c:477: task_masks[run] = 0; /* Stop any further signals making task ready to run */
1657 ; genPlus
026D E5*01 1658 mov a,_run
026F 24r8B 1659 add a,#_task_masks
1660 ; genPointerSet
1661 ; genNearPointerSet
1662 ; Peephole 239 used a instead of acc
0271 F8 1663 mov r0,a
0272 76 00 1664 mov @r0,#0x00
0274 1665 C$rt_task.c$478$1$1 ==.
1666 ;rt_task.c:478: task_timer[run] = 0; /* kill off pending task timeout */
1667 ; genPlus
0274 E5*01 1668 mov a,_run
0276 24r8E 1669 add a,#_task_timer
1670 ; genPointerSet
1671 ; genNearPointerSet
1672 ; Peephole 239 used a instead of acc
0278 F8 1673 mov r0,a
0279 76 00 1674 mov @r0,#0x00
027B 1675 C$rt_task.c$479$2$5 ==.
1676 ;rt_task.c:479: END_CRITICAL;
1677 ; genAssign
027B A2*03 1678 mov c,_end_run_task_EA_local_1_1
027D 92 AF 1679 mov _EA,c
027F 1680 C$rt_task.c$480$1$1 ==.
1681 ;rt_task.c:480: reschedule();
1682 ; genCall
027F 12s01r52 1683 lcall _reschedule
0282 1684 C$rt_task.c$482$1$1 ==.
1685 ;rt_task.c:482: while(1);
0282 1686 00105$:
1687 ; Peephole 112.b changed ljmp to sjmp
0282 80 FE 1688 sjmp 00105$
0284 1689 00107$:
0284 1690 C$rt_task.c$484$1$1 ==.
0284 1691 XG$end_run_task$0$0 ==.
0284 22 1692 ret
1693 ;------------------------------------------------------------
1694 ;Allocation info for local variables in function 'wait_timed'
1695 ;------------------------------------------------------------
1696 ;ticks Allocated with name '_wait_timed_PARM_2'
1697 ;signal Allocated with name '_wait_timed_signal_1_1'
1698 ;------------------------------------------------------------
0285 1699 G$wait_timed$0$0 ==.
0285 1700 C$rt_task.c$489$1$1 ==.
1701 ;rt_task.c:489: char wait_timed(char signal,char ticks)
1702 ; -----------------------------------------
1703 ; function wait_timed
1704 ; -----------------------------------------
0285 1705 _wait_timed:
1706 ; genReceive
0285 E5 82 1707 mov a,dpl
0287 90s00r07 1708 mov dptr,#_wait_timed_signal_1_1
028A F0 1709 movx @dptr,a
028B 1710 C$rt_task.c$492$2$2 ==.
1711 ;rt_task.c:492: BEGIN_CRITICAL;
1712 ; genIfx
1713 ; genIfxJump
1714 ; Peephole 111 removed ljmp by inverse jump logic
1715 ; genAssign
1716 ; Peephole 250.a using atomic test and clear
028B 10 AF 02 1717 jbc _EA,00107$
028E 80 04 1718 sjmp 00102$
0290 1719 00107$:
1720 ; genAssign
0290 D2*04 1721 setb _wait_timed_EA_local_1_1
1722 ; Peephole 112.b changed ljmp to sjmp
0292 80 02 1723 sjmp 00103$
0294 1724 00102$:
1725 ; genAssign
0294 C2*04 1726 clr _wait_timed_EA_local_1_1
0296 1727 00103$:
0296 1728 C$rt_task.c$493$1$1 ==.
1729 ;rt_task.c:493: ready &= ~TASK_BIT(run); /* this task is going to sleep */
1730 ; genLeftShift
0296 85*01 F0 1731 mov b,_run
0299 05 F0 1732 inc b
029B 74 01 1733 mov a,#0x01
029D 80 02 1734 sjmp 00110$
029F 1735 00108$:
029F 25 E0 1736 add a,acc
02A1 1737 00110$:
02A1 D5 F0 FB 1738 djnz b,00108$
1739 ; genCpl
1740 ; Peephole 105 removed redundant mov
1741 ; genAnd
1742 ; Peephole 105 removed redundant mov
1743 ; Peephole 184 removed redundant mov
02A4 F4 1744 cpl a
02A5 FA 1745 mov r2,a
02A6 52*00 1746 anl _ready,a
02A8 1747 C$rt_task.c$494$1$1 ==.
1748 ;rt_task.c:494: task_timer[run] = ticks;
1749 ; genPlus
02A8 E5*01 1750 mov a,_run
02AA 24r8E 1751 add a,#_task_timer
02AC F8 1752 mov r0,a
1753 ; genAssign
02AD 90s00r06 1754 mov dptr,#_wait_timed_PARM_2
02B0 E0 1755 movx a,@dptr
1756 ; genPointerSet
1757 ; genNearPointerSet
1758 ; Peephole 192 used a instead of ar2 as source
02B1 FA 1759 mov r2,a
02B2 F6 1760 mov @r0,a
02B3 1761 C$rt_task.c$495$1$1 ==.
1762 ;rt_task.c:495: task_masks[run] = signal; /* accept these signals as a validto wait on */
1763 ; genPlus
02B3 E5*01 1764 mov a,_run
02B5 24r8B 1765 add a,#_task_masks
02B7 F8 1766 mov r0,a
1767 ; genAssign
02B8 90s00r07 1768 mov dptr,#_wait_timed_signal_1_1
02BB E0 1769 movx a,@dptr
1770 ; genPointerSet
1771 ; genNearPointerSet
1772 ; Peephole 192 used a instead of ar2 as source
02BC FA 1773 mov r2,a
02BD F6 1774 mov @r0,a
02BE 1775 C$rt_task.c$496$2$5 ==.
1776 ;rt_task.c:496: END_CRITICAL;
1777 ; genAssign
02BE A2*04 1778 mov c,_wait_timed_EA_local_1_1
02C0 92 AF 1779 mov _EA,c
02C2 1780 C$rt_task.c$497$1$1 ==.
1781 ;rt_task.c:497: reschedule();
1782 ; genCall
02C2 12s01r52 1783 lcall _reschedule
02C5 1784 C$rt_task.c$498$1$1 ==.
1785 ;rt_task.c:498: return task_signals[run];
1786 ; genPlus
02C5 E5*01 1787 mov a,_run
02C7 24r88 1788 add a,#_task_signals
02C9 F8 1789 mov r0,a
1790 ; genPointerGet
1791 ; genNearPointerGet
02CA 86 02 1792 mov ar2,@r0
1793 ; genRet
02CC 8A 82 1794 mov dpl,r2
02CE 1795 00104$:
02CE 1796 C$rt_task.c$499$1$1 ==.
02CE 1797 XG$wait_timed$0$0 ==.
02CE 22 1798 ret
1799 ;------------------------------------------------------------
1800 ;Allocation info for local variables in function 'sleep'
1801 ;------------------------------------------------------------
1802 ;ticks Allocated with name '_sleep_ticks_1_1'
1803 ;------------------------------------------------------------
02CF 1804 G$sleep$0$0 ==.
02CF 1805 C$rt_task.c$502$1$1 ==.
1806 ;rt_task.c:502: void sleep(char ticks)
1807 ; -----------------------------------------
1808 ; function sleep
1809 ; -----------------------------------------
02CF 1810 _sleep:
1811 ; genReceive
02CF E5 82 1812 mov a,dpl
02D1 90s00r08 1813 mov dptr,#_sleep_ticks_1_1
02D4 F0 1814 movx @dptr,a
02D5 1815 C$rt_task.c$507$1$1 ==.
1816 ;rt_task.c:507: if (ticks)
1817 ; genAssign
02D5 90s00r08 1818 mov dptr,#_sleep_ticks_1_1
02D8 E0 1819 movx a,@dptr
1820 ; genIfx
1821 ; Peephole 105 removed redundant mov
02D9 FA 1822 mov r2,a
1823 ; genIfxJump
02DA 70 03 1824 jnz 00120$
02DC 02s03r67 1825 ljmp 00111$
02DF 1826 00120$:
02DF 1827 C$rt_task.c$509$3$3 ==.
1828 ;rt_task.c:509: BEGIN_CRITICAL;
1829 ; genIfx
1830 ; genIfxJump
1831 ; Peephole 111 removed ljmp by inverse jump logic
1832 ; genAssign
1833 ; Peephole 250.a using atomic test and clear
02DF 10 AF 02 1834 jbc _EA,00121$
02E2 80 04 1835 sjmp 00102$
02E4 1836 00121$:
1837 ; genAssign
02E4 D2*05 1838 setb _sleep_EA_local_1_1
1839 ; Peephole 112.b changed ljmp to sjmp
02E6 80 02 1840 sjmp 00103$
02E8 1841 00102$:
1842 ; genAssign
02E8 C2*05 1843 clr _sleep_EA_local_1_1
02EA 1844 00103$:
02EA 1845 C$rt_task.c$510$2$2 ==.
1846 ;rt_task.c:510: ready &= ~TASK_BIT(run); /* this task is going to sleep */
1847 ; genLeftShift
02EA 85*01 F0 1848 mov b,_run
02ED 05 F0 1849 inc b
02EF 74 01 1850 mov a,#0x01
02F1 80 02 1851 sjmp 00124$
02F3 1852 00122$:
02F3 25 E0 1853 add a,acc
02F5 1854 00124$:
02F5 D5 F0 FB 1855 djnz b,00122$
1856 ; genCpl
1857 ; Peephole 105 removed redundant mov
1858 ; genAnd
1859 ; Peephole 105 removed redundant mov
1860 ; Peephole 184 removed redundant mov
02F8 F4 1861 cpl a
02F9 FA 1862 mov r2,a
02FA 52*00 1863 anl _ready,a
02FC 1864 C$rt_task.c$511$2$2 ==.
1865 ;rt_task.c:511: task_timer[run] = ticks;
1866 ; genPlus
02FC E5*01 1867 mov a,_run
02FE 24r8E 1868 add a,#_task_timer
0300 F8 1869 mov r0,a
1870 ; genAssign
0301 90s00r08 1871 mov dptr,#_sleep_ticks_1_1
0304 E0 1872 movx a,@dptr
1873 ; genPointerSet
1874 ; genNearPointerSet
1875 ; Peephole 192 used a instead of ar2 as source
0305 FA 1876 mov r2,a
0306 F6 1877 mov @r0,a
0307 1878 C$rt_task.c$512$2$2 ==.
1879 ;rt_task.c:512: task_masks[run] = TIMER_SIG; /* accept this signal as a valid one to wait on */
1880 ; genPlus
0307 E5*01 1881 mov a,_run
0309 24r8B 1882 add a,#_task_masks
1883 ; genPointerSet
1884 ; genNearPointerSet
1885 ; Peephole 239 used a instead of acc
030B F8 1886 mov r0,a
030C 76 80 1887 mov @r0,#0x80
030E 1888 C$rt_task.c$513$2$2 ==.
1889 ;rt_task.c:513: task_signals[run] &=~TIMER_SIG;
1890 ; genPlus
030E E5*01 1891 mov a,_run
0310 24r88 1892 add a,#_task_signals
0312 F8 1893 mov r0,a
1894 ; genPlus
0313 E5*01 1895 mov a,_run
0315 24r88 1896 add a,#_task_signals
0317 F9 1897 mov r1,a
1898 ; genPointerGet
1899 ; genNearPointerGet
0318 87 02 1900 mov ar2,@r1
1901 ; genAnd
031A 74 7F 1902 mov a,#0x7F
031C 5A 1903 anl a,r2
1904 ; genPointerSet
1905 ; genNearPointerSet
031D A6 E0 1906 mov @r0,acc
031F 1907 C$rt_task.c$515$2$2 ==.
1908 ;rt_task.c:515: do {
031F 1909 00107$:
031F 1910 C$rt_task.c$516$4$7 ==.
1911 ;rt_task.c:516: END_CRITICAL;
1912 ; genAssign
031F A2*05 1913 mov c,_sleep_EA_local_1_1
0321 92 AF 1914 mov _EA,c
0323 1915 C$rt_task.c$517$3$6 ==.
1916 ;rt_task.c:517: reschedule();
1917 ; genCall
0323 12s01r52 1918 lcall _reschedule
0326 1919 C$rt_task.c$518$4$8 ==.
1920 ;rt_task.c:518: BEGIN_CRITICAL;
1921 ; genIfx
1922 ; genIfxJump
1923 ; Peephole 111 removed ljmp by inverse jump logic
1924 ; genAssign
1925 ; Peephole 250.a using atomic test and clear
0326 10 AF 02 1926 jbc _EA,00125$
0329 80 04 1927 sjmp 00105$
032B 1928 00125$:
1929 ; genAssign
032B D2*05 1930 setb _sleep_EA_local_1_1
1931 ; Peephole 112.b changed ljmp to sjmp
032D 80 02 1932 sjmp 00108$
032F 1933 00105$:
1934 ; genAssign
032F C2*05 1935 clr _sleep_EA_local_1_1
0331 1936 00108$:
0331 1937 C$rt_task.c$520$2$2 ==.
1938 ;rt_task.c:520: while((task_signals[run] & TIMER_SIG) == 0);
1939 ; genPlus
0331 E5*01 1940 mov a,_run
0333 24r88 1941 add a,#_task_signals
0335 F8 1942 mov r0,a
1943 ; genPointerGet
1944 ; genNearPointerGet
0336 86 02 1945 mov ar2,@r0
1946 ; genAnd
0338 53 02 80 1947 anl ar2,#0x80
1948 ; genCmpEq
033B BA 00 02 1949 cjne r2,#0x00,00126$
1950 ; Peephole 112.b changed ljmp to sjmp
033E 80 DF 1951 sjmp 00107$
0340 1952 00126$:
0340 1953 C$rt_task.c$521$2$2 ==.
1954 ;rt_task.c:521: task_signals[run] &= ~(TIMER_SIG);
1955 ; genPlus
0340 E5*01 1956 mov a,_run
0342 24r88 1957 add a,#_task_signals
0344 F8 1958 mov r0,a
1959 ; genPlus
0345 E5*01 1960 mov a,_run
0347 24r88 1961 add a,#_task_signals
0349 F9 1962 mov r1,a
1963 ; genPointerGet
1964 ; genNearPointerGet
034A 87 02 1965 mov ar2,@r1
1966 ; genAnd
034C 74 7F 1967 mov a,#0x7F
034E 5A 1968 anl a,r2
1969 ; genPointerSet
1970 ; genNearPointerSet
034F A6 E0 1971 mov @r0,acc
0351 1972 C$rt_task.c$522$2$2 ==.
1973 ;rt_task.c:522: task_masks[run] &= ~TIMER_SIG; /* accept this signal as a valid one to wait on */
1974 ; genPlus
0351 E5*01 1975 mov a,_run
0353 24r8B 1976 add a,#_task_masks
0355 F8 1977 mov r0,a
1978 ; genPlus
0356 E5*01 1979 mov a,_run
0358 24r8B 1980 add a,#_task_masks
035A F9 1981 mov r1,a
1982 ; genPointerGet
1983 ; genNearPointerGet
035B 87 02 1984 mov ar2,@r1
1985 ; genAnd
035D 74 7F 1986 mov a,#0x7F
035F 5A 1987 anl a,r2
1988 ; genPointerSet
1989 ; genNearPointerSet
0360 A6 E0 1990 mov @r0,acc
0362 1991 C$rt_task.c$523$3$11 ==.
1992 ;rt_task.c:523: END_CRITICAL;
1993 ; genAssign
0362 A2*05 1994 mov c,_sleep_EA_local_1_1
0364 92 AF 1995 mov _EA,c
1996 ; Peephole 112.b changed ljmp to sjmp
1997 ; Peephole 251.b replaced sjmp to ret with ret
0366 22 1998 ret
0367 1999 00111$:
0367 2000 C$rt_task.c$527$2$12 ==.
2001 ;rt_task.c:527: reschedule();
2002 ; genCall
0367 2003 C$rt_task.c$530$1$1 ==.
0367 2004 XG$sleep$0$0 ==.
2005 ; Peephole 253.c replaced lcall with ljmp
0367 02s01r52 2006 ljmp _reschedule
036A 2007 00113$:
036A 22 2008 ret
2009 ;------------------------------------------------------------
2010 ;Allocation info for local variables in function 'clear_signal'
2011 ;------------------------------------------------------------
2012 ;pattern Allocated with name '_clear_signal_pattern_1_1'
2013 ;------------------------------------------------------------
036B 2014 G$clear_signal$0$0 ==.
036B 2015 C$rt_task.c$533$1$1 ==.
2016 ;rt_task.c:533: void clear_signal(char pattern)
2017 ; -----------------------------------------
2018 ; function clear_signal
2019 ; -----------------------------------------
036B 2020 _clear_signal:
2021 ; genReceive
036B E5 82 2022 mov a,dpl
036D 90s00r09 2023 mov dptr,#_clear_signal_pattern_1_1
0370 F0 2024 movx @dptr,a
0371 2025 C$rt_task.c$536$2$2 ==.
2026 ;rt_task.c:536: BEGIN_CRITICAL;
2027 ; genIfx
2028 ; genIfxJump
2029 ; Peephole 111 removed ljmp by inverse jump logic
2030 ; genAssign
2031 ; Peephole 250.a using atomic test and clear
0371 10 AF 02 2032 jbc _EA,00107$
0374 80 04 2033 sjmp 00102$
0376 2034 00107$:
2035 ; genAssign
0376 D2*06 2036 setb _clear_signal_EA_local_1_1
2037 ; Peephole 112.b changed ljmp to sjmp
0378 80 02 2038 sjmp 00103$
037A 2039 00102$:
2040 ; genAssign
037A C2*06 2041 clr _clear_signal_EA_local_1_1
037C 2042 00103$:
037C 2043 C$rt_task.c$537$1$1 ==.
2044 ;rt_task.c:537: task_signals[run] &= ~(pattern);
2045 ; genPlus
037C E5*01 2046 mov a,_run
037E 24r88 2047 add a,#_task_signals
0380 F8 2048 mov r0,a
2049 ; genPlus
0381 E5*01 2050 mov a,_run
0383 24r88 2051 add a,#_task_signals
0385 F9 2052 mov r1,a
2053 ; genPointerGet
2054 ; genNearPointerGet
0386 87 02 2055 mov ar2,@r1
2056 ; genAssign
0388 90s00r09 2057 mov dptr,#_clear_signal_pattern_1_1
038B E0 2058 movx a,@dptr
2059 ; genCpl
2060 ; Peephole 105 removed redundant mov
2061 ; genAnd
2062 ; Peephole 105 removed redundant mov
2063 ; Peephole 184 removed redundant mov
038C F4 2064 cpl a
038D FB 2065 mov r3,a
038E 5A 2066 anl a,r2
2067 ; genPointerSet
2068 ; genNearPointerSet
038F A6 E0 2069 mov @r0,acc
0391 2070 C$rt_task.c$538$2$5 ==.
2071 ;rt_task.c:538: END_CRITICAL;
2072 ; genAssign
0391 A2*06 2073 mov c,_clear_signal_EA_local_1_1
0393 92 AF 2074 mov _EA,c
0395 2075 00104$:
0395 2076 C$rt_task.c$539$2$5 ==.
0395 2077 XG$clear_signal$0$0 ==.
0395 22 2078 ret
2079 ;------------------------------------------------------------
2080 ;Allocation info for local variables in function 'signal'
2081 ;------------------------------------------------------------
2082 ;pattern Allocated with name '_signal_PARM_2'
2083 ;task Allocated with name '_signal_task_1_1'
2084 ;------------------------------------------------------------
0396 2085 G$signal$0$0 ==.
0396 2086 C$rt_task.c$544$2$5 ==.
2087 ;rt_task.c:544: void signal(char task,char pattern)
2088 ; -----------------------------------------
2089 ; function signal
2090 ; -----------------------------------------
0396 2091 _signal:
2092 ; genReceive
0396 E5 82 2093 mov a,dpl
0398 90s00r0B 2094 mov dptr,#_signal_task_1_1
039B F0 2095 movx @dptr,a
039C 2096 C$rt_task.c$547$2$2 ==.
2097 ;rt_task.c:547: BEGIN_CRITICAL;
2098 ; genIfx
2099 ; genIfxJump
2100 ; Peephole 111 removed ljmp by inverse jump logic
2101 ; genAssign
2102 ; Peephole 250.a using atomic test and clear
039C 10 AF 02 2103 jbc _EA,00110$
039F 80 04 2104 sjmp 00102$
03A1 2105 00110$:
2106 ; genAssign
03A1 D2*07 2107 setb _signal_EA_local_1_1
2108 ; Peephole 112.b changed ljmp to sjmp
03A3 80 02 2109 sjmp 00103$
03A5 2110 00102$:
2111 ; genAssign
03A5 C2*07 2112 clr _signal_EA_local_1_1
03A7 2113 00103$:
03A7 2114 C$rt_task.c$549$1$1 ==.
2115 ;rt_task.c:549: INT_SIGNAL(task,pattern);
2116 ; genAssign
03A7 90s00r0B 2117 mov dptr,#_signal_task_1_1
03AA E0 2118 movx a,@dptr
2119 ; genPlus
2120 ; Peephole 177.b removed redundant mov
03AB FA 2121 mov r2,a
03AC 24r88 2122 add a,#_task_signals
03AE F8 2123 mov r0,a
2124 ; genPlus
2125 ; Peephole 236.g used r2 instead of ar2
03AF EA 2126 mov a,r2
03B0 24r88 2127 add a,#_task_signals
03B2 F9 2128 mov r1,a
2129 ; genPointerGet
2130 ; genNearPointerGet
03B3 87 03 2131 mov ar3,@r1
2132 ; genAssign
03B5 90s00r0A 2133 mov dptr,#_signal_PARM_2
03B8 E0 2134 movx a,@dptr
2135 ; genOr
2136 ; Peephole 105 removed redundant mov
03B9 FC 2137 mov r4,a
03BA 4B 2138 orl a,r3
2139 ; genPointerSet
2140 ; genNearPointerSet
03BB A6 E0 2141 mov @r0,acc
2142 ; genPlus
2143 ; Peephole 236.g used r2 instead of ar2
03BD EA 2144 mov a,r2
03BE 24r88 2145 add a,#_task_signals
03C0 F8 2146 mov r0,a
2147 ; genPointerGet
2148 ; genNearPointerGet
03C1 86 03 2149 mov ar3,@r0
2150 ; genPlus
2151 ; Peephole 236.g used r2 instead of ar2
03C3 EA 2152 mov a,r2
03C4 24r8B 2153 add a,#_task_masks
03C6 F8 2154 mov r0,a
2155 ; genPointerGet
2156 ; genNearPointerGet
03C7 86 04 2157 mov ar4,@r0
2158 ; genAnd
03C9 EC 2159 mov a,r4
03CA 5B 2160 anl a,r3
2161 ; genIfx
2162 ; genIfxJump
2163 ; Peephole 110 removed ljmp by inverse jump logic
03CB 60 10 2164 jz 00105$
03CD 2165 00111$:
2166 ; genLeftShift
03CD 8A F0 2167 mov b,r2
03CF 05 F0 2168 inc b
03D1 74 01 2169 mov a,#0x01
03D3 80 02 2170 sjmp 00114$
03D5 2171 00112$:
03D5 25 E0 2172 add a,acc
03D7 2173 00114$:
03D7 D5 F0 FB 2174 djnz b,00112$
2175 ; genOr
2176 ; Peephole 105 removed redundant mov
03DA FA 2177 mov r2,a
03DB 42*00 2178 orl _ready,a
03DD 2179 00105$:
03DD 2180 C$rt_task.c$551$2$6 ==.
2181 ;rt_task.c:551: END_CRITICAL;
2182 ; genAssign
03DD A2*07 2183 mov c,_signal_EA_local_1_1
03DF 92 AF 2184 mov _EA,c
03E1 2185 00106$:
03E1 2186 C$rt_task.c$552$2$6 ==.
03E1 2187 XG$signal$0$0 ==.
03E1 22 2188 ret
2189 ;------------------------------------------------------------
2190 ;Allocation info for local variables in function 'rt_system_init'
2191 ;------------------------------------------------------------
2192 ;------------------------------------------------------------
03E2 2193 G$rt_system_init$0$0 ==.
03E2 2194 C$rt_task.c$559$2$6 ==.
2195 ;rt_task.c:559: void rt_system_init(void)
2196 ; -----------------------------------------
2197 ; function rt_system_init
2198 ; -----------------------------------------
03E2 2199 _rt_system_init:
03E2 2200 C$rt_task.c$562$1$1 ==.
2201 ;rt_task.c:562: AUXR = M0 |XRS1 | XRS0 ;
2202 ; genAssign
03E2 75 8E 2C 2203 mov _AUXR,#0x2C
03E5 2204 C$rt_task.c$563$1$1 ==.
2205 ;rt_task.c:563: CKCON = WdX2 | PcaX2 | SiX2 | T2X2 | T0X2 | X2; /* T1X2 bit is '0' to double UART speed */
2206 ; genAssign
03E5 75 8F 7B 2207 mov _CKCON,#0x7B
03E8 2208 C$rt_task.c$565$1$1 ==.
2209 ;rt_task.c:565: TMOD = 0x20; /* timer1 mode2 timer0 mode0 */
2210 ; genAssign
03E8 75 89 20 2211 mov _TMOD,#0x20
03EB 2212 C$rt_task.c$567$1$1 ==.
2213 ;rt_task.c:567: EA = 0;
2214 ; genAssign
03EB C2 AF 2215 clr _EA
03ED 2216 00101$:
03ED 2217 C$rt_task.c$570$1$1 ==.
03ED 2218 XG$rt_system_init$0$0 ==.
03ED 22 2219 ret
2220 .area CSEG (CODE)
03EE 2221 G$priotab$0$0 == .
03EE 2222 _priotab:
03EE 00 2223 .db #0x00
03EF 00 2224 .db #0x00
03F0 01 2225 .db #0x01
03F1 01 2226 .db #0x01
03F2 02 2227 .db #0x02
03F3 02 2228 .db #0x02
03F4 02 2229 .db #0x02
03F5 02 2230 .db #0x02
03F6 03 2231 .db #0x03
03F7 03 2232 .db #0x03
03F8 03 2233 .db #0x03
03F9 03 2234 .db #0x03
03FA 03 2235 .db #0x03
03FB 03 2236 .db #0x03
03FC 03 2237 .db #0x03
03FD 03 2238 .db #0x03
03FE 00 2239 .db #0x00
03FF 00 2240 .db #0x00
0400 01 2241 .db #0x01
0401 00 2242 .db #0x00
0402 02 2243 .db #0x02
0403 00 2244 .db #0x00
0404 01 2245 .db #0x01
0405 01 2246 .db #0x01
0406 03 2247 .db #0x03
0407 00 2248 .db #0x00
0408 01 2249 .db #0x01
0409 01 2250 .db #0x01
040A 02 2251 .db #0x02
040B 02 2252 .db #0x02
040C 02 2253 .db #0x02
040D 02 2254 .db #0x02
040E 00 2255 .db #0x00
040F 00 2256 .db #0x00
0410 01 2257 .db #0x01
0411 01 2258 .db #0x01
0412 02 2259 .db #0x02
0413 02 2260 .db #0x02
0414 02 2261 .db #0x02
0415 00 2262 .db #0x00
0416 03 2263 .db #0x03
0417 03 2264 .db #0x03
0418 03 2265 .db #0x03
0419 00 2266 .db #0x00
041A 03 2267 .db #0x03
041B 00 2268 .db #0x00
041C 01 2269 .db #0x01
041D 01 2270 .db #0x01
041E 00 2271 .db #0x00
041F 00 2272 .db #0x00
0420 01 2273 .db #0x01
0421 00 2274 .db #0x00
0422 02 2275 .db #0x02
0423 00 2276 .db #0x00
0424 01 2277 .db #0x01
0425 02 2278 .db #0x02
0426 03 2279 .db #0x03
0427 00 2280 .db #0x00
0428 01 2281 .db #0x01
0429 03 2282 .db #0x03
042A 02 2283 .db #0x02
042B 03 2284 .db #0x03
042C 03 2285 .db #0x03
042D 00 2286 .db #0x00
2287 .area XINIT (CODE)