www.pudn.com > iccavrUCOS_m64.rar > Ucos_ii.lis
.module Ucos_ii.c
.area lit(rom, con, rel)
0000 _OSMapTbl::
0000 0102 .byte 1,2
0002 0408 .byte 4,8
0004 1020 .byte 16,32
0006 4080 .byte 64,128
0008 _OSUnMapTbl::
0008 0000 .byte 0,0
000A 0100 .byte 1,0
000C 0200 .byte 2,0
000E 0100 .byte 1,0
0010 0300 .byte 3,0
0012 0100 .byte 1,0
0014 0200 .byte 2,0
0016 0100 .byte 1,0
0018 0400 .byte 4,0
001A 0100 .byte 1,0
001C 0200 .byte 2,0
001E 0100 .byte 1,0
0020 0300 .byte 3,0
0022 0100 .byte 1,0
0024 0200 .byte 2,0
0026 0100 .byte 1,0
0028 0500 .byte 5,0
002A 0100 .byte 1,0
002C 0200 .byte 2,0
002E 0100 .byte 1,0
0030 0300 .byte 3,0
0032 0100 .byte 1,0
0034 0200 .byte 2,0
0036 0100 .byte 1,0
0038 0400 .byte 4,0
003A 0100 .byte 1,0
003C 0200 .byte 2,0
003E 0100 .byte 1,0
0040 0300 .byte 3,0
0042 0100 .byte 1,0
0044 0200 .byte 2,0
0046 0100 .byte 1,0
0048 0600 .byte 6,0
004A 0100 .byte 1,0
004C 0200 .byte 2,0
004E 0100 .byte 1,0
0050 0300 .byte 3,0
0052 0100 .byte 1,0
0054 0200 .byte 2,0
0056 0100 .byte 1,0
0058 0400 .byte 4,0
005A 0100 .byte 1,0
005C 0200 .byte 2,0
005E 0100 .byte 1,0
0060 0300 .byte 3,0
0062 0100 .byte 1,0
0064 0200 .byte 2,0
0066 0100 .byte 1,0
0068 0500 .byte 5,0
006A 0100 .byte 1,0
006C 0200 .byte 2,0
006E 0100 .byte 1,0
0070 0300 .byte 3,0
0072 0100 .byte 1,0
0074 0200 .byte 2,0
0076 0100 .byte 1,0
0078 0400 .byte 4,0
007A 0100 .byte 1,0
007C 0200 .byte 2,0
007E 0100 .byte 1,0
0080 0300 .byte 3,0
0082 0100 .byte 1,0
0084 0200 .byte 2,0
0086 0100 .byte 1,0
0088 0700 .byte 7,0
008A 0100 .byte 1,0
008C 0200 .byte 2,0
008E 0100 .byte 1,0
0090 0300 .byte 3,0
0092 0100 .byte 1,0
0094 0200 .byte 2,0
0096 0100 .byte 1,0
0098 0400 .byte 4,0
009A 0100 .byte 1,0
009C 0200 .byte 2,0
009E 0100 .byte 1,0
00A0 0300 .byte 3,0
00A2 0100 .byte 1,0
00A4 0200 .byte 2,0
00A6 0100 .byte 1,0
00A8 0500 .byte 5,0
00AA 0100 .byte 1,0
00AC 0200 .byte 2,0
00AE 0100 .byte 1,0
00B0 0300 .byte 3,0
00B2 0100 .byte 1,0
00B4 0200 .byte 2,0
00B6 0100 .byte 1,0
00B8 0400 .byte 4,0
00BA 0100 .byte 1,0
00BC 0200 .byte 2,0
00BE 0100 .byte 1,0
00C0 0300 .byte 3,0
00C2 0100 .byte 1,0
00C4 0200 .byte 2,0
00C6 0100 .byte 1,0
00C8 0600 .byte 6,0
00CA 0100 .byte 1,0
00CC 0200 .byte 2,0
00CE 0100 .byte 1,0
00D0 0300 .byte 3,0
00D2 0100 .byte 1,0
00D4 0200 .byte 2,0
00D6 0100 .byte 1,0
00D8 0400 .byte 4,0
00DA 0100 .byte 1,0
00DC 0200 .byte 2,0
00DE 0100 .byte 1,0
00E0 0300 .byte 3,0
00E2 0100 .byte 1,0
00E4 0200 .byte 2,0
00E6 0100 .byte 1,0
00E8 0500 .byte 5,0
00EA 0100 .byte 1,0
00EC 0200 .byte 2,0
00EE 0100 .byte 1,0
00F0 0300 .byte 3,0
00F2 0100 .byte 1,0
00F4 0200 .byte 2,0
00F6 0100 .byte 1,0
00F8 0400 .byte 4,0
00FA 0100 .byte 1,0
00FC 0200 .byte 2,0
00FE 0100 .byte 1,0
0100 0300 .byte 3,0
0102 0100 .byte 1,0
0104 0200 .byte 2,0
0106 0100 .byte 1,0
.area text(rom, con, rel)
; i -> R10,R11
.even
0000 _OSInit::
0000 0E940000 xcall push_gset3x
0004 2397 sbiw R28,3
0006 ; /*
0006 ; *********************************************************************************************************
0006 ; * uC/OS-II
0006 ; * The Real-Time Kernel
0006 ; *
0006 ; * (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
0006 ; * All Rights Reserved
0006 ; *
0006 ; * V2.00
0006 ; *
0006 ; * File : uCOS_II.C
0006 ; * By : Jean J. Labrosse
0006 ; *********************************************************************************************************
0006 ; */
0006 ;
0006 ; #define OS_GLOBALS /* Declare GLOBAL variables */
0006 ; #include "includes.h"
0006 ;
0006 ;
0006 ; #define OS_MASTER_FILE /* Prevent the following files from including includes.h */
0006 ; #include "os_core.c"
0006 ; #include "os_task.c"
0006 ; #include "os_time.c"
0006 ; //#include "uart.c"
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 ;
0006 80E0 ldi R24,0
0008 90E0 ldi R25,0
000A A0E0 ldi R26,0
000C B0E0 ldi R27,0
000E 9093BA00 sts _OSTime+1,R25
0012 8093B900 sts _OSTime,R24
0016 B093BC00 sts _OSTime+2+1,R27
001A A093BB00 sts _OSTime+2,R26
001E ;
001E 2224 clr R2
0020 2092ED00 sts _OSIntNesting,R2
0024 ;
0024 2092EC00 sts _OSLockNesting,R2
0028 ;
0028 ;
0028 2092E500 sts _OSTaskCtr,R2
002C ;
002C ;
002C 2092E600 sts _OSRunning,R2
0030 ;
0030 80E0 ldi R24,0
0032 90E0 ldi R25,0
0034 A0E0 ldi R26,0
0036 B0E0 ldi R27,0
0038 9093EF00 sts _OSIdleCtr+1,R25
003C 8093EE00 sts _OSIdleCtr,R24
0040 B093F100 sts _OSIdleCtr+2+1,R27
0044 A093F000 sts _OSIdleCtr+2,R26
0048 ;
0048 ;
0048 80E0 ldi R24,0
004A 90E0 ldi R25,0
004C A0E0 ldi R26,0
004E B0E0 ldi R27,0
0050 90930501 sts _OSCtxSwCtr+1,R25
0054 80930401 sts _OSCtxSwCtr,R24
0058 B0930701 sts _OSCtxSwCtr+2+1,R27
005C A0930601 sts _OSCtxSwCtr+2,R26
0060 ;
0060 2092E900 sts _OSRdyGrp,R2
0064 AA24 clr R10
0066 BB24 clr R11
0068 0AC0 xjmp L6
006A L3:
006A 80E0 ldi R24,<_OSRdyTbl
006C 90E0 ldi R25,>_OSRdyTbl
006E F501 movw R30,R10
0070 E80F add R30,R24
0072 F91F adc R31,R25
0074 2224 clr R2
0076 2082 std z+0,R2
0078 L4:
0078 C501 movw R24,R10
007A 0196 adiw R24,1
007C 5C01 movw R10,R24
007E L6:
007E ;
007E C501 movw R24,R10
0080 8230 cpi R24,2
0082 E0E0 ldi R30,0
0084 9E07 cpc R25,R30
0086 88F3 brlo L3
0088 ;
0088 ;
0088 ;
0088 ;
0088 2224 clr R2
008A 2092EB00 sts _OSPrioCur,R2
008E ;
008E 2092EA00 sts _OSPrioHighRdy,R2
0092 ;
0092 3324 clr R3
0094 3092E000 sts _OSTCBHighRdy+1,R3
0098 2092DF00 sts _OSTCBHighRdy,R2
009C ;
009C 3092E400 sts _OSTCBCur+1,R3
00A0 2092E300 sts _OSTCBCur,R2
00A4 ;
00A4 3092DE00 sts _OSTCBList+1,R3
00A8 2092DD00 sts _OSTCBList,R2
00AC AA24 clr R10
00AE BB24 clr R11
00B0 11C0 xjmp L10
00B2 L7:
00B2 02E0 ldi R16,2
00B4 10E0 ldi R17,0
00B6 9501 movw R18,R10
00B8 0E940000 xcall empy16s
00BC F801 movw R30,R16
00BE 80E0 ldi R24,<_OSTCBPrioTbl
00C0 90E0 ldi R25,>_OSTCBPrioTbl
00C2 E80F add R30,R24
00C4 F91F adc R31,R25
00C6 2224 clr R2
00C8 3324 clr R3
00CA 3182 std z+1,R3
00CC 2082 std z+0,R2
00CE L8:
00CE C501 movw R24,R10
00D0 0196 adiw R24,1
00D2 5C01 movw R10,R24
00D4 L10:
00D4 ;
00D4 C501 movw R24,R10
00D6 8031 cpi R24,16
00D8 E0E0 ldi R30,0
00DA 9E07 cpc R25,R30
00DC 50F3 brlo L7
00DE AA24 clr R10
00E0 BB24 clr R11
00E2 1BC0 xjmp L14
00E4 L11:
00E4 9501 movw R18,R10
00E6 2F5F subi R18,255 ; offset = 1
00E8 3F4F sbci R19,255
00EA 0EE0 ldi R16,14
00EC 10E0 ldi R17,0
00EE 0E940000 xcall empy16s
00F2 1801 movw R2,R16
00F4 80E0 ldi R24,<_OSTCBTbl
00F6 90E0 ldi R25,>_OSTCBTbl
00F8 280E add R2,R24
00FA 391E adc R3,R25
00FC 0EE0 ldi R16,14
00FE 10E0 ldi R17,0
0100 9501 movw R18,R10
0102 0E940000 xcall empy16s
0106 F801 movw R30,R16
0108 80E0 ldi R24,<_OSTCBTbl+2
010A 90E0 ldi R25,>_OSTCBTbl+2
010C E80F add R30,R24
010E F91F adc R31,R25
0110 3182 std z+1,R3
0112 2082 std z+0,R2
0114 L12:
0114 C501 movw R24,R10
0116 0196 adiw R24,1
0118 5C01 movw R10,R24
011A L14:
011A ;
011A ;
011A ;
011A C501 movw R24,R10
011C 8530 cpi R24,5
011E E0E0 ldi R30,0
0120 9E07 cpc R25,R30
0122 00F3 brlo L11
0124 ;
0124 ;
0124 ;
0124 2224 clr R2
0126 3324 clr R3
0128 30924900 sts _OSTCBTbl+70+2+1,R3
012C 20924800 sts _OSTCBTbl+70+2,R2
0130 ;
0130 80E0 ldi R24,<_OSTCBTbl
0132 90E0 ldi R25,>_OSTCBTbl
0134 9093E200 sts _OSTCBFreeList+1,R25
0138 8093E100 sts _OSTCBFreeList,R24
013C AA24 clr R10
013E BB24 clr R11
0140 1BC0 xjmp L21
0142 L18:
0142 9501 movw R18,R10
0144 2F5F subi R18,255 ; offset = 1
0146 3F4F sbci R19,255
0148 08E0 ldi R16,8
014A 10E0 ldi R17,0
014C 0E940000 xcall empy16s
0150 1801 movw R2,R16
0152 80E0 ldi R24,<_OSEventTbl
0154 90E0 ldi R25,>_OSEventTbl
0156 280E add R2,R24
0158 391E adc R3,R25
015A 08E0 ldi R16,8
015C 10E0 ldi R17,0
015E 9501 movw R18,R10
0160 0E940000 xcall empy16s
0164 F801 movw R30,R16
0166 80E0 ldi R24,<_OSEventTbl
0168 90E0 ldi R25,>_OSEventTbl
016A E80F add R30,R24
016C F91F adc R31,R25
016E 3182 std z+1,R3
0170 2082 std z+0,R2
0172 L19:
0172 C501 movw R24,R10
0174 0196 adiw R24,1
0176 5C01 movw R10,R24
0178 L21:
0178 ;
0178 ;
0178 ;
0178 C501 movw R24,R10
017A 8130 cpi R24,1
017C E0E0 ldi R30,0
017E 9E07 cpc R25,R30
0180 00F3 brlo L18
0182 ;
0182 ;
0182 ;
0182 2224 clr R2
0184 3324 clr R3
0186 3092FB00 sts _OSEventTbl+8+1,R3
018A 2092FA00 sts _OSEventTbl+8,R2
018E ;
018E 80E0 ldi R24,<_OSEventTbl
0190 90E0 ldi R25,>_OSEventTbl
0192 90930301 sts _OSEventFreeList+1,R25
0196 80930201 sts _OSEventFreeList,R24
019A ;
019A ;
019A ;
019A ;
019A 8FE0 ldi R24,15
019C 8A83 std y+2,R24
019E 80E0 ldi R24,<_OSTaskIdleStk+99
01A0 90E0 ldi R25,>_OSTaskIdleStk+99
01A2 9983 std y+1,R25
01A4 8883 std y+0,R24
01A6 2227 clr R18
01A8 3327 clr R19
01AA 00E0 ldi R16,PL_OSTaskIdle
01AE 2CD3 xcall _OSTaskCreate
01B0 L2:
01B0 2396 adiw R28,3
01B2 0E940000 xcall pop_gset3x
01B6 .dbline 0 ; func end
01B6 0895 ret
.even
01B8 _OSIntExit::
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 ;
01B8 0A93 st -y,r16
01BA 0FB7 in r16,0x3F
01BC F894 cli
01BE 0F93 push r16
01C0 0991 ld r16,y+
01C2 ;
01C2 8091ED00 lds R24,_OSIntNesting
01C6 8150 subi R24,1
01C8 282E mov R2,R24
01CA 2092ED00 sts _OSIntNesting,R2
01CE 4090EC00 lds R4,_OSLockNesting
01D2 2428 or R2,R4
01D4 09F0 breq X0
01D6 50C0 xjmp L25
01D8 X0:
01D8 ;
01D8 80E0 ldi R24,<_OSUnMapTbl
01DA 90E0 ldi R25,>_OSUnMapTbl
01DC E091E900 lds R30,_OSRdyGrp
01E0 FF27 clr R31
01E2 E80F add R30,R24
01E4 F91F adc R31,R25
01E6 E491 lpm R30,Z
01E8 E093B800 sts _OSIntExitY,R30
01EC ;
01EC 80E0 ldi R24,<_OSRdyTbl
01EE 90E0 ldi R25,>_OSRdyTbl
01F0 FF27 clr R31
01F2 E80F add R30,R24
01F4 F91F adc R31,R25
01F6 E081 ldd R30,z+0
01F8 FF27 clr R31
01FA 80E0 ldi R24,<_OSUnMapTbl
01FC 90E0 ldi R25,>_OSUnMapTbl
01FE E80F add R30,R24
0200 F91F adc R31,R25
0202 2490 lpm R2,Z
0204 3324 clr R3
0206 4090B800 lds R4,_OSIntExitY
020A 5524 clr R5
020C 440C lsl R4
020E 551C rol R5
0210 440C lsl R4
0212 551C rol R5
0214 440C lsl R4
0216 551C rol R5
0218 420C add R4,R2
021A 531C adc R5,R3
021C 4092EA00 sts _OSPrioHighRdy,R4
0220 ;
0220 2090EB00 lds R2,_OSPrioCur
0224 4214 cp R4,R2
0226 41F1 breq L27
0228 ;
0228 242C mov R2,R4
022A 82E0 ldi R24,2
022C 829D mul R24,R2
022E F001 movw R30,R0
0230 80E0 ldi R24,<_OSTCBPrioTbl
0232 90E0 ldi R25,>_OSTCBPrioTbl
0234 E80F add R30,R24
0236 F91F adc R31,R25
0238 2080 ldd R2,z+0
023A 3180 ldd R3,z+1
023C 3092E000 sts _OSTCBHighRdy+1,R3
0240 2092DF00 sts _OSTCBHighRdy,R2
0244 ;
0244 81E0 ldi R24,1
0246 90E0 ldi R25,0
0248 A0E0 ldi R26,0
024A B0E0 ldi R27,0
024C 40900601 lds R4,_OSCtxSwCtr+2
0250 50900701 lds R5,_OSCtxSwCtr+2+1
0254 20900401 lds R2,_OSCtxSwCtr
0258 30900501 lds R3,_OSCtxSwCtr+1
025C 280E add R2,R24
025E 391E adc R3,R25
0260 4A1E adc R4,R26
0262 5B1E adc R5,R27
0264 30920501 sts _OSCtxSwCtr+1,R3
0268 20920401 sts _OSCtxSwCtr,R2
026C 50920701 sts _OSCtxSwCtr+2+1,R5
0270 40920601 sts _OSCtxSwCtr+2,R4
0274 ;
0274 0E940000 xcall _OSIntCtxSw
0278 ;
0278 L27:
0278 ;
0278 L25:
0278 ;
0278 0A93 st -y,r16
027A 0F91 pop r16
027C 0FBF out 0x3F,r16
027E 0991 ld r16,y+
0280 L24:
0280 .dbline 0 ; func end
0280 0895 ret
0282 ; y -> R10
.even
0282 _OSSched::
0282 0E940000 xcall push_gset3x
0286 ;
0286 ;
0286 ;
0286 ;
0286 ;
0286 ;
0286 ;
0286 ;
0286 ;
0286 ;
0286 ;
0286 ;
0286 ;
0286 ;
0286 ;
0286 ;
0286 ;
0286 ;
0286 ;
0286 ;
0286 ;
0286 ;
0286 ;
0286 ;
0286 ;
0286 0A93 st -y,r16
0288 0FB7 in r16,0x3F
028A F894 cli
028C 0F93 push r16
028E 0991 ld r16,y+
0290 ;
0290 2090ED00 lds R2,_OSIntNesting
0294 3090EC00 lds R3,_OSLockNesting
0298 3228 or R3,R2
029A 09F0 breq X1
029C 4EC0 xjmp L30
029E X1:
029E ;
029E 80E0 ldi R24,<_OSUnMapTbl
02A0 90E0 ldi R25,>_OSUnMapTbl
02A2 E091E900 lds R30,_OSRdyGrp
02A6 FF27 clr R31
02A8 E80F add R30,R24
02AA F91F adc R31,R25
02AC A490 lpm R10,Z
02AE ;
02AE 80E0 ldi R24,<_OSRdyTbl
02B0 90E0 ldi R25,>_OSRdyTbl
02B2 EA2D mov R30,R10
02B4 FF27 clr R31
02B6 E80F add R30,R24
02B8 F91F adc R31,R25
02BA E081 ldd R30,z+0
02BC FF27 clr R31
02BE 80E0 ldi R24,<_OSUnMapTbl
02C0 90E0 ldi R25,>_OSUnMapTbl
02C2 E80F add R30,R24
02C4 F91F adc R31,R25
02C6 2490 lpm R2,Z
02C8 3324 clr R3
02CA 4A2C mov R4,R10
02CC 5524 clr R5
02CE 440C lsl R4
02D0 551C rol R5
02D2 440C lsl R4
02D4 551C rol R5
02D6 440C lsl R4
02D8 551C rol R5
02DA 420C add R4,R2
02DC 531C adc R5,R3
02DE 4092EA00 sts _OSPrioHighRdy,R4
02E2 ;
02E2 2090EB00 lds R2,_OSPrioCur
02E6 4214 cp R4,R2
02E8 41F1 breq L32
02EA ;
02EA 242C mov R2,R4
02EC 82E0 ldi R24,2
02EE 829D mul R24,R2
02F0 F001 movw R30,R0
02F2 80E0 ldi R24,<_OSTCBPrioTbl
02F4 90E0 ldi R25,>_OSTCBPrioTbl
02F6 E80F add R30,R24
02F8 F91F adc R31,R25
02FA 2080 ldd R2,z+0
02FC 3180 ldd R3,z+1
02FE 3092E000 sts _OSTCBHighRdy+1,R3
0302 2092DF00 sts _OSTCBHighRdy,R2
0306 ;
0306 81E0 ldi R24,1
0308 90E0 ldi R25,0
030A A0E0 ldi R26,0
030C B0E0 ldi R27,0
030E 40900601 lds R4,_OSCtxSwCtr+2
0312 50900701 lds R5,_OSCtxSwCtr+2+1
0316 20900401 lds R2,_OSCtxSwCtr
031A 30900501 lds R3,_OSCtxSwCtr+1
031E 280E add R2,R24
0320 391E adc R3,R25
0322 4A1E adc R4,R26
0324 5B1E adc R5,R27
0326 30920501 sts _OSCtxSwCtr+1,R3
032A 20920401 sts _OSCtxSwCtr,R2
032E 50920701 sts _OSCtxSwCtr+2+1,R5
0332 40920601 sts _OSCtxSwCtr+2,R4
0336 ;
0336 0E940000 xcall _OSCtxSw
033A ;
033A L32:
033A ;
033A L30:
033A ;
033A 0A93 st -y,r16
033C 0F91 pop r16
033E 0FBF out 0x3F,r16
0340 0991 ld r16,y+
0342 L29:
0342 0E940000 xcall pop_gset3x
0346 .dbline 0 ; func end
0346 0895 ret
0348 ; x -> R12
0348 ; y -> R10
.even
0348 _OSStart::
0348 0E940000 xcall push_gset4x
034C ;
034C ;
034C ;
034C ;
034C ;
034C ;
034C ;
034C ;
034C ;
034C ;
034C ;
034C ;
034C ;
034C ;
034C ;
034C ;
034C ;
034C ;
034C ;
034C ;
034C ;
034C ;
034C ;
034C ;
034C ;
034C ;
034C ;
034C 2090E600 lds R2,_OSRunning
0350 2220 tst R2
0352 09F0 breq X2
0354 39C0 xjmp L35
0356 X2:
0356 ;
0356 80E0 ldi R24,<_OSUnMapTbl
0358 90E0 ldi R25,>_OSUnMapTbl
035A E091E900 lds R30,_OSRdyGrp
035E FF27 clr R31
0360 E80F add R30,R24
0362 F91F adc R31,R25
0364 A490 lpm R10,Z
0366 ;
0366 80E0 ldi R24,<_OSRdyTbl
0368 90E0 ldi R25,>_OSRdyTbl
036A EA2D mov R30,R10
036C FF27 clr R31
036E E80F add R30,R24
0370 F91F adc R31,R25
0372 E081 ldd R30,z+0
0374 FF27 clr R31
0376 80E0 ldi R24,<_OSUnMapTbl
0378 90E0 ldi R25,>_OSUnMapTbl
037A E80F add R30,R24
037C F91F adc R31,R25
037E C490 lpm R12,Z
0380 ;
0380 2C2C mov R2,R12
0382 3324 clr R3
0384 4A2C mov R4,R10
0386 5524 clr R5
0388 440C lsl R4
038A 551C rol R5
038C 440C lsl R4
038E 551C rol R5
0390 440C lsl R4
0392 551C rol R5
0394 420C add R4,R2
0396 531C adc R5,R3
0398 4092EA00 sts _OSPrioHighRdy,R4
039C ;
039C 242C mov R2,R4
039E 2092EB00 sts _OSPrioCur,R2
03A2 ;
03A2 82E0 ldi R24,2
03A4 829D mul R24,R2
03A6 F001 movw R30,R0
03A8 80E0 ldi R24,<_OSTCBPrioTbl
03AA 90E0 ldi R25,>_OSTCBPrioTbl
03AC E80F add R30,R24
03AE F91F adc R31,R25
03B0 2080 ldd R2,z+0
03B2 3180 ldd R3,z+1
03B4 3092E000 sts _OSTCBHighRdy+1,R3
03B8 2092DF00 sts _OSTCBHighRdy,R2
03BC ;
03BC 3092E400 sts _OSTCBCur+1,R3
03C0 2092E300 sts _OSTCBCur,R2
03C4 ;
03C4 0E940000 xcall _OSStartHighRdy
03C8 ;
03C8 L35:
03C8 L34:
03C8 0E940000 xcall pop_gset4x
03CC .dbline 0 ; func end
03CC 0895 ret
03CE ; pdata -> R16,R17
.even
03CE _OSTaskIdle::
03CE ;
03CE ;
03CE ;
03CE ;
03CE ;
03CE ;
03CE ;
03CE ;
03CE ;
03CE ;
03CE ;
03CE ;
03CE ;
03CE ;
03CE ;
03CE ;
03CE ;
03CE ;
03CE L38:
03CE ;
03CE ;
03CE 0A93 st -y,r16
03D0 0FB7 in r16,0x3F
03D2 F894 cli
03D4 0F93 push r16
03D6 0991 ld r16,y+
03D8 ;
03D8 81E0 ldi R24,1
03DA 90E0 ldi R25,0
03DC A0E0 ldi R26,0
03DE B0E0 ldi R27,0
03E0 4090F000 lds R4,_OSIdleCtr+2
03E4 5090F100 lds R5,_OSIdleCtr+2+1
03E8 2090EE00 lds R2,_OSIdleCtr
03EC 3090EF00 lds R3,_OSIdleCtr+1
03F0 280E add R2,R24
03F2 391E adc R3,R25
03F4 4A1E adc R4,R26
03F6 5B1E adc R5,R27
03F8 3092EF00 sts _OSIdleCtr+1,R3
03FC 2092EE00 sts _OSIdleCtr,R2
0400 5092F100 sts _OSIdleCtr+2+1,R5
0404 4092F000 sts _OSIdleCtr+2,R4
0408 ;
0408 0A93 st -y,r16
040A 0F91 pop r16
040C 0FBF out 0x3F,r16
040E 0991 ld r16,y+
0410 ;
0410 DECF xjmp L38
0412 X3:
0412 L37:
0412 .dbline 0 ; func end
0412 0895 ret
0414 ; ptcb -> R10,R11
0414 ; opt -> y+10
0414 ; pext -> y+8
0414 ; stk_size -> y+6
0414 ; id -> y+4
0414 ; pbos -> y+2
0414 ; ptos -> R18,R19
0414 ; prio -> R16
.even
0414 _OSTCBInit::
0414 0E940000 xcall push_gset3x
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 ;
0418 0A93 st -y,r16
041A 0FB7 in r16,0x3F
041C F894 cli
041E 0F93 push r16
0420 0991 ld r16,y+
0422 ;
0422 A090E100 lds R10,_OSTCBFreeList
0426 B090E200 lds R11,_OSTCBFreeList+1
042A ;
042A AA20 tst R10
042C 19F4 brne X4
042E BB20 tst R11
0430 09F4 brne X6
0432 7CC0 xjmp L43
0434 X6:
0434 X4:
0434 ;
0434 F501 movw R30,R10
0436 2280 ldd R2,z+2
0438 3380 ldd R3,z+3
043A 3092E200 sts _OSTCBFreeList+1,R3
043E 2092E100 sts _OSTCBFreeList,R2
0442 ;
0442 0A93 st -y,r16
0444 0F91 pop r16
0446 0FBF out 0x3F,r16
0448 0991 ld r16,y+
044A ;
044A F501 movw R30,R10
044C 3183 std z+1,R19
044E 2083 std z+0,R18
0450 ;
0450 0187 std z+9,R16
0452 ;
0452 2224 clr R2
0454 F501 movw R30,R10
0456 2086 std z+8,R2
0458 ;
0458 3324 clr R3
045A F501 movw R30,R10
045C 3782 std z+7,R3
045E 2682 std z+6,R2
0460 ;
0460 ;
0460 ;
0460 ;
0460 ;
0460 ;
0460 ;
0460 ;
0460 202E mov R2,R16
0462 2694 lsr R2
0464 2694 lsr R2
0466 2694 lsr R2
0468 F501 movw R30,R10
046A 2386 std z+11,R2
046C ;
046C 80E0 ldi R24,<_OSMapTbl
046E 90E0 ldi R25,>_OSMapTbl
0470 F501 movw R30,R10
0472 E385 ldd R30,z+11
0474 FF27 clr R31
0476 E80F add R30,R24
0478 F91F adc R31,R25
047A E491 lpm R30,Z
047C D501 movw R26,R10
047E 1D96 adiw R26,13
0480 EC93 st x,R30
0482 ;
0482 802F mov R24,R16
0484 8770 andi R24,7
0486 F501 movw R30,R10
0488 8287 std z+10,R24
048A ;
048A 80E0 ldi R24,<_OSMapTbl
048C 90E0 ldi R25,>_OSMapTbl
048E F501 movw R30,R10
0490 E285 ldd R30,z+10
0492 FF27 clr R31
0494 E80F add R30,R24
0496 F91F adc R31,R25
0498 E491 lpm R30,Z
049A D501 movw R26,R10
049C 1C96 adiw R26,12
049E EC93 st x,R30
04A0 ;
04A0 ;
04A0 0A93 st -y,r16
04A2 0FB7 in r16,0x3F
04A4 F894 cli
04A6 0F93 push r16
04A8 0991 ld r16,y+
04AA ;
04AA 82E0 ldi R24,2
04AC 809F mul R24,R16
04AE F001 movw R30,R0
04B0 80E0 ldi R24,<_OSTCBPrioTbl
04B2 90E0 ldi R25,>_OSTCBPrioTbl
04B4 E80F add R30,R24
04B6 F91F adc R31,R25
04B8 B182 std z+1,R11
04BA A082 std z+0,R10
04BC ;
04BC 2090DD00 lds R2,_OSTCBList
04C0 3090DE00 lds R3,_OSTCBList+1
04C4 F501 movw R30,R10
04C6 3382 std z+3,R3
04C8 2282 std z+2,R2
04CA ;
04CA 2224 clr R2
04CC 3324 clr R3
04CE F501 movw R30,R10
04D0 3582 std z+5,R3
04D2 2482 std z+4,R2
04D4 ;
04D4 2090DD00 lds R2,_OSTCBList
04D8 3090DE00 lds R3,_OSTCBList+1
04DC 2220 tst R2
04DE 11F4 brne X5
04E0 3320 tst R3
04E2 31F0 breq L45
04E4 X5:
04E4 ;
04E4 E091DD00 lds R30,_OSTCBList
04E8 F091DE00 lds R31,_OSTCBList+1
04EC B582 std z+5,R11
04EE A482 std z+4,R10
04F0 ;
04F0 L45:
04F0 ;
04F0 B092DE00 sts _OSTCBList+1,R11
04F4 A092DD00 sts _OSTCBList,R10
04F8 ;
04F8 F501 movw R30,R10
04FA 2584 ldd R2,z+13
04FC 3090E900 lds R3,_OSRdyGrp
0500 3228 or R3,R2
0502 3092E900 sts _OSRdyGrp,R3
0506 ;
0506 80E0 ldi R24,<_OSRdyTbl
0508 90E0 ldi R25,>_OSRdyTbl
050A F501 movw R30,R10
050C 2384 ldd R2,z+11
050E 3324 clr R3
0510 280E add R2,R24
0512 391E adc R3,R25
0514 F501 movw R30,R10
0516 4484 ldd R4,z+12
0518 F101 movw R30,R2
051A 5080 ldd R5,z+0
051C 5428 or R5,R4
051E 5082 std z+0,R5
0520 ;
0520 0A93 st -y,r16
0522 0F91 pop r16
0524 0FBF out 0x3F,r16
0526 0991 ld r16,y+
0528 ;
0528 0027 clr R16
052A 05C0 xjmp L42
052C L43:
052C ;
052C ;
052C 0A93 st -y,r16
052E 0F91 pop r16
0530 0FBF out 0x3F,r16
0532 0991 ld r16,y+
0534 ;
0534 06E4 ldi R16,70
0536 L42:
0536 0E940000 xcall pop_gset3x
053A .dbline 0 ; func end
053A 0895 ret
053C ; ptcb -> R16,R17
.even
053C _OSTimeTick::
053C ;
053C ;
053C ;
053C ;
053C ;
053C ;
053C ;
053C ;
053C ;
053C ;
053C ;
053C ;
053C ;
053C ;
053C ;
053C ;
053C ;
053C ;
053C ;
053C ;
053C ;
053C ;
053C 0091DD00 lds R16,_OSTCBList
0540 1091DE00 lds R17,_OSTCBList+1
0544 3FC0 xjmp L49
0546 L48:
0546 ;
0546 ;
0546 0A93 st -y,r16
0548 0FB7 in r16,0x3F
054A F894 cli
054C 0F93 push r16
054E 0991 ld r16,y+
0550 ;
0550 F801 movw R30,R16
0552 2680 ldd R2,z+6
0554 3780 ldd R3,z+7
0556 2220 tst R2
0558 19F4 brne X7
055A 3320 tst R3
055C 09F4 brne X9
055E 2BC0 xjmp L51
0560 X9:
0560 X7:
0560 ;
0560 C801 movw R24,R16
0562 0696 adiw R24,6
0564 FC01 movw R30,R24
0566 8081 ldd R24,z+0
0568 9181 ldd R25,z+1
056A 0197 sbiw R24,1
056C 2C01 movw R4,R24
056E 5182 std z+1,R5
0570 4082 std z+0,R4
0572 8030 cpi R24,0
0574 8907 cpc R24,R25
0576 09F0 breq X10
0578 1EC0 xjmp L53
057A X10:
057A X8:
057A ;
057A F801 movw R30,R16
057C 2084 ldd R2,z+8
057E 23FC sbrc R2,3
0580 15C0 rjmp L55
0582 ;
0582 F801 movw R30,R16
0584 2584 ldd R2,z+13
0586 3090E900 lds R3,_OSRdyGrp
058A 3228 or R3,R2
058C 3092E900 sts _OSRdyGrp,R3
0590 ;
0590 80E0 ldi R24,<_OSRdyTbl
0592 90E0 ldi R25,>_OSRdyTbl
0594 F801 movw R30,R16
0596 2384 ldd R2,z+11
0598 3324 clr R3
059A 280E add R2,R24
059C 391E adc R3,R25
059E F801 movw R30,R16
05A0 4484 ldd R4,z+12
05A2 F101 movw R30,R2
05A4 5080 ldd R5,z+0
05A6 5428 or R5,R4
05A8 5082 std z+0,R5
05AA 05C0 xjmp L56
05AC L55:
05AC ;
05AC ;
05AC 81E0 ldi R24,1
05AE 90E0 ldi R25,0
05B0 F801 movw R30,R16
05B2 9783 std z+7,R25
05B4 8683 std z+6,R24
05B6 ;
05B6 L56:
05B6 ;
05B6 L53:
05B6 ;
05B6 L51:
05B6 F801 movw R30,R16
05B8 0281 ldd R16,z+2
05BA 1381 ldd R17,z+3
05BC 0A93 st -y,r16
05BE 0F91 pop r16
05C0 0FBF out 0x3F,r16
05C2 0991 ld r16,y+
05C4 L49:
05C4 F801 movw R30,R16
05C6 8185 ldd R24,z+9
05C8 8F30 cpi R24,15
05CA 09F0 breq X11
05CC BCCF xjmp L48
05CE X11:
05CE ;
05CE ;
05CE ;
05CE ;
05CE 0A93 st -y,r16
05D0 0FB7 in r16,0x3F
05D2 F894 cli
05D4 0F93 push r16
05D6 0991 ld r16,y+
05D8 ;
05D8 81E0 ldi R24,1
05DA 90E0 ldi R25,0
05DC A0E0 ldi R26,0
05DE B0E0 ldi R27,0
05E0 4090BB00 lds R4,_OSTime+2
05E4 5090BC00 lds R5,_OSTime+2+1
05E8 2090B900 lds R2,_OSTime
05EC 3090BA00 lds R3,_OSTime+1
05F0 280E add R2,R24
05F2 391E adc R3,R25
05F4 4A1E adc R4,R26
05F6 5B1E adc R5,R27
05F8 3092BA00 sts _OSTime+1,R3
05FC 2092B900 sts _OSTime,R2
0600 5092BC00 sts _OSTime+2+1,R5
0604 4092BB00 sts _OSTime+2,R4
0608 ;
0608 0A93 st -y,r16
060A 0F91 pop r16
060C 0FBF out 0x3F,r16
060E 0991 ld r16,y+
0610 L47:
0610 .dbline 0 ; func end
0610 0895 ret
0612 ; stks -> R14,R15
0612 ; tmp -> R12,R13
0612 ; stk -> R10,R11
0612 ; opt -> y+8
0612 ; ptos -> y+6
0612 ; pdata -> R18,R19
0612 ; task -> R16,R17
.even
0612 _OSTaskStkInit::
0612 0E940000 xcall push_gset5x
0616 AE80 ldd R10,y+6
0618 BF80 ldd R11,y+7
061A C501 movw R24,R10
061C 8454 subi R24,68
061E 9040 sbci R25,0
0620 F801 movw R30,R16
0622 C590 lpm R12,Z+
0624 D490 lpm R13,Z
0626 1C01 movw R2,R24
0628 0197 sbiw R24,1
062A F101 movw R30,R2
062C C082 std z+0,R12
062E 1C01 movw R2,R24
0630 0197 sbiw R24,1
0632 7C01 movw R14,R24
0634 2601 movw R4,R12
0636 452C mov R4,R5
0638 5524 clr R5
063A F101 movw R30,R2
063C 4082 std z+0,R4
063E 1501 movw R2,R10
0640 C101 movw R24,R2
0642 0197 sbiw R24,1
0644 4424 clr R4
0646 F101 movw R30,R2
0648 4082 std z+0,R4
064A 1C01 movw R2,R24
064C 0197 sbiw R24,1
064E 5C01 movw R10,R24
0650 81E0 ldi R24,1
0652 F101 movw R30,R2
0654 8083 std z+0,R24
0656 1501 movw R2,R10
0658 C101 movw R24,R2
065A 0197 sbiw R24,1
065C 5C01 movw R10,R24
065E 82E0 ldi R24,2
0660 F101 movw R30,R2
0662 8083 std z+0,R24
0664 1501 movw R2,R10
0666 C101 movw R24,R2
0668 0197 sbiw R24,1
066A 5C01 movw R10,R24
066C 83E0 ldi R24,3
066E F101 movw R30,R2
0670 8083 std z+0,R24
0672 1501 movw R2,R10
0674 C101 movw R24,R2
0676 0197 sbiw R24,1
0678 5C01 movw R10,R24
067A 84E0 ldi R24,4
067C F101 movw R30,R2
067E 8083 std z+0,R24
0680 1501 movw R2,R10
0682 C101 movw R24,R2
0684 0197 sbiw R24,1
0686 5C01 movw R10,R24
0688 85E0 ldi R24,5
068A F101 movw R30,R2
068C 8083 std z+0,R24
068E 1501 movw R2,R10
0690 C101 movw R24,R2
0692 0197 sbiw R24,1
0694 5C01 movw R10,R24
0696 86E0 ldi R24,6
0698 F101 movw R30,R2
069A 8083 std z+0,R24
069C 1501 movw R2,R10
069E C101 movw R24,R2
06A0 0197 sbiw R24,1
06A2 5C01 movw R10,R24
06A4 87E0 ldi R24,7
06A6 F101 movw R30,R2
06A8 8083 std z+0,R24
06AA 1501 movw R2,R10
06AC C101 movw R24,R2
06AE 0197 sbiw R24,1
06B0 5C01 movw R10,R24
06B2 88E0 ldi R24,8
06B4 F101 movw R30,R2
06B6 8083 std z+0,R24
06B8 1501 movw R2,R10
06BA C101 movw R24,R2
06BC 0197 sbiw R24,1
06BE 5C01 movw R10,R24
06C0 89E0 ldi R24,9
06C2 F101 movw R30,R2
06C4 8083 std z+0,R24
06C6 1501 movw R2,R10
06C8 C101 movw R24,R2
06CA 0197 sbiw R24,1
06CC 5C01 movw R10,R24
06CE 80E1 ldi R24,16
06D0 F101 movw R30,R2
06D2 8083 std z+0,R24
06D4 1501 movw R2,R10
06D6 C101 movw R24,R2
06D8 0197 sbiw R24,1
06DA 5C01 movw R10,R24
06DC 81E1 ldi R24,17
06DE F101 movw R30,R2
06E0 8083 std z+0,R24
06E2 1501 movw R2,R10
06E4 C101 movw R24,R2
06E6 0197 sbiw R24,1
06E8 5C01 movw R10,R24
06EA 82E1 ldi R24,18
06EC F101 movw R30,R2
06EE 8083 std z+0,R24
06F0 1501 movw R2,R10
06F2 C101 movw R24,R2
06F4 0197 sbiw R24,1
06F6 5C01 movw R10,R24
06F8 83E1 ldi R24,19
06FA F101 movw R30,R2
06FC 8083 std z+0,R24
06FE 1501 movw R2,R10
0700 C101 movw R24,R2
0702 0197 sbiw R24,1
0704 5C01 movw R10,R24
0706 84E1 ldi R24,20
0708 F101 movw R30,R2
070A 8083 std z+0,R24
070C 1501 movw R2,R10
070E C101 movw R24,R2
0710 0197 sbiw R24,1
0712 5C01 movw R10,R24
0714 85E1 ldi R24,21
0716 F101 movw R30,R2
0718 8083 std z+0,R24
071A 6901 movw R12,R18
071C 1501 movw R2,R10
071E C101 movw R24,R2
0720 0197 sbiw R24,1
0722 F101 movw R30,R2
0724 C082 std z+0,R12
0726 1C01 movw R2,R24
0728 0197 sbiw R24,1
072A 2601 movw R4,R12
072C 452C mov R4,R5
072E 5524 clr R5
0730 F101 movw R30,R2
0732 4082 std z+0,R4
0734 1C01 movw R2,R24
0736 0197 sbiw R24,1
0738 5C01 movw R10,R24
073A 88E1 ldi R24,24
073C F101 movw R30,R2
073E 8083 std z+0,R24
0740 1501 movw R2,R10
0742 C101 movw R24,R2
0744 0197 sbiw R24,1
0746 5C01 movw R10,R24
0748 89E1 ldi R24,25
074A F101 movw R30,R2
074C 8083 std z+0,R24
074E 1501 movw R2,R10
0750 C101 movw R24,R2
0752 0197 sbiw R24,1
0754 5C01 movw R10,R24
0756 80E2 ldi R24,32
0758 F101 movw R30,R2
075A 8083 std z+0,R24
075C 1501 movw R2,R10
075E C101 movw R24,R2
0760 0197 sbiw R24,1
0762 5C01 movw R10,R24
0764 81E2 ldi R24,33
0766 F101 movw R30,R2
0768 8083 std z+0,R24
076A 1501 movw R2,R10
076C C101 movw R24,R2
076E 0197 sbiw R24,1
0770 5C01 movw R10,R24
0772 82E2 ldi R24,34
0774 F101 movw R30,R2
0776 8083 std z+0,R24
0778 1501 movw R2,R10
077A C101 movw R24,R2
077C 0197 sbiw R24,1
077E 5C01 movw R10,R24
0780 83E2 ldi R24,35
0782 F101 movw R30,R2
0784 8083 std z+0,R24
0786 1501 movw R2,R10
0788 C101 movw R24,R2
078A 0197 sbiw R24,1
078C 5C01 movw R10,R24
078E 84E2 ldi R24,36
0790 F101 movw R30,R2
0792 8083 std z+0,R24
0794 1501 movw R2,R10
0796 C101 movw R24,R2
0798 0197 sbiw R24,1
079A 5C01 movw R10,R24
079C 85E2 ldi R24,37
079E F101 movw R30,R2
07A0 8083 std z+0,R24
07A2 1501 movw R2,R10
07A4 C101 movw R24,R2
07A6 0197 sbiw R24,1
07A8 5C01 movw R10,R24
07AA 86E2 ldi R24,38
07AC F101 movw R30,R2
07AE 8083 std z+0,R24
07B0 1501 movw R2,R10
07B2 C101 movw R24,R2
07B4 0197 sbiw R24,1
07B6 5C01 movw R10,R24
07B8 87E2 ldi R24,39
07BA F101 movw R30,R2
07BC 8083 std z+0,R24
07BE 1501 movw R2,R10
07C0 C101 movw R24,R2
07C2 0197 sbiw R24,1
07C4 5C01 movw R10,R24
07C6 80E3 ldi R24,48
07C8 F101 movw R30,R2
07CA 8083 std z+0,R24
07CC 1501 movw R2,R10
07CE C101 movw R24,R2
07D0 0197 sbiw R24,1
07D2 5C01 movw R10,R24
07D4 81E3 ldi R24,49
07D6 F101 movw R30,R2
07D8 8083 std z+0,R24
07DA 1501 movw R2,R10
07DC C101 movw R24,R2
07DE 0197 sbiw R24,1
07E0 5C01 movw R10,R24
07E2 80E8 ldi R24,128
07E4 F101 movw R30,R2
07E6 8083 std z+0,R24
07E8 6701 movw R12,R14
07EA 1501 movw R2,R10
07EC C101 movw R24,R2
07EE 0197 sbiw R24,1
07F0 5C01 movw R10,R24
07F2 2601 movw R4,R12
07F4 452C mov R4,R5
07F6 5524 clr R5
07F8 F101 movw R30,R2
07FA 4082 std z+0,R4
07FC FC01 movw R30,R24
07FE C082 std z+0,R12
0800 8C01 movw R16,R24
0802 L57:
0802 0E940000 xcall pop_gset5x
0806 .dbline 0 ; func end
0806 0895 ret
0808 ; psp -> R10,R11
0808 ; err -> R10
0808 ; prio -> R12
0808 ; ptos -> y+16
0808 ; pdata -> R14,R15
0808 ; task -> R10,R11
.even
0808 _OSTaskCreate::
0808 0E940000 xcall push_gset5x
080C 7901 movw R14,R18
080E 5801 movw R10,R16
0810 2A97 sbiw R28,10
0812 CA88 ldd R12,y+18
0814 8FE0 ldi R24,15
0816 8C15 cp R24,R12
0818 10F4 brsh L59
081A 0AE2 ldi R16,42
081C 70C0 xjmp L58
081E L59:
081E 0A93 st -y,r16
0820 0FB7 in r16,0x3F
0822 F894 cli
0824 0F93 push r16
0826 0991 ld r16,y+
0828 82E0 ldi R24,2
082A 8C9D mul R24,R12
082C F001 movw R30,R0
082E 80E0 ldi R24,<_OSTCBPrioTbl
0830 90E0 ldi R25,>_OSTCBPrioTbl
0832 E80F add R30,R24
0834 F91F adc R31,R25
0836 2080 ldd R2,z+0
0838 3180 ldd R3,z+1
083A 2220 tst R2
083C 09F0 breq X13
083E 5AC0 xjmp L61
0840 X13:
0840 3320 tst R3
0842 09F0 breq X14
0844 57C0 xjmp L61
0846 X14:
0846 X12:
0846 82E0 ldi R24,2
0848 8C9D mul R24,R12
084A F001 movw R30,R0
084C 80E0 ldi R24,<_OSTCBPrioTbl
084E 90E0 ldi R25,>_OSTCBPrioTbl
0850 E80F add R30,R24
0852 F91F adc R31,R25
0854 81E0 ldi R24,1
0856 90E0 ldi R25,0
0858 9183 std z+1,R25
085A 8083 std z+0,R24
085C 0A93 st -y,r16
085E 0F91 pop r16
0860 0FBF out 0x3F,r16
0862 0991 ld r16,y+
0864 2224 clr R2
0866 3324 clr R3
0868 3B82 std y+3,R3
086A 2A82 std y+2,R2
086C 0888 ldd R0,y+16
086E 1988 ldd R1,y+17
0870 1982 std y+1,R1
0872 0882 std y+0,R0
0874 9701 movw R18,R14
0876 8501 movw R16,R10
0878 CCDE xcall _OSTaskStkInit
087A 5801 movw R10,R16
087C 2224 clr R2
087E 3324 clr R3
0880 3986 std y+9,R3
0882 2886 std y+8,R2
0884 3F82 std y+7,R3
0886 2E82 std y+6,R2
0888 3D82 std y+5,R3
088A 2C82 std y+4,R2
088C 3B82 std y+3,R3
088E 2A82 std y+2,R2
0890 3982 std y+1,R3
0892 2882 std y+0,R2
0894 9501 movw R18,R10
0896 0C2D mov R16,R12
0898 BDDD xcall _OSTCBInit
089A A02E mov R10,R16
089C 0023 tst R16
089E A1F4 brne L63
08A0 0A93 st -y,r16
08A2 0FB7 in r16,0x3F
08A4 F894 cli
08A6 0F93 push r16
08A8 0991 ld r16,y+
08AA 8091E500 lds R24,_OSTaskCtr
08AE 8F5F subi R24,255 ; addi 1
08B0 8093E500 sts _OSTaskCtr,R24
08B4 0A93 st -y,r16
08B6 0F91 pop r16
08B8 0FBF out 0x3F,r16
08BA 0991 ld r16,y+
08BC 2090E600 lds R2,_OSRunning
08C0 2220 tst R2
08C2 B1F0 breq L64
08C4 DEDC xcall _OSSched
08C6 14C0 xjmp L64
08C8 L63:
08C8 0A93 st -y,r16
08CA 0FB7 in r16,0x3F
08CC F894 cli
08CE 0F93 push r16
08D0 0991 ld r16,y+
08D2 82E0 ldi R24,2
08D4 8C9D mul R24,R12
08D6 F001 movw R30,R0
08D8 80E0 ldi R24,<_OSTCBPrioTbl
08DA 90E0 ldi R25,>_OSTCBPrioTbl
08DC E80F add R30,R24
08DE F91F adc R31,R25
08E0 2224 clr R2
08E2 3324 clr R3
08E4 3182 std z+1,R3
08E6 2082 std z+0,R2
08E8 0A93 st -y,r16
08EA 0F91 pop r16
08EC 0FBF out 0x3F,r16
08EE 0991 ld r16,y+
08F0 L64:
08F0 0A2D mov R16,R10
08F2 05C0 xjmp L58
08F4 L61:
08F4 0A93 st -y,r16
08F6 0F91 pop r16
08F8 0FBF out 0x3F,r16
08FA 0991 ld r16,y+
08FC 08E2 ldi R16,40
08FE L58:
08FE 2A96 adiw R28,10
0900 0E940000 xcall pop_gset5x
0904 .dbline 0 ; func end
0904 0895 ret
0906 ; ticks -> R10,R11
.even
0906 _OSTimeDly::
0906 0E940000 xcall push_gset3x
090A 5801 movw R10,R16
090C AA20 tst R10
090E 19F4 brne X15
0910 BB20 tst R11
0912 09F4 brne X16
0914 32C0 xjmp L68
0916 X16:
0916 X15:
0916 0A93 st -y,r16
0918 0FB7 in r16,0x3F
091A F894 cli
091C 0F93 push r16
091E 0991 ld r16,y+
0920 80E0 ldi R24,<_OSRdyTbl
0922 90E0 ldi R25,>_OSRdyTbl
0924 E091E300 lds R30,_OSTCBCur
0928 F091E400 lds R31,_OSTCBCur+1
092C 2384 ldd R2,z+11
092E 3324 clr R3
0930 280E add R2,R24
0932 391E adc R3,R25
0934 E091E300 lds R30,_OSTCBCur
0938 F091E400 lds R31,_OSTCBCur+1
093C 4484 ldd R4,z+12
093E 4094 com R4
0940 F101 movw R30,R2
0942 5080 ldd R5,z+0
0944 5420 and R5,R4
0946 452C mov R4,R5
0948 4082 std z+0,R4
094A 5520 tst R5
094C 59F4 brne L70
094E E091E300 lds R30,_OSTCBCur
0952 F091E400 lds R31,_OSTCBCur+1
0956 2584 ldd R2,z+13
0958 2094 com R2
095A 3090E900 lds R3,_OSRdyGrp
095E 3220 and R3,R2
0960 3092E900 sts _OSRdyGrp,R3
0964 L70:
0964 E091E300 lds R30,_OSTCBCur
0968 F091E400 lds R31,_OSTCBCur+1
096C B782 std z+7,R11
096E A682 std z+6,R10
0970 0A93 st -y,r16
0972 0F91 pop r16
0974 0FBF out 0x3F,r16
0976 0991 ld r16,y+
0978 84DC xcall _OSSched
097A L68:
097A L67:
097A 0E940000 xcall pop_gset3x
097E .dbline 0 ; func end
097E 0895 ret
.area bss(ram, con, rel)
0000 _OSTCBTbl:
0000 .blkb 84
0054 _OSTaskIdleStk:
0054 .blkb 100
00B8 _OSIntExitY:
00B8 .blkb 1
00B9 _OSTime::
00B9 .blkb 4
00BD _OSTCBPrioTbl::
00BD .blkb 32
00DD _OSTCBList::
00DD .blkb 2
00DF _OSTCBHighRdy::
00DF .blkb 2
00E1 _OSTCBFreeList::
00E1 .blkb 2
00E3 _OSTCBCur::
00E3 .blkb 2
00E5 _OSTaskCtr::
00E5 .blkb 1
00E6 _OSRunning::
00E6 .blkb 1
00E7 _OSRdyTbl::
00E7 .blkb 2
00E9 _OSRdyGrp::
00E9 .blkb 1
00EA _OSPrioHighRdy::
00EA .blkb 1
00EB _OSPrioCur::
00EB .blkb 1
00EC _OSLockNesting::
00EC .blkb 1
00ED _OSIntNesting::
00ED .blkb 1
00EE _OSIdleCtr::
00EE .blkb 4
00F2 _OSEventTbl::
00F2 .blkb 16
0102 _OSEventFreeList::
0102 .blkb 2
0104 _OSCtxSwCtr::
0104 .blkb 4
.area func_lit
0000 E701 PL_OSTaskIdle: .word `_OSTaskIdle