aboutsummaryrefslogtreecommitdiff
path: root/include/process.h
blob: 35e1fdfbae7857f9d57c29fbc2ef663580a663d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#ifndef SALIS_PROCESS_H
#define SALIS_PROCESS_H

#define SPROC_REG_COUNT   4
#define SPROC_STACK_SIZE  8
#define SPROC_ELEM_COUNT (6 + SPROC_REG_COUNT + SPROC_STACK_SIZE)

typedef struct {
	sword mb1a;
	sword mb1s;
	sword mb2a;
	sword mb2s;

	sword ip;
	sword sp;

	sword regs  [SPROC_REG_COUNT];
	sword stack [SPROC_STACK_SIZE];
} SProc;

void  sp_init     (void);
void  sp_quit     (void);
void  sp_load     (FILE *file);
void  sp_save     (FILE *file);

sbool sp_isInit   (void);
sword sp_getCount (void);
sword sp_getCap   (void);
sword sp_getFirst (void);
sword sp_getLast  (void);

sbool sp_isFree   (sword pidx);
SProc sp_getProc  (sword pidx);
void  sp_setProc  (sword pidx, SProc proc);

void  sp_create   (sword addr, sword size);
void  sp_kill     (void);
void  sp_cycle    (void);

#endif