From 36af5ceca2e73fb34c0cf28bb6e6bbce25f2b25e Mon Sep 17 00:00:00 2001 From: Franklin Wei Date: Sat, 7 Nov 2015 13:57:01 -0500 Subject: rename sysdep->target --- Makefile | 8 +++--- sysdep/kos/.gitignore | 3 --- sysdep/kos/Makefile | 13 --------- sysdep/kos/crt0.asm | 68 ----------------------------------------------- sysdep/kos/main.c | 14 ---------- sysdep/kos/package.config | 4 --- sysdep/unix/main.c | 17 ------------ sysdep/unix/platform.h | 11 -------- target/kos/.gitignore | 3 +++ target/kos/Makefile | 13 +++++++++ target/kos/crt0.asm | 68 +++++++++++++++++++++++++++++++++++++++++++++++ target/kos/main.c | 14 ++++++++++ target/kos/package.config | 4 +++ target/unix/main.c | 17 ++++++++++++ target/unix/platform.h | 11 ++++++++ 15 files changed, 134 insertions(+), 134 deletions(-) delete mode 100644 sysdep/kos/.gitignore delete mode 100644 sysdep/kos/Makefile delete mode 100644 sysdep/kos/crt0.asm delete mode 100644 sysdep/kos/main.c delete mode 100644 sysdep/kos/package.config delete mode 100644 sysdep/unix/main.c delete mode 100644 sysdep/unix/platform.h create mode 100644 target/kos/.gitignore create mode 100644 target/kos/Makefile create mode 100644 target/kos/crt0.asm create mode 100644 target/kos/main.c create mode 100644 target/kos/package.config create mode 100644 target/unix/main.c create mode 100644 target/unix/platform.h diff --git a/Makefile b/Makefile index 34f6649..36e86d7 100644 --- a/Makefile +++ b/Makefile @@ -3,12 +3,12 @@ PLATFORM = unix DUCKY_OBJ = src/ducky.o -CFLAGS = -lbsd -lm -O2 -g -I src/ -I sysdep/$(PLATFORM) +CFLAGS = -lbsd -lm -O2 -g -I src/ -I target/$(PLATFORM) -$(PLATFORM).bin: $(DUCKY_OBJ) sysdep/$(PLATFORM)/main.o - $(CC) $(DUCKY_OBJ) sysdep/$(PLATFORM)/main.o $(CFLAGS) -o $(PLATFORM).bin +$(PLATFORM).bin: $(DUCKY_OBJ) target/$(PLATFORM)/main.o + $(CC) $(DUCKY_OBJ) target/$(PLATFORM)/main.o $(CFLAGS) -o $(PLATFORM).bin clean: rm -f $(PLATFORM).bin - rm -f sysdep/$(PLATFORM)/main.o + rm -f target/$(PLATFORM)/main.o rm -f $(DUCKY_OBJ) diff --git a/sysdep/kos/.gitignore b/sysdep/kos/.gitignore deleted file mode 100644 index 722062b..0000000 --- a/sysdep/kos/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -.knightos/ -bin/ -*.o diff --git a/sysdep/kos/Makefile b/sysdep/kos/Makefile deleted file mode 100644 index db9d68e..0000000 --- a/sysdep/kos/Makefile +++ /dev/null @@ -1,13 +0,0 @@ -include .knightos/variables.make - -#INCLUDE+=add to your include path - -HEADERS:=$(wildcard *.h) - -ALL_TARGETS:=$(BIN)ducky - -$(BIN)ducky: $(OUT)main.o $(OUT)crt0.o $(OUT)../../src/ducky.o - mkdir -p $(BIN) - scas $(ASFLAGS) $(OUT)crt0.o $(LIBRARIES) $(OUT)main.o $(OUT)../../src/ducky.o -o $(BIN)ducky - -include .knightos/sdk.make diff --git a/sysdep/kos/crt0.asm b/sysdep/kos/crt0.asm deleted file mode 100644 index 51acf08..0000000 --- a/sysdep/kos/crt0.asm +++ /dev/null @@ -1,68 +0,0 @@ -#include - .db "KEXC" - .db KEXC_ENTRY_POINT - .dw __start - .db KEXC_STACK_SIZE - .dw 20 - .db KEXC_NAME - .dw __name - .db KEXC_HEADER_END -__name: - .db "ducky", 0 -__start: - call __relocate_data - call __initialize_globals - jp _main - -_exit: - ; Note: status code is discarded - pcall(exitThread) -__exit_end: -.function _exit, _exit, _exit_end - -__relocate_data: - ; + 4 because the KEXC header has two static pointers - ; TODO: There's probably a better way of doing that - ld hl, __scas_relocatable_data + 4 -.loop: - ld e, (hl) \ inc hl - ld d, (hl) \ inc hl - ld bc, 0 - pcall(cpBCDE) - ret z - - ex de, hl - kld(bc, 0) - add hl, bc - push de - ld e, (hl) \ inc hl - ld d, (hl) - ex de, hl \ add hl, bc \ ex de, hl - ld (hl), d \ dec hl - ld (hl), e - pop de - ex de, hl - jr .loop - -__initialize_globals: - ; Note: this could be more optimized if we could toggle auto-relocation in code - ld hl, __s_initialized_end - ld bc, __s_initialized - scf \ ccf - sbc hl, bc - ld b, h \ ld c, l - ld a, b - or c - ret z - ld hl, __s_initializer - ld de, __s_initialized - ldir - ret - -; Assign some labels to the start of some sections -.area _INITIALIZER -__s_initializer: -.area _INITIALIZED -__s_initialized: -.area _INITIALIZED_END -__s_initialized_end: diff --git a/sysdep/kos/main.c b/sysdep/kos/main.c deleted file mode 100644 index 7326b4f..0000000 --- a/sysdep/kos/main.c +++ /dev/null @@ -1,14 +0,0 @@ -#include -#include - -/* Warning! C support in KnightOS is highly experimental. Your mileage may vary. */ - -void main() { - SCREEN *screen; - get_lcd_lock(); - screen = screen_allocate(); - screen_clear(screen); - draw_string(screen, 0, 0, "Hello world!"); - screen_draw(screen); - while (1); -} diff --git a/sysdep/kos/package.config b/sysdep/kos/package.config deleted file mode 100644 index 9cd874c..0000000 --- a/sysdep/kos/package.config +++ /dev/null @@ -1,4 +0,0 @@ -name=ducky -repo=community -version=0.1.0 --sdk-template=c diff --git a/sysdep/unix/main.c b/sysdep/unix/main.c deleted file mode 100644 index a2db705..0000000 --- a/sysdep/unix/main.c +++ /dev/null @@ -1,17 +0,0 @@ -#include -#include - -int main(int argc, char *argv[]) -{ - if(argc == 2) - { - int fd = open(argv[1], O_RDONLY); - ducky_main(fd); - close(fd); - } - else - { - printf("Usage: %s FILE\n", argv[0]); - } - return 0; -} diff --git a/sysdep/unix/platform.h b/sysdep/unix/platform.h deleted file mode 100644 index ca331e2..0000000 --- a/sysdep/unix/platform.h +++ /dev/null @@ -1,11 +0,0 @@ -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/target/kos/.gitignore b/target/kos/.gitignore new file mode 100644 index 0000000..722062b --- /dev/null +++ b/target/kos/.gitignore @@ -0,0 +1,3 @@ +.knightos/ +bin/ +*.o diff --git a/target/kos/Makefile b/target/kos/Makefile new file mode 100644 index 0000000..db9d68e --- /dev/null +++ b/target/kos/Makefile @@ -0,0 +1,13 @@ +include .knightos/variables.make + +#INCLUDE+=add to your include path + +HEADERS:=$(wildcard *.h) + +ALL_TARGETS:=$(BIN)ducky + +$(BIN)ducky: $(OUT)main.o $(OUT)crt0.o $(OUT)../../src/ducky.o + mkdir -p $(BIN) + scas $(ASFLAGS) $(OUT)crt0.o $(LIBRARIES) $(OUT)main.o $(OUT)../../src/ducky.o -o $(BIN)ducky + +include .knightos/sdk.make diff --git a/target/kos/crt0.asm b/target/kos/crt0.asm new file mode 100644 index 0000000..51acf08 --- /dev/null +++ b/target/kos/crt0.asm @@ -0,0 +1,68 @@ +#include + .db "KEXC" + .db KEXC_ENTRY_POINT + .dw __start + .db KEXC_STACK_SIZE + .dw 20 + .db KEXC_NAME + .dw __name + .db KEXC_HEADER_END +__name: + .db "ducky", 0 +__start: + call __relocate_data + call __initialize_globals + jp _main + +_exit: + ; Note: status code is discarded + pcall(exitThread) +__exit_end: +.function _exit, _exit, _exit_end + +__relocate_data: + ; + 4 because the KEXC header has two static pointers + ; TODO: There's probably a better way of doing that + ld hl, __scas_relocatable_data + 4 +.loop: + ld e, (hl) \ inc hl + ld d, (hl) \ inc hl + ld bc, 0 + pcall(cpBCDE) + ret z + + ex de, hl + kld(bc, 0) + add hl, bc + push de + ld e, (hl) \ inc hl + ld d, (hl) + ex de, hl \ add hl, bc \ ex de, hl + ld (hl), d \ dec hl + ld (hl), e + pop de + ex de, hl + jr .loop + +__initialize_globals: + ; Note: this could be more optimized if we could toggle auto-relocation in code + ld hl, __s_initialized_end + ld bc, __s_initialized + scf \ ccf + sbc hl, bc + ld b, h \ ld c, l + ld a, b + or c + ret z + ld hl, __s_initializer + ld de, __s_initialized + ldir + ret + +; Assign some labels to the start of some sections +.area _INITIALIZER +__s_initializer: +.area _INITIALIZED +__s_initialized: +.area _INITIALIZED_END +__s_initialized_end: diff --git a/target/kos/main.c b/target/kos/main.c new file mode 100644 index 0000000..7326b4f --- /dev/null +++ b/target/kos/main.c @@ -0,0 +1,14 @@ +#include +#include + +/* Warning! C support in KnightOS is highly experimental. Your mileage may vary. */ + +void main() { + SCREEN *screen; + get_lcd_lock(); + screen = screen_allocate(); + screen_clear(screen); + draw_string(screen, 0, 0, "Hello world!"); + screen_draw(screen); + while (1); +} diff --git a/target/kos/package.config b/target/kos/package.config new file mode 100644 index 0000000..9cd874c --- /dev/null +++ b/target/kos/package.config @@ -0,0 +1,4 @@ +name=ducky +repo=community +version=0.1.0 +-sdk-template=c diff --git a/target/unix/main.c b/target/unix/main.c new file mode 100644 index 0000000..a2db705 --- /dev/null +++ b/target/unix/main.c @@ -0,0 +1,17 @@ +#include +#include + +int main(int argc, char *argv[]) +{ + if(argc == 2) + { + int fd = open(argv[1], O_RDONLY); + ducky_main(fd); + close(fd); + } + else + { + printf("Usage: %s FILE\n", argv[0]); + } + return 0; +} diff --git a/target/unix/platform.h b/target/unix/platform.h new file mode 100644 index 0000000..ca331e2 --- /dev/null +++ b/target/unix/platform.h @@ -0,0 +1,11 @@ +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include -- cgit v1.1