2024-01-22 07:50:23 +00:00
|
|
|
#include <u.h>
|
|
|
|
#include <libc.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <fcall.h>
|
|
|
|
#include <thread.h>
|
|
|
|
#include <9p.h>
|
|
|
|
#include <draw.h>
|
|
|
|
#include <cursor.h>
|
|
|
|
#include <mouse.h>
|
|
|
|
#include <keyboard.h>
|
|
|
|
|
|
|
|
typedef enum {
|
2024-01-31 05:53:42 +00:00
|
|
|
CTL = 0,
|
|
|
|
CPU = 1,
|
|
|
|
MEMORY = 2
|
2024-01-22 07:50:23 +00:00
|
|
|
} FileType;
|
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
KURO_RUNS = 0,
|
|
|
|
KURO_QUITS
|
|
|
|
} WindowStatus;
|
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
PORT_MOUSE,
|
|
|
|
PORT_RESIZE,
|
|
|
|
PORT_KBD,
|
|
|
|
PORT_STATUS,
|
|
|
|
TOTAL_PORTS
|
|
|
|
} Port;
|
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
INIT,
|
|
|
|
OPEN_FILE,
|
|
|
|
SAVE_FILE,
|
|
|
|
MOUSE,
|
|
|
|
KEYBOARD,
|
|
|
|
SCROLL,
|
|
|
|
CURSOR,
|
|
|
|
SELECT,
|
|
|
|
INSERT,
|
|
|
|
DELETE,
|
|
|
|
CUT,
|
|
|
|
COPY,
|
|
|
|
PASTE,
|
|
|
|
EXEC,
|
|
|
|
PLUMB,
|
|
|
|
INDICATE,
|
|
|
|
SPLIT,
|
|
|
|
PARTITION,
|
|
|
|
TOTAL_OPCODES
|
|
|
|
} Opcode;
|
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
TAGF,
|
|
|
|
BODYF,
|
|
|
|
SHELLF,
|
|
|
|
TOTAL_SUBF
|
|
|
|
} SubFrame;
|
|
|
|
|
|
|
|
typedef struct Aux {
|
|
|
|
FileType type;
|
|
|
|
char* data;
|
|
|
|
int count;
|
|
|
|
} Aux;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
Opcode opcode;
|
|
|
|
void* data;
|
|
|
|
} Instruction;
|
|
|
|
|
|
|
|
typedef void (*Handler)(void*, void*);
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
uvlong id;
|
|
|
|
WindowStatus status;
|
|
|
|
Image* img;
|
|
|
|
Screen* screen;
|
|
|
|
char filepath[512];
|
|
|
|
Rune* tag;
|
|
|
|
uint tag_len;
|
|
|
|
Rune* body;
|
|
|
|
uint body_len;
|
|
|
|
} KuroMemory;
|
|
|
|
|
|
|
|
typedef struct {
|
|
|
|
uvlong id;
|
|
|
|
int fd;
|
|
|
|
Channel* cpu; /* chan(Instruction) */
|
|
|
|
Handler* handlers;
|
|
|
|
KuroMemory* memory;
|
|
|
|
Channel* status; /* chan(WidowStatus) */
|
2024-01-31 05:53:42 +00:00
|
|
|
} Node;
|