?? z80_c.c
字號:
/*
*********************************************************************************************************
* uC/OS
* Microcomputer Real-Time Multitasking Operating System
*
* (c) Copyright 1994, Jean J. Labrosse, Plantation, FL
* All Rights Reserved
*
*
* Z-80 Specific code
*
* File : Z80_C.C
* By : Jean J. Labrosse
*********************************************************************************************************
*/
#include "INCLUDES.H"
/*
*********************************************************************************************************
* CREATE A TASK
*********************************************************************************************************
*/
UBYTE OSTaskCreate(void (*task)(void *pd), void *pdata, void *pstk, UBYTE p)
{
UWORD *stk;
UBYTE err;
OS_ENTER_CRITICAL();
if (OSTCBPrioTbl[p] == (OS_TCB *)0) { /* Make sure task doesn't already exist at this priority */
OS_EXIT_CRITICAL();
stk = (UWORD *)pstk; /* Load stack pointer */
*--stk = (UWORD)pdata; /* Simulate call to function with argument */
*--stk = (UWORD)task;
*--stk = (UWORD)task; /* Put pointer to task on top of stack */
*--stk = (UWORD)0x0000; /* AF = 0 */
*--stk = (UWORD)0x0000; /* BC = 0 */
*--stk = (UWORD)0x0000; /* DE = 0 */
*--stk = (UWORD)0x0000; /* HL = 0 */
*--stk = (UWORD)0x0000; /* IX = 0 */
*--stk = (UWORD)0x0000; /* IY = 0 */
err = OSTCBInit(p, (void *)stk); /* Get and initialize a TCB */
if (err == OS_NO_ERR) {
if (OSRunning) { /* Find highest priority task if multitasking has started */
OSSched();
}
}
return (err);
} else {
OS_EXIT_CRITICAL();
return (OS_PRIO_EXIST);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -