From dc048978b56deaaf7d9336b38cb86c9ee0b46d8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20Fr=C3=B6schle?= Date: Fri, 3 May 2013 06:06:41 +0000 Subject: [PATCH] added separate file for ...cookie() functions --- sd-emutos/Makefile | 1 + sd-emutos/cookie.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++ sd-emutos/emusd.c | 41 ------------------------------------- 3 files changed, 52 insertions(+), 41 deletions(-) create mode 100644 sd-emutos/cookie.c diff --git a/sd-emutos/Makefile b/sd-emutos/Makefile index 0fd577a..2e84ee0 100644 --- a/sd-emutos/Makefile +++ b/sd-emutos/Makefile @@ -15,6 +15,7 @@ APP=$(EMUSD).prg all: $(APP) SOURCES=$(EMUSD).c \ + cookie.c \ xhdi.c OBJECTS=$(SOURCES:.c=.o) diff --git a/sd-emutos/cookie.c b/sd-emutos/cookie.c new file mode 100644 index 0000000..8a591ee --- /dev/null +++ b/sd-emutos/cookie.c @@ -0,0 +1,51 @@ +/* + * cookie.c + * + * Created on: 03.05.2013 + * Author: mfro + */ + +#include +#include + +static uint32_t cookieptr(void) +{ + return * (uint32_t *) 0x5a0L; +} + +int getcookie(uint32_t cookie, uint32_t *p_value) +{ + uint32_t *cookiejar = (long *) Supexec(cookieptr); + + if (!cookiejar) return 0; + + do + { + if (cookiejar[0] == cookie) + { + if (p_value) *p_value = cookiejar[1]; + return 1; + } + else + cookiejar = &(cookiejar[2]); + } while (cookiejar[-2]); + + return 0; +} + +void setcookie(uint32_t cookie, uint32_t value) +{ + uint32_t *cookiejar = (uint32_t *) Supexec(cookieptr); + + do + { + if (cookiejar[0] == cookie) + { + cookiejar[1] = value; + return; + } + else + cookiejar = &(cookiejar[2]); + } while (cookiejar[-2]); +} + diff --git a/sd-emutos/emusd.c b/sd-emutos/emusd.c index c8bf538..b6ea266 100644 --- a/sd-emutos/emusd.c +++ b/sd-emutos/emusd.c @@ -19,47 +19,6 @@ typedef uint32_t (*cookie_fun)(uint16_t opcode,...); static cookie_fun old_vector = NULL; -static long cookieptr (void) -{ - return * (uint32_t *) 0x5a0L; -} - -static int getcookie(uint32_t cookie, uint32_t *p_value) -{ - long *cookiejar = (long *) Supexec (cookieptr); - - if (!cookiejar) return 0; - - do - { - if (cookiejar[0] == cookie) - { - if (p_value) *p_value = cookiejar[1]; - return 1; - } - else - cookiejar = &(cookiejar[2]); - } while (cookiejar[-2]); - - return 0; -} - -static void setcookie(uint32_t cookie, uint32_t value) -{ - long *cookiejar = (long *) Supexec(cookieptr); - - do - { - if (cookiejar[0] == cookie) - { - cookiejar[1] = value; - return; - } - else - cookiejar = &(cookiejar[2]); - } while (cookiejar[-2]); -} - static cookie_fun get_fun_ptr(void) { static cookie_fun XHDI = NULL;