📄 os_core.src
字号:
.STACK _OS_MemCopy=8
PUSH.W R6
PUSH.W R5
.LINE 1147
MOV.W R0,R5
MOV.W @(6:16,SP),R6
.LINE 1148
BRA L225
L224:
.LINE 1148
.LINE 1149
MOV.B @R1+,R0L
MOV.B R0L,@R5
ADDS.W #1,R5
.LINE 1150
SUBS.W #1,R6
L225:
.LINE 1148
MOV.W R6,R6
BNE L224
.LINE 1152
POP.W R5
POP.W R6
RTS
.LINE 1171
_OS_Sched: ; function: OS_Sched
.STACK _OS_Sched=4
PUSH.W R6
.LINE 1172
.LINE 1179
JSR @_OSCPUSaveSR:16
MOV.B R0L,R6H
.LINE 1180
MOV.B @_OSIntNesting:16,R0L
BNE L226
.LINE 1180
.LINE 1181
MOV.B @_OSLockNesting:16,R0L
BNE L226
.LINE 1181
.LINE 1182
BSR __$OS_SchedNew
.LINE 1183
MOV.B @_OSPrioHighRdy:16,R6L
MOV.B @_OSPrioCur:16,R0L
CMP.B R0L,R6L
BEQ L226
.LINE 1183
.LINE 1184
MOV.B R6L,R0L
SUB.B R0H,R0H
ADD.W R0,R0
MOV.W @(_OSTCBPrioTbl:16,R0),R0
MOV.W R0,@_OSTCBHighRdy:16
.LINE 1188
MOV.W #_OSCtxSwCtr,R0
JSR @$PRIL$3:16
.LINE 1189
JSR @_OSCtxSw:16
L226:
.LINE 1193
MOV.B R6H,R0L
JSR @_OSCPURestoreSR:16
.LINE 1194
POP.W R6
RTS
.LINE 1213
__$OS_SchedNew: ; function: OS_SchedNew
.STACK __$OS_SchedNew=4
PUSH.W R6
.LINE 1214
.LINE 1219
MOV.B @_OSRdyGrp:16,R6L
SUB.B R6H,R6H
MOV.B @(_OSUnMapTbl:16,R6),R6L
.LINE 1220
MOV.B R6L,R0L
MOV.B #8,R0H
MULXU.B R0H,R0
MOV.B @(_OSRdyTbl:16,R6),R1L
SUB.B R1H,R1H
MOV.B @(_OSUnMapTbl:16,R1),R1L
ADD.B R1L,R0L
MOV.B R0L,@_OSPrioHighRdy:16
.LINE 1238
POP.W R6
RTS
.LINE 1328
_OS_TaskIdle: ; function: OS_TaskIdle
.STACK _OS_TaskIdle=4
.LINE 1329
.LINE 1337
L229:
.LINE 1337
.LINE 1338
JSR @_OSCPUSaveSR:16
MOV.B R0L,R6L
.LINE 1339
MOV.W #_OSIdleCtr,R0
JSR @$PRIL$3:16
.LINE 1340
MOV.B R6L,R0L
JSR @_OSCPURestoreSR:16
.LINE 1341
JSR @_OSTaskIdleHook:16
.LINE 1337
BRA L229
.LINE 1343
.LINE 1370
_OS_TaskStat: ; function: OS_TaskStat
.STACK _OS_TaskStat=26
MOV.W #14,R6
SUB.W R6,SP
.LINE 1371
MOV.W #_OSIdleCtrMax,R4
MOV.W #_OSCPUUsage,R5
.LINE 1382
BRA L232
L231:
.LINE 1382
.LINE 1383
MOV.W #15,R0
JSR @_OSTimeDly:16
L232:
.LINE 1382
MOV.B @_OSStatRdy:16,R0L
BEQ L231
.LINE 1385
MOV.W R4,R1
MOV.W #L233,R2
MOV.W #10,R0
ADD.W SP,R0
JSR @$DIVUL$3:16
.LINE 1386
L234:
.LINE 1386
.LINE 1387
JSR @_OSCPUSaveSR:16
MOV.B R0L,R6L
.LINE 1388
MOV.W #_OSIdleCtr,R0
MOV.W #_OSIdleCtrRun,R1
JSR @$MV4$3:16
.LINE 1389
MOV.W #_OSIdleCtr,R0
MOV.W #6,R1
ADD.W SP,R1
JSR @$MV4$3:16
.LINE 1390
SUB.W R0,R0
MOV.W R0,@_OSIdleCtr:16
MOV.W R0,@_OSIdleCtr+2:16
.LINE 1391
MOV.B R6L,R0L
JSR @_OSCPURestoreSR:16
.LINE 1392
MOV.W @(10:16,SP),R0
BNE L237
MOV.W @(12:16,SP),R0
BEQ L236
L237:
.LINE 1392
.LINE 1393
MOV.W #6,R1
ADD.W SP,R1
MOV.W #10,R2
ADD.W SP,R2
MOV.W SP,R0
JSR @$DIVUL$3:16
MOV.B #100,R6L
MOV.B @(3:16,R0),R0L
SUB.B R0L,R6L
.LINE 1394
MOV.B R6L,R6L
BLT L238
.LINE 1394
.LINE 1395
MOV.B R6L,@R5
BRA L240
L238:
.LINE 1396
.LINE 1397
SUB.B R0L,R0L
MOV.B R0L,@R5
BRA L240
L236:
.LINE 1399
.LINE 1400
SUB.B R0L,R0L
MOV.B R0L,@R5
.LINE 1401
MOV.W R4,R1
MOV.W #L233,R2
MOV.W #10,R0
ADD.W SP,R0
JSR @$DIVUL$3:16
L240:
.LINE 1403
JSR @_OSTaskStatHook:16
.LINE 1407
MOV.W #7,R0
JSR @_OSTimeDly:16
.LINE 1386
JMP @L234:16
.LINE 1409
.LINE 1497
_OS_TCBInit: ; function: OS_TCBInit
.STACK _OS_TCBInit=24
JSR @$sp_regsv$3:16
.LINE 1498
MOV.W #_OSTCBList,R4
MOV.B R0L,R5L
MOV.W R1,R3
.LINE 1506
JSR @_OSCPUSaveSR:16
MOV.B R0L,R5H
.LINE 1507
MOV.W @_OSTCBFreeList:16,R6
.LINE 1508
BNE $+6
JMP @L241:16
.LINE 1508
.LINE 1509
MOV.W @(2:16,R6),R0
MOV.W R0,@_OSTCBFreeList:16
.LINE 1510
MOV.B R5H,R0L
JSR @_OSCPURestoreSR:16
.LINE 1511
MOV.W R3,@R6
.LINE 1512
MOV.B R5L,@(14:16,R6)
.LINE 1513
SUB.B R0L,R0L
MOV.B R0L,@(12:16,R6)
.LINE 1514
MOV.B R0L,@(13:16,R6)
.LINE 1515
SUB.W R1,R1
MOV.W R1,@(10:16,R6)
.LINE 1536
MOV.B R5L,R0H
SHLR.B R0H
SHLR.B R0H
SHLR.B R0H
MOV.B R0H,@(16:16,R6)
.LINE 1537
MOV.B R0H,R1L
MOV.W #1,R0
JSR @$SLI$3:16
MOV.B R0L,@(18:16,R6)
.LINE 1538
MOV.B R5L,R0L
AND.B #7,R0L
MOV.B R0L,@(15:16,R6)
.LINE 1539
MOV.B R0L,R1L
MOV.W #1,R0
JSR @$SLI$3:16
MOV.B R0L,@(17:16,R6)
.LINE 1548
SUB.W R3,R3
MOV.W R3,@(6:16,R6)
.LINE 1556
MOV.W R3,@(8:16,R6)
.LINE 1573
MOV.W R6,R0
JSR @_OSTCBInitHook:16
.LINE 1576
MOV.W R6,R0
JSR @_OSTaskCreateHook:16
.LINE 1578
JSR @_OSCPUSaveSR:16
MOV.B R0L,R5H
.LINE 1579
MOV.B R5L,R0L
SUB.B R0H,R0H
ADD.W R0,R0
MOV.W R6,@(_OSTCBPrioTbl:16,R0)
.LINE 1580
MOV.W @R4,R0
MOV.W R0,@(2:16,R6)
.LINE 1581
MOV.W R3,@(4:16,R6)
.LINE 1582
MOV.W @R4,R0
CMP.W R3,R0
BEQ L242
.LINE 1582
.LINE 1583
MOV.W R6,@(4:16,R0)
L242:
.LINE 1585
MOV.W R6,@R4
.LINE 1586
MOV.B @(18:16,R6),R0L
MOV.B @_OSRdyGrp:16,R0H
OR.B R0L,R0H
MOV.B R0H,@_OSRdyGrp:16
.LINE 1587
MOV.B @(16:16,R6),R0L
SUB.B R0H,R0H
MOV.B @(17:16,R6),R1L
MOV.B @(_OSRdyTbl:16,R0),R1H
OR.B R1L,R1H
MOV.B R1H,@(_OSRdyTbl:16,R0)
.LINE 1588
MOV.B @_OSTaskCtr:16,R0L
INC.B R0L
MOV.B R0L,@_OSTaskCtr:16
.LINE 1589
MOV.B R5H,R0L
JSR @_OSCPURestoreSR:16
.LINE 1590
SUB.B R0L,R0L
BRA L243
L241:
.LINE 1592
JSR @_OSCPURestoreSR:16
.LINE 1593
MOV.B #70,R0L
.LINE 1594
L243:
JMP @$spregld2$3:16
.SECTION C,DATA,ALIGN=2
L233:
.DATA.W H'0000,H'0064
_OSUnMapTbl: ; static: OSUnMapTbl
.DATA.B H'00,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'03,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'04,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'03,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'05,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'03,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'04,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'03,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'06,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'03,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'04,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'03,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'05,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'03,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'04,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'03,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'07,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'03,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'04,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'03,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'05,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'03,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'04,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'03,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'06,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'03,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'04,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'03,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'05,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'03,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'04,H'00,H'01,H'00,H'02,H'00,H'01,H'00,H'03,H'00,H'01,H'00,H'02,H'00,H'01,H'00
.SECTION B,DATA,ALIGN=2
_OSCtxSwCtr: ; static: OSCtxSwCtr
.RES.W 2
_OSEventFreeList: ; static: OSEventFreeList
.RES.W 1
_OSEventTbl: ; static: OSEventTbl
.RES.W 20
_OSIdleCtrMax: ; static: OSIdleCtrMax
.RES.W 2
_OSIdleCtrRun: ; static: OSIdleCtrRun
.RES.W 2
_OSTaskStatStk: ; static: OSTaskStatStk
.RES.W 50
_OSIdleCtr: ; static: OSIdleCtr
.RES.W 2
_OSTaskIdleStk: ; static: OSTaskIdleStk
.RES.W 25
_OSTCBCur: ; static: OSTCBCur
.RES.W 1
_OSTCBFreeList: ; static: OSTCBFreeList
.RES.W 1
_OSTCBHighRdy: ; static: OSTCBHighRdy
.RES.W 1
_OSTCBList: ; static: OSTCBList
.RES.W 1
_OSTCBPrioTbl: ; static: OSTCBPrioTbl
.RES.W 5
_OSTCBTbl: ; static: OSTCBTbl
.RES.W 40
_OSCPUUsage: ; static: OSCPUUsage
.RES.B 1
_OSStatRdy: ; static: OSStatRdy
.RES.B 1
_OSIntNesting: ; static: OSIntNesting
.RES.B 1
_OSLockNesting: ; static: OSLockNesting
.RES.B 1
_OSPrioCur: ; static: OSPrioCur
.RES.B 1
_OSPrioHighRdy: ; static: OSPrioHighRdy
.RES.B 1
_OSRdyGrp: ; static: OSRdyGrp
.RES.B 1
_OSRdyTbl: ; static: OSRdyTbl
.RES.B 1
_OSRunning: ; static: OSRunning
.RES.B 1
_OSTaskCtr: ; static: OSTaskCtr
.RES.B 1
.END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -