From ff2a727d24cf5c2975a8d528f4c66ebb05b4d105 Mon Sep 17 00:00:00 2001 From: Memallox Date: Fri, 7 Sep 2018 11:59:06 +0200 Subject: [PATCH] Complete makeover: simplify test repo --- .gitignore | 2 + Makefile | 197 ++------------------------------------- src/crt0.s => crt0.s | 0 gcc.cfg | 3 - icon.bmp | Bin 0 -> 2418 bytes include/dispbios.h | 97 ------------------- include/endian.h | 31 ------ include/filebios.h | 116 ----------------------- include/fxlib.h | 122 ------------------------ include/keybios.h | 158 ------------------------------- include/timer.h | 31 ------ lib/libfx.a | Bin 403628 -> 0 bytes main.c | 23 +++++ ld/cryptfx.ld => main.ld | 20 +++- src/cryptfx.c | 61 ------------ src/icon.bmp | Bin 2418 -> 0 bytes src/memfunctest.c | 194 -------------------------------------- src/memfunctest.h | 17 ---- version | 1 - 19 files changed, 50 insertions(+), 1023 deletions(-) rename src/crt0.s => crt0.s (100%) delete mode 100644 gcc.cfg create mode 100644 icon.bmp delete mode 100644 include/dispbios.h delete mode 100644 include/endian.h delete mode 100644 include/filebios.h delete mode 100644 include/fxlib.h delete mode 100644 include/keybios.h delete mode 100644 include/timer.h delete mode 100644 lib/libfx.a create mode 100644 main.c rename ld/cryptfx.ld => main.ld (73%) delete mode 100644 src/cryptfx.c delete mode 100644 src/icon.bmp delete mode 100644 src/memfunctest.c delete mode 100644 src/memfunctest.h delete mode 100644 version diff --git a/.gitignore b/.gitignore index 2de045a..e4a0144 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ # Build files build/** +.vscode/** +.astyle diff --git a/Makefile b/Makefile index 28cb0ee..bebd72c 100644 --- a/Makefile +++ b/Makefile @@ -1,192 +1,13 @@ -# TODO use := where it is possible -TOOLCHAIN_PREFIX = sh3eb-elf- -CC = $(TOOLCHAIN_PREFIX)gcc -CXX = $(TOOLCHAIN_PREFIX)g++ -LD = $(TOOLCHAIN_PREFIX)ld -AS = $(TOOLCHAIN_PREFIX)as -AR = $(TOOLCHAIN_PREFIX)ar -OBJCOPY = $(TOOLCHAIN_PREFIX)objcopy -FXCONV = fxconv -G1AWRAPPER = g1a-wrapper -CASIOUPLOADER ?= CasioUsbUploader -w +all: main.c main.ld crt0.s icon.bmp + mkdir -p build/ + sh3eb-elf-gcc -c crt0.s -o build/crt0.o -m3 -mb -ffreestanding -Iinclude -O2 -std=c11 -nostdlib + sh3eb-elf-gcc -c main.c -o build/main.o -m3 -mb -ffreestanding -Iinclude -O2 -std=c11 -nostdlib + sh3eb-elf-gcc -o build/main.elf build/crt0.o build/main.o -m3 -mb -ffreestanding -Iinclude -O2 -std=c11 -nostdlib -Tmain.ld -Llib -lm -lc -lgcc + sh3eb-elf-objcopy -R .comment -R .bss -O binary build/main.elf build/main.bin + g1a-wrapper build/main.bin -o build/main.g1a -i icon.bmp -SRCDIR = src -BASEINCDIR = include -INCDIRS = $(shell find $(BASEINCDIR) -type d) -OBJDIR = build -LDDIR = ld -LIBDIR = lib -LIBSRCDIR = $(LIBDIR)/$(SRCDIR) -LIBOBJDIR = $(OBJDIR)/$(LIBDIR) - - -# OUTPUTNAME must not exceed 12 chars! -OUTPUTNAME = cryptfx -LDFILE = $(LDDIR)/$(OUTPUTNAME).ld -VERSIONFILE = version -THUMBNAIL = $(SRCDIR)/icon.bmp -LIBGCCCFGFILE = gcc.cfg - -CFLAGS = -m3 -mb -ffreestanding $(foreach d,$(INCDIRS),-I$d) -O2 -std=c11 -nostdlib -CXXFLAGS = -m3 -mb -ffreestanding $(foreach d,$(INCDIRS),-I$d) -O2 -std=c++11 -nostdlib -CPPFLAGS = TODO -LDFLAGS = -T $(LDFILE) -L$(LIBDIR) $(subst lib,-l,$(LIBS)) $(subst lib,-l,$(PREBUILTLIBS)) - -# static libraries (.a) only! -# libgcc is added in LDFLAGS -# TODO what about -lfx? -#LIBS = libgint libc libfx -LIBS = -PREBUILTLIBS = libc libgcc libfx - -INCFILES = $(foreach d,$(INCDIRS),$(wildcard $d/*.h)) -SRCFILES = $(shell find $(SRCDIR) -name *.c -o -name *.cpp) -OBJFILES = $(patsubst $(SRCDIR)/%.s, $(OBJDIR)/%.s.o, $(shell find $(SRCDIR)/ -name *.s)) \ - $(patsubst $(SRCDIR)/%.cpp, $(OBJDIR)/%.cpp.o, $(shell find $(SRCDIR)/ -name *.cpp)) \ - $(patsubst $(SRCDIR)/%.c, $(OBJDIR)/%.c.o, $(shell find $(SRCDIR)/ -name *.c)) -LIBFILES = $(foreach d,$(LIBS),$d.a) - -#-------------------------- -# Version management -#-------------------------- - -# Retrieve version information. -version_string = $(shell cat $(VERSIONFILE) | sed 's/[-.]/ /g') -version_type = $(word 1,$(version_string)) -version_major = $(word 2,$(version_string)) -version_minor = $(word 3,$(version_string)) -version_build = $(word 4,$(version_string)) - -# Make up the new version integer. -version_build_n = $(shell echo $$(($(version_build) + 1))) -version_letter = $(shell echo -n $(version_type) | sed -r 's/^(.).*/\1/') -version_symbol = $(shell printf '0x%02x%01x%01x%04x' "'$(version_letter)'" \ - $(version_major) $(version_minor) $(version_build)) - - -#-------------------------- -# Targets -#-------------------------- - -# make everything: .o, linking (.elf), .bin, .g1a -:PHONY: -all: $(OBJFILES) $(OBJDIR)/$(OUTPUTNAME).elf $(OBJDIR)/$(OUTPUTNAME).bin $(OBJDIR)/$(OUTPUTNAME).g1a - - -# upload .g1a to the calculator -.PHONY: upload: all - # upload the addin to the CASIO 9860GII - # note: to be able to upload withou root privilege, create a file /etc/udev/rules.d/60-user-usb.rules containing - # SUBSYSTEM=="usb", ATTRS{idVendor}=="07cf", ATTRS{idProduct}=="6101", MODE="0666 - # note: the uploaded file name (including the path!) must not exceed 12 chars! - cd $(OBJDIR); $(CASIOUPLOADER) -f $(OUTPUTNAME).g1a; cd .. - -.PHONY: -lib: $(LIBS) #$(foreach d, $(LIBS), $(LIBDIR)/$d.a) - - -#-------------------------- -# Component Targets -#-------------------------- - -# TODO compile resources (bmps) (only if necessary?), but print warning that this is incompatible with WinSDK - - - -# create directory -%: - #mkdir -p $@ - - -##################### Library ############################################################### - -# TODO DOESNT WORK -# link static library -# only consider files in lib/src and its subdirectories! -.SECONDEXPANSION: -$(LIBDIR)/%.a: $$(patsubst $(LIBSRCDIR)/%.c, $(LIBOBJDIR)/%.o, $$(shell find $(LIBSRCDIR)/$$(notdir $$(basename $$@)) -name *.c)) - echo $^ - echo $(patsubst $(LIBSRCDIR)/%.c, $(LIBOBJDIR)/%.o, $^) - echo. - -# TODO this works, but the upper one would be better -.PHONY: -.SECONDEXPANSION: -$(LIBS): $$(patsubst $(LIBSRCDIR)/%.s, $(LIBOBJDIR)/%.s.o, $$(shell find $(LIBSRCDIR)/'$$@' -name *.s)) \ - $$(patsubst $(LIBSRCDIR)/%.c, $(LIBOBJDIR)/%.c.o, $$(shell find $(LIBSRCDIR)/'$$@' -name *.c)) \ - $$(patsubst $(LIBSRCDIR)/%.cpp, $(LIBOBJDIR)/%.cpp.o, $$(shell find $(LIBSRCDIR)/'$$@' -name *.cpp)) \ - $$(patsubst $(LIBSRCDIR)/%.bmp, $(LIBOBJDIR)/%.bmp.o, $$(shell find $(LIBSRCDIR)/'$$@' -name *.bmp)) - # TODO include version - $(AR) rcs $(LIBDIR)/$@.a $^ - -# compile .c files to .o -$(LIBOBJDIR)/%.c.o: $(LIBSRCDIR)/%.c - mkdir -p $(dir $@) - # TODO create dedicated LIBCFLAGS - $(CC) -c $< -o $@ $(CFLAGS) @$(LIBGCCCFGFILE) -g0 - -# compile .cpp files to .o -$(LIBOBJDIR)/%.cpp.o: $(LIBSRCDIR)/%.cpp - mkdir -p $(dir $@) - # TODO create dedicated LIBCFLAGS - $(CXX) -c $< -o $@ $(CXXFLAGS) @$(LIBGCCCFGFILE) -g0 - -# compile .s files to .s.o -$(LIBOBJDIR)/%.s.o: $(LIBSRCDIR)/%.s - mkdir -p $(dir $@) - $(AS) -c $< -o $@ - -# convert bmps to binary (font for the library) -$(LIBOBJDIR)/%.bmp.o: $(LIBSRCDIR)/%.bmp - mkdir -p $(dir $@) - # e.g. if it is build/lib/libgint/display/font_system.bmp.o, use -n gint_font_system - $(FXCONV) -font $< -o $@ -font -n gint_font_system $(firstword $(subst /, ,$(patsubst $(LIBSRCDIR)/lib%,%,$<)))_$(basename $(notdir $<)) - -############################################################################################### - -# compile .c files to .o -$(OBJDIR)/%.c.o: $(SRCDIR)/%.c $(INCFILES) - mkdir -p $(dir $@) - $(CC) -c $< -o $@ $(CFLAGS) - -# compile .cpp files to .o -$(OBJDIR)/%.cpp.o: $(SRCDIR)/%.cpp $(INCFILES) - mkdir -p $(dir $@) - $(CXX) -c $< -o $@ $(CXXFLAGS) + cd build; CasioUsbUploader -w -f main.g1a; cd .. -# crt0.s is a special case [TODO obsolete] -$(OBJDIR)/%.s.o: $(SRCDIR)/%.s $(INCFILES) - mkdir -p $(dir $@) - $(CC) -c $< -o $@ $(CFLAGS) - - -# TODO below here, directory dependency is sloppy. fix this! - -# define the version symbol in a specific object file. ld generates a .stack -# section on sh3eb-elf, which it didn't on x86_64. I don't understand the -# details of why, so I just fall back to removing it afterwards. -$(OBJDIR)/$(VERSIONFILE).o: - @ echo "_GINT_VERSION = $(version_symbol);" > $(OBJDIR)/$(VERSIONFILE).tmp.c - $(if $(VERBOSE),,@) $(LD) -r -R $(OBJDIR)/$(VERSIONFILE).tmp.c -o $@ - -# link object files to .elf file -%.elf: $(OBJFILES) - $(CC) -o $@ $^ $(CFLAGS) $(LDFLAGS) - -# convert to .elf to .bin -%.bin: %.elf - $(OBJCOPY) -R .comment -R .bss -O binary $< $@ - -# convert to .bin (and addin thumbnail) to .g1a -%.g1a: %.bin - $(G1AWRAPPER) $< -o $@ -i $(THUMBNAIL) - - - - -.PHONY: clean - clean: - rm -rfv $(OBJDIR) - rm -rfv $(patsubst %.a, $(LIBDIR)/%.a, $(LIBFILES)) + rm -rfv build/ diff --git a/src/crt0.s b/crt0.s similarity index 100% rename from src/crt0.s rename to crt0.s diff --git a/gcc.cfg b/gcc.cfg deleted file mode 100644 index 522b376..0000000 --- a/gcc.cfg +++ /dev/null @@ -1,3 +0,0 @@ --D ATEXIT_MAX=16 --D TIMER_SLOTS=16 --D EVENTS_QUEUE_SIZE=64 diff --git a/icon.bmp b/icon.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d70ae4a44c4489eca8193c7a99f8047af16dfb79 GIT binary patch literal 2418 zcmchSF>XRJ5JU|$q^6HJ3r#AT93`|IAmXIlf_T4p(P%X0e+sZzW46k?M9WHTWkNHcKG@}Nw%n68+EJGy|>r2_(flj{!dz|yyu!} z?_AwA_kP5ucX60=iW$wYcI#+j?lr70&n4?M$qdPQHpMEaanXs-f> 8)) -#define UtlSwapDword(l) (unsigned long)((((l) & 0x000000ff) << 24) | (((l) & 0x0000ff00) << 8) | (((l) & 0xff000000) >> 24) | (((l) & 0x00ff0000) >> 8)) -#define UtlSwapInteger(i) UtlSwapDword(i) -#define UtlSwapPointer(p) (void*)((((unsigned long)(p) & 0x000000ff) << 24) | (((unsigned long)(p) & 0x0000ff00) << 8) | (((unsigned long)(p) & 0xff000000) >> 24) | (((unsigned long)(p) & 0x00ff0000) >> 8)) - - -#endif - -#ifdef __cplusplus -} -#endif diff --git a/include/filebios.h b/include/filebios.h deleted file mode 100644 index 276d9ce..0000000 --- a/include/filebios.h +++ /dev/null @@ -1,116 +0,0 @@ -/*****************************************************************/ -/* */ -/* CASIO fx-9860G SDK Library */ -/* */ -/* File name : filebios.h */ -/* */ -/* Copyright (c) 2006 CASIO COMPUTER CO., LTD. */ -/* */ -/*****************************************************************/ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef __FILEBIOS_H__ -#define __FILEBIOS_H__ - - -// Defines - -#define FONTCHARACTER unsigned short - -#define _OPENMODE_READ 0x01 -#define _OPENMODE_READ_SHARE 0x80 -#define _OPENMODE_WRITE 0x02 -#define _OPENMODE_READWRITE 0x03 -#define _OPENMODE_READWRITE_SHARE 0x83 - -#define _CREATEMODE_BINARY 1 -#define _CREATEMODE_DIRECTORY 5 - -enum DEVICE_TYPE{ - DEVICE_MAIN_MEMORY, - DEVICE_STORAGE, - DEVICE_SD_CARD, // only fx-9860G SD model -}; - - -// File system standard error code -#define IML_FILEERR_NOERROR 0 -#define IML_FILEERR_ENTRYNOTFOUND -1 -#define IML_FILEERR_ILLEGALPARAM -2 -#define IML_FILEERR_ILLEGALPATH -3 -#define IML_FILEERR_DEVICEFULL -4 -#define IML_FILEERR_ILLEGALDEVICE -5 -#define IML_FILEERR_ILLEGALFILESYS -6 -#define IML_FILEERR_ILLEGALSYSTEM -7 -#define IML_FILEERR_ACCESSDENYED -8 -#define IML_FILEERR_ALREADYLOCKED -9 -#define IML_FILEERR_ILLEGALTASKID -10 -#define IML_FILEERR_PERMISSIONERROR -11 -#define IML_FILEERR_ENTRYFULL -12 -#define IML_FILEERR_ALREADYEXISTENTRY -13 -#define IML_FILEERR_READONLYFILE -14 -#define IML_FILEERR_ILLEGALFILTER -15 -#define IML_FILEERR_ENUMRATEEND -16 -#define IML_FILEERR_DEVICECHANGED -17 -//#define IML_FILEERR_NOTRECORDFILE -18 // Not used -#define IML_FILEERR_ILLEGALSEEKPOS -19 -#define IML_FILEERR_ILLEGALBLOCKFILE -20 -//#define IML_FILEERR_DEVICENOTEXIST -21 // Not used -//#define IML_FILEERR_ENDOFFILE -22 // Not used -#define IML_FILEERR_NOTMOUNTDEVICE -23 -#define IML_FILEERR_NOTUNMOUNTDEVICE -24 -#define IML_FILEERR_CANNOTLOCKSYSTEM -25 -#define IML_FILEERR_RECORDNOTFOUND -26 -//#define IML_FILEERR_NOTDUALRECORDFILE -27 // Not used -#define IML_FILEERR_NOTALARMSUPPORT -28 -#define IML_FILEERR_CANNOTADDALARM -29 -#define IML_FILEERR_FILEFINDUSED -30 -#define IML_FILEERR_DEVICEERROR -31 -#define IML_FILEERR_SYSTEMNOTLOCKED -32 -#define IML_FILEERR_DEVICENOTFOUND -33 -#define IML_FILEERR_FILETYPEMISMATCH -34 -#define IML_FILEERR_NOTEMPTY -35 -#define IML_FILEERR_BROKENSYSTEMDATA -36 -#define IML_FILEERR_MEDIANOTREADY -37 -#define IML_FILEERR_TOOMANYALARMITEM -38 -#define IML_FILEERR_SAMEALARMEXIST -39 -#define IML_FILEERR_ACCESSSWAPAREA -40 -#define IML_FILEERR_MULTIMEDIACARD -41 -#define IML_FILEERR_COPYPROTECTION -42 -#define IML_FILEERR_ILLEGALFILEDATA -43 - -// FILE_INFO.type -#define DT_DIRECTORY 0x0000 // Directory -#define DT_FILE 0x0001 // File -#define DT_ADDIN_APP 0x0002 // Add-In application -#define DT_EACT 0x0003 // eActivity -#define DT_LANGUAGE 0x0004 // Language -#define DT_BITMAP 0x0005 // Bitmap -#define DT_MAINMEM 0x0006 // Main Memory data -#define DT_TEMP 0x0007 // Temporary data -#define DT_DOT 0x0008 // . (Current directory) -#define DT_DOTDOT 0x0009 // .. (Parent directory) -#define DT_VOLUME 0x000A // Volume label - - -// Structs - -typedef struct tag_FILE_INFO -{ - unsigned short id; - unsigned short type; - unsigned long fsize; // File size - unsigned long dsize; // Data size - unsigned int property; // The file has not been completed, except when property is 0. - unsigned long address; -} FILE_INFO; - - -#endif - -#ifdef __cplusplus -} -#endif diff --git a/include/fxlib.h b/include/fxlib.h deleted file mode 100644 index 68c6f58..0000000 --- a/include/fxlib.h +++ /dev/null @@ -1,122 +0,0 @@ -/*****************************************************************/ -/* */ -/* CASIO fx-9860G SDK Library */ -/* */ -/* File name : fxlib.h */ -/* */ -/* Copyright (c) 2006 CASIO COMPUTER CO., LTD. */ -/* */ -/*****************************************************************/ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef __FXLIB_H__ -#define __FXLIB_H__ - -#include "dispbios.h" -#include "filebios.h" -#include "keybios.h" - - -// Prototypes - -void Bdisp_AllClr_DD(void); -void Bdisp_AllClr_VRAM(void); -void Bdisp_AllClr_DDVRAM(void); -void Bdisp_AreaClr_DD(const DISPBOX *pArea); -void Bdisp_AreaClr_VRAM(const DISPBOX *pArea); -void Bdisp_AreaClr_DDVRAM(const DISPBOX *pArea); -void Bdisp_AreaReverseVRAM(int x1, int y1, int x2, int y2); -void Bdisp_GetDisp_DD(unsigned char *pData); -void Bdisp_GetDisp_VRAM(unsigned char *pData); -void Bdisp_PutDisp_DD(void); -void Bdisp_PutDispArea_DD(const DISPBOX *PutDispArea); -void Bdisp_SetPoint_DD(int x, int y, unsigned char point); -void Bdisp_SetPoint_VRAM(int x, int y, unsigned char point); -void Bdisp_SetPoint_DDVRAM(int x, int y, unsigned char point); -int Bdisp_GetPoint_VRAM(int x, int y); -void Bdisp_WriteGraph_DD(const DISPGRAPH *WriteGraph); -void Bdisp_WriteGraph_VRAM(const DISPGRAPH *WriteGraph); -void Bdisp_WriteGraph_DDVRAM(const DISPGRAPH *WriteGraph); -void Bdisp_ReadArea_DD(const DISPBOX *ReadArea, unsigned char *ReadData); -void Bdisp_ReadArea_VRAM(const DISPBOX *ReadArea, unsigned char *ReadData); -void Bdisp_DrawLineVRAM(int x1, int y1, int x2, int y2); -void Bdisp_ClearLineVRAM(int x1, int y1, int x2, int y2); - -void locate(int x, int y); -void Print(const unsigned char *str); -void PrintRev(const unsigned char *str); -void PrintC(const unsigned char *c); -void PrintRevC(const unsigned char *str); -void PrintLine(const unsigned char *str, int max); -void PrintRLine(const unsigned char *str, int max); -void PrintXY(int x, int y, const unsigned char *str, int type); -int PrintMini(int x, int y, const unsigned char *str, int type); -void SaveDisp(unsigned char num); -void RestoreDisp(unsigned char num); -void PopUpWin(int n); - -int Bfile_OpenFile(const FONTCHARACTER *filename, int mode); -int Bfile_OpenMainMemory(const unsigned char *name); -int Bfile_ReadFile(int HANDLE, void *buf, int size, int readpos); -int Bfile_WriteFile(int HANDLE, const void *buf, int size); -int Bfile_SeekFile(int HANDLE, int pos); -int Bfile_CloseFile(int HANDLE); -int Bfile_GetMediaFree(enum DEVICE_TYPE devicetype, int *freebytes); -int Bfile_GetFileSize(int HANDLE); -int Bfile_CreateFile(const FONTCHARACTER *filename, int size); -int Bfile_CreateDirectory(const FONTCHARACTER *pathname); -int Bfile_CreateMainMemory(const unsigned char *name); -int Bfile_RenameMainMemory(const unsigned char *oldname, const unsigned char *newname); -int Bfile_DeleteFile(const FONTCHARACTER *filename); -int Bfile_DeleteDirectory(const FONTCHARACTER *pathname); -int Bfile_DeleteMainMemory(const unsigned char *name); -int Bfile_FindFirst(const FONTCHARACTER *pathname, int *FindHandle, FONTCHARACTER *foundfile, FILE_INFO *fileinfo); -int Bfile_FindNext(int FindHandle, FONTCHARACTER *foundfile, FILE_INFO *fileinfo); -int Bfile_FindClose(int FindHandle); - -void Bkey_Set_RepeatTime(long FirstCount, long NextCount); -void Bkey_Get_RepeatTime(long *FirstCount, long *NextCount); -void Bkey_Set_RepeatTime_Default(void); -int GetKeyWait(int sel, int time, int menu, unsigned int *keycode); -int IsKeyDown(int keycode); -int IsKeyUp(int keycode); -int GetKey(unsigned int *keycode); - -int SetTimer(int ID, int elapse, void (*hander)(void)); -int KillTimer(int ID); -void Sleep(int millisecond); - -void SetQuitHandler(void (*callback)(void)); -int INIT_ADDIN_APPLICATION(int isAppli, unsigned short OptionNum); - -// Standard declarations - -#ifndef _SIZE_T -#define _SIZE_T -typedef int size_t; -#endif // _SIZE_T - -void *malloc(size_t size); -void *calloc(size_t num, size_t size); -void *realloc(void *ptr, size_t size); -void free(const void *pointer); - -int sprintf(char *str, const char *format, ...); -int vsprintf(char *str, const char *format, __builtin_va_list args); - -void *memcpy(void *dest, const void *src, size_t len); -void *memset(void *pointer, int value, size_t len); - -#ifndef NULL - #define NULL ((void *)0) -#endif - - -#endif - -#ifdef __cplusplus -} -#endif diff --git a/include/keybios.h b/include/keybios.h deleted file mode 100644 index 848fa5f..0000000 --- a/include/keybios.h +++ /dev/null @@ -1,158 +0,0 @@ -/*****************************************************************/ -/* */ -/* CASIO fx-9860G SDK Library */ -/* */ -/* File name : keybios.h */ -/* */ -/* Copyright (c) 2006 CASIO COMPUTER CO., LTD. */ -/* */ -/*****************************************************************/ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef __KEYBIOS_H__ -#define __KEYBIOS_H__ - - -// Defines - -// Character codes -#define KEY_CHAR_0 0x30 -#define KEY_CHAR_1 0x31 -#define KEY_CHAR_2 0x32 -#define KEY_CHAR_3 0x33 -#define KEY_CHAR_4 0x34 -#define KEY_CHAR_5 0x35 -#define KEY_CHAR_6 0x36 -#define KEY_CHAR_7 0x37 -#define KEY_CHAR_8 0x38 -#define KEY_CHAR_9 0x39 -#define KEY_CHAR_DP 0x2e -#define KEY_CHAR_EXP 0x0f -#define KEY_CHAR_PMINUS 0x87 -#define KEY_CHAR_PLUS 0x89 -#define KEY_CHAR_MINUS 0x99 -#define KEY_CHAR_MULT 0xa9 -#define KEY_CHAR_DIV 0xb9 -#define KEY_CHAR_FRAC 0xbb -#define KEY_CHAR_LPAR 0x28 -#define KEY_CHAR_RPAR 0x29 -#define KEY_CHAR_COMMA 0x2c -#define KEY_CHAR_STORE 0x0e -#define KEY_CHAR_LOG 0x95 -#define KEY_CHAR_LN 0x85 -#define KEY_CHAR_SIN 0x81 -#define KEY_CHAR_COS 0x82 -#define KEY_CHAR_TAN 0x83 -#define KEY_CHAR_SQUARE 0x8b -#define KEY_CHAR_POW 0xa8 -#define KEY_CHAR_IMGNRY 0x7f50 -#define KEY_CHAR_LIST 0x7f51 -#define KEY_CHAR_MAT 0x7f40 -#define KEY_CHAR_EQUAL 0x3d -#define KEY_CHAR_PI 0xd0 -#define KEY_CHAR_ANS 0xc0 -#define KEY_CHAR_LBRCKT 0x5b -#define KEY_CHAR_RBRCKT 0x5d -#define KEY_CHAR_LBRACE 0x7b -#define KEY_CHAR_RBRACE 0x7d -#define KEY_CHAR_CR 0x0d -#define KEY_CHAR_CUBEROOT 0x96 -#define KEY_CHAR_RECIP 0x9b -#define KEY_CHAR_ANGLE 0x7f54 -#define KEY_CHAR_EXPN10 0xb5 -#define KEY_CHAR_EXPN 0xa5 -#define KEY_CHAR_ASIN 0x91 -#define KEY_CHAR_ACOS 0x92 -#define KEY_CHAR_ATAN 0x93 -#define KEY_CHAR_ROOT 0x86 -#define KEY_CHAR_POWROOT 0xb8 -#define KEY_CHAR_SPACE 0x20 -#define KEY_CHAR_DQUATE 0x22 -#define KEY_CHAR_VALR 0xcd -#define KEY_CHAR_THETA 0xce -#define KEY_CHAR_A 0x41 -#define KEY_CHAR_B 0x42 -#define KEY_CHAR_C 0x43 -#define KEY_CHAR_D 0x44 -#define KEY_CHAR_E 0x45 -#define KEY_CHAR_F 0x46 -#define KEY_CHAR_G 0x47 -#define KEY_CHAR_H 0x48 -#define KEY_CHAR_I 0x49 -#define KEY_CHAR_J 0x4a -#define KEY_CHAR_K 0x4b -#define KEY_CHAR_L 0x4c -#define KEY_CHAR_M 0x4d -#define KEY_CHAR_N 0x4e -#define KEY_CHAR_O 0x4f -#define KEY_CHAR_P 0x50 -#define KEY_CHAR_Q 0x51 -#define KEY_CHAR_R 0x52 -#define KEY_CHAR_S 0x53 -#define KEY_CHAR_T 0x54 -#define KEY_CHAR_U 0x55 -#define KEY_CHAR_V 0x56 -#define KEY_CHAR_W 0x57 -#define KEY_CHAR_X 0x58 -#define KEY_CHAR_Y 0x59 -#define KEY_CHAR_Z 0x5a - - -// Control codes -#define KEY_CTRL_NOP 0 -#define KEY_CTRL_EXE 30004 -#define KEY_CTRL_DEL 30025 -#define KEY_CTRL_AC 30015 -#define KEY_CTRL_FD 30046 -#define KEY_CTRL_XTT 30001 -#define KEY_CTRL_EXIT 30002 -#define KEY_CTRL_SHIFT 30006 -#define KEY_CTRL_ALPHA 30007 -#define KEY_CTRL_OPTN 30008 -#define KEY_CTRL_VARS 30016 -#define KEY_CTRL_UP 30018 -#define KEY_CTRL_DOWN 30023 -#define KEY_CTRL_LEFT 30020 -#define KEY_CTRL_RIGHT 30021 -#define KEY_CTRL_F1 30009 -#define KEY_CTRL_F2 30010 -#define KEY_CTRL_F3 30011 -#define KEY_CTRL_F4 30012 -#define KEY_CTRL_F5 30013 -#define KEY_CTRL_F6 30014 -#define KEY_CTRL_CATALOG 30100 -#define KEY_CTRL_CAPTURE 30055 -#define KEY_CTRL_CLIP 30050 -#define KEY_CTRL_PASTE 30036 -#define KEY_CTRL_INS 30033 -#define KEY_CTRL_MIXEDFRAC 30054 -#define KEY_CTRL_FRACCNVRT 30026 -#define KEY_CTRL_QUIT 30029 -#define KEY_CTRL_PRGM 30028 -#define KEY_CTRL_SETUP 30037 -#define KEY_CTRL_PAGEUP 30052 -#define KEY_CTRL_PAGEDOWN 30053 -#define KEY_CTRL_MENU 30003 -#define KEY_CTRL_RESERVE1 30060 -#define KEY_CTRL_RESERVE2 30061 -#define KEY_CTRL_RESERVE3 30062 - - -// in Bkey_GetKeyWait function -#define KEYWAIT_HALTON_TIMEROFF 0 -#define KEYWAIT_HALTOFF_TIMEROFF 1 -#define KEYWAIT_HALTON_TIMERON 2 - -#define KEYREP_NOEVENT 0 -#define KEYREP_KEYEVENT 1 -#define KEYREP_TIMEREVENT 2 - - -#endif - -#ifdef __cplusplus -} -#endif diff --git a/include/timer.h b/include/timer.h deleted file mode 100644 index 286f665..0000000 --- a/include/timer.h +++ /dev/null @@ -1,31 +0,0 @@ -/*****************************************************************/ -/* */ -/* CASIO fx-9860G SDK Library */ -/* */ -/* File name : timer.h */ -/* */ -/* Copyright (c) 2006 CASIO COMPUTER CO., LTD. */ -/* */ -/*****************************************************************/ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef __TIMER_H__ -#define __TIMER_H__ - - -// Defines - -#define ID_USER_TIMER1 1 -#define ID_USER_TIMER2 2 -#define ID_USER_TIMER3 3 -#define ID_USER_TIMER4 4 -#define ID_USER_TIMER5 5 - -#endif - -#ifdef __cplusplus -} -#endif diff --git a/lib/libfx.a b/lib/libfx.a deleted file mode 100644 index c00d797788c518840f648ef255c065956cf3301c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 403628 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

