devices/system.c
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 |
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include "../xyw.h"
#define SYSTEM_STATE 0x00
#define SYSTEM_ERROR 0x01
#define SYSTEM_PAGE 0x02
#define SYSTEM_RANDOM 0x03
#define SYSTEM_IMAGE_EXEC 0x06
void system_setup(xyw_byte *data)
{
(void)data;
srand(time(NULL));
}
xyw_byte system_input(xyw_byte *data, xyw_byte addr, xyw_byte *error)
{
if (addr == SYSTEM_RANDOM)
return (xyw_byte)(rand() & 0xFF);
(void)error;
return data[addr];
}
void system_output(xyw_byte *data, xyw_byte addr, xyw_byte *error)
{
(void)error;
if (addr == SYSTEM_IMAGE_EXEC + 1)
{
xyw_word target = XYW_PEEKW(&data[SYSTEM_IMAGE_EXEC]);
if (target != 0)
xyw_request_exec(target);
}
}
|