;--------------------------------------------------------
; File Created by SDCC : FreeWare ANSI-C Compiler
; Version 2.4.4 #831 (Sep 8 2004)
; This file generated Sat Sep 18 08:25:04 2004
;--------------------------------------------------------
.module rt_task
.optsdcc -mmcs51 --model-large
;--------------------------------------------------------
; Public variables in this module
;--------------------------------------------------------
.globl _priotab
.globl _TF1
.globl _TR1
.globl _TF0
.globl _TR0
.globl _IE1
.globl _IT1
.globl _IE0
.globl _IT0
.globl _T2CON_7
.globl _T2CON_6
.globl _T2CON_5
.globl _T2CON_4
.globl _T2CON_3
.globl _T2CON_2
.globl _T2CON_1
.globl _T2CON_0
.globl _TF2
.globl _EXF2
.globl _RCLK
.globl _TCLK
.globl _EXEN2
.globl _TR2
.globl _C_T2
.globl _CP_RL2
.globl _SM0
.globl _SM1
.globl _SM2
.globl _REN
.globl _TB8
.globl _RB8
.globl _TI
.globl _RI
.globl _CY
.globl _AC
.globl _F0
.globl _RS1
.globl _RS0
.globl _OV
.globl _F1
.globl _P
.globl _P5_7
.globl _P5_6
.globl _P5_5
.globl _P5_4
.globl _P5_3
.globl _P5_2
.globl _P5_1
.globl _P5_0
.globl _P4_7
.globl _P4_6
.globl _P4_5
.globl _P4_4
.globl _P4_3
.globl _P4_2
.globl _P4_1
.globl _P4_0
.globl _RD
.globl _WR
.globl _T1
.globl _T0
.globl _INT1
.globl _INT0
.globl _TXD0
.globl _TXD
.globl _RXD0
.globl _RXD
.globl _P3_7
.globl _P3_6
.globl _P3_5
.globl _P3_4
.globl _P3_3
.globl _P3_2
.globl _P3_1
.globl _P3_0
.globl _P2_7
.globl _P2_6
.globl _P2_5
.globl _P2_4
.globl _P2_3
.globl _P2_2
.globl _P2_1
.globl _P2_0
.globl _P1_7
.globl _P1_6
.globl _P1_5
.globl _P1_4
.globl _P1_3
.globl _P1_2
.globl _P1_1
.globl _P1_0
.globl _P0_7
.globl _P0_6
.globl _P0_5
.globl _P0_4
.globl _P0_3
.globl _P0_2
.globl _P0_1
.globl _P0_0
.globl _PPC
.globl _PT2
.globl _PS
.globl _PT1
.globl _PX1
.globl _PT0
.globl _PX0
.globl _EA
.globl _EC
.globl _ET2
.globl _ES
.globl _ET1
.globl _EX1
.globl _ET0
.globl _EX0
.globl _CF
.globl _CR
.globl _CCF4
.globl _CCF3
.globl _CCF2
.globl _CCF1
.globl _CCF0
.globl _BREG_F7
.globl _BREG_F6
.globl _BREG_F5
.globl _BREG_F4
.globl _BREG_F3
.globl _BREG_F2
.globl _BREG_F1
.globl _BREG_F0
.globl _WDTRST
.globl _WDTPRG
.globl _TMOD
.globl _TL2
.globl _TL1
.globl _TL0
.globl _TH2
.globl _TH1
.globl _TH0
.globl _TCON
.globl _T2CON
.globl _SP
.globl _SCON
.globl _SBUF0
.globl _SBUF
.globl _SADEN0
.globl _RCAP2L
.globl _RCAP2H
.globl _PSW
.globl _PCON
.globl _P5
.globl _P4
.globl _P3
.globl _P2
.globl _P1
.globl _P0
.globl _IPH
.globl _IP
.globl _IE
.globl _FCON
.globl _EETIM
.globl _EECON
.globl _DP0L
.globl _DPL
.globl _DP0H
.globl _DPH
.globl _CMOD
.globl _CL
.globl _CKCON
.globl _CH
.globl _CCON
.globl _CCAPM4
.globl _CCAPM3
.globl _CCAPM2
.globl _CCAPM1
.globl _CCAPM0
.globl _CCAP4L
.globl _CCAP3L
.globl _CCAP2L
.globl _CCAP1L
.globl _CCAP0L
.globl _CCAP4H
.globl _CCAP3H
.globl _CCAP2H
.globl _CCAP1H
.globl _CCAP0H
.globl _AUXR1
.globl _B
.globl _AUXR
.globl _ACC
.globl _signal_PARM_2
.globl _wait_timed_PARM_2
.globl _start_task_PARM_2
.globl _T10sec
.globl _T100ms
.globl _T0ctr
.globl _reschedule_ea
.globl _T0_interrupt_ea
.globl _start_stack
.globl _task_timer
.globl _task_masks
.globl _task_signals
.globl _stack_save
.globl _stack2
.globl _stack1
.globl _stack0
.globl _run
.globl _ready
.globl _rt_tasks_init
.globl _T0Interrupt
.globl _reschedule
.globl _start_task
.globl _end_run_task
.globl _wait_timed
.globl _sleep
.globl _clear_signal
.globl _signal
.globl _rt_system_init
;--------------------------------------------------------
; special function registers
;--------------------------------------------------------
.area RSEG (DATA)
G$ACC$0$0 == 0x00e0
_ACC = 0x00e0
G$AUXR$0$0 == 0x008e
_AUXR = 0x008e
G$B$0$0 == 0x00f0
_B = 0x00f0
G$AUXR1$0$0 == 0x00a2
_AUXR1 = 0x00a2
G$CCAP0H$0$0 == 0x00fa
_CCAP0H = 0x00fa
G$CCAP1H$0$0 == 0x00fb
_CCAP1H = 0x00fb
G$CCAP2H$0$0 == 0x00fc
_CCAP2H = 0x00fc
G$CCAP3H$0$0 == 0x00fd
_CCAP3H = 0x00fd
G$CCAP4H$0$0 == 0x00fe
_CCAP4H = 0x00fe
G$CCAP0L$0$0 == 0x00ea
_CCAP0L = 0x00ea
G$CCAP1L$0$0 == 0x00eb
_CCAP1L = 0x00eb
G$CCAP2L$0$0 == 0x00ec
_CCAP2L = 0x00ec
G$CCAP3L$0$0 == 0x00ed
_CCAP3L = 0x00ed
G$CCAP4L$0$0 == 0x00ee
_CCAP4L = 0x00ee
G$CCAPM0$0$0 == 0x00da
_CCAPM0 = 0x00da
G$CCAPM1$0$0 == 0x00db
_CCAPM1 = 0x00db
G$CCAPM2$0$0 == 0x00dc
_CCAPM2 = 0x00dc
G$CCAPM3$0$0 == 0x00dd
_CCAPM3 = 0x00dd
G$CCAPM4$0$0 == 0x00de
_CCAPM4 = 0x00de
G$CCON$0$0 == 0x00d8
_CCON = 0x00d8
G$CH$0$0 == 0x00f9
_CH = 0x00f9
G$CKCON$0$0 == 0x008f
_CKCON = 0x008f
G$CL$0$0 == 0x00e9
_CL = 0x00e9
G$CMOD$0$0 == 0x00d9
_CMOD = 0x00d9
G$DPH$0$0 == 0x0083
_DPH = 0x0083
G$DP0H$0$0 == 0x0083
_DP0H = 0x0083
G$DPL$0$0 == 0x0082
_DPL = 0x0082
G$DP0L$0$0 == 0x0082
_DP0L = 0x0082
G$EECON$0$0 == 0x00d2
_EECON = 0x00d2
G$EETIM$0$0 == 0x00d3
_EETIM = 0x00d3
G$FCON$0$0 == 0x00d1
_FCON = 0x00d1
G$IE$0$0 == 0x00a8
_IE = 0x00a8
G$IP$0$0 == 0x00b8
_IP = 0x00b8
G$IPH$0$0 == 0x00b7
_IPH = 0x00b7
G$P0$0$0 == 0x0080
_P0 = 0x0080
G$P1$0$0 == 0x0090
_P1 = 0x0090
G$P2$0$0 == 0x00a0
_P2 = 0x00a0
G$P3$0$0 == 0x00b0
_P3 = 0x00b0
G$P4$0$0 == 0x00c0
_P4 = 0x00c0
G$P5$0$0 == 0x00e8
_P5 = 0x00e8
G$PCON$0$0 == 0x0087
_PCON = 0x0087
G$PSW$0$0 == 0x00d0
_PSW = 0x00d0
G$RCAP2H$0$0 == 0x00cb
_RCAP2H = 0x00cb
G$RCAP2L$0$0 == 0x00ca
_RCAP2L = 0x00ca
G$SADEN0$0$0 == 0x00b9
_SADEN0 = 0x00b9
G$SBUF$0$0 == 0x0099
_SBUF = 0x0099
G$SBUF0$0$0 == 0x0099
_SBUF0 = 0x0099
G$SCON$0$0 == 0x0098
_SCON = 0x0098
G$SP$0$0 == 0x0081
_SP = 0x0081
G$T2CON$0$0 == 0x00c8
_T2CON = 0x00c8
G$TCON$0$0 == 0x0088
_TCON = 0x0088
G$TH0$0$0 == 0x008c
_TH0 = 0x008c
G$TH1$0$0 == 0x008d
_TH1 = 0x008d
G$TH2$0$0 == 0x00cd
_TH2 = 0x00cd
G$TL0$0$0 == 0x008a
_TL0 = 0x008a
G$TL1$0$0 == 0x008b
_TL1 = 0x008b
G$TL2$0$0 == 0x00cc
_TL2 = 0x00cc
G$TMOD$0$0 == 0x0089
_TMOD = 0x0089
G$WDTPRG$0$0 == 0x00a7
_WDTPRG = 0x00a7
G$WDTRST$0$0 == 0x00a6
_WDTRST = 0x00a6
;--------------------------------------------------------
; special function bits
;--------------------------------------------------------
.area RSEG (DATA)
G$BREG_F0$0$0 == 0x00f0
_BREG_F0 = 0x00f0
G$BREG_F1$0$0 == 0x00f1
_BREG_F1 = 0x00f1
G$BREG_F2$0$0 == 0x00f2
_BREG_F2 = 0x00f2
G$BREG_F3$0$0 == 0x00f3
_BREG_F3 = 0x00f3
G$BREG_F4$0$0 == 0x00f4
_BREG_F4 = 0x00f4
G$BREG_F5$0$0 == 0x00f5
_BREG_F5 = 0x00f5
G$BREG_F6$0$0 == 0x00f6
_BREG_F6 = 0x00f6
G$BREG_F7$0$0 == 0x00f7
_BREG_F7 = 0x00f7
G$CCF0$0$0 == 0x00d8
_CCF0 = 0x00d8
G$CCF1$0$0 == 0x00d9
_CCF1 = 0x00d9
G$CCF2$0$0 == 0x00da
_CCF2 = 0x00da
G$CCF3$0$0 == 0x00db
_CCF3 = 0x00db
G$CCF4$0$0 == 0x00dc
_CCF4 = 0x00dc
G$CR$0$0 == 0x00de
_CR = 0x00de
G$CF$0$0 == 0x00df
_CF = 0x00df
G$EX0$0$0 == 0x00a8
_EX0 = 0x00a8
G$ET0$0$0 == 0x00a9
_ET0 = 0x00a9
G$EX1$0$0 == 0x00aa
_EX1 = 0x00aa
G$ET1$0$0 == 0x00ab
_ET1 = 0x00ab
G$ES$0$0 == 0x00ac
_ES = 0x00ac
G$ET2$0$0 == 0x00ad
_ET2 = 0x00ad
G$EC$0$0 == 0x00ae
_EC = 0x00ae
G$EA$0$0 == 0x00af
_EA = 0x00af
G$PX0$0$0 == 0x00b8
_PX0 = 0x00b8
G$PT0$0$0 == 0x00b9
_PT0 = 0x00b9
G$PX1$0$0 == 0x00ba
_PX1 = 0x00ba
G$PT1$0$0 == 0x00bb
_PT1 = 0x00bb
G$PS$0$0 == 0x00bc
_PS = 0x00bc
G$PT2$0$0 == 0x00bd
_PT2 = 0x00bd
G$PPC$0$0 == 0x00be
_PPC = 0x00be
G$P0_0$0$0 == 0x0080
_P0_0 = 0x0080
G$P0_1$0$0 == 0x0081
_P0_1 = 0x0081
G$P0_2$0$0 == 0x0082
_P0_2 = 0x0082
G$P0_3$0$0 == 0x0083
_P0_3 = 0x0083
G$P0_4$0$0 == 0x0084
_P0_4 = 0x0084
G$P0_5$0$0 == 0x0085
_P0_5 = 0x0085
G$P0_6$0$0 == 0x0086
_P0_6 = 0x0086
G$P0_7$0$0 == 0x0087
_P0_7 = 0x0087
G$P1_0$0$0 == 0x0090
_P1_0 = 0x0090
G$P1_1$0$0 == 0x0091
_P1_1 = 0x0091
G$P1_2$0$0 == 0x0092
_P1_2 = 0x0092
G$P1_3$0$0 == 0x0093
_P1_3 = 0x0093
G$P1_4$0$0 == 0x0094
_P1_4 = 0x0094
G$P1_5$0$0 == 0x0095
_P1_5 = 0x0095
G$P1_6$0$0 == 0x0096
_P1_6 = 0x0096
G$P1_7$0$0 == 0x0097
_P1_7 = 0x0097
G$P2_0$0$0 == 0x00a0
_P2_0 = 0x00a0
G$P2_1$0$0 == 0x00a1
_P2_1 = 0x00a1
G$P2_2$0$0 == 0x00a2
_P2_2 = 0x00a2
G$P2_3$0$0 == 0x00a3
_P2_3 = 0x00a3
G$P2_4$0$0 == 0x00a4
_P2_4 = 0x00a4
G$P2_5$0$0 == 0x00a5
_P2_5 = 0x00a5
G$P2_6$0$0 == 0x00a6
_P2_6 = 0x00a6
G$P2_7$0$0 == 0x00a7
_P2_7 = 0x00a7
G$P3_0$0$0 == 0x00b0
_P3_0 = 0x00b0
G$P3_1$0$0 == 0x00b1
_P3_1 = 0x00b1
G$P3_2$0$0 == 0x00b2
_P3_2 = 0x00b2
G$P3_3$0$0 == 0x00b3
_P3_3 = 0x00b3
G$P3_4$0$0 == 0x00b4
_P3_4 = 0x00b4
G$P3_5$0$0 == 0x00b5
_P3_5 = 0x00b5
G$P3_6$0$0 == 0x00b6
_P3_6 = 0x00b6
G$P3_7$0$0 == 0x00b7
_P3_7 = 0x00b7
G$RXD$0$0 == 0x00b0
_RXD = 0x00b0
G$RXD0$0$0 == 0x00b0
_RXD0 = 0x00b0
G$TXD$0$0 == 0x00b1
_TXD = 0x00b1
G$TXD0$0$0 == 0x00b1
_TXD0 = 0x00b1
G$INT0$0$0 == 0x00b2
_INT0 = 0x00b2
G$INT1$0$0 == 0x00b3
_INT1 = 0x00b3
G$T0$0$0 == 0x00b4
_T0 = 0x00b4
G$T1$0$0 == 0x00b5
_T1 = 0x00b5
G$WR$0$0 == 0x00b6
_WR = 0x00b6
G$RD$0$0 == 0x00b7
_RD = 0x00b7
G$P4_0$0$0 == 0x00c0
_P4_0 = 0x00c0
G$P4_1$0$0 == 0x00c1
_P4_1 = 0x00c1
G$P4_2$0$0 == 0x00c2
_P4_2 = 0x00c2
G$P4_3$0$0 == 0x00c3
_P4_3 = 0x00c3
G$P4_4$0$0 == 0x00c4
_P4_4 = 0x00c4
G$P4_5$0$0 == 0x00c5
_P4_5 = 0x00c5
G$P4_6$0$0 == 0x00c6
_P4_6 = 0x00c6
G$P4_7$0$0 == 0x00c7
_P4_7 = 0x00c7
G$P5_0$0$0 == 0x00e8
_P5_0 = 0x00e8
G$P5_1$0$0 == 0x00e9
_P5_1 = 0x00e9
G$P5_2$0$0 == 0x00ea
_P5_2 = 0x00ea
G$P5_3$0$0 == 0x00eb
_P5_3 = 0x00eb
G$P5_4$0$0 == 0x00ec
_P5_4 = 0x00ec
G$P5_5$0$0 == 0x00ed
_P5_5 = 0x00ed
G$P5_6$0$0 == 0x00ee
_P5_6 = 0x00ee
G$P5_7$0$0 == 0x00ef
_P5_7 = 0x00ef
G$P$0$0 == 0x00d0
_P = 0x00d0
G$F1$0$0 == 0x00d1
_F1 = 0x00d1
G$OV$0$0 == 0x00d2
_OV = 0x00d2
G$RS0$0$0 == 0x00d3
_RS0 = 0x00d3
G$RS1$0$0 == 0x00d4
_RS1 = 0x00d4
G$F0$0$0 == 0x00d5
_F0 = 0x00d5
G$AC$0$0 == 0x00d6
_AC = 0x00d6
G$CY$0$0 == 0x00d7
_CY = 0x00d7
G$RI$0$0 == 0x0098
_RI = 0x0098
G$TI$0$0 == 0x0099
_TI = 0x0099
G$RB8$0$0 == 0x009a
_RB8 = 0x009a
G$TB8$0$0 == 0x009b
_TB8 = 0x009b
G$REN$0$0 == 0x009c
_REN = 0x009c
G$SM2$0$0 == 0x009d
_SM2 = 0x009d
G$SM1$0$0 == 0x009e
_SM1 = 0x009e
G$SM0$0$0 == 0x009f
_SM0 = 0x009f
G$CP_RL2$0$0 == 0x00c8
_CP_RL2 = 0x00c8
G$C_T2$0$0 == 0x00c9
_C_T2 = 0x00c9
G$TR2$0$0 == 0x00ca
_TR2 = 0x00ca
G$EXEN2$0$0 == 0x00cb
_EXEN2 = 0x00cb
G$TCLK$0$0 == 0x00cc
_TCLK = 0x00cc
G$RCLK$0$0 == 0x00cd
_RCLK = 0x00cd
G$EXF2$0$0 == 0x00ce
_EXF2 = 0x00ce
G$TF2$0$0 == 0x00cf
_TF2 = 0x00cf
G$T2CON_0$0$0 == 0x00c8
_T2CON_0 = 0x00c8
G$T2CON_1$0$0 == 0x00c9
_T2CON_1 = 0x00c9
G$T2CON_2$0$0 == 0x00ca
_T2CON_2 = 0x00ca
G$T2CON_3$0$0 == 0x00cb
_T2CON_3 = 0x00cb
G$T2CON_4$0$0 == 0x00cc
_T2CON_4 = 0x00cc
G$T2CON_5$0$0 == 0x00cd
_T2CON_5 = 0x00cd
G$T2CON_6$0$0 == 0x00ce
_T2CON_6 = 0x00ce
G$T2CON_7$0$0 == 0x00cf
_T2CON_7 = 0x00cf
G$IT0$0$0 == 0x0088
_IT0 = 0x0088
G$IE0$0$0 == 0x0089
_IE0 = 0x0089
G$IT1$0$0 == 0x008a
_IT1 = 0x008a
G$IE1$0$0 == 0x008b
_IE1 = 0x008b
G$TR0$0$0 == 0x008c
_TR0 = 0x008c
G$TF0$0$0 == 0x008d
_TF0 = 0x008d
G$TR1$0$0 == 0x008e
_TR1 = 0x008e
G$TF1$0$0 == 0x008f
_TF1 = 0x008f
;--------------------------------------------------------
; overlayable register banks
;--------------------------------------------------------
.area REG_BANK_0 (REL,OVR,DATA)
.ds 8
.area REG_BANK_1 (REL,OVR,DATA)
.ds 8
.area REG_BANK_2 (REL,OVR,DATA)
.ds 8
.area REG_BANK_3 (REL,OVR,DATA)
.ds 8
;--------------------------------------------------------
; internal ram data
;--------------------------------------------------------
.area DSEG (DATA)
G$ready$0$0==.
_ready::
.ds 1
G$run$0$0==.
_run::
.ds 1
;--------------------------------------------------------
; overlayable items in internal ram
;--------------------------------------------------------
.area OSEG (OVR,DATA)
;--------------------------------------------------------
; indirectly addressable internal ram data
;--------------------------------------------------------
.area ISEG (DATA)
G$stack0$0$0==.
_stack0::
.ds 41
G$stack1$0$0==.
_stack1::
.ds 46
G$stack2$0$0==.
_stack2::
.ds 46
G$stack_save$0$0==.
_stack_save::
.ds 3
G$task_signals$0$0==.
_task_signals::
.ds 3
G$task_masks$0$0==.
_task_masks::
.ds 3
G$task_timer$0$0==.
_task_timer::
.ds 3
G$start_stack$0$0==.
_start_stack::
.ds 3
;--------------------------------------------------------
; bit data
;--------------------------------------------------------
.area BSEG (BIT)
G$T0_interrupt_ea$0$0==.
_T0_interrupt_ea::
.ds 1
G$reschedule_ea$0$0==.
_reschedule_ea::
.ds 1
Lstart_task$EA_local$1$1==.
_start_task_EA_local_1_1:
.ds 1
Lend_run_task$EA_local$1$1==.
_end_run_task_EA_local_1_1:
.ds 1
Lwait_timed$EA_local$1$1==.
_wait_timed_EA_local_1_1:
.ds 1
Lsleep$EA_local$1$1==.
_sleep_EA_local_1_1:
.ds 1
Lclear_signal$EA_local$1$1==.
_clear_signal_EA_local_1_1:
.ds 1
Lsignal$EA_local$1$1==.
_signal_EA_local_1_1:
.ds 1
;--------------------------------------------------------
; external ram data
;--------------------------------------------------------
.area XSEG (XDATA)
G$T0ctr$0$0==.
_T0ctr::
.ds 1
G$T100ms$0$0==.
_T100ms::
.ds 1
G$T10sec$0$0==.
_T10sec::
.ds 1
Lstart_task$tasknum$1$1==.
_start_task_PARM_2::
.ds 1
Lstart_task$f$1$1==.
_start_task_f_1_1::
.ds 2
Lwait_timed$ticks$1$1==.
_wait_timed_PARM_2::
.ds 1
Lwait_timed$signal$1$1==.
_wait_timed_signal_1_1::
.ds 1
Lsleep$ticks$1$1==.
_sleep_ticks_1_1::
.ds 1
Lclear_signal$pattern$1$1==.
_clear_signal_pattern_1_1::
.ds 1
Lsignal$pattern$1$1==.
_signal_PARM_2::
.ds 1
Lsignal$task$1$1==.
_signal_task_1_1::
.ds 1
;--------------------------------------------------------
; external initialized ram data
;--------------------------------------------------------
.area XISEG (XDATA)
.area CSEG (CODE)
.area GSINIT0 (CODE)
.area GSINIT1 (CODE)
.area GSINIT2 (CODE)
.area GSINIT3 (CODE)
.area GSINIT4 (CODE)
.area GSINIT5 (CODE)
;--------------------------------------------------------
; global & static initialisations
;--------------------------------------------------------
.area GSINIT (CODE)
.area GSFINAL (CODE)
.area GSINIT (CODE)
G$rt_system_init$0$0 ==.
C$rt_task.c$80$1$1 ==.
;rt_task.c:80: const STACK_PTR_TYPE start_stack[]={
; genPointerSet
; genNearPointerSet
mov r0,#_start_stack
mov @r0,#_stack0
; genPointerSet
; genNearPointerSet
mov r0,#(_start_stack + 0x0001)
mov @r0,#_stack1
; genPointerSet
; genNearPointerSet
mov r0,#(_start_stack + 0x0002)
mov @r0,#_stack2
;--------------------------------------------------------
; Home
;--------------------------------------------------------
.area HOME (CODE)
.area CSEG (CODE)
;--------------------------------------------------------
; code
;--------------------------------------------------------
.area CSEG (CODE)
;------------------------------------------------------------
;Allocation info for local variables in function 'rt_tasks_init'
;------------------------------------------------------------
;i Allocated with name '_rt_tasks_init_i_1_1'
;------------------------------------------------------------
G$rt_tasks_init$0$0 ==.
C$rt_task.c$143$0$0 ==.
;rt_task.c:143: void rt_tasks_init (void)
; -----------------------------------------
; function rt_tasks_init
; -----------------------------------------
_rt_tasks_init:
ar2 = 0x02
ar3 = 0x03
ar4 = 0x04
ar5 = 0x05
ar6 = 0x06
ar7 = 0x07
ar0 = 0x00
ar1 = 0x01
C$rt_task.c$146$1$1 ==.
;rt_task.c:146: run = MAIN_TASK_ID;
; genAssign
mov _run,#0x00
C$rt_task.c$147$1$1 ==.
;rt_task.c:147: ready = TASK_BIT(MAIN_TASK_ID);
; genAssign
mov _ready,#0x01
C$rt_task.c$149$1$1 ==.
;rt_task.c:149: for(i=0;i<TASKS;i++)
; genAssign
mov r2,#0x00
00101$:
; genCmpLt
; genCmp
clr c
mov a,r2
xrl a,#0x80
subb a,#0x83
; genIfxJump
; Peephole 108 removed ljmp by inverse jump logic
jnc 00105$
00109$:
C$rt_task.c$151$2$2 ==.
;rt_task.c:151: stack_save[i] = 0;
; genPlus
; Peephole 236.g used r2 instead of ar2
mov a,r2
add a,#_stack_save
mov r0,a
; genAssign
mov r3,#0x00
; genPointerSet
; genNearPointerSet
mov @r0,ar3
C$rt_task.c$152$2$2 ==.
;rt_task.c:152: task_signals[i]=0;
; genPlus
; Peephole 236.g used r2 instead of ar2
mov a,r2
add a,#_task_signals
; genPointerSet
; genNearPointerSet
; Peephole 239 used a instead of acc
mov r0,a
mov @r0,#0x00
C$rt_task.c$153$2$2 ==.
;rt_task.c:153: task_masks[i] =0;
; genPlus
; Peephole 236.g used r2 instead of ar2
mov a,r2
add a,#_task_masks
; genPointerSet
; genNearPointerSet
; Peephole 239 used a instead of acc
mov r0,a
mov @r0,#0x00
C$rt_task.c$154$2$2 ==.
;rt_task.c:154: task_timer[i] =0;
; genPlus
; Peephole 236.g used r2 instead of ar2
mov a,r2
add a,#_task_timer
; genPointerSet
; genNearPointerSet
; Peephole 239 used a instead of acc
mov r0,a
mov @r0,#0x00
C$rt_task.c$149$1$1 ==.
;rt_task.c:149: for(i=0;i<TASKS;i++)
; genPlus
; genPlusIncr
inc r2
; Peephole 112.b changed ljmp to sjmp
sjmp 00101$
00105$:
C$rt_task.c$157$1$1 ==.
XG$rt_tasks_init$0$0 ==.
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'T0Interrupt'
;------------------------------------------------------------
;i Allocated with name '_T0Interrupt_i_2_2'
;------------------------------------------------------------
G$T0Interrupt$0$0 ==.
C$rt_task.c$170$1$1 ==.
;rt_task.c:170: void T0Interrupt(void) interrupt T0_INTVEC using T0_INTERRUPT_BANK
; -----------------------------------------
; function T0Interrupt
; -----------------------------------------
_T0Interrupt:
ar2 = 0x12
ar3 = 0x13
ar4 = 0x14
ar5 = 0x15
ar6 = 0x16
ar7 = 0x17
ar0 = 0x10
ar1 = 0x11
push acc
push b
push dpl
push dph
push psw
mov psw,#0x10
C$rt_task.c$173$1$1 ==.
;rt_task.c:173: T0ctr--;
; genMinus
mov dptr,#_T0ctr
; genMinusDec
movx a,@dptr
dec a
; genAssign
mov dptr,#_T0ctr
movx @dptr,a
C$rt_task.c$174$1$1 ==.
;rt_task.c:174: if(T0ctr==0)
; genAssign
mov dptr,#_T0ctr
movx a,@dptr
mov r2,a
; genCmpEq
cjne r2,#0x00,00135$
sjmp 00136$
00135$:
ljmp 00113$
00136$:
C$rt_task.c$177$2$2 ==.
;rt_task.c:177: T100ms++;
; genPlus
mov dptr,#_T100ms
movx a,@dptr
add a,#0x01
movx @dptr,a
C$rt_task.c$178$2$2 ==.
;rt_task.c:178: if(T100ms & 3)
; genAssign
mov dptr,#_T100ms
movx a,@dptr
; genAnd
; Peephole 105 removed redundant mov
mov r2,a
anl a,#0x03
; Peephole 110 removed ljmp by inverse jump logic
jz 00102$
00137$:
C$rt_task.c$179$2$2 ==.
;rt_task.c:179: T0ctr= 11;/* 01,10,11 */
; genAssign
mov dptr,#_T0ctr
mov a,#0x0B
movx @dptr,a
; Peephole 112.b changed ljmp to sjmp
sjmp 00130$
00102$:
C$rt_task.c$181$2$2 ==.
;rt_task.c:181: T0ctr= 12;/* 00 */
; genAssign
mov dptr,#_T0ctr
mov a,#0x0C
movx @dptr,a
C$rt_task.c$183$1$1 ==.
;rt_task.c:183: for (i=0;i<TASKS;i++)
00130$:
; genAssign
mov r2,#0x00
mov r3,#0x00
00118$:
; genCmpLt
; genCmp
clr c
mov a,r2
subb a,#0x03
mov a,r3
xrl a,#0x80
subb a,#0x80
; genIfxJump
; Peephole 108 removed ljmp by inverse jump logic
jnc 00121$
00138$:
C$rt_task.c$185$3$3 ==.
;rt_task.c:185: if (task_timer[i] != 0)
; genPlus
; Peephole 236.g used r2 instead of ar2
mov a,r2
add a,#_task_timer
mov r0,a
; genPointerGet
; genNearPointerGet
mov ar4,@r0
; genCmpEq
cjne r4,#0x00,00139$
; Peephole 112.b changed ljmp to sjmp
sjmp 00120$
00139$:
C$rt_task.c$187$4$4 ==.
;rt_task.c:187: task_timer[i]--;
; genPlus
; Peephole 236.g used r2 instead of ar2
mov a,r2
add a,#_task_timer
mov r0,a
; genPointerGet
; genNearPointerGet
mov ar4,@r0
; genMinus
; genMinusDec
mov a,r4
dec a
; genPointerSet
; genNearPointerSet
mov @r0,acc
C$rt_task.c$188$4$4 ==.
;rt_task.c:188: if (task_timer[i] == 0)
; genPlus
; Peephole 236.g used r2 instead of ar2
mov a,r2
add a,#_task_timer
mov r0,a
; genPointerGet
; genNearPointerGet
mov ar4,@r0
; genCmpEq
; Peephole 112.b changed ljmp to sjmp
; Peephole 199 optimized misc jump sequence
cjne r4,#0x00,00120$
;00140$:
; Peephole 200 removed redundant sjmp
00141$:
C$rt_task.c$190$5$5 ==.
;rt_task.c:190: task_signals[i] |= TIMER_SIG;
; genPlus
; Peephole 236.g used r2 instead of ar2
mov a,r2
add a,#_task_signals
mov r0,a
; genPlus
; Peephole 236.g used r2 instead of ar2
mov a,r2
add a,#_task_signals
mov r1,a
; genPointerGet
; genNearPointerGet
mov ar4,@r1
; genOr
mov a,#0x80
orl a,r4
; genPointerSet
; genNearPointerSet
mov @r0,acc
C$rt_task.c$191$5$5 ==.
;rt_task.c:191: if(task_signals[i] & task_masks[i])
; genPlus
; Peephole 236.g used r2 instead of ar2
mov a,r2
add a,#_task_signals
mov r0,a
; genPointerGet
; genNearPointerGet
mov ar4,@r0
; genPlus
; Peephole 236.g used r2 instead of ar2
mov a,r2
add a,#_task_masks
mov r0,a
; genPointerGet
; genNearPointerGet
mov ar5,@r0
; genAnd
mov a,r5
anl a,r4
; genIfx
; genIfxJump
; Peephole 110 removed ljmp by inverse jump logic
jz 00120$
00142$:
C$rt_task.c$193$6$6 ==.
;rt_task.c:193: ready |= TASK_BIT(i); /* Mapping here */
; genLeftShift
mov b,r2
inc b
mov r4,#0x01
mov r5,#0x00
sjmp 00144$
00143$:
; Peephole 254 optimized left shift
mov a,r4
add a,r4
mov r4,a
mov a,r5
rlc a
mov r5,a
00144$:
djnz b,00143$
; genCast
; genOr
mov a,r4
orl _ready,a
00120$:
C$rt_task.c$183$2$2 ==.
;rt_task.c:183: for (i=0;i<TASKS;i++)
; genPlus
; genPlusIncr
inc r2
; Peephole 112.b changed ljmp to sjmp
; Peephole 243 avoided branch to sjmp
cjne r2,#0x00,00118$
inc r3
00145$:
sjmp 00118$
00121$:
C$rt_task.c$201$2$2 ==.
;rt_task.c:201: if(T100ms>=MAXT100ms)
; genAssign
mov dptr,#_T100ms
movx a,@dptr
mov r2,a
; genCmpLt
; genCmp
cjne r2,#0x64,00146$
00146$:
; genIfxJump
; Peephole 112.b changed ljmp to sjmp
; Peephole 160 removed sjmp by inverse jump logic
jc 00113$
00147$:
C$rt_task.c$203$3$7 ==.
;rt_task.c:203: T10sec++;
; genPlus
mov dptr,#_T10sec
movx a,@dptr
add a,#0x01
movx @dptr,a
C$rt_task.c$204$3$7 ==.
;rt_task.c:204: T100ms=0;
; genAssign
mov dptr,#_T100ms
; Peephole 181 changed mov to clr
clr a
movx @dptr,a
00113$:
C$rt_task.c$211$1$1 ==.
;rt_task.c:211: if(!SIO1_CTS && !SIO1_TxBusy && SIO1_TxCount)
; genIfx
; genIfxJump
; Peephole 112.a removed ljmp by inverse jump logic
jb _P1_5,00115$
00148$:
; genIfx
; genIfxJump
; Peephole 112.a removed ljmp by inverse jump logic
jb _SIO1_TxBusy,00115$
00149$:
; genAssign
mov dptr,#_SIO1_TxCount
movx a,@dptr
; genIfx
; Peephole 105 removed redundant mov
mov r2,a
; genIfxJump
; Peephole 110 removed ljmp by inverse jump logic
jz 00115$
00150$:
C$rt_task.c$213$2$8 ==.
;rt_task.c:213: TI=1;
; genAssign
setb _TI
00115$:
C$rt_task.c$297$1$1 ==.
;rt_task.c:297: _endasm;
; genInline
; use assembler form of atomic operation for keeping ea
jbc ea,0001$
clr _T0_interrupt_ea
sjmp 0002$
0001$:
setb _T0_interrupt_ea
0002$:
; These are in bank 0
push 7
push 6
push 5
push 4
push 3
push 2
push 1
push 0
;
;
; Determine which task was running
; and save the task SP
;
mov a,_run
add a,#_stack_save
mov r0,a
mov a,sp
mov @r0,a
; *********** SCHEDULE CODE HERE
;
; look at the task ready flags
mov a,_ready
add a,#0x10
anl a,#0x3F
mov _ready,a
;
; get new running task ID
;
mov dptr,#_priotab
movc a,@a+dptr
;
mov _run,a
;
add a,#_stack_save
mov r0,a
mov a,@r0
mov sp,a
;
;
; Bank 0 registers in use here
;
pop 0
pop 1
pop 2
pop 3
pop 4
pop 5
pop 6
pop 7
;
; this is done in the ISR
; pop psw
; pop dph
; pop dpl
; pop b
; pop acc
;
;
;
jnb _T0_interrupt_ea,0010$
setb ea
0010$:
00122$:
pop psw
pop dph
pop dpl
pop b
pop acc
C$rt_task.c$301$1$1 ==.
XG$T0Interrupt$0$0 ==.
reti
;------------------------------------------------------------
;Allocation info for local variables in function 'reschedule'
;------------------------------------------------------------
;------------------------------------------------------------
G$reschedule$0$0 ==.
C$rt_task.c$328$1$1 ==.
;rt_task.c:328: void reschedule(void)
; -----------------------------------------
; function reschedule
; -----------------------------------------
_reschedule:
ar2 = 0x02
ar3 = 0x03
ar4 = 0x04
ar5 = 0x05
ar6 = 0x06
ar7 = 0x07
ar0 = 0x00
ar1 = 0x01
C$rt_task.c$413$1$1 ==.
;rt_task.c:413: _endasm;
; genInline
; use assembler form of atomic operation for keeping ea
jbc ea,0001$
clr _reschedule_ea
sjmp 0002$
0001$:
setb _reschedule_ea
0002$:
; this is done in any ISR
push acc
push b
push dpl
push dph
push psw
;
; These are in bank 0
;
push 7
push 6
push 5
push 4
push 3
push 2
push 1
push 0
;
;
;
; Determine which task was running
; and save the task SP
;
mov a,_run
add a,#_stack_save
mov r0,a
mov a,sp
mov @r0,a
; *********** SCHEDULE CODE HERE
;
; look at the task ready flags
mov a,_ready
add a,#0x10
anl a,#0x3F
mov _ready,a
;
; get new running task ID
;
mov dptr,#_priotab
movc a,@a+dptr
;
mov _run,a
;
add a,#_stack_save
mov r0,a
mov a,@r0
mov sp,a
;
;
; Bank 0 registers in use here
;
pop 0
pop 1
pop 2
pop 3
pop 4
pop 5
pop 6
pop 7
;
; this is done in the ISR
pop psw
pop dph
pop dpl
pop b
pop acc
;
jnb _reschedule_ea,0010$
setb ea
0010$:
;
00101$:
C$rt_task.c$415$1$1 ==.
XG$reschedule$0$0 ==.
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'start_task'
;------------------------------------------------------------
;tasknum Allocated with name '_start_task_PARM_2'
;f Allocated with name '_start_task_f_1_1'
;fp Allocated with name '_start_task_fp_1_1'
;csp Allocated to registers r0
;------------------------------------------------------------
G$start_task$0$0 ==.
C$rt_task.c$424$1$1 ==.
;rt_task.c:424: start_rc start_task(task_p f,char tasknum)
; -----------------------------------------
; function start_task
; -----------------------------------------
_start_task:
; genReceive
mov r2,dph
mov a,dpl
mov dptr,#_start_task_f_1_1
movx @dptr,a
inc dptr
mov a,r2
movx @dptr,a
C$rt_task.c$429$1$1 ==.
;rt_task.c:429: if (tasknum >= TASKS)
; genAssign
mov dptr,#_start_task_PARM_2
movx a,@dptr
; genCmpLt
; genCmp
; Peephole 106 removed redundant mov
mov r2,a
clr c
xrl a,#0x80
subb a,#0x83
; genIfxJump
; Peephole 112.b changed ljmp to sjmp
; Peephole 160 removed sjmp by inverse jump logic
jc 00102$
00110$:
C$rt_task.c$430$1$1 ==.
;rt_task.c:430: return FAILED;
; genRet
mov dpl,#0x01
; Peephole 251.a replaced ljmp to ret with ret
ret
00102$:
C$rt_task.c$432$2$2 ==.
;rt_task.c:432: BEGIN_CRITICAL;
; genIfx
; genIfxJump
; Peephole 111 removed ljmp by inverse jump logic
; genAssign
; Peephole 250.a using atomic test and clear
jbc _EA,00111$
sjmp 00104$
00111$:
; genAssign
setb _start_task_EA_local_1_1
; Peephole 112.b changed ljmp to sjmp
sjmp 00105$
00104$:
; genAssign
clr _start_task_EA_local_1_1
00105$:
C$rt_task.c$433$1$1 ==.
;rt_task.c:433: csp = start_stack[tasknum];
; genPlus
; Peephole 236.g used r2 instead of ar2
mov a,r2
add a,#_start_stack
mov r0,a
; genPointerGet
; genNearPointerGet
mov ar0,@r0
C$rt_task.c$434$1$1 ==.
;rt_task.c:434: stack_save[tasknum] = (STACK_PTR_TYPE)csp+16 ;
; genPlus
; Peephole 236.g used r2 instead of ar2
mov a,r2
add a,#_stack_save
mov r1,a
; genPlus
mov a,#0x10
; Peephole 236.a used r0 instead of ar0
add a,r0
; genPointerSet
; genNearPointerSet
mov @r1,acc
C$rt_task.c$436$1$1 ==.
;rt_task.c:436: fp = (int)&end_run_task;
; genCast
mov r3,#_end_run_task
mov r4,#(_end_run_task >> 8)
C$rt_task.c$437$1$1 ==.
;rt_task.c:437: *csp++ = (char)(fp & 0xff);
; genAnd
mov ar5,r3
mov r6,#0x00
; genCast
; genPointerSet
; genNearPointerSet
mov @r0,ar5
inc r0
C$rt_task.c$438$1$1 ==.
;rt_task.c:438: *csp++ = (char)(fp >> 8) ;
; genRightShift
; genSignedRightShift
; genRightShiftLiteral
; genrshTwo
mov a,r4
mov r3,a
rlc a
subb a,acc
mov r4,a
; genCast
; genPointerSet
; genNearPointerSet
mov @r0,ar3
inc r0
C$rt_task.c$440$1$1 ==.
;rt_task.c:440: fp = (int)f;
; genAssign
mov dptr,#_start_task_f_1_1
movx a,@dptr
mov r3,a
inc dptr
movx a,@dptr
mov r4,a
; genCast
C$rt_task.c$441$1$1 ==.
;rt_task.c:441: *csp++ = (char)(fp &0xff);
; genAnd
mov ar5,r3
mov r6,#0x00
; genCast
; genPointerSet
; genNearPointerSet
mov @r0,ar5
inc r0
C$rt_task.c$442$1$1 ==.
;rt_task.c:442: *csp++ = (char)(fp >> 8) ;
; genRightShift
; genSignedRightShift
; genRightShiftLiteral
; genrshTwo
mov a,r4
mov r3,a
rlc a
subb a,acc
mov r4,a
; genCast
; genPointerSet
; genNearPointerSet
mov @r0,ar3
inc r0
C$rt_task.c$446$1$1 ==.
;rt_task.c:446: *csp++ = 0; /* csp[4] = acc could pass argument here */
; genPointerSet
; genNearPointerSet
mov @r0,#0x00
inc r0
C$rt_task.c$447$1$1 ==.
;rt_task.c:447: *csp++ = 0; /* csp[5] = b */
; genPointerSet
; genNearPointerSet
mov @r0,#0x00
inc r0
C$rt_task.c$448$1$1 ==.
;rt_task.c:448: *csp++ = 0; /* csp[6] = dpl */
; genPointerSet
; genNearPointerSet
mov @r0,#0x00
inc r0
C$rt_task.c$449$1$1 ==.
;rt_task.c:449: *csp++ = 0; /* csp[7] = dph */
; genPointerSet
; genNearPointerSet
mov @r0,#0x00
inc r0
C$rt_task.c$450$1$1 ==.
;rt_task.c:450: *csp++ = 0; /* psw VITAL */
; genPointerSet
; genNearPointerSet
mov @r0,#0x00
inc r0
C$rt_task.c$451$1$1 ==.
;rt_task.c:451: *csp++ = 0; /* csp [9] = r7 */
; genPointerSet
; genNearPointerSet
mov @r0,#0x00
inc r0
C$rt_task.c$452$1$1 ==.
;rt_task.c:452: *csp++ = 0; /* csp [10] = r6 */
; genPointerSet
; genNearPointerSet
mov @r0,#0x00
inc r0
C$rt_task.c$453$1$1 ==.
;rt_task.c:453: *csp++ = 0; /* csp [11] = r5 */
; genPointerSet
; genNearPointerSet
mov @r0,#0x00
inc r0
C$rt_task.c$454$1$1 ==.
;rt_task.c:454: *csp++ = 0; /* csp [12] = r4 */
; genPointerSet
; genNearPointerSet
mov @r0,#0x00
inc r0
C$rt_task.c$455$1$1 ==.
;rt_task.c:455: *csp++ = 0; /* csp [13] = r3 */
; genPointerSet
; genNearPointerSet
mov @r0,#0x00
inc r0
C$rt_task.c$456$1$1 ==.
;rt_task.c:456: *csp++ = 0; /* csp [14] = r2 */
; genPointerSet
; genNearPointerSet
mov @r0,#0x00
inc r0
C$rt_task.c$457$1$1 ==.
;rt_task.c:457: *csp++ = 0; /* csp [15] = r1 */
; genPointerSet
; genNearPointerSet
mov @r0,#0x00
inc r0
C$rt_task.c$458$1$1 ==.
;rt_task.c:458: *csp = 0; /* csp [16] = r0 */
; genPointerSet
; genNearPointerSet
mov @r0,#0x00
C$rt_task.c$462$1$1 ==.
;rt_task.c:462: ready |= TASK_BIT(tasknum);
; genLeftShift
mov b,r2
inc b
mov a,#0x01
sjmp 00114$
00112$:
add a,acc
00114$:
djnz b,00112$
; genOr
; Peephole 105 removed redundant mov
mov r2,a
orl _ready,a
C$rt_task.c$463$2$5 ==.
;rt_task.c:463: END_CRITICAL;
; genAssign
mov c,_start_task_EA_local_1_1
mov _EA,c
C$rt_task.c$464$1$1 ==.
;rt_task.c:464: return STARTED;
; genRet
mov dpl,#0x02
00106$:
C$rt_task.c$465$1$1 ==.
XG$start_task$0$0 ==.
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'end_run_task'
;------------------------------------------------------------
;------------------------------------------------------------
G$end_run_task$0$0 ==.
C$rt_task.c$471$1$1 ==.
;rt_task.c:471: void end_run_task(void)
; -----------------------------------------
; function end_run_task
; -----------------------------------------
_end_run_task:
C$rt_task.c$475$2$2 ==.
;rt_task.c:475: BEGIN_CRITICAL;
; genIfx
; genIfxJump
; Peephole 111 removed ljmp by inverse jump logic
; genAssign
; Peephole 250.a using atomic test and clear
jbc _EA,00111$
sjmp 00102$
00111$:
; genAssign
setb _end_run_task_EA_local_1_1
; Peephole 112.b changed ljmp to sjmp
sjmp 00103$
00102$:
; genAssign
clr _end_run_task_EA_local_1_1
00103$:
C$rt_task.c$476$1$1 ==.
;rt_task.c:476: ready &= ~TASK_BIT(run);
; genLeftShift
mov b,_run
inc b
mov a,#0x01
sjmp 00114$
00112$:
add a,acc
00114$:
djnz b,00112$
; genCpl
; Peephole 105 removed redundant mov
; genAnd
; Peephole 105 removed redundant mov
; Peephole 184 removed redundant mov
cpl a
mov r2,a
anl _ready,a
C$rt_task.c$477$1$1 ==.
;rt_task.c:477: task_masks[run] = 0; /* Stop any further signals making task ready to run */
; genPlus
mov a,_run
add a,#_task_masks
; genPointerSet
; genNearPointerSet
; Peephole 239 used a instead of acc
mov r0,a
mov @r0,#0x00
C$rt_task.c$478$1$1 ==.
;rt_task.c:478: task_timer[run] = 0; /* kill off pending task timeout */
; genPlus
mov a,_run
add a,#_task_timer
; genPointerSet
; genNearPointerSet
; Peephole 239 used a instead of acc
mov r0,a
mov @r0,#0x00
C$rt_task.c$479$2$5 ==.
;rt_task.c:479: END_CRITICAL;
; genAssign
mov c,_end_run_task_EA_local_1_1
mov _EA,c
C$rt_task.c$480$1$1 ==.
;rt_task.c:480: reschedule();
; genCall
lcall _reschedule
C$rt_task.c$482$1$1 ==.
;rt_task.c:482: while(1);
00105$:
; Peephole 112.b changed ljmp to sjmp
sjmp 00105$
00107$:
C$rt_task.c$484$1$1 ==.
XG$end_run_task$0$0 ==.
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'wait_timed'
;------------------------------------------------------------
;ticks Allocated with name '_wait_timed_PARM_2'
;signal Allocated with name '_wait_timed_signal_1_1'
;------------------------------------------------------------
G$wait_timed$0$0 ==.
C$rt_task.c$489$1$1 ==.
;rt_task.c:489: char wait_timed(char signal,char ticks)
; -----------------------------------------
; function wait_timed
; -----------------------------------------
_wait_timed:
; genReceive
mov a,dpl
mov dptr,#_wait_timed_signal_1_1
movx @dptr,a
C$rt_task.c$492$2$2 ==.
;rt_task.c:492: BEGIN_CRITICAL;
; genIfx
; genIfxJump
; Peephole 111 removed ljmp by inverse jump logic
; genAssign
; Peephole 250.a using atomic test and clear
jbc _EA,00107$
sjmp 00102$
00107$:
; genAssign
setb _wait_timed_EA_local_1_1
; Peephole 112.b changed ljmp to sjmp
sjmp 00103$
00102$:
; genAssign
clr _wait_timed_EA_local_1_1
00103$:
C$rt_task.c$493$1$1 ==.
;rt_task.c:493: ready &= ~TASK_BIT(run); /* this task is going to sleep */
; genLeftShift
mov b,_run
inc b
mov a,#0x01
sjmp 00110$
00108$:
add a,acc
00110$:
djnz b,00108$
; genCpl
; Peephole 105 removed redundant mov
; genAnd
; Peephole 105 removed redundant mov
; Peephole 184 removed redundant mov
cpl a
mov r2,a
anl _ready,a
C$rt_task.c$494$1$1 ==.
;rt_task.c:494: task_timer[run] = ticks;
; genPlus
mov a,_run
add a,#_task_timer
mov r0,a
; genAssign
mov dptr,#_wait_timed_PARM_2
movx a,@dptr
; genPointerSet
; genNearPointerSet
; Peephole 192 used a instead of ar2 as source
mov r2,a
mov @r0,a
C$rt_task.c$495$1$1 ==.
;rt_task.c:495: task_masks[run] = signal; /* accept these signals as a validto wait on */
; genPlus
mov a,_run
add a,#_task_masks
mov r0,a
; genAssign
mov dptr,#_wait_timed_signal_1_1
movx a,@dptr
; genPointerSet
; genNearPointerSet
; Peephole 192 used a instead of ar2 as source
mov r2,a
mov @r0,a
C$rt_task.c$496$2$5 ==.
;rt_task.c:496: END_CRITICAL;
; genAssign
mov c,_wait_timed_EA_local_1_1
mov _EA,c
C$rt_task.c$497$1$1 ==.
;rt_task.c:497: reschedule();
; genCall
lcall _reschedule
C$rt_task.c$498$1$1 ==.
;rt_task.c:498: return task_signals[run];
; genPlus
mov a,_run
add a,#_task_signals
mov r0,a
; genPointerGet
; genNearPointerGet
mov ar2,@r0
; genRet
mov dpl,r2
00104$:
C$rt_task.c$499$1$1 ==.
XG$wait_timed$0$0 ==.
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'sleep'
;------------------------------------------------------------
;ticks Allocated with name '_sleep_ticks_1_1'
;------------------------------------------------------------
G$sleep$0$0 ==.
C$rt_task.c$502$1$1 ==.
;rt_task.c:502: void sleep(char ticks)
; -----------------------------------------
; function sleep
; -----------------------------------------
_sleep:
; genReceive
mov a,dpl
mov dptr,#_sleep_ticks_1_1
movx @dptr,a
C$rt_task.c$507$1$1 ==.
;rt_task.c:507: if (ticks)
; genAssign
mov dptr,#_sleep_ticks_1_1
movx a,@dptr
; genIfx
; Peephole 105 removed redundant mov
mov r2,a
; genIfxJump
jnz 00120$
ljmp 00111$
00120$:
C$rt_task.c$509$3$3 ==.
;rt_task.c:509: BEGIN_CRITICAL;
; genIfx
; genIfxJump
; Peephole 111 removed ljmp by inverse jump logic
; genAssign
; Peephole 250.a using atomic test and clear
jbc _EA,00121$
sjmp 00102$
00121$:
; genAssign
setb _sleep_EA_local_1_1
; Peephole 112.b changed ljmp to sjmp
sjmp 00103$
00102$:
; genAssign
clr _sleep_EA_local_1_1
00103$:
C$rt_task.c$510$2$2 ==.
;rt_task.c:510: ready &= ~TASK_BIT(run); /* this task is going to sleep */
; genLeftShift
mov b,_run
inc b
mov a,#0x01
sjmp 00124$
00122$:
add a,acc
00124$:
djnz b,00122$
; genCpl
; Peephole 105 removed redundant mov
; genAnd
; Peephole 105 removed redundant mov
; Peephole 184 removed redundant mov
cpl a
mov r2,a
anl _ready,a
C$rt_task.c$511$2$2 ==.
;rt_task.c:511: task_timer[run] = ticks;
; genPlus
mov a,_run
add a,#_task_timer
mov r0,a
; genAssign
mov dptr,#_sleep_ticks_1_1
movx a,@dptr
; genPointerSet
; genNearPointerSet
; Peephole 192 used a instead of ar2 as source
mov r2,a
mov @r0,a
C$rt_task.c$512$2$2 ==.
;rt_task.c:512: task_masks[run] = TIMER_SIG; /* accept this signal as a valid one to wait on */
; genPlus
mov a,_run
add a,#_task_masks
; genPointerSet
; genNearPointerSet
; Peephole 239 used a instead of acc
mov r0,a
mov @r0,#0x80
C$rt_task.c$513$2$2 ==.
;rt_task.c:513: task_signals[run] &=~TIMER_SIG;
; genPlus
mov a,_run
add a,#_task_signals
mov r0,a
; genPlus
mov a,_run
add a,#_task_signals
mov r1,a
; genPointerGet
; genNearPointerGet
mov ar2,@r1
; genAnd
mov a,#0x7F
anl a,r2
; genPointerSet
; genNearPointerSet
mov @r0,acc
C$rt_task.c$515$2$2 ==.
;rt_task.c:515: do {
00107$:
C$rt_task.c$516$4$7 ==.
;rt_task.c:516: END_CRITICAL;
; genAssign
mov c,_sleep_EA_local_1_1
mov _EA,c
C$rt_task.c$517$3$6 ==.
;rt_task.c:517: reschedule();
; genCall
lcall _reschedule
C$rt_task.c$518$4$8 ==.
;rt_task.c:518: BEGIN_CRITICAL;
; genIfx
; genIfxJump
; Peephole 111 removed ljmp by inverse jump logic
; genAssign
; Peephole 250.a using atomic test and clear
jbc _EA,00125$
sjmp 00105$
00125$:
; genAssign
setb _sleep_EA_local_1_1
; Peephole 112.b changed ljmp to sjmp
sjmp 00108$
00105$:
; genAssign
clr _sleep_EA_local_1_1
00108$:
C$rt_task.c$520$2$2 ==.
;rt_task.c:520: while((task_signals[run] & TIMER_SIG) == 0);
; genPlus
mov a,_run
add a,#_task_signals
mov r0,a
; genPointerGet
; genNearPointerGet
mov ar2,@r0
; genAnd
anl ar2,#0x80
; genCmpEq
cjne r2,#0x00,00126$
; Peephole 112.b changed ljmp to sjmp
sjmp 00107$
00126$:
C$rt_task.c$521$2$2 ==.
;rt_task.c:521: task_signals[run] &= ~(TIMER_SIG);
; genPlus
mov a,_run
add a,#_task_signals
mov r0,a
; genPlus
mov a,_run
add a,#_task_signals
mov r1,a
; genPointerGet
; genNearPointerGet
mov ar2,@r1
; genAnd
mov a,#0x7F
anl a,r2
; genPointerSet
; genNearPointerSet
mov @r0,acc
C$rt_task.c$522$2$2 ==.
;rt_task.c:522: task_masks[run] &= ~TIMER_SIG; /* accept this signal as a valid one to wait on */
; genPlus
mov a,_run
add a,#_task_masks
mov r0,a
; genPlus
mov a,_run
add a,#_task_masks
mov r1,a
; genPointerGet
; genNearPointerGet
mov ar2,@r1
; genAnd
mov a,#0x7F
anl a,r2
; genPointerSet
; genNearPointerSet
mov @r0,acc
C$rt_task.c$523$3$11 ==.
;rt_task.c:523: END_CRITICAL;
; genAssign
mov c,_sleep_EA_local_1_1
mov _EA,c
; Peephole 112.b changed ljmp to sjmp
; Peephole 251.b replaced sjmp to ret with ret
ret
00111$:
C$rt_task.c$527$2$12 ==.
;rt_task.c:527: reschedule();
; genCall
C$rt_task.c$530$1$1 ==.
XG$sleep$0$0 ==.
; Peephole 253.c replaced lcall with ljmp
ljmp _reschedule
00113$:
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'clear_signal'
;------------------------------------------------------------
;pattern Allocated with name '_clear_signal_pattern_1_1'
;------------------------------------------------------------
G$clear_signal$0$0 ==.
C$rt_task.c$533$1$1 ==.
;rt_task.c:533: void clear_signal(char pattern)
; -----------------------------------------
; function clear_signal
; -----------------------------------------
_clear_signal:
; genReceive
mov a,dpl
mov dptr,#_clear_signal_pattern_1_1
movx @dptr,a
C$rt_task.c$536$2$2 ==.
;rt_task.c:536: BEGIN_CRITICAL;
; genIfx
; genIfxJump
; Peephole 111 removed ljmp by inverse jump logic
; genAssign
; Peephole 250.a using atomic test and clear
jbc _EA,00107$
sjmp 00102$
00107$:
; genAssign
setb _clear_signal_EA_local_1_1
; Peephole 112.b changed ljmp to sjmp
sjmp 00103$
00102$:
; genAssign
clr _clear_signal_EA_local_1_1
00103$:
C$rt_task.c$537$1$1 ==.
;rt_task.c:537: task_signals[run] &= ~(pattern);
; genPlus
mov a,_run
add a,#_task_signals
mov r0,a
; genPlus
mov a,_run
add a,#_task_signals
mov r1,a
; genPointerGet
; genNearPointerGet
mov ar2,@r1
; genAssign
mov dptr,#_clear_signal_pattern_1_1
movx a,@dptr
; genCpl
; Peephole 105 removed redundant mov
; genAnd
; Peephole 105 removed redundant mov
; Peephole 184 removed redundant mov
cpl a
mov r3,a
anl a,r2
; genPointerSet
; genNearPointerSet
mov @r0,acc
C$rt_task.c$538$2$5 ==.
;rt_task.c:538: END_CRITICAL;
; genAssign
mov c,_clear_signal_EA_local_1_1
mov _EA,c
00104$:
C$rt_task.c$539$2$5 ==.
XG$clear_signal$0$0 ==.
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'signal'
;------------------------------------------------------------
;pattern Allocated with name '_signal_PARM_2'
;task Allocated with name '_signal_task_1_1'
;------------------------------------------------------------
G$signal$0$0 ==.
C$rt_task.c$544$2$5 ==.
;rt_task.c:544: void signal(char task,char pattern)
; -----------------------------------------
; function signal
; -----------------------------------------
_signal:
; genReceive
mov a,dpl
mov dptr,#_signal_task_1_1
movx @dptr,a
C$rt_task.c$547$2$2 ==.
;rt_task.c:547: BEGIN_CRITICAL;
; genIfx
; genIfxJump
; Peephole 111 removed ljmp by inverse jump logic
; genAssign
; Peephole 250.a using atomic test and clear
jbc _EA,00110$
sjmp 00102$
00110$:
; genAssign
setb _signal_EA_local_1_1
; Peephole 112.b changed ljmp to sjmp
sjmp 00103$
00102$:
; genAssign
clr _signal_EA_local_1_1
00103$:
C$rt_task.c$549$1$1 ==.
;rt_task.c:549: INT_SIGNAL(task,pattern);
; genAssign
mov dptr,#_signal_task_1_1
movx a,@dptr
; genPlus
; Peephole 177.b removed redundant mov
mov r2,a
add a,#_task_signals
mov r0,a
; genPlus
; Peephole 236.g used r2 instead of ar2
mov a,r2
add a,#_task_signals
mov r1,a
; genPointerGet
; genNearPointerGet
mov ar3,@r1
; genAssign
mov dptr,#_signal_PARM_2
movx a,@dptr
; genOr
; Peephole 105 removed redundant mov
mov r4,a
orl a,r3
; genPointerSet
; genNearPointerSet
mov @r0,acc
; genPlus
; Peephole 236.g used r2 instead of ar2
mov a,r2
add a,#_task_signals
mov r0,a
; genPointerGet
; genNearPointerGet
mov ar3,@r0
; genPlus
; Peephole 236.g used r2 instead of ar2
mov a,r2
add a,#_task_masks
mov r0,a
; genPointerGet
; genNearPointerGet
mov ar4,@r0
; genAnd
mov a,r4
anl a,r3
; genIfx
; genIfxJump
; Peephole 110 removed ljmp by inverse jump logic
jz 00105$
00111$:
; genLeftShift
mov b,r2
inc b
mov a,#0x01
sjmp 00114$
00112$:
add a,acc
00114$:
djnz b,00112$
; genOr
; Peephole 105 removed redundant mov
mov r2,a
orl _ready,a
00105$:
C$rt_task.c$551$2$6 ==.
;rt_task.c:551: END_CRITICAL;
; genAssign
mov c,_signal_EA_local_1_1
mov _EA,c
00106$:
C$rt_task.c$552$2$6 ==.
XG$signal$0$0 ==.
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'rt_system_init'
;------------------------------------------------------------
;------------------------------------------------------------
G$rt_system_init$0$0 ==.
C$rt_task.c$559$2$6 ==.
;rt_task.c:559: void rt_system_init(void)
; -----------------------------------------
; function rt_system_init
; -----------------------------------------
_rt_system_init:
C$rt_task.c$562$1$1 ==.
;rt_task.c:562: AUXR = M0 |XRS1 | XRS0 ;
; genAssign
mov _AUXR,#0x2C
C$rt_task.c$563$1$1 ==.
;rt_task.c:563: CKCON = WdX2 | PcaX2 | SiX2 | T2X2 | T0X2 | X2; /* T1X2 bit is '0' to double UART speed */
; genAssign
mov _CKCON,#0x7B
C$rt_task.c$565$1$1 ==.
;rt_task.c:565: TMOD = 0x20; /* timer1 mode2 timer0 mode0 */
; genAssign
mov _TMOD,#0x20
C$rt_task.c$567$1$1 ==.
;rt_task.c:567: EA = 0;
; genAssign
clr _EA
00101$:
C$rt_task.c$570$1$1 ==.
XG$rt_system_init$0$0 ==.
ret
.area CSEG (CODE)
G$priotab$0$0 == .
_priotab:
.db #0x00
.db #0x00
.db #0x01
.db #0x01
.db #0x02
.db #0x02
.db #0x02
.db #0x02
.db #0x03
.db #0x03
.db #0x03
.db #0x03
.db #0x03
.db #0x03
.db #0x03
.db #0x03
.db #0x00
.db #0x00
.db #0x01
.db #0x00
.db #0x02
.db #0x00
.db #0x01
.db #0x01
.db #0x03
.db #0x00
.db #0x01
.db #0x01
.db #0x02
.db #0x02
.db #0x02
.db #0x02
.db #0x00
.db #0x00
.db #0x01
.db #0x01
.db #0x02
.db #0x02
.db #0x02
.db #0x00
.db #0x03
.db #0x03
.db #0x03
.db #0x00
.db #0x03
.db #0x00
.db #0x01
.db #0x01
.db #0x00
.db #0x00
.db #0x01
.db #0x00
.db #0x02
.db #0x00
.db #0x01
.db #0x02
.db #0x03
.db #0x00
.db #0x01
.db #0x03
.db #0x02
.db #0x03
.db #0x03
.db #0x00
.area XINIT (CODE)