8*O5 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∓-n_MmQD+-8_*4fw)G*XtFPJAP4CwB%^> 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 +#include +#include + + +int main(void) { + unsigned int key = 0; + + char out[20] = "Test"; + + while (1) { + Bdisp_AllClr_DDVRAM(); + + locate(1, 4); + Print("Out: "); + + Bdisp_PutDisp_DD(); + GetKey(&key); + _read(0, out, 5); + } + + return 0; +} \ No newline at end of file diff --git a/ld/cryptfx.ld b/main.ld similarity index 73% rename from ld/cryptfx.ld rename to main.ld index 46dcd9b..1f815ee 100644 --- a/ld/cryptfx.ld +++ b/main.ld @@ -15,8 +15,15 @@ SECTIONS *(.rodata) *(.rodata.str1.4) _romdata = . ; /* symbol for initialization data */ - initialize = .; + /*initialize = .;*/ } > rom + + /* + .eh_frame : AT(0x00310000) { + *(.eh_frame) + } > rom + */ + .bss : { _bbss = . ; _bssdatasize = . ; @@ -33,7 +40,12 @@ SECTIONS _end = . ; } > ram - /DISCARD/ : { - *(.eh_frame) - } + /* + PROVIDE(_stack = .); + PROVIDE(_end = .); + */ + + /DISCARD/ : { + *(.eh_frame) + } } diff --git a/src/cryptfx.c b/src/cryptfx.c deleted file mode 100644 index ac349dc..0000000 --- a/src/cryptfx.c +++ /dev/null @@ -1,61 +0,0 @@ -#ifdef __cplusplus -extern "C" { -#endif - - #include "string.h" - #include "fxlib.h" - -#ifdef __cplusplus -} -#endif - -#include "memfunctest.h" - -// unused -void conv_to_hex(char x, char* a, char* b) { - *a = (x >> 4) & 0xf; - if (*a < 10) { - *a += '0'; - } else { - *a += 'a'-10; - } - - *b = x & 0xf; - if (*b < 10) { - *b += '0'; - } else { - *b += 'a'-10; - } -} - -int main(void) { - unsigned int key; - int i=1; - char in[20] = "Hello World!"; - - //char* out; - char out[20] = {0}; - - Bdisp_AllClr_DD(); - - locate(1, 1); - Print((unsigned char*) in); - - //out = (char*) malloc(strlen(in) + 1); - strcpy(out, in); - locate(1, 2); - Print((unsigned char*) out); - //free(out); - - locate(1, 3); - memfunctest(); - - Bdisp_PutDisp_DD(); - while(1) GetKey(&key); - - return 0; -} - -void initialize(void) { - main(); -} diff --git a/src/icon.bmp b/src/icon.bmp deleted file mode 100644 index a50e7e1d6a66d88e8a634322bef17027a6b6e9c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2418 zcmchSF>V4u5Cqqd*fF`qTP`7T;-}at53qPCzc{wBOSD?E+!2@+L(g{C&cO8X_13QE z)W46t-h1tOy|jJXc0Iqg_R|g3?aZzHeq_zl;q&{Jt?M>{&HZTBvrBvb>)iV<)lTO# z_ssj`boV^_5nsK-%Qu=?o!sU3C7ztwD897v@O_u}{=Vv+%^qHUb&~gc#mi&Xk|xV+ zeD0~rt5b3EbjY&5hJQJIrOc_a^k7qy(;cSD*5okEaixdx9iF*Qzm)q-*i;z#UhJrp z8C8bov$BVIRM+f%bmkhKy{O*MOTC!qxqGmq8L*k-S93?%h^>6QYOgYKdhR3M{p$BI khs=4;*n^Jve1DH~)_dPUFZFVs9nRu8m+xVC$Nial0m4{R;Q#;t diff --git a/src/memfunctest.c b/src/memfunctest.c deleted file mode 100644 index a40a661..0000000 --- a/src/memfunctest.c +++ /dev/null @@ -1,194 +0,0 @@ -#include -#include -#include -#include - -/* 4-abyte buffer alignement */ -#define ALIGN(n) __attribute__((aligned(n))) -/* Unused parameters */ -#define UNUSED __attribute__((unused)) - -//--- -// Basic setup -//--- - -/* Source buffer, used as a data source when copying */ -ALIGN(4) static uint8_t src[256]; -/* Destination buffer, used as destination when copying or clearing */ -ALIGN(4) static uint8_t dst[256]; -/* System buffer, used to reproduce the behavior on the system and compare */ -ALIGN(4) static uint8_t sys[256]; -/* Temporary buffer, used by the naive memmove() */ -ALIGN(4) static uint8_t tmp[256]; - -/* fill() - fill a buffer with non-zero data */ -static void fill(uint8_t *buf) -{ - for(int i = 0; i < 256; i++) buf[i] = i; -} - -/* clear() - clear a buffer with zeros */ -static void clear(uint8_t *buf) -{ - for(int i = 0; i < 256; i++) buf[i] = 0; -} - -/* cmp() - check that some two buffers are equal - Returns non-zero if the buffers differ. */ -static int cmp(uint8_t *lft, uint8_t *rgt) -{ - for(int i = 0; i < 256; i++) if(lft[i] != rgt[i]) return 1; - return 0; -} - -//--- -// Naive functions (reference behaviour) -//--- - -/* naive_memcpy() - bytewise copy */ -static void *naive_memcpy(void *_dst, const void *_src, size_t len) -{ - uint8_t *dst = _dst; - uint8_t const *src = _src; - - while(len--) *dst++ = *src++; - return _dst; -} - -/* naive_memset() - bytewise set */ -static void *naive_memset(void *_dst, int byte, size_t len) -{ - uint8_t *dst = _dst; - - while(len--) *dst++ = byte; - return _dst; -} - -/* naive_memmove() - bytewise copy with buffer */ -static void *naive_memmove(void *_dst, const void *_src, size_t len) -{ - naive_memcpy(tmp, _src, len); - naive_memcpy(_dst, tmp, len); - return _dst; -} - -//--- -// Testing functions -//--- - -static int test_memcpy(int off_dst, int off_src, size_t len) -{ - clear(dst); - clear(sys); - - memcpy(dst + off_dst, src + off_src, len); - naive_memcpy(sys + off_dst, src + off_src, len); - - return cmp(dst, sys); -} - -static int test_memset(int off_dst, UNUSED int off_src, size_t len) -{ - fill(dst); - fill(sys); - - memset(dst + off_dst, 0, len); - naive_memset(sys + off_dst, 0, len); - - return cmp(dst, sys); -} - -static int test_memmove(int off_dst, int off_src, size_t len) -{ - fill(dst); - fill(sys); - - memmove(dst + off_dst, dst + off_src, len); - naive_memmove(sys + off_dst, sys + off_src, len); - - return cmp(dst, sys); -} - -//--- -// Automated tests -// -// These tests are meant to check all size/alignment scenarios for the -// core memory functions. Two intervals of sizes are tested: -// - 12..15 bytes, expected to be handled naively -// - 192..195 bytes, expected to trigger alignment-related optimizations -// For each of these intervals, all alignments possibilities are tested: -// - 4n + { 0,1,2,3 } for the source address -// - 4n + { 0,1,2,3 } for destination address -// Also, the source and destination regions are made to overlap to allow -// non-trivial memmove() cases to be checked. -// -// The testing function non-zero if one or more tests fail. -//--- - -/* test() - check core memory functions in various size/alignment scenarios - - The function to test takes three arguments: two buffer offsets and the size - of the operation. Bounds need no be checked. It must return 0 in case of - success and non-zero in case of failure. - - @func Function to test, will be called with various sizes and alignments - @count If non-null, set to number of tests performed - Returns the number of failed tests; thus, non-zero indicates failure. */ -static int test(int (*func)(int off_dst, int off_src, size_t size), int *count) -{ - /* Number of failed tests */ - int failed = 0; - /* Number of tests */ - int tests = 0; - - /* For each source and destination alignment... */ - for(int dst_al = 0; dst_al < 4; dst_al++) - for(int src_al = 0; src_al < 4; src_al++) - /* For each "alignment" of operation size... */ - for(int len_al = 0; len_al < 4; len_al++) - { - /* Try a small size first */ - failed += !!func(96 + dst_al, 96 + src_al, 12 + len_al); - /* Then a medium region without overlapping */ - failed += !!func(4 + dst_al, 128 + src_al, 92 + len_al); - /* A large region with left-right overlapping */ - failed += !!func(64 + dst_al, 96 + src_al, 128 + len_al); - /* A large region with right-left overlapping */ - failed += !!func(96 + dst_al, 64 + src_al, 128 + len_al); - - tests += 4; - } - - if(count) *count = tests; - return failed; -} - -//--- -// Main function -//--- - -/* memfunctest() - check the bejavior of the core memory functions - Returns non-zero if any test fails. */ -int memfunctest(void) -{ - int count = 0, failed = 0, count_one, failed_one; - fill(src); - - failed_one = test(test_memcpy, &count_one); - failed += failed_one; - count += count_one; - - failed_one = test(test_memset, &count_one); - failed += failed_one; - count += count_one; - - failed_one = test(test_memmove, &count_one); - failed += failed_one; - count += count_one; - - char str[21]; - sprintf(str, "Score: %d/%d.", count - failed, count); - Print(str); - - return (failed != 0); -} diff --git a/src/memfunctest.h b/src/memfunctest.h deleted file mode 100644 index 5ee8983..0000000 --- a/src/memfunctest.h +++ /dev/null @@ -1,17 +0,0 @@ -//--- -// memfunctest - Check the behaviour of the core memory functions -// -// This small program checks that memcpy(), memset() and memmove() work -// properly in all source/destination alignment, size, overlap scenarios. -// It also checks both small and large areas to trigger usual optimizations. -//--- - -#ifndef __MEMFUNCTEST_H__ -#define __MEMFUNCTEST_H__ - -/* memfunctest() - check the bejavior of the core memory functions - Displays the test result on the screen. - Returns non-zero if any test fails. */ -int memfunctest(void); - -#endif /* __MEMFUNCTEST_H__ */ diff --git a/version b/version deleted file mode 100644 index c107ff9..0000000 --- a/version +++ /dev/null @@ -1 +0,0 @@ -beta-0.9-586