--- uae/src/include/osemu.h 2018/04/24 16:38:39 1.1 +++ uae/src/include/osemu.h 2018/04/24 16:40:21 1.1.1.3 @@ -6,72 +6,109 @@ * Copyright 1996 Bernd Schmidt */ - -extern void EXEC_NewList(CPTR list); -extern void EXEC_Insert(CPTR list, CPTR node, CPTR pred); -extern void EXEC_AddTail(CPTR list, CPTR node); -extern void EXEC_Enqueue(CPTR list, CPTR node); -extern void EXEC_Remove(CPTR node); -extern ULONG EXEC_RemHead(CPTR list); -extern ULONG EXEC_RemTail(CPTR list); -extern CPTR EXEC_FindName(CPTR start, char *name); - -extern CPTR EXEC_Allocate(CPTR memheader, unsigned long size); -extern CPTR EXEC_AllocMem(unsigned long size, ULONG requirements); -extern void EXEC_FreeMem(CPTR, unsigned long); -extern void EXEC_Deallocate(CPTR, CPTR, unsigned long); -extern void EXEC_FreeMem(CPTR, unsigned long); -extern unsigned long EXEC_AvailMem(ULONG requirements); -extern void EXEC_AddMemList(unsigned long, ULONG, int, CPTR, CPTR); -extern void EXEC_InitStruct(CPTR inittable, CPTR memory, unsigned long size); - -extern CPTR EXEC_SetIntVector(int number, CPTR interrupt); -extern void EXEC_RemIntServer(ULONG nr, CPTR interrupt); -extern void EXEC_AddIntServer(ULONG nr, CPTR interrupt); +static __inline__ char *raddr(uaecptr p) +{ + return p == 0 ? NULL : (char *)get_real_address(p); +} + +extern void timerdev_init(void); +extern void gfxlib_install(void); +extern void execlib_install(void); +extern void execlib_sysinit(void); + +/* exec.library */ + +extern uaecptr EXEC_sysbase; + +extern void EXEC_NewList(uaecptr list); +extern void EXEC_Insert(uaecptr list, uaecptr node, uaecptr pred); +extern void EXEC_AddTail(uaecptr list, uaecptr node); +extern void EXEC_Enqueue(uaecptr list, uaecptr node); +extern void EXEC_Remove(uaecptr node); +extern uae_u32 EXEC_RemHead(uaecptr list); +extern uae_u32 EXEC_RemTail(uaecptr list); +extern uaecptr EXEC_FindName(uaecptr start, char *name); + +extern uaecptr EXEC_Allocate(uaecptr memheader, unsigned long size); +extern uaecptr EXEC_AllocMem(unsigned long size, uae_u32 requirements); +extern void EXEC_FreeMem(uaecptr, unsigned long); +extern void EXEC_Deallocate(uaecptr, uaecptr, unsigned long); +extern void EXEC_FreeMem(uaecptr, unsigned long); +extern unsigned long EXEC_AvailMem(uae_u32 requirements); +extern void EXEC_AddMemList(unsigned long, uae_u32, int, uaecptr, uaecptr); +extern void EXEC_InitStruct(uaecptr inittable, uaecptr memory, unsigned long size); + +extern uaecptr EXEC_SetIntVector(int number, uaecptr interrupt); +extern void EXEC_RemIntServer(uae_u32 nr, uaecptr interrupt); +extern void EXEC_AddIntServer(uae_u32 nr, uaecptr interrupt); extern int EXEC_AllocSignal(int signum); extern void EXEC_FreeSignal(int signum); -extern void EXEC_InitSemaphore(CPTR sigsem); -extern CPTR EXEC_GetMsg(CPTR port); -extern void EXEC_SumLibrary(CPTR lib); -extern CPTR EXEC_SetFunction(CPTR lib, int funcOffset, CPTR function); -extern void EXEC_MakeFunctions(CPTR target, CPTR funcarray, CPTR funcdispb); -extern CPTR EXEC_MakeLibrary(CPTR, CPTR, CPTR, unsigned long, ULONG); -extern void EXEC_AddLibrary(CPTR lib); -extern void EXEC_AddDevice(CPTR lib); -extern void EXEC_AddResource(CPTR lib); - -extern CPTR EXEC_FindTask(char *name); - -extern ULONG EXEC_Permit(void); -extern ULONG EXEC_Forbid(void); -extern ULONG EXEC_Disable(void); -extern ULONG EXEC_Enable(void); - -extern LONG EXEC_WaitIO(CPTR ioreq); -extern void EXEC_DoIO(CPTR ioreq); -extern void EXEC_SendIO(CPTR ioreq); -extern CPTR EXEC_CheckIO(CPTR ioreq); +extern void EXEC_InitSemaphore(uaecptr sigsem); +extern uaecptr EXEC_GetMsg(uaecptr port); +extern void EXEC_SumLibrary(uaecptr lib); +extern uaecptr EXEC_SetFunction(uaecptr lib, int funcOffset, uaecptr function); +extern void EXEC_MakeFunctions(uaecptr target, uaecptr funcarray, uaecptr funcdispb); +extern uaecptr EXEC_MakeLibrary(uaecptr, uaecptr, uaecptr, unsigned long, uae_u32); +extern void EXEC_AddLibrary(uaecptr lib); +extern void EXEC_AddDevice(uaecptr lib); +extern void EXEC_AddResource(uaecptr lib); +extern void EXEC_AddPort(uaecptr port); +extern void EXEC_RemPort(uaecptr port); + +extern uaecptr EXEC_FindTask(char *name); +extern uaecptr EXEC_FindResident(char *name); +extern uaecptr EXEC_RawDoFormat(uae_u8 *fstr, uaecptr data, uaecptr pcp, uae_u32 pcd); /* These require a multi-tasking EXEC emulation */ -extern void EXEC_InitSemaphore(CPTR exec_sigsem); -extern ULONG EXEC_AttemptSemaphore(CPTR exec_sigsem); -extern void EXEC_ObtainSemaphore(CPTR exec_sigsem); -extern void EXEC_ReleaseSemaphore(CPTR exec_sigsem); - -extern CPTR EXEC_OpenLibrary(char *name, int version); -extern CPTR EXEC_OpenResource(char *name); -extern CPTR EXEC_OpenDevice(char *name, ULONG unit, CPTR ioRequest, ULONG flags); - -extern CPTR EXEC_AddTask(CPTR task, CPTR initPC, CPTR finalPC); - -extern ULONG EXEC_SetSignal(ULONG newsig, ULONG exec_sigmask); -extern void EXEC_Signal(CPTR task, ULONG exec_sigmask); - -extern void EXEC_PutMsg(CPTR port, CPTR msg); -extern void EXEC_ReplyMsg(CPTR msg); -extern CPTR EXEC_WaitPort(CPTR port); +extern uae_u32 EXEC_Wait(uae_u32 exec_sigmask); +extern void EXEC_ObtainSemaphoreList(uaecptr l); +extern void EXEC_ReleaseSemaphoreList(uaecptr l); + +extern uae_u32 EXEC_Permit(void); +extern uae_u32 EXEC_Forbid(void); +extern uae_u32 EXEC_Disable(void); +extern uae_u32 EXEC_Enable(void); + +extern uae_s32 EXEC_WaitIO(uaecptr ioreq); +extern uae_s32 EXEC_DoIO(uaecptr ioreq); +extern void EXEC_SendIO(uaecptr ioreq); +extern uaecptr EXEC_CheckIO(uaecptr ioreq); +extern void EXEC_AbortIO(uaecptr ioRequest); + +extern void EXEC_InitSemaphore(uaecptr exec_sigsem); +extern uae_u32 EXEC_AttemptSemaphore(uaecptr exec_sigsem); +extern void EXEC_ObtainSemaphore(uaecptr exec_sigsem); +extern void EXEC_ReleaseSemaphore(uaecptr exec_sigsem); + +extern uaecptr EXEC_OpenLibrary(char *name, int version); +extern uaecptr EXEC_OpenResource(char *name); +extern uaecptr EXEC_OpenDevice(char *name, uae_u32 unit, uaecptr ioRequest, uae_u32 flags); +extern uae_u32 EXEC_CloseLibrary(uaecptr lib); +extern uae_u32 EXEC_CloseDevice(uaecptr ioRequest); + +extern uaecptr EXEC_AddTask(uaecptr task, uaecptr initPC, uaecptr finalPC); +extern void EXEC_RemTask(uaecptr task); +extern int EXEC_SetTaskPri(uaecptr task, int pri); + +extern uae_u32 EXEC_SetSignal(uae_u32 newsig, uae_u32 exec_sigmask); +extern void EXEC_Signal(uaecptr task, uae_u32 exec_sigmask); + +extern void EXEC_PutMsg(uaecptr port, uaecptr msg); +extern void EXEC_ReplyMsg(uaecptr msg); +extern uaecptr EXEC_WaitPort(uaecptr port); + +extern void EXEC_QuantumElapsed(void); + +extern uaecptr EXEC_InitResident(uaecptr resident, uae_u32 segList); + +/* timer.device */ + +extern void TIMER_block(void); +extern void TIMER_unblock(void); +extern void TIMER_Interrupt(void); /* graphics.library */ -extern int GFX_WritePixel(CPTR rp, int x, int y); + +extern int GFX_WritePixel(uaecptr rp, int x, int y);