From 6e06a2489ca3aa95add11a819d01d85895c3fa90 Mon Sep 17 00:00:00 2001 From: Astoria Date: Sat, 14 Jan 2023 11:00:10 -0600 Subject: [PATCH] IO expander programs --- IOX/Makefile | 35 +++++++++++++++++++++++++++++++++++ IOX/conio.c | 30 ++++++++++++++++++++++++++++++ IOX/conio.h | 5 +++++ IOX/test_iox.c | 24 ++++++++++++++++++++++++ IOX/test_iox.h | 0 5 files changed, 94 insertions(+) create mode 100644 IOX/Makefile create mode 100644 IOX/conio.c create mode 100644 IOX/conio.h create mode 100644 IOX/test_iox.c create mode 100644 IOX/test_iox.h diff --git a/IOX/Makefile b/IOX/Makefile new file mode 100644 index 0000000..b3bcba9 --- /dev/null +++ b/IOX/Makefile @@ -0,0 +1,35 @@ +LD = ../bin/ld65 +AS = ../bin/ca65 +CC = ../bin/cc65 +AL = ../bin/align + +CINCLUDE = -I../include +CFLAGS = -t none --cpu $(CPU) +LFLAGS = -C ../lib/rpc8e.cfg +LLIBS = ../lib/rpc8e.lib + +#gonna leave this here for now +CPU = 65c02 + + +IMAGES = test_iox.img + +.PHONY: all + +all: $(IMAGES) + +%.s: %.c + $(CC) $(CFLAGS) $(CINCLUDE) $< + +%.o: %.s + $(AS) $(CFLAGS) $< + +%.img: %.o + $(LD) $(LFLAGS) $< $(LLIBS) -o $@ + $(AL) $@ + + +clean: + rm *.o *.s + +.SUFFIXES: \ No newline at end of file diff --git a/IOX/conio.c b/IOX/conio.c new file mode 100644 index 0000000..501aba6 --- /dev/null +++ b/IOX/conio.c @@ -0,0 +1,30 @@ +#include "conio.h" +#include + +#define redbus 0x0300 + +int conid = 0x01; + +void conprint(char str[], int x, int y, int mode){ + con = (Console*)redbus; + rb_map_device(conid); + str_size = strlen(str); + con->cursor_mode = mode; + line = y; + con->line = line; + for (i = 0; i < str_size; i++){ + if (((y % 50) + (x + i) / 80) != line) { + line = (y % 50) + (x + i) / 80; + con->line = line; + } + con->display[(int)(x + i) % 80] = str[i]; + } +} + +void set_conid(int id){ + conid = id; +} + +int get_conid(){ + return conid; +} \ No newline at end of file diff --git a/IOX/conio.h b/IOX/conio.h new file mode 100644 index 0000000..87ecec4 --- /dev/null +++ b/IOX/conio.h @@ -0,0 +1,5 @@ +int i; +int line; +int str_size; +Console* con; +void conprint(char str[], int x, int y, int mode); \ No newline at end of file diff --git a/IOX/test_iox.c b/IOX/test_iox.c new file mode 100644 index 0000000..8a995cf --- /dev/null +++ b/IOX/test_iox.c @@ -0,0 +1,24 @@ +//test_iox.c + +#include +#include +#include +#include "test_iox.h" +#include +#include "conio.c" + +#define redbus 0x0300 +#define IOXID 0x03 + +Iox* expand; +int* output; + +void main() { + rb_set_window((void*)redbus); + rb_enable(); + expand = (Iox*)redbus; + rb_map_device(IOXID); + expand->out = 0; + output = (int*)expand->in; + conprint("very Nice", 40, 25, 3); +} \ No newline at end of file diff --git a/IOX/test_iox.h b/IOX/test_iox.h new file mode 100644 index 0000000..e69de29