From 4d9d7b5600ab615d68f671df5f8bc6c9fe4a5a09 Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Wed, 24 Apr 2019 11:03:58 -0400 Subject: add pause to curses, remove unfinished calculator frontend --- frontends/calculator/CEdev/include/.linker_script | 305 --- frontends/calculator/CEdev/include/.makefile | 213 -- frontends/calculator/CEdev/include/assert.h | 19 - frontends/calculator/CEdev/include/compression.h | 27 - frontends/calculator/CEdev/include/ctype.h | 30 - frontends/calculator/CEdev/include/debug.h | 124 -- frontends/calculator/CEdev/include/decompress.h | 23 - frontends/calculator/CEdev/include/errno.h | 15 - .../calculator/CEdev/include/fasmg-ez80/ez80.inc | 862 -------- .../calculator/CEdev/include/fasmg-ez80/ld.fasmg | 759 ------- .../CEdev/include/fasmg-ez80/ti84pceg.inc | 61 - .../CEdev/include/fasmg-ez80/tiformat.inc | 105 - frontends/calculator/CEdev/include/fileioc.h | 509 ----- frontends/calculator/CEdev/include/float.h | 75 - frontends/calculator/CEdev/include/format.h | 109 - frontends/calculator/CEdev/include/graphx.h | 1514 -------------- frontends/calculator/CEdev/include/intce.h | 93 - frontends/calculator/CEdev/include/iso646.h | 18 - frontends/calculator/CEdev/include/keypadc.h | 255 --- .../calculator/CEdev/include/lib/ce/fileioc.h | 2 - frontends/calculator/CEdev/include/lib/ce/graphx.h | 2 - .../calculator/CEdev/include/lib/ce/keypadc.h | 2 - frontends/calculator/CEdev/include/limits.h | 35 - frontends/calculator/CEdev/include/math.h | 67 - frontends/calculator/CEdev/include/setjmp.h | 21 - frontends/calculator/CEdev/include/stdarg.h | 15 - frontends/calculator/CEdev/include/stdbool.h | 23 - frontends/calculator/CEdev/include/stddef.h | 28 - frontends/calculator/CEdev/include/stdint.h | 19 - frontends/calculator/CEdev/include/stdio.h | 66 - frontends/calculator/CEdev/include/stdlib.h | 102 - frontends/calculator/CEdev/include/string.h | 49 - frontends/calculator/CEdev/include/tice.h | 2082 -------------------- frontends/calculator/CEdev/include/usb.h | 52 - 34 files changed, 7681 deletions(-) delete mode 100644 frontends/calculator/CEdev/include/.linker_script delete mode 100644 frontends/calculator/CEdev/include/.makefile delete mode 100644 frontends/calculator/CEdev/include/assert.h delete mode 100644 frontends/calculator/CEdev/include/compression.h delete mode 100644 frontends/calculator/CEdev/include/ctype.h delete mode 100644 frontends/calculator/CEdev/include/debug.h delete mode 100644 frontends/calculator/CEdev/include/decompress.h delete mode 100644 frontends/calculator/CEdev/include/errno.h delete mode 100644 frontends/calculator/CEdev/include/fasmg-ez80/ez80.inc delete mode 100644 frontends/calculator/CEdev/include/fasmg-ez80/ld.fasmg delete mode 100644 frontends/calculator/CEdev/include/fasmg-ez80/ti84pceg.inc delete mode 100644 frontends/calculator/CEdev/include/fasmg-ez80/tiformat.inc delete mode 100644 frontends/calculator/CEdev/include/fileioc.h delete mode 100644 frontends/calculator/CEdev/include/float.h delete mode 100644 frontends/calculator/CEdev/include/format.h delete mode 100644 frontends/calculator/CEdev/include/graphx.h delete mode 100644 frontends/calculator/CEdev/include/intce.h delete mode 100644 frontends/calculator/CEdev/include/iso646.h delete mode 100644 frontends/calculator/CEdev/include/keypadc.h delete mode 100644 frontends/calculator/CEdev/include/lib/ce/fileioc.h delete mode 100644 frontends/calculator/CEdev/include/lib/ce/graphx.h delete mode 100644 frontends/calculator/CEdev/include/lib/ce/keypadc.h delete mode 100644 frontends/calculator/CEdev/include/limits.h delete mode 100644 frontends/calculator/CEdev/include/math.h delete mode 100644 frontends/calculator/CEdev/include/setjmp.h delete mode 100644 frontends/calculator/CEdev/include/stdarg.h delete mode 100644 frontends/calculator/CEdev/include/stdbool.h delete mode 100644 frontends/calculator/CEdev/include/stddef.h delete mode 100644 frontends/calculator/CEdev/include/stdint.h delete mode 100644 frontends/calculator/CEdev/include/stdio.h delete mode 100644 frontends/calculator/CEdev/include/stdlib.h delete mode 100644 frontends/calculator/CEdev/include/string.h delete mode 100644 frontends/calculator/CEdev/include/tice.h delete mode 100644 frontends/calculator/CEdev/include/usb.h (limited to 'frontends/calculator/CEdev/include') diff --git a/frontends/calculator/CEdev/include/.linker_script b/frontends/calculator/CEdev/include/.linker_script deleted file mode 100644 index eb5ea8b..0000000 --- a/frontends/calculator/CEdev/include/.linker_script +++ /dev/null @@ -1,305 +0,0 @@ -symbol __low_bss = bss.base -symbol __len_bss = bss.length -symbol __heaptop = bss.high -symbol __heapbot = bss.top -order header, icon, launcher, libs, startup, cleanup, exit, code, data, strsect, text -if STATIC - srcs "../../lib/static/atof.src" - srcs "../../lib/static/ceil.src" - srcs "../../lib/static/fabs.src" - srcs "../../lib/static/acos.src" - srcs "../../lib/static/cos.src" - srcs "../../lib/static/exp.src" - srcs "../../lib/static/log.src" - srcs "../../lib/static/ufltinfo.src" - srcs "../../lib/static/pow.src" - srcs "../../lib/static/strtod.src" - srcs "../../lib/static/asin.src" - srcs "../../lib/static/sinh.src" - srcs "../../lib/static/log10.src" - srcs "../../lib/static/sin.src" - srcs "../../lib/static/atan.src" - srcs "../../lib/static/atan2.src" - srcs "../../lib/static/fmod.src" - srcs "../../lib/static/tanh.src" - srcs "../../lib/static/tan.src" - srcs "../../lib/static/frexp.src" - srcs "../../lib/static/sqrt.src" - srcs "../../lib/static/floor.src" - srcs "../../lib/static/ldexp.src" - srcs "../../lib/static/modf.src" - srcs "../../lib/static/ufltrnd.src" -else - srcs "../../lib/linked/frexp.src" - srcs "../../lib/linked/atan2.src" - srcs "../../lib/linked/atof.src" - srcs "../../lib/linked/acos.src" - srcs "../../lib/linked/sqrt.src" - srcs "../../lib/linked/atan.src" - srcs "../../lib/linked/sinh.src" - srcs "../../lib/linked/tan.src" - srcs "../../lib/linked/floor.src" - srcs "../../lib/linked/ldexp.src" - srcs "../../lib/linked/ufltrnd.src" - srcs "../../lib/linked/fabs.src" - srcs "../../lib/linked/log10.src" - srcs "../../lib/linked/strtod.src" - srcs "../../lib/linked/fmod.src" - srcs "../../lib/linked/asin.src" - srcs "../../lib/linked/exp.src" - srcs "../../lib/linked/ufltinfo.src" - srcs "../../lib/linked/cosh.src" - srcs "../../lib/linked/modf.src" - srcs "../../lib/linked/log.src" - srcs "../../lib/linked/tanh.src" - srcs "../../lib/linked/ceil.src" - srcs "../../lib/linked/cos.src" - srcs "../../lib/linked/pow.src" - srcs "../../lib/linked/sin.src" -end if -srcs "../../lib/shared/os_textbuffer.src" -srcs "../../lib/shared/debugger.src" -srcs "../../lib/shared/zx7_Decompress.src" -srcs "../../lib/shared/random.src" -srcs "../../lib/shared/atomic_load_decreasing_32.src" -srcs "../../lib/shared/removeallbreakpoints.src" -srcs "../../lib/shared/removebreakpoint.src" -srcs "../../lib/shared/srandom.src" -srcs "../../lib/shared/tice.src" -srcs "../../lib/shared/removewatchpoint.src" -srcs "../../lib/shared/atomic_load_increasing_32.src" -srcs "../../lib/shared/setwatchpoint.src" -srcs "../../lib/shared/interrupts.src" -srcs "../../lib/shared/removeallwatchpoints.src" -srcs "../../lib/shared/getstringinput.src" -srcs "../../lib/shared/dzx7_turbo.src" -srcs "../../lib/shared/atomic_load_32.src" -srcs "../../lib/shared/setwritewatchpoint.src" -srcs "../../lib/shared/setreadwatchpoint.src" -srcs "../../lib/shared/os.src" -srcs "../../lib/shared/usb.src" -srcs "../../lib/shared/setreadwritewatchpoint.src" -srcs "../../lib/shared/abort.src" -srcs "../../lib/shared/setbreakpoint.src" -srcs "../../lib/shared/dzx7_standard.src" -srcs "../../lib/shared/delay.src" -srcs "../../lib/shared/frftoub.src" -srcs "../../lib/shared/fpupop1.src" -srcs "../../lib/shared/frimulu.src" -srcs "../../lib/shared/ladd.src" -srcs "../../lib/shared/atoi.src" -srcs "../../lib/shared/idivs.src" -srcs "../../lib/shared/isnan.src" -srcs "../../lib/shared/case24d.src" -srcs "../../lib/shared/isupper.src" -srcs "../../lib/shared/memmove.src" -srcs "../../lib/shared/frameset0.src" -srcs "../../lib/shared/sneg.src" -srcs "../../lib/shared/setjmp.src" -srcs "../../lib/shared/strcspn.src" -srcs "../../lib/shared/fpdiv.src" -srcs "../../lib/shared/istiy.src" -srcs "../../lib/shared/frstof.src" -srcs "../../lib/shared/abs.src" -srcs "../../lib/shared/frsmulu.src" -srcs "../../lib/shared/strdup.src" -srcs "../../lib/shared/sprintf.src" -srcs "../../lib/shared/sldix.src" -srcs "../../lib/shared/finite.src" -srcs "../../lib/shared/lnot.src" -srcs "../../lib/shared/imulu.src" -srcs "../../lib/shared/setflag.src" -srcs "../../lib/shared/iscntrl.src" -srcs "../../lib/shared/fpupop2.src" -srcs "../../lib/shared/ishrs.src" -srcs "../../lib/shared/fpsub.src" -srcs "../../lib/shared/fpmul.src" -srcs "../../lib/shared/case24.src" -srcs "../../lib/shared/isinf.src" -srcs "../../lib/shared/bldix.src" -srcs "../../lib/shared/ldiv.src" -srcs "../../lib/shared/strcmp.src" -srcs "../../lib/shared/strcasecmp.src" -srcs "../../lib/shared/sand.src" -srcs "../../lib/shared/strrchr.src" -srcs "../../lib/shared/sshrs.src" -srcs "../../lib/shared/tolower.src" -srcs "../../lib/shared/isgraph.src" -srcs "../../lib/shared/case8d.src" -srcs "../../lib/shared/snot.src" -srcs "../../lib/shared/round.src" -srcs "../../lib/shared/seqcased.src" -srcs "../../lib/shared/frbtof.src" -srcs "../../lib/shared/fruitof.src" -srcs "../../lib/shared/fritof.src" -srcs "../../lib/shared/log2.src" -srcs "../../lib/shared/fpultof.src" -srcs "../../lib/shared/bshrs.src" -srcs "../../lib/shared/seqcase.src" -srcs "../../lib/shared/bremu.src" -srcs "../../lib/shared/lmulu.src" -srcs "../../lib/shared/strncmp.src" -srcs "../../lib/shared/frbmuls.src" -srcs "../../lib/shared/scmpzero.src" -srcs "../../lib/shared/isxdigit.src" -srcs "../../lib/shared/bdivs.src" -srcs "../../lib/shared/strndup.src" -srcs "../../lib/shared/memset.src" -srcs "../../lib/shared/strncpy.src" -srcs "../../lib/shared/itol.src" -srcs "../../lib/shared/strstr.src" -srcs "../../lib/shared/sdivs.src" -srcs "../../lib/shared/lcmpu.src" -srcs "../../lib/shared/case8.src" -srcs "../../lib/shared/indcall.src" -srcs "../../lib/shared/sqrtf.src" -srcs "../../lib/shared/sstix.src" -srcs "../../lib/shared/fpftol.src" -srcs "../../lib/shared/rand.src" -srcs "../../lib/shared/lstix.src" -srcs "../../lib/shared/lrems.src" -srcs "../../lib/shared/ildiy.src" -srcs "../../lib/shared/lmuls.src" -srcs "../../lib/shared/fppack.src" -srcs "../../lib/shared/lor.src" -srcs "../../lib/shared/icmpzero.src" -srcs "../../lib/shared/strpbrk.src" -srcs "../../lib/shared/sstiy.src" -srcs "../../lib/shared/land.src" -srcs "../../lib/shared/ldivu.src" -srcs "../../lib/shared/frsmuls.src" -srcs "../../lib/shared/strtok.src" -srcs "../../lib/shared/iand.src" -srcs "../../lib/shared/ldivs.src" -srcs "../../lib/shared/ineg.src" -srcs "../../lib/shared/stoi.src" -srcs "../../lib/shared/sremu.src" -srcs "../../lib/shared/sldiy.src" -srcs "../../lib/shared/bstiy.src" -srcs "../../lib/shared/memchr.src" -srcs "../../lib/shared/ior.src" -srcs "../../lib/shared/fpneg.src" -srcs "../../lib/shared/isascii.src" -srcs "../../lib/shared/lldix.src" -srcs "../../lib/shared/smuls.src" -srcs "../../lib/shared/smulu.src" -srcs "../../lib/shared/isspace.src" -srcs "../../lib/shared/frftous.src" -srcs "../../lib/shared/sshl.src" -srcs "../../lib/shared/sdivu.src" -srcs "../../lib/shared/fpadd.src" -srcs "../../lib/shared/lsub.src" -srcs "../../lib/shared/bldiy.src" -srcs "../../lib/shared/ixor.src" -srcs "../../lib/shared/lstiy.src" -srcs "../../lib/shared/srand.src" -srcs "../../lib/shared/uldiv.src" -srcs "../../lib/shared/frftos.src" -srcs "../../lib/shared/frubtof.src" -srcs "../../lib/shared/ishru.src" -srcs "../../lib/shared/sshru.src" -srcs "../../lib/shared/atos.src" -srcs "../../lib/shared/iremu.src" -srcs "../../lib/shared/lshrs.src" -srcs "../../lib/shared/strspn.src" -srcs "../../lib/shared/strnlen.src" -srcs "../../lib/shared/bmuls.src" -srcs "../../lib/shared/sor.src" -srcs "../../lib/shared/imuls.src" -srcs "../../lib/shared/fpltof.src" -srcs "../../lib/shared/sxor.src" -srcs "../../lib/shared/istix.src" -srcs "../../lib/shared/bdivu.src" -srcs "../../lib/shared/bshl.src" -srcs "../../lib/shared/memcmp.src" -srcs "../../lib/shared/srems.src" -srcs "../../lib/shared/strchr.src" -srcs "../../lib/shared/ildix.src" -srcs "../../lib/shared/frustof.src" -srcs "../../lib/shared/lneg.src" -srcs "../../lib/shared/atol.src" -srcs "../../lib/shared/longjmp.src" -srcs "../../lib/shared/labs.src" -srcs "../../lib/shared/memcpy.src" -srcs "../../lib/shared/isalpha.src" -srcs "../../lib/shared/bshru.src" -srcs "../../lib/shared/isprint.src" -srcs "../../lib/shared/strcat.src" -srcs "../../lib/shared/div.src" -srcs "../../lib/shared/isalnum.src" -srcs "../../lib/shared/lshl.src" -srcs "../../lib/shared/case16d.src" -srcs "../../lib/shared/ispunct.src" -srcs "../../lib/shared/toupper.src" -srcs "../../lib/shared/frftoui.src" -srcs "../../lib/shared/idivu.src" -srcs "../../lib/shared/isdigit.src" -srcs "../../lib/shared/sbrk.src" -srcs "../../lib/shared/fpcmp.src" -srcs "../../lib/shared/lcmpzero.src" -srcs "../../lib/shared/stoiu.src" -srcs "../../lib/shared/inot.src" -srcs "../../lib/shared/frimuls.src" -srcs "../../lib/shared/lcmps.src" -srcs "../../lib/shared/irems.src" -srcs "../../lib/shared/lldiy.src" -srcs "../../lib/shared/ishl.src" -srcs "../../lib/shared/strncat.src" -srcs "../../lib/shared/bstix.src" -srcs "../../lib/shared/lxor.src" -srcs "../../lib/shared/lshru.src" -srcs "../../lib/shared/bmulu.src" -srcs "../../lib/shared/calloc.src" -srcs "../../lib/shared/frftoi.src" -srcs "../../lib/shared/islower.src" -srcs "../../lib/shared/case16.src" -srcs "../../lib/shared/frameset.src" -srcs "../../lib/shared/strcpy.src" -srcs "../../lib/shared/frftob.src" -srcs "../../lib/shared/strncasecmp.src" -srcs "../../lib/shared/brems.src" -srcs "../../lib/shared/lremu.src" -srcs "../../lib/shared/case.src" -srcs "../../lib/shared/strlen.src" -srcs "../../lib/shared/gamma.src" -srcs "../../lib/shared/uuitoa.src" -srcs "../../lib/shared/udtog.src" -srcs "../../lib/shared/uscan.src" -srcs "../../lib/shared/strtoul.src" -srcs "../../lib/shared/print_sputch.src" -srcs "../../lib/shared/print_putch.src" -srcs "../../lib/shared/strtol.src" -srcs "../../lib/shared/bsearch.src" -srcs "../../lib/shared/vsprintf.src" -srcs "../../lib/shared/print_putstring.src" -srcs "../../lib/shared/ustoa.src" -srcs "../../lib/shared/maptab.src" -srcs "../../lib/shared/ultoa.src" -srcs "../../lib/shared/usscan.src" -srcs "../../lib/shared/udtof.src" -srcs "../../lib/shared/realloc.src" -srcs "../../lib/shared/free.src" -srcs "../../lib/shared/udtoe.src" -srcs "../../lib/shared/uitoa.src" -srcs "../../lib/shared/qsort.src" -srcs "../../lib/shared/fpdata.src" -srcs "../../lib/shared/uustoa.src" -srcs "../../lib/shared/upscan.src" -srcs "../../lib/shared/malloc.src" -srcs "../../lib/shared/uprint.src" -srcs "../../lib/shared/ureverse.src" -srcs "../../lib/shared/uultoa.src" -srcs "../../lib/shared/print_globals.src" -srcs "../../lib/fileio/files.src" -srcs "../../lib/fileio/fclose.src" -srcs "../../lib/fileio/feof.src" -srcs "../../lib/fileio/fopen.src" -srcs "../../lib/fileio/fwrite.src" -srcs "../../lib/fileio/ftell.src" -srcs "../../lib/fileio/fputs.src" -srcs "../../lib/fileio/fgets.src" -srcs "../../lib/fileio/remove.src" -srcs "../../lib/fileio/fputc.src" -srcs "../../lib/fileio/fgetc.src" -srcs "../../lib/fileio/fread.src" -srcs "../../lib/fileio/fseek.src" diff --git a/frontends/calculator/CEdev/include/.makefile b/frontends/calculator/CEdev/include/.makefile deleted file mode 100644 index c6f243c..0000000 --- a/frontends/calculator/CEdev/include/.makefile +++ /dev/null @@ -1,213 +0,0 @@ -#---------------------------- -# Core C Makefile -#---------------------------- -CLEANUP ?= YES -BSSHEAP_LOW ?= D031F6 -BSSHEAP_HIGH ?= D13FD6 -STACK_HIGH ?= D1A87E -INIT_LOC ?= D1A87F -USE_FLASH_FUNCTIONS ?= YES -OUTPUT_MAP ?= YES -ARCHIVED ?= NO -OPT_MODE ?= -optsize -#---------------------------- -SRCDIR ?= src -OBJDIR ?= obj -BINDIR ?= bin -GFXDIR ?= src/gfx -#---------------------------- - -VERSION := 8.5 - -#---------------------------- -# try not to edit anything below these lines unless you know what you are doing -#---------------------------- - -#---------------------------- - -# define some common makefile things -empty := -space := $(empty) $(empty) -comma := , - -TARGET ?= $(NAME) -ICONPNG ?= $(ICON) -DEBUGMODE = NDEBUG -CCDEBUGFLAG = -nodebug - -# verbosity -V ?= 0 -ifeq ($(V),0) -Q = @ -else -Q = -endif - -# get the os specific items -ifeq ($(OS),Windows_NT) -SHELL := cmd.exe -MAKEDIR := $(CURDIR) -NATIVEPATH = $(subst /,\,$1) -WINPATH = $(NATIVEPATH) -WINRELPATH = $(subst /,\,$1) -RM = del /q /f 2>nul -CEDEV ?= $(call NATIVEPATH,$(realpath ..\..)) -BIN ?= $(call NATIVEPATH,$(CEDEV)/bin) -LD = $(call NATIVEPATH,$(BIN)/fasmg.exe) -CC = $(call NATIVEPATH,$(BIN)/ez80cc.exe) -CV = $(call NATIVEPATH,$(BIN)/convhex.exe) -PG = $(call NATIVEPATH,$(BIN)/convpng.exe) -CD = cd -CP = copy /y -MV = move /y >nul -NULL = >nul 2>&1 -RMDIR = call && (if exist $1 rmdir /s /q $1) -MKDIR = call && (if not exist $1 mkdir $1) -QUOTE_ARG = "$(subst ",',$1)"#' -TO_LOWER = $1 -else -MAKEDIR := $(CURDIR) -NATIVEPATH = $(subst \,/,$1) -WINPATH = $(shell winepath -w $1) -WINRELPATH = $(subst /,\,$1) -RM = rm -f -CEDEV ?= $(call NATIVEPATH,$(realpath ..\..)) -BIN ?= $(call NATIVEPATH,$(CEDEV)/bin) -CC = $(call NATIVEPATH,wine "$(BIN)/ez80cc.exe") -LD = $(call NATIVEPATH,$(BIN)/fasmg) -CV = $(call NATIVEPATH,$(BIN)/convhex) -PG = $(call NATIVEPATH,$(BIN)/convpng) -CD = cd -CP = cp -MV = mv -RMDIR = rm -rf $1 -MKDIR = mkdir -p $1 -QUOTE_ARG = '$(subst ','\'',$1)'#' -TO_LOWER = $(shell printf %s $(call QUOTE_ARG,$1) | tr [:upper:] [:lower:]) -endif -FASMG_FILES = $(subst $(space),$(comma) ,$(patsubst %,"%",$(subst ",\",$(subst \,\\,$(call NATIVEPATH,$1)))))#" - -# ensure native paths -SRCDIR := $(call NATIVEPATH,$(SRCDIR)) -OBJDIR := $(call NATIVEPATH,$(OBJDIR)) -BINDIR := $(call NATIVEPATH,$(BINDIR)) -GFXDIR := $(call NATIVEPATH,$(GFXDIR)) - -# generate default names -TARGETBIN := $(TARGET).bin -TARGETMAP := $(TARGET).map -TARGET8XP := $(TARGET).8xp -ICON_ASM := iconc.src - -# init conditionals -F_STARTUP := $(call NATIVEPATH,$(CEDEV)/lib/cstartup.src) -F_LAUNCHER := $(call NATIVEPATH,$(CEDEV)/lib/libheader.src) -F_CLEANUP := $(call NATIVEPATH,$(CEDEV)/lib/ccleanup.src) - -# source: http://blog.jgc.org/2011/07/gnu-make-recursive-wildcard-function.html -rwildcard = $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2)$(filter $(subst *,%,$2),$d)) - -# find all of the available C, H and ASM files (Remember, you can create C <-> assembly routines easily this way) -CSOURCES := $(call rwildcard,$(SRCDIR),*.c) -CPPSOURCES := $(call rwildcard,$(SRCDIR),*.cpp) -USERHEADERS := $(call rwildcard,$(SRCDIR),*.h *.hpp) -ASMSOURCES := $(call rwildcard,$(SRCDIR),*.asm) - -# create links for later -LINK_CSOURCES := $(CSOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.src) -LINK_CPPSOURCES := $(CPPSOURCES:$(SRCDIR)/%=$(OBJDIR)/%.src) -LINK_ASMSOURCES := $(ASMSOURCES) - -# files created to be used for linking -LINK_FILES := $(LINK_CSOURCES) $(LINK_CPPSOURCES) $(LINK_ASMSOURCES) -LINK_LIBS := $(wildcard $(CEDEV)/lib/libload/*.lib) -LINK_LIBLOAD := $(CEDEV)/lib/libload.lib - -# check if there is an icon present that we can convert; if so, generate a recipe to build it properly -ifneq ("$(wildcard $(ICONPNG))","") -F_ICON := $(OBJDIR)/$(ICON_ASM) -ICON_CONV := $(PG) -c $(ICONPNG)$(comma)$(call NATIVEPATH,$(F_ICON))$(comma)$(DESCRIPTION) -LINK_ICON = , $(call FASMG_FILES,$(F_ICON)) used -endif - -# determine if output should be archived or compressed -ifeq ($(ARCHIVED),YES) -CVFLAGS += -a -endif -ifeq ($(COMPRESSED),YES) -CVFLAGS += -x -endif -ifeq ($(CLEANUP),YES) -LINK_CLEANUP = , $(call FASMG_FILES,$(F_CLEANUP)) used -endif -ifeq ($(OUTPUT_MAP),YES) -LDMAPFLAG = -i map -endif - -# choose static or linked flash functions -ifeq ($(USE_FLASH_FUNCTIONS),YES) -STATIC := 0 -else -STATIC := 1 -endif - -# define the C flags used by the Zilog compiler -CFLAGS ?= \ - -noasm $(CCDEBUGFLAG) -nogenprint -keepasm -quiet $(OPT_MODE) -cpu:EZ80F91 -noreduceopt -nolistinc -nomodsect -define:_EZ80F91 -define:_EZ80 -define:$(DEBUGMODE) - -# these are the linker flags, basically organized to properly set up the environment -LDFLAGS ?= \ - $(call QUOTE_ARG,$(call NATIVEPATH,$(CEDEV)/include/fasmg-ez80/ld.fasmg)) \ - -i $(call QUOTE_ARG,include $(call FASMG_FILES,$(CEDEV)/include/.linker_script)) \ - $(LDDEBUGFLAG) \ - $(LDMAPFLAG) \ - -i $(call QUOTE_ARG,range bss $$$(BSSHEAP_LOW) : $$$(BSSHEAP_HIGH)) \ - -i $(call QUOTE_ARG,symbol __stack = $$$(STACK_HIGH)) \ - -i $(call QUOTE_ARG,locate header at $$$(INIT_LOC)) \ - -i $(call QUOTE_ARG,STATIC := $(STATIC)) \ - -i $(call QUOTE_ARG,srcs $(call FASMG_FILES,$(F_LAUNCHER)) used if libs.length$(LINK_ICON)$(LINK_CLEANUP)$(comma) $(call FASMG_FILES,$(F_STARTUP)) used$(comma) $(call FASMG_FILES,$(LINK_FILES))) \ - -i $(call QUOTE_ARG,libs $(call FASMG_FILES,$(LINK_LIBLOAD)) used if libs.length$(comma) $(call FASMG_FILES,$(LINK_LIBS))) - -# this rule is trigged to build everything -all: dirs $(BINDIR)/$(TARGET8XP) ; - -# this rule is trigged to build debug everything -debug: LDDEBUGFLAG = -i dbg -debug: DEBUGMODE = DEBUG -debug: CCDEBUGFLAG = -debug -debug: dirs $(BINDIR)/$(TARGET8XP) ; - -dirs: - @echo C CE SDK Version $(VERSION) && \ - $(call MKDIR,$(BINDIR)) && \ - $(call MKDIR,$(OBJDIR)) - -$(BINDIR)/$(TARGET8XP): $(BINDIR)/$(TARGETBIN) - $(Q)$(CD) $(BINDIR) && \ - $(CV) $(CVFLAGS) $(notdir $<) $(notdir $@) - -$(BINDIR)/$(TARGETBIN): $(LINK_FILES) $(F_ICON) - $(Q)$(LD) $(LDFLAGS) $@ - -# this rule handles conversion of the icon, if it is ever updated -$(OBJDIR)/$(ICON_ASM): $(ICONPNG) - $(Q)$(ICON_CONV) - -# these rules compile the source files into object files -$(OBJDIR)/%.src: $(SRCDIR)/%.c $(USERHEADERS) - $(Q)$(call MKDIR,$(call NATIVEPATH,$(@D))) && \ - $(CC) $(CFLAGS) $(call QUOTE_ARG,$(call WINPATH,$(addprefix $(MAKEDIR)/,$<))) && \ - $(MV) $(call QUOTE_ARG,$(call TO_LOWER,$(@F))) $(call QUOTE_ARG,$@) - -clean: - $(Q)$(call RMDIR,$(OBJDIR)) - $(Q)$(call RMDIR,$(BINDIR)) - @echo Cleaned build files. - -gfx: - $(Q)$(CD) $(GFXDIR) && convpng - -version: - @echo C SDK Version $(VERSION) - -.PHONY: all clean version gfx dirs debug diff --git a/frontends/calculator/CEdev/include/assert.h b/frontends/calculator/CEdev/include/assert.h deleted file mode 100644 index 0341a98..0000000 --- a/frontends/calculator/CEdev/include/assert.h +++ /dev/null @@ -1,19 +0,0 @@ -#include -#include -#include - -#ifdef assert -#undef assert -#endif - -#ifdef NDEBUG -#define assert(ignore) ((void)0) -#else -#define assert(e) \ - do { \ - if (!(e)) { \ - dbg_sprintf(dbgout, "Assertion failure: %s, file: %s, line %d\n", #e, __FILE__, __LINE__); \ - abort(); \ - } \ - } while (0) -#endif diff --git a/frontends/calculator/CEdev/include/compression.h b/frontends/calculator/CEdev/include/compression.h deleted file mode 100644 index 89754c9..0000000 --- a/frontends/calculator/CEdev/include/compression.h +++ /dev/null @@ -1,27 +0,0 @@ -/** - * @file - * @author Matt "MateoConLechuga" Waltz - * @brief Optimized (de)compression routines - */ - -#ifndef COMPRESSION_H -#define COMPRESSION_H - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Decompress a block of zx7 encoded data - * - * @param dest Pointer to destination for uncompressed data - * @param src Pointer to compressed data -*/ -void zx7_Decompress(void *dest, void *src); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/frontends/calculator/CEdev/include/ctype.h b/frontends/calculator/CEdev/include/ctype.h deleted file mode 100644 index 29301aa..0000000 --- a/frontends/calculator/CEdev/include/ctype.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef CTYPE_H -#define CTYPE_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define TRUE 1 -#define FALSE 0 - -int isalnum(int c); -int isalpha(int c); -int iscntrl(int c); -int isdigit(int c); -int isgraph(int c); -int islower(int c); -int isprint(int c); -int ispunct(int c); -int isspace(int c); -int isupper(int c); -int tolower(int c); -int toupper(int c); -int isascii(int c); -int isxdigit(int c); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/frontends/calculator/CEdev/include/debug.h b/frontends/calculator/CEdev/include/debug.h deleted file mode 100644 index bb20b94..0000000 --- a/frontends/calculator/CEdev/include/debug.h +++ /dev/null @@ -1,124 +0,0 @@ -/** - * @file - * @author Matt "MateoConLechuga" Waltz - * @brief Contains useful debugging features for use with the integrated CEmu debugger - */ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * void dbg_sprintf(out, const char *format, ...) - * - * @brief Use to print to the emulator console. - * - * See the syntax for 'printf' for more information - * @param out Can be dbgout (black) or dbgerr (red) - * @param format Uses printf-formated specifier string - * @def dbg_sprintf - */ - -/** - * void dbg_ClearConsole(void) - * - * @brief Clears the emulator's console screen. - * @def dbg_ClearConsole - */ - -#ifndef NDEBUG - -/** - * Opens the emulator debugger - */ -void dbg_Debugger(void); - -/** - * Sets an emulated breakpoint at a particular address - * - * @param address The address of the breakpoint to remove - */ -void dbg_SetBreakpoint(void *address); - -/** - * Removes an emulated breakpoint at a particular address - * - * @param address The address of the breakpoint to remove - */ -void dbg_RemoveBreakpoint(void *address); - -/** - * Sets an emulated empty watchpoint at a particular address - * - * @param address The address of the watchpoint to set - * @param length The size of the data at the address (values 1-4) - */ -void dbg_SetWatchpoint(void *address, unsigned int length); - -/** - * Sets an emulated read watchpoint at a particular address - * - * @param address The address of the watchpoint to set - * @param length The size of the data at the address (values 1-4) - */ -void dbg_SetReadWatchpoint(void *address, unsigned int length); - -/** - * Sets an emulated write watchpoint at a particular address - * - * @param address The address of the watchpoint to set - * @param length The size of the data at the address (values 1-4) - */ -void dbg_SetWriteWatchpoint(void *address, unsigned int length); - -/** - * Sets an emulated read/write watchpoint at a particular address - * - * @param address The address of the watchpoint to set - * @param length The size of the data at the address (values 1-4) - */ -void dbg_SetReadWriteWatchpoint(void *address, unsigned int length); - -/** - * Removes an emulated watchpoint at a particular address - * - * @param address The address of the watchpoint to remove - */ -void dbg_RemoveWatchpoint(void *address); - -/** - * Removes all emulated watchpoints - */ -void dbg_RemoveAllWatchpoints(void); - -/** - * Removes all emulated breakpoints - */ -void dbg_RemoveAllBreakpoints(void); - -#define dbgout ((char*)0xFB0000) /**< Standard debug output */ -#define dbgerr ((char*)0xFC0000) /**< Error debug output */ -#define dbg_sprintf sprintf -#define dbg_ClearConsole() (*(unsigned char*)0xFD0000 = 1) -#else -#define dbg_Debugger(ignore) ((void)0) -#define dbg_SetBreakpoint(ignore) ((void)0) -#define dbg_RemoveBreakpoint(ignore) ((void)0) -#define dbg_SetWatchpoint(ignore,ignore) ((void)0) -#define dbg_SetReadWatchpoint(ignore,ignore) ((void)0) -#define dbg_SetWriteWatchpoint(ignore,ignore) ((void)0) -#define dbg_SetReadWriteWatchpoint(ignore,ignore) ((void)0) -#define dbg_RemoveWatchpoint(ignore) ((void)0) -#define dbg_RemoveAllWatchpoints(ignore) ((void)0) -#define dbg_RemoveAllBreakpoints(ignore) ((void)0) -#define dbg_sprintf if(0)(void) -#define dbg_ClearConsole(ignore) ((void)0) -#define dbgout (NULL) -#define dbgerr (NULL) -#endif - -#ifdef __cplusplus -} -#endif diff --git a/frontends/calculator/CEdev/include/decompress.h b/frontends/calculator/CEdev/include/decompress.h deleted file mode 100644 index 1fdfa1e..0000000 --- a/frontends/calculator/CEdev/include/decompress.h +++ /dev/null @@ -1,23 +0,0 @@ -/** - * @file - * @author Matt "MateoConLechuga" Waltz - * @brief Optimized decompression routines - */ - -#ifndef DECOMPRESS_H -#define DECOMPRESS_H - -#ifdef __cplusplus -extern "C" { -#endif - -#warning compatibility defines (do not use) -void dzx7_Turbo(void *src, void *dst); -void dzx7_Standard(void *src, void *dst); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/frontends/calculator/CEdev/include/errno.h b/frontends/calculator/CEdev/include/errno.h deleted file mode 100644 index 0e397bf..0000000 --- a/frontends/calculator/CEdev/include/errno.h +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (C) 1999-2008 by Zilog, Inc. - * All Rights Reserved - * Modified by Matt "MateoConLechuga" Waltz for TI84+CE platform - */ -#ifndef ERRNO_H -#define ERRNO_H - -#define ERR_NOR 1 /* read not allowed for file */ -#define ERR_NOW 2 /* write not allowed for file */ -#define ERR_IO 3 /* io error */ -#define EDOM 4 /* domain error */ -#define ERANGE 5 /* range error */ -extern int errno; -#endif diff --git a/frontends/calculator/CEdev/include/fasmg-ez80/ez80.inc b/frontends/calculator/CEdev/include/fasmg-ez80/ez80.inc deleted file mode 100644 index 73c2175..0000000 --- a/frontends/calculator/CEdev/include/fasmg-ez80/ez80.inc +++ /dev/null @@ -1,862 +0,0 @@ -define @ez80 @ez80 -macro @ez80.suffix @l, @il* - @ez80.l = @l - @ez80.il = @il - @ez80.lil = @ez80.l or @ez80.il shl 1 - @ez80.pre = @ez80.lil or @ez80.lil shl 3 or 100o -end macro -macro @ez80.byte @values*& - db @values -end macro -macro @ez80.offset @value* - local value - value = @value - if elementsof value - err 'invalid offset' - else if value < -200o | 200o <= value - err 'offset is out of range' - end if - db value -end macro -macro @ez80.word @value* - local value - value = @value - if elementsof value - err 'invalid immediate' - end if - emit word + @ez80.il: @value -end macro -macro @ez80.idxpre @regs*& - local pre - iterate @reg, @regs - pre = @reg metadata 1 scale 1 - if pre > 300o - @ez80.byte pre - break - end if - end iterate -end macro -macro @ez80.idxoff @reg* - local reg - reg = @reg - if reg metadata 1 scale 1 > 300o - @ez80.offset @reg scale 0 - else if reg scale 0 - err 'invalid arguments' - end if -end macro -macro @ez80.emit @values*& - if defined @ez80.pre - db @ez80.pre - end if - iterate @value, @values - @ez80.@value - end iterate -end macro -macro @ez80.nest @inst*& - if defined @ez80.pre - @ez80.pre =: @ez80.pre - end if - @inst -end macro -macro @ez80.check @ind*, @expr& - match @left ) @right, <@expr> - match @ ( @mid, <@left> - @ez80.check @ind, @mid @right - else - @ind =: 0 - end match - else - @ind =: 1 - end match -end macro -macro @ez80.classify @val, @ind*, @arg& - match, @arg - @ind =: 0 - else - @val =: @arg - match ( @ ), @arg - @ez80.check @ind, @ - else - @ind =: 0 - end match - end match -end macro - -long? = 3 -; FIXME: dup relocations -macro dw? @values*& - if @ez80.adl - emit word?: @values - else - match left =dup? right, @values - emit word?: @values - else - iterate @value, @values - @ez80.word @value - end iterate - end match - end if -end macro -macro dl? @values*& - if @ez80.adl - match left =dup? right, @values - emit long?: @values - else - iterate @value, @values - @ez80.word @value - end iterate - end match - else - emit long?: @values - end if -end macro -iterate @name, dw, rw, dl, rl - struc (name) @name? @values*& - label name: long? - @name? @values - end struc -end iterate -macro assume? @expr* - match =adl? == @adl, @expr - local adl - adl = @adl - if adl = adl and 1 - @ez80.l = adl - @ez80.il = adl - @ez80.adl = adl - else - err 'adl assume should be 0 or 1' - end if - else - err 'invalid assume statement' - end match -end macro -assume? adl = 1 - -element @ez80.breg -element b?: @ez80.breg * 003o + 030o -element nz?: @ez80.breg * 010o + 001o -element z?: @ez80.breg * 010o + 011o -element nc?: @ez80.breg * 010o + 021o -element c?: @ez80.breg * 003o + 031o -element po?: @ez80.breg * 010o + 041o -element pe?: @ez80.breg * 010o + 051o -nv? = po? -v? = pe? -element p?: @ez80.breg * 010o + 061o -element m?: @ez80.breg * 010o + 071o -element d?: @ez80.breg * 003o + 032o -element e?: @ez80.breg * 003o + 033o -element h?: @ez80.breg * 003o + 034o -element ixh?: @ez80.breg * 335o + 034o -element iyh?: @ez80.breg * 375o + 034o -element l?: @ez80.breg * 003o + 035o -element ixl?: @ez80.breg * 335o + 035o -element iyl?: @ez80.breg * 375o + 035o -element f?: @ez80.breg * 002o + 036o -element a?: @ez80.breg * 003o + 037o - -element @ez80.irmb -element i?: @ez80.irmb * 107o + 127o -element r?: @ez80.irmb * 117o + 137o -element mb?: @ez80.irmb * 155o + 156o - -element @ez80.wreg -element bc?: @ez80.wreg * 007o + 000o -element de?: @ez80.wreg * 007o + 020o -element hl?: @ez80.wreg * 007o + 040o -element ix?: @ez80.wreg * 335o + 040o -element iy?: @ez80.wreg * 375o + 040o -element sp?: @ez80.wreg * 006o + 060o -element af?: @ez80.wreg * 001o + 060o -element af'? - -@ez80.is_reg equ metadata 1 element 1 eq - -macro inst! @name*, @params& - restore @name? - define @name? @name? - @ez80.oplist equ @name? - namespace @name? - macro s? @args& - @ez80.suffix 0, @ez80.il - @name? @args - end macro - macro l? @args& - @ez80.suffix 1, @ez80.il - @name? @args - end macro - macro is? @args& - @ez80.suffix @ez80.l, 0 - @name? @args - end macro - macro il? @args& - @ez80.suffix @ez80.l, 1 - @name? @args - end macro - macro sis? @args& - @ez80.suffix 0, 0 - @name? @args - end macro - macro lis? @args& - @ez80.suffix 1, 0 - @name? @args - end macro - macro sil? @args& - @ez80.suffix 0, 1 - @name? @args - end macro - macro lil? @args& - @ez80.suffix 1, 1 - @name? @args - end macro - end namespace - local @temp - virtual - iterate @param, @params - match @arg @, @param* - @temp = string `@arg shr 8 - db 'local ', @temp, ', ', @temp, 'ind', 10 - match @arg &, @param - db 'iterate @, ', `@arg, 10, 9, 'indx %%-%+1', 10, 9 - end match - db '@ez80.classify ', @temp, ', ', @temp, 'ind, ' - match @@ &, @param - db '@', 10, 'end iterate', 10 - else - db `@arg, 10 - end match - end match - end iterate - load @temp: $ - $$ from $$ - end virtual - esc macro @name?: @params - local before, after, noerr - label before - eval @temp -end macro -macro end?.inst! - label after - if ~defined noerr & before = after - err 'invalid arguments' - end if - restore @ez80.pre - assume? adl = @ez80.adl - esc end macro -end macro - -iterate <@name, @opc*>, \ - nop, 000o, \ - rlca, 007o, \ - rrca, 017o, \ - rla, 027o, \ - rra, 037o, \ - daa, 047o, \ - cpl, 057o, \ - scf, 067o, \ - ccf, 077o, \ - halt, 166o, \ - exx, 331o, \ - di, 363o, \ - ei, 373o, \ - neg, <355o, 104o>, \ - retn, <355o, 105o>, \ - reti, <355o, 115o>, \ - rrd, <355o, 147o>, \ - rld, <355o, 157o>, \ - slp, <355o, 166o>, \ - stmix, <355o, 175o>, \ - rsmix, <355o, 176o>, \ - inim, <355o, 202o>, \ - otim, <355o, 203o>, \ - ini2, <355o, 204o>, \ - indm, <355o, 212o>, \ - otdm, <355o, 213o>, \ - ind2, <355o, 214o>, \ - inimr, <355o, 222o>, \ - otimr, <355o, 223o>, \ - ini2r, <355o, 224o>, \ - indmr, <355o, 232o>, \ - otdmr, <355o, 233o>, \ - ind2r, <355o, 234o>, \ - ldi, <355o, 240o>, \ - cpi, <355o, 241o>, \ - ini, <355o, 242o>, \ - outi, <355o, 243o>, \ - outi2, <355o, 244o>, \ - ldd, <355o, 250o>, \ - cpd, <355o, 251o>, \ - ind, <355o, 252o>, \ - outd, <355o, 253o>, \ - outd2, <355o, 254o>, \ - ldir, <355o, 260o>, \ - cpir, <355o, 261o>, \ - inir, <355o, 262o>, \ - otir, <355o, 263o>, \ - oti2r, <355o, 264o>, \ - lddr, <355o, 270o>, \ - cpdr, <355o, 271o>, \ - indr, <355o, 272o>, \ - otdr, <355o, 273o>, \ - otd2r, <355o, 274o>, \ - inirx, <355o, 302o>, \ - otirx, <355o, 303o>, \ - indrx, <355o, 312o>, \ - otdrx, <355o, 313o> - inst @name - @ez80.emit - end inst -end iterate - -iterate @name, inc, dec - inst @name, @reg* - if regind - if reg relativeto reg element 1 & reg @ez80.is_reg @ez80.wreg \ - & reg metadata 1 scale 0 = 040o - @ez80.emit idxpre reg, byte 063o + %, idxoff reg - end if - else if reg eq reg element 1 - if reg @ez80.is_reg @ez80.wreg & reg metadata 1 scale 1 and 004o - @ez80.emit idxpre reg, byte reg metadata 1 scale 0 - 005o \ - + % shl 3 - else if reg @ez80.is_reg @ez80.breg \ - & reg metadata 1 scale 1 and 001o - @ez80.emit idxpre reg, byte reg metadata 1 scale 0 shl 3 \ - and 070o or % + 3 - end if - end if - end inst -end iterate - -inst ex, @arg1, @arg2* - if arg1ind - if arg2ind - err 'invalid indirection' - else if arg1 eq sp? & arg2 eq arg2 element 1 \ - & arg2 @ez80.is_reg @ez80.wreg & arg2 metadata 1 scale 0 = 040o - @ez80.emit idxpre arg2, byte 343o - end if - else if arg2ind - @ez80.nest ex? @arg2, @arg1 - else if (arg1 eq af? & arg2 eq af'?) | (arg1 eq af'? & arg2 eq af?) - @ez80.emit byte 010o - else if (arg1 eq de? & arg2 eq hl?) | (arg1 eq hl? & arg2 eq de?) - @ez80.emit byte 353o - end if -end inst - -inst djnz, @addr* - if addrind - err 'invalid indirection' - else - @ez80.emit byte 020o, offset addr - after - end if -end inst -inst jr, @arg1*, @arg2 - if arg1ind | arg2ind - err 'invalid indirection' - else if ~defined arg2 - @ez80.emit byte 030o, offset arg1 - after - else - if arg1 eq arg1 element 1 & arg1 @ez80.is_reg @ez80.breg \ - & arg1 metadata 1 scale 0 and 047o = 001o - @ez80.emit byte arg1 metadata 1 scale 0 and 030o or 040o, \ - offset arg2 - after - end if - end if -end inst -inst jq, @arg1*, @arg2 - local off, keep - if arg1ind | arg2ind - err 'invalid indirection' - else if ~defined arg2 - off = arg1 - before - 2 - if defined @ez80.pre - off = off - 1 - end if - if defined noerr & ~arg1 eq after | defined keep - define keep - end if - if defined after & arg1 eq after & ~defined keep - define noerr - else if ~elementsof off & -200o <= off & off < 200o - @ez80.emit byte 030o, offset off - else - @ez80.emit byte 303o, word arg1 - end if - else if arg1 eq arg1 element 1 & arg1 @ez80.is_reg @ez80.breg \ - & arg1 metadata 1 scale 0 and 007o = 001o - off = arg2 - before - 2 - if defined @ez80.pre - off = off - 1 - end if - if defined noerr & ~arg2 eq after | defined keep - define keep - end if - if defined after & arg2 eq after & ~defined keep - define noerr - else if arg1 metadata 1 scale 0 < 040o & ~elementsof off & -200o <= off & off < 200o - @ez80.emit byte arg1 metadata 1 scale 0 and 030o or 040o, \ - offset off - else - @ez80.emit byte arg1 metadata 1 scale 0 and 070o or 302o, \ - word arg2 - end if - end if -end inst - -inst ld, @dst, @src* - local opc - if dstind & srcind - err 'invalid indirection' - else if dstind - if dst relativeto dst element 1 & dst @ez80.is_reg @ez80.wreg - if dst metadata 1 scale 0 = 040o - if src eq src element 1 & src @ez80.is_reg @ez80.breg \ - & src metadata 1 scale 1 = 003o - @ez80.emit idxpre dst, byte src metadata 1 scale 0 \ - and 007o or 160o, idxoff dst - else if src eq src element 1 & src @ez80.is_reg @ez80.wreg \ - & src metadata 1 scale 1 and 005o = 005o - opc = src metadata 1 scale 0 or 017o - if src metadata 1 scale 1 > 300o - if dst metadata 1 scale 1 xor src metadata 1 scale 1 \ - and 040o - opc = opc + 017o - else - opc = opc + 020o - end if - end if - if dst metadata 1 scale 1 > 300o - @ez80.emit idxpre dst, byte opc, idxoff dst - else - @ez80.emit - end if - else - @ez80.emit idxpre dst, byte 066o, idxoff dst, byte src - end if - else if src eq a? & dst metadata 1 scale 0 < 040o - @ez80.emit byte dst metadata 1 scale 0 or 002o - end if - else if src eq a? - @ez80.emit byte 062o, word dst - else if src eq src element 1 & src @ez80.is_reg @ez80.wreg \ - & src metadata 1 scale 1 and 004o - if src metadata 1 scale 0 = 040o - @ez80.emit idxpre src, byte 042o, word dst - else - @ez80.emit , word dst - end if - end if - else if srcind - if ~dst eq dst element 1 - else if src relativeto src element 1 & src @ez80.is_reg @ez80.wreg - if src metadata 1 scale 0 = 040o - if dst @ez80.is_reg @ez80.breg & dst metadata 1 scale 1 = 003o - @ez80.emit idxpre src, byte dst metadata 1 scale 0 \ - shl 3 and 070o or 106o, idxoff src - else if dst @ez80.is_reg @ez80.wreg \ - & dst metadata 1 scale 1 and 005o = 005o - opc = dst metadata 1 scale 0 or 007o - if dst metadata 1 scale 1 > 300o - if dst metadata 1 scale 1 xor src metadata 1 scale 1 \ - and 040o - opc = opc + 012o - else - opc = opc + 020o - end if - end if - if src metadata 1 scale 1 > 300o - @ez80.emit idxpre src, byte opc, idxoff src - else - @ez80.emit - end if - end if - else if dst eq a? & src metadata 1 scale 0 < 040o - @ez80.emit byte src metadata 1 scale 0 or 012o - end if - else if dst eq a? - @ez80.emit byte 072o, word src - else if dst @ez80.is_reg @ez80.wreg & dst metadata 1 scale 1 and 004o - if dst metadata 1 scale 0 = 040o - @ez80.emit idxpre dst, byte 052o, word src - else - @ez80.emit , word src - end if - end if - else if dst eq dst element 1 - if dst @ez80.is_reg @ez80.breg - if src eq src element 1 & src @ez80.is_reg @ez80.breg \ - & dst metadata 1 scale 1 and src metadata 1 scale 1 and 001o \ - & (dst metadata 1 scale 0 xor src metadata 1 scale 0 and 006o \ - | dst metadata 1 scale 1 = src metadata 1 scale 1) \ - & (~dst eq src | dst metadata 1 scale 0 > 033o) - @ez80.emit , \ - byte dst metadata 1 scale 0 shl 3 and 070o \ - + src metadata 1 scale 0 and 007o or 100o - else if src eq src element 1 & src @ez80.is_reg @ez80.irmb \ - & dst eq a? - @ez80.emit - else if dst metadata 1 scale 1 and 001o - @ez80.emit idxpre dst, \ - byte dst metadata 1 scale 0 shl 3 and 070o or 006o, \ - byte src - end if - else if dst @ez80.is_reg @ez80.wreg & dst metadata 1 scale 1 and 004o - if dst eq sp? & src eq src element 1 & src @ez80.is_reg @ez80.wreg \ - & src metadata 1 scale 0 = 040o - @ez80.emit idxpre src, byte 371o - else if dst eq hl? & src eq i? - @ez80.emit - else - @ez80.emit idxpre dst, byte dst metadata 1 scale 0 or 001o, \ - word src - end if - else if dst @ez80.is_reg @ez80.irmb & src eq a? - @ez80.emit - else if dst eq i? & src eq hl? - @ez80.emit - end if - end if -end inst - -inst add, @arg1*, @arg2 - if ~defined arg2 - @ez80.nest a?, @arg1 - else if arg1ind - err 'invalid indirection' - else if arg1 eq a? - if arg2ind - if arg2 relativeto arg2 element 1 & arg2 @ez80.is_reg @ez80.wreg \ - & arg2 metadata 1 scale 0 = 040o - @ez80.emit idxpre arg2, byte 206o, idxoff arg2 - end if - else if arg2 eq arg2 element 1 & arg2 @ez80.is_reg @ez80.breg \ - & arg2 metadata 1 scale 1 and 001o - @ez80.emit idxpre arg2, byte arg2 metadata 1 scale 0 and 007o \ - or 200o - else - @ez80.emit - end if - else if arg2ind - err 'invalid indirection' - else if arg1 eq arg1 element 1 & arg1 @ez80.is_reg @ez80.wreg \ - & arg2 eq arg2 element 1 & arg1 @ez80.is_reg @ez80.wreg \ - & arg1 metadata 1 scale 0 = 040o & arg2 metadata 1 scale 1 and 004o \ - & (arg1 metadata 1 scale 0 <> arg2 metadata 1 scale 0 \ - | arg1 metadata 1 scale 1 = arg2 metadata 1 scale 1) - @ez80.emit idxpre arg1, byte arg2 metadata 1 scale 0 or 011o - end if -end inst -iterate @name, adc, sbc - inst @name, @arg1*, @arg2 - if ~defined arg2 - if arg1 @ez80.is_reg @ez80.wreg - @ez80.nest hl?, @arg1 - else - @ez80.nest a?, @arg1 - end if - else if arg1ind - err 'invalid indirection' - else if arg1 eq a? - if arg2ind - if arg2 relativeto arg2 element 1 \ - & arg2 @ez80.is_reg @ez80.wreg \ - & arg2 metadata 1 scale 0 = 040o - @ez80.emit idxpre arg2, byte 176o + % shl 4, idxoff arg2 - end if - else if arg2 eq arg2 element 1 & arg2 @ez80.is_reg @ez80.breg \ - & arg2 metadata 1 scale 1 and 001o - @ez80.emit idxpre arg2, byte arg2 metadata 1 scale 0 and 007o \ - or 170o + % shl 4 - else - @ez80.emit - end if - else if arg2ind - err 'invalid indirection' - else if arg1 eq hl? & arg2 eq arg2 element 1 \ - & arg2 @ez80.is_reg @ez80.wreg \ - & arg2 metadata 1 scale 1 and 002o - @ez80.emit - end if - end inst -end iterate -iterate <@name, @opc*>, \ - sub, 220o, \ - and, 240o, \ - xor, 250o, \ - or, 260o, \ - cp, 270o - inst @name, @arg1*, @arg2 - if ~defined arg2 - if arg1ind - if arg1 relativeto arg1 element 1 \ - & arg1 @ez80.is_reg @ez80.wreg \ - & arg1 metadata 1 scale 0 = 040o - @ez80.emit idxpre arg1, byte @opc or 006o, idxoff arg1 - end if - else if arg1 relativeto arg1 element 1 \ - & arg1 @ez80.is_reg @ez80.breg \ - & arg1 metadata 1 scale 1 and 001o - @ez80.emit idxpre arg1, byte arg1 metadata 1 scale 0 and 007o \ - or @opc - else - @ez80.emit - end if - else if arg1ind - err 'invalid indirection' - else if arg1 eq a? - @ez80.nest @name? @arg2 - end if - end inst -end iterate -inst tst, @arg1*, @arg2 - if ~defined arg2 - if arg1ind - if arg1 eq hl? - @ez80.emit - end if - else if arg1 eq arg1 element 1 & arg1 @ez80.is_reg @ez80.breg \ - & arg1 metadata 1 scale 1 = 003o - @ez80.emit - else - @ez80.emit - end if - else if arg1ind - err 'invalid indirection' - else if arg1 eq a? - @ez80.nest tst? @arg2 - end if -end inst - -inst ret, @cond - if ~defined cond - @ez80.emit byte 311o - else if condind - err 'invalid indirection' - else if cond eq cond element 1 & cond @ez80.is_reg @ez80.breg \ - & cond metadata 1 scale 0 and 007o = 001o - @ez80.emit byte cond metadata 1 scale 0 and 070o or 300o - end if -end inst -iterate @name, pop, push - inst @name, @reg*& - while defined reg + regind - if regind - err 'invalid indirection' - else if reg eq reg element 1 & reg @ez80.is_reg @ez80.wreg \ - & reg metadata 1 scale 1 and 001o - @ez80.emit idxpre reg, \ - byte reg metadata 1 scale 0 + 275o + % shl 2 - else if `@name = 'push' - @ez80.nest pea? reg - else - err 'invalid argument' - end if - restore reg, regind - end while - end inst -end iterate - -inst jp, @arg1*, @arg2 - if ~defined arg2 - if ~arg1ind - @ez80.emit byte 303o, word arg1 - else if arg1 eq arg1 element 1 & arg1 @ez80.is_reg @ez80.wreg \ - & arg1 metadata 1 scale 0 = 040o - @ez80.emit idxpre arg1, byte 351o - end if - else if arg1ind | arg2ind - err 'invalid indirection' - else if arg1 eq arg1 element 1 & arg1 @ez80.is_reg @ez80.breg \ - & arg1 metadata 1 scale 0 and 007o = 001o - @ez80.emit byte arg1 metadata 1 scale 0 and 070o or 302o, word arg2 - end if -end inst -inst call, @arg1*, @arg2 - if arg1ind | arg2ind - err 'invalid indirection' - else if ~defined arg2 - @ez80.emit byte 315o, word arg1 - else if arg1 eq arg1 element 1 & arg1 @ez80.is_reg @ez80.breg \ - & arg1 metadata 1 scale 0 and 007o = 001o - @ez80.emit byte arg1 metadata 1 scale 0 and 070o or 304o, word arg2 - end if -end inst -inst rst, @addr* - if addrind - err 'invalid indirection' - else if addr = addr and 070o - @ez80.emit byte addr or 307o - else - err 'invalid rst target' - end if -end inst - -iterate <@name, @opc*>, \ - rlc, 000o, \ - rrc, 010o, \ - rl, 020o, \ - rr, 030o, \ - sla, 040o, \ - sra, 050o, \ - srl, 070o - inst @name, @reg* - if `@name = 'rl' & ~defined @ez80.pre & ~elementsof reg - rb long? * reg - define noerr - else if regind - if reg relativeto reg element 1 & reg @ez80.is_reg @ez80.wreg \ - & reg metadata 1 scale 0 = 040o - @ez80.emit idxpre reg, byte 313o, idxoff reg, byte @opc or 006o - end if - else if reg eq reg element 1 & reg @ez80.is_reg @ez80.breg \ - & reg metadata 1 scale 1 = 003o - @ez80.emit - end if - end inst -end iterate -iterate @name, bit, res, set - inst @name, @bit, @reg* - if bitind - err 'invalid indirection' - else if regind - if reg relativeto reg element 1 & reg @ez80.is_reg @ez80.wreg \ - & reg metadata 1 scale 0 = 040o - @ez80.emit idxpre reg, byte 313o, idxoff bit shr 3 + reg, \ - byte bit shl 3 and 070o or % shl 6 or 006o - end if - else if reg eq reg element 1 - if reg @ez80.is_reg @ez80.breg & reg metadata 1 scale 1 = 003o \ - & bit = bit and 007o - @ez80.emit - else if reg @ez80.is_reg @ez80.wreg \ - & reg metadata 1 scale 1 = 007o & bit = bit and 017o - @ez80.emit - end if - end if - end inst -end iterate - -inst out, @port, @reg* - if ~portind - err 'missing indirection' - else if regind - err 'invalid indirection' - else if port eq bc? | port eq c? - if reg eq reg element 1 & reg @ez80.is_reg @ez80.breg \ - & reg metadata 1 scale 1 = 003o - @ez80.emit - else if ~reg - @ez80.emit - end if - else if reg eq a? - @ez80.emit - end if -end inst -inst in, @reg*, @port - if ~defined port - @ez80.nest in? f?, @reg - else if regind - err 'invalid indirection' - else if ~portind - err 'missing indirection' - else if port eq bc? | port eq c? & reg eq reg element 1 \ - & reg @ez80.is_reg @ez80.breg & reg metadata 1 scale 1 and 002o - @ez80.emit - else if reg eq a? - @ez80.emit - end if -end inst -inst in0, @reg*, @port - if ~defined port - @ez80.nest in0? f?, @reg - else if regind - err 'invalid indirection' - else if ~portind - err 'missing indirection' - else if reg eq reg element 1 & reg @ez80.is_reg @ez80.breg \ - & reg metadata 1 scale 1 and 002o - @ez80.emit - end if -end inst -inst out0, @port, @reg* - if ~portind - err 'missing indirection' - else if regind - err 'invalid indirection' - else if reg eq reg element 1 & reg @ez80.is_reg @ez80.breg \ - & reg metadata 1 scale 1 = 003o - @ez80.emit - end if -end inst -inst tstio, @src* - if srcind - err 'invalid indirection' - else - @ez80.emit - end if -end inst - -inst lea, @dst, @src* - if dstind | srcind - err 'invalid indirection' - else if dst eq dst element 1 & src relativeto src element 1 \ - & dst @ez80.is_reg @ez80.wreg & src @ez80.is_reg @ez80.wreg \ - & dst metadata 1 scale 0 <> 060o & src metadata 1 scale 1 > 300o - local opc - if dst metadata 1 scale 1 and 002o - opc = src metadata 1 scale 1 shr 5 and 001o \ - or dst metadata 1 scale 0 or 002o - else if dst relativeto src - opc = dst metadata 1 scale 1 shr 5 and 001o or 062o - else - opc = dst metadata 1 scale 1 shr 5 and 001o or 124o - end if - @ez80.emit , offset src scale 0 - end if -end inst -inst pea, @src* - if srcind - err 'invalid indirection' - else if src relativeto src element 1 & src @ez80.is_reg @ez80.wreg \ - & src metadata 1 scale 1 > 300o - @ez80.emit , \ - offset src scale 0 - end if -end inst - -inst im, @mode* - if modeind - err 'invalid indirection' - else if mode = 0 - @ez80.emit - else if mode = 1 - @ez80.emit - else if mode = 2 - @ez80.emit - else - err 'invalid mode' - end if -end inst - -inst mlt, @reg* - if regind - err 'invalid indirection' - else if reg eq reg element 1 & reg @ez80.is_reg @ez80.wreg \ - & reg metadata 1 scale 1 and 002o - @ez80.emit - end if -end inst - -purge inst -purge end?.inst diff --git a/frontends/calculator/CEdev/include/fasmg-ez80/ld.fasmg b/frontends/calculator/CEdev/include/fasmg-ez80/ld.fasmg deleted file mode 100644 index 3c3e168..0000000 --- a/frontends/calculator/CEdev/include/fasmg-ez80/ld.fasmg +++ /dev/null @@ -1,759 +0,0 @@ -assert "\"" = '"' ; check for patched fasmg -include 'tiformat.inc' -define ez80 ez80 -namespace ez80 - include 'ez80.inc' -end namespace -macro ?! $ : $ , \ - $@ : $@ , \ - $$ : $$ , \ - and : and , \ - assert : assert , \ - at : at , \ - break : break , \ - define : define , \ - defined : defined , \ - dup : dup , \ - else : else , \ - emit : emit , \ - end : end , \ - equ : equ , \ - err : err , \ - esc : esc , \ - ez80 : ez80 , \ - from : from , \ - if : if , \ - include : include , \ - irpv : irpv , \ - iterate : iterate , \ - label : label , \ - lengthof : lengthof , \ - load : load , \ - local : local , \ - macro : macro , \ - match : match , \ - mod : mod , \ - namespace: namespace, \ - not : not , \ - or : or , \ - purge : purge , \ - rb : rb , \ - repeat : repeat , \ - restore : restore , \ - restruc : restruc , \ - rawmatch : rawmatch , \ - segment : segment , \ - shl : shl , \ - shr : shr , \ - store : store , \ - struc : struc , \ - used : used , \ - virtual : virtual , \ - while : while , \ - xor : xor - local global, debug, files, segments, hex, output - global equ - segments equ - restore global, segments - - macro files.libs.parse file, offset, isused, anyused* - local private - namespace private - macro library?! name, version* - end if - if anyused - emit 1: $C0, name, 0, version - end if - if 0 - end macro - iterate each, export, export_pointer - macro each?! function* - end if - namespace ez80 - if used global._#function - isused = 1 - global._#function := $ + %-1 - jp offset - virtual - local name - emit 1: '_', `function - load name: $ - $$ from $$ - global equ name = global._#function - end virtual - end if - offset = offset + word + @ez80.il - end namespace - if 0 - end macro - end iterate - if 0 - esc include! file - end if - end namespace - end macro - macro files.libs.handle file, isused* - local offset, anyused - offset = 0 - files.libs.parse file, offset, isused, anyused - anyused := isused - end macro - - macro files.srcs.check file, isused* - local private - namespace private - iterate name, DEF, GLOBAL, PUBLIC, XDEF - iterate style, name, .name - macro style?! symbols*& - end if - iterate symbol, symbols - if used global.symbol - isused = 1 - end if - end iterate - if 0 - end macro - end iterate - end iterate - if 0 - esc include! file - end if - end namespace - end macro - macro files.srcs.parse file* - local private - namespace private - virtual segments.code.area - ?$ equ $ - ?XOR? equ xor - ?AND? equ and - ?OR? equ or - ?SHL? equ shl - ?SHR? equ shr - ?NOT? equ not - iterate name, LIST, NEWPAGE, NOLIST, PAGE - macro name? - end macro - end iterate - iterate name, CPU, TITLE - macro name? arg* - end macro - end iterate - iterate name, COPY, INCLUDE - macro name?! path* - include path - end macro - end iterate - iterate name, EXTERN, EXTERNAL, REF, XREF - macro name? symbols*& - match list : space, symbols - iterate symbol, list - symbol := global.symbol - end iterate - else - iterate symbol, symbols - symbol := global.symbol - end iterate - end match - end macro - end iterate - iterate name, DEF, GLOBAL, PUBLIC, XDEF - macro name? symbols*& - iterate symbol, symbols - global.symbol := symbol - virtual - local name - emit 1: `symbol - load name: $ - $$ from $$ - global equ name = global.symbol - end virtual - end iterate - end macro - end iterate - struc (symbol) EQU? expr* - local error - if ~defined error & defined symbol | error - err 'Symbol "', `symbol, '" already defined' - error = 1 - else - error = 0 - end if - ?symbol = expr - end struc - iterate name, VAR, SET - struc (symbol) name? expr* - ?symbol = expr - end struc - end iterate - macro DS? count - local c - c = count - rb c - end macro - struc DS? count - .: DS? count - end struc - iterate , B,B,1, W,W,2, W24,P,3, L,L,4 - macro D#def? vals*& - local v - iterate val, vals - v = val - emit size: v - end iterate - end macro - macro BLK#blk? count*, init - local c, i - c = count - match, init - emit size: c dup ? - else - i = init - emit size: c dup i - end match - end macro - iterate name, D#def, BLK#blk - struc name? args& - .: name? args - end struc - end iterate - end iterate - iterate , TRIO,DW24, DF,DL - macro name? vals*& - alias? vals - end macro - struc name? args& - .: name? args - end struc - end iterate - macro ALIGN? val* - local v - v = val - rb v-1 - ($ + v-1) mod v - end macro - macro SEGMENT? name* - segment name - end macro - macro ASSUME? expr* - namespace ez80 - assume? expr - end namespace - end macro - iterate register, B, NZ, Z, NC, C, PO, PE, P, M, D, E, \ - H, IXH, IYH, L, IXL, IYL, F, A, I, R, \ - MB, BC, DE, HL, IX, IY, SP, AF, AF' - register? := ez80.register? - end iterate - iterate suffix, , .s?, .l?, .is?, .il?, .sis?, .sil?, .lis?, .lil? - irpv name, ez80.@ez80.oplist - rawmatch rawname, name - define rawname rawname - macro rawname#suffix args& - namespace ez80 - name#suffix args - end namespace - end macro - end rawmatch - end irpv - macro LD? d, s* - namespace ez80 - @ez80.classify dst, dstind, d - @ez80.classify src, srcind, s - if ~dstind & dst eq dst element 1 & dst @ez80.is_reg @ez80.wreg \ - & dst metadata 1 scale 1 and 001o & ~srcind \ - & src relativeto src element 1 & src @ez80.is_reg @ez80.wreg - if src metadata 1 scale 1 = 007o - PUSH? s - POP? d - else - LEA? d, s - end if - else - LD? d, s - end if - end namespace - end macro - macro JR?#suffix args& - namespace ez80 - jq?#suffix args - end namespace - end macro - end iterate - iterate , UEXT,, SEXT,RLA - macro name? reg* - carry? - SBC? reg, reg - end macro - end iterate - macro COMMENT?! delim*& - end match - local inside - inside = 0 - macro ?! line& - local length, text - length = 0 - if inside - length = lengthof `line - text = `line - else if `line = 'end match' - inside = 1 - length = lengthof `delim - 1 - text = `delim shr 8 - end if - repeat length - if ~text xor `delim and $FF - purge ? - break - end if - text = text shr 8 - end repeat - end macro - end macro - - if defined debug - debug.enabled = 0 - debug.startAddr = $ - iterate name, ALIAS, BASE, DEFINE, ENDREC, SPACE, TAG - macro name? str1* - if debug.enabled - virtual debug - debug.uleb128 debug.name - debug.string str1 - end virtual - end if - end macro - end iterate - iterate name, BEGFUNC, ENDFUNC - macro name? str1, num1, str2* - if debug.enabled - local line, addr - line = num1 - addr = $ - virtual debug - debug.uleb128 debug.name - debug.string str1, str2 - debug.uleb128 line - debug.line, addr - debug.addr - end virtual - debug.line = line - debug.addr = addr - end if - end macro - end iterate - macro BEGREC? str1, num1* - if debug.enabled - virtual debug - debug.uleb128 debug.BEGREC - debug.string str1 - debug.uleb128 num1 - end virtual - end if - end macro - iterate , CLASS,u, DIM,u, LENGTH,u, REG,u, SIZE,u, TYPE,s, VALUE,s - macro name? num1* - if debug.enabled - virtual debug - debug.uleb128 debug.name - debug.signed#leb128 num1 - end virtual - end if - end macro - end iterate - macro DEBUG? str1* - virtual debug - debug.uleb128 debug.FILE, lengthof debug.source - emit 1: debug.source - debug.uleb128 debug.startAddr - debug.addr, debug.DEBUG - debug.string str1 - end virtual - debug.enabled = 1 - debug.line = 0 - debug.addr = debug.startAddr - end macro - macro END?! - end if - if debug.enabled - local addr - segment code - addr = $ - virtual debug - debug.uleb128 debug.END, addr - debug.addr - end virtual - debug.addr = addr - end if - if 0 - end macro - macro ENDEF? - if debug.enabled - virtual debug - debug.uleb128 debug.ENDEF - end virtual - end if - end macro - macro FILE? str1* - debug.source = str1 - end macro - macro LINE? num1* - local line, addr - line = num1 - addr = $ - if line <> debug.line | addr <> debug.addr & debug.enabled - virtual debug - debug.uleb128 debug.LINE, line - debug.line, addr - debug.addr - end virtual - debug.line = line - debug.addr = addr - end if - end macro - else - iterate name, ALIAS, BASE, BEGFUNC, BEGREC, CLASS, DEBUG, \ - DEFINE, DIM, ENDEF, ENDFUNC, ENDREC, FILE, \ - LENGTH, LINE, REG, SIZE, SPACE, TAG, TYPE, VALUE - macro name? args& - end macro - end iterate - macro END?! - end if - if 0 - end macro - end if - - struc ? def::& - . def - end struc - macro ? line& - match .rest, line - rest - else match first= .rest, line - first rest - else - line - end match - end macro - if 1 - include file - end if - purge ? - restruc ? - end virtual - end namespace - end macro - macro files.srcs.handle file, isused* - if ~isused - files.srcs.check file, isused - end if - if isused - files.srcs.parse file - end if - end macro - - macro symbol? args*& - iterate arg, args - rawmatch symbol == value, arg - namespace segments - global.symbol := value - virtual - local name - emit 1: `symbol - load name: $ - $$ from $$ - global equ = name global.symbol - end virtual - end namespace - else - 'Syntax error in symbol arguments' - end rawmatch - end iterate - end macro - - iterate name, srcs, libs - macro files.name.add file, used* - local isused - rawmatch rawused, used - namespace segments - isused = rawused - end namespace - end rawmatch - if `file and $FF = "'" - files.name equ file, isused - else - files.name equ `file, isused - end if - end macro - macro name? args*& - local require - iterate arg, args - match file= =used? =if?= used, arg - files.name.add file, used - else match file= =used?, arg - files.name.add file, 1 - else - files.name.add arg, 0 - end match - end iterate - end macro - end iterate - - macro locate? args*& - iterate arg, args - rawmatch name =at? location, arg - segments equ segments.name? - namespace segments - name? := `name - name.base? := location - end namespace - else - err 'Syntax error in locate argument' - end rawmatch - end iterate - end macro - macro range? args*& - iterate arg, args - rawmatch name lower : upper, arg - locate name at lower - namespace segments - name.high? := upper - end namespace - else - err 'Syntax error in range arguments' - end rawmatch - end iterate - end macro - macro order?: args*& - match first =, second =, rest, args - order first, second - order second, rest - else match first =, second, args - locate second at first.base + first.length - else - err 'Not enough order arguments' - end match - end macro - macro merge? args*& - match name == list, args - order list - iterate segment, list - locate name at segment.base - indx %% - namespace segments - name.top? := segment.base + segment.length - if defined segment.high - name.high? := segment.high - end if - end namespace - break - end iterate - else - err 'Syntax error in merge arguments' - end match - end macro - - macro hex value*, leading: '0', digits: 6 - local val, zero, digit, char - emit 1: ' ' - val = value - zero = leading - repeat digits - digit = (val shr ((%% - %) shl 2)) and 0Fh - if digit < 10 - char = '0' + digit - else - char = 'A' + digit - 10 - end if - if digit - zero = '0' - else if % <> %% - char = zero - end if - emit 1: char - end repeat - end macro - - macro map? - local longest, name - postpone ? - virtual as 'map' - longest = lengthof "Segment" - irpv segment, segments - if longest < lengthof segment - longest = lengthof segment - end if - end irpv - emit 1: "Segment", longest - lengthof "Segment" + 1 dup ' ', "Base Top High Length", 10, longest dup '-', 4 dup " ------", '-', 10 - irpv segment, segments - namespace segment - if longest < lengthof segment - longest = lengthof segment - end if - emit 1: segment, longest - lengthof segment dup ' ' - hex base - hex top - if defined high - hex high - else - emit 1: 7 dup ' ' - end if - hex length, ' ' - emit 1: 'h', 10 - end namespace - end irpv - match any, global - longest = lengthof "Label" - irpv symbol, global - match name == value, symbol - if longest < lengthof name - longest = lengthof name - end if - end match - end irpv - emit 1: 10, "Label", longest - lengthof "Label" + 3 dup ' ', "Value", 10, longest dup '-', 3 dup ' ', 6 dup '-', 10 - irpv symbol, global - match name == value, symbol - emit 1: name, longest - lengthof name + 1 dup ' ', '=' - hex value - emit 1: 10 - end match - end irpv - end match - end virtual - end postpone - end macro - macro dbg? - virtual as 'dbg' - debug:: - end virtual - namespace debug - virtual at 0 - iterate name, EOF, ALIAS, BASE, BEGFUNC, BEGREC, CLASS, DEBUG, DEFINE, \ - DIM, END, ENDEF, ENDFUNC, ENDREC, FILE, LENGTH, LINE, \ - REG, SIZE, SPACE, STRINGS, TAG, TYPE, VALUE - name rb 1 - end iterate - end virtual - line = 0 - addr = 0 - macro uleb128 values*& - iterate value, values - local val - val = value - assert val >= 0 - while val shr 7 > 0 - emit 1: val and 07Fh or 080h - val = val shr 7 - end while - emit 1: val - end iterate - end macro - macro sleb128 values*& - iterate value, values - local val - val = value - while val shr 6 <> 0 & val shr 6 <> -1 - emit 1: val and 07Fh or 080h - val = val shr 7 - end while - emit 1: val and 07Fh - end iterate - end macro - restore strings - macro string values*& - iterate value, values - local count, unfound - count = 0 - unfound = 1 - irpv each, debug.strings - if each = value - unfound = 0 - debug.uleb128 % - break - end if - count = %% - end irpv - if unfound - debug.uleb128 count + 1 - debug.strings =: value - end if - end iterate - end macro - end namespace - end macro - - macro segment name* - end virtual - virtual segments.name.area - end macro - - if ~defined segments - err 'No segments defined' - else - restore output.base, output.top ; forbid forward reference - irpv segment, segments - namespace segment - virtual at base - area?:: - end virtual - if ~defined output.base | output.base > base & ~defined high - output.base = base - end if - end namespace - end irpv - irpv file, files.srcs - files = 0 - files.srcs.handle file - end irpv - if ~defined files - err 'Please pass the input files with -i\'srcs "file1" [if require1], "file2" [if require2], ...\'' - end if - irpv file, files.libs - virtual segments.libs.area - files.libs.handle file - end virtual - end irpv - - if defined debug - virtual debug - if defined debug.strings - debug.uleb128 debug.STRINGS - irpv string, debug.strings - if % = 1 - debug.uleb128 %% - end if - debug.uleb128 lengthof string - emit 1: string - end irpv - end if - debug.uleb128 debug.EOF - end virtual - end if - - irpv segment, segments - namespace segment - virtual area - top? := $ - length? := $ - $$ - initlen? := $@ - $$ - end virtual - if ~defined high - if ~defined output.top | output.top < top - output.top = top - end if - else if top > high - repeat 1, len: length, over: top - high, max: high - base - err 'Segment ', segment, ' is ', `len, ' bytes, ', \ - `over, ' bytes larger than the maximum of ', \ - `max, ' bytes' - end repeat - end if - end namespace - end irpv - org output.base - rb output.top - $ - postpone ? - irpv segment, segments - namespace segment - if ~defined high - load output: initlen from area: base - store output: initlen at base - end if - end namespace - end irpv - end postpone - end if - purge ? -end macro diff --git a/frontends/calculator/CEdev/include/fasmg-ez80/ti84pceg.inc b/frontends/calculator/CEdev/include/fasmg-ez80/ti84pceg.inc deleted file mode 100644 index 8dac20d..0000000 --- a/frontends/calculator/CEdev/include/fasmg-ez80/ti84pceg.inc +++ /dev/null @@ -1,61 +0,0 @@ -macro ?! - ; assign needs to be local so that it is only - ; defined once (no purge!) so that it can be - ; forward referenced so that it can recurse - local assign - macro assign: name*, expr& - match left =% right, expr - assign name, left mod right - else match left =| right, expr - assign name, left or right - else match left =& right, expr - assign name, left and right - else match left =^ right, expr - assign name, left xor right - else match left =<=< right, expr - assign name, left shl right - else match left =>=> right, expr - assign name, left shr right - else match left =~ right, expr - assign name, left not right - else match =~ right, expr - assign name, not right - else - name? := expr - end match - end macro - struc (name) equ? expr& - assign name, expr - end struc - macro Ld args& - match =equ? expr, args - assign name, expr - end match - end macro - purge ? -end macro - -macro .list? -end macro -macro .nolist? -end macro -macro #define? name -end macro -macro #ifdef? name -end macro -macro #ifndef? name -end macro -macro #endif? -end macro - -element anovaf_vars? -include 'ti84pce.inc' - -restruc equ? -purge Ld -purge .list? -purge .nolist? -purge #define? -purge #ifdef? -purge #ifndef? -purge #endif? diff --git a/frontends/calculator/CEdev/include/fasmg-ez80/tiformat.inc b/frontends/calculator/CEdev/include/fasmg-ez80/tiformat.inc deleted file mode 100644 index 88faa36..0000000 --- a/frontends/calculator/CEdev/include/fasmg-ez80/tiformat.inc +++ /dev/null @@ -1,105 +0,0 @@ -macro format?.ti? clause& - local all, checkloc, checksum, cplx, data, exec, flag, head, name, process, prot, temp, type, ext, var - macro process: setting - match first rest, setting - process first - process rest - else match =ARCHIVED?, setting - flag = flag or 1 shl 7 - else match =EXECUTABLE?, setting - define exec - else match =PROTECTED?, setting - type = 6 - define prot - else match =REAL?, setting - type = 0 - ext = '8xn' - else match =LIST?, setting - if defined cplx - type = 13 - else - type = 2 - end if - ext = '8xl' - else match =MATRIX?, setting - type = 2 - ext = '8xm' - else match =EQUATION?, setting - type = 3 - ext = '8xy' - else match =STRING?, setting - type = 4 - ext = '8xs' - else match =PROGRAM?, setting - if defined prot - type = 6 - else - type = 5 - end if - ext = '8xp' - else match =PICTURE?, setting - type = 7 - ext = '8ci' - else match =GDB?, setting - type = 1 - ext = '8xd' - else match =COMPLEX?, setting - type = 12 - define cplx - ext = '8xc' - else match =APPVAR?, setting - type = 21 - ext = '8xv' - else match =GROUP?, setting - type = 23 - ext = '8xg' - else match =IMAGE?, setting - type = 26 - ext = '8ca' - else if setting eqtype 'name' - name = setting - else if setting eqtype 0 - type = setting - ext = '8x' - end if - end macro - name = 'A' - type = 6 - ext = '8xp' - flag = 0 - process clause - format binary as ext - assert ~$% & 'Unexpected data before format directive' - dq '**TI83F*' - db 26, 10, 0 - rb 42 - dw sizeof all - label all: checkloc - $% - dw sizeof head, sizeof data - label head: data - $ - db type - dq name - db 0, flag - dw sizeof data - label data: checkloc - $% - dw sizeof var - label var: checkloc - $% - if defined exec - dw 07BEFh - org 0D1A881h - else - org 0 - end if - postpone - label checkloc at $% - end postpone - postpone ? - assert checkloc = $% & 'Unexpected postpone before format directive' - checksum = 0 - repeat sizeof all - load temp: byte from: all + %-1 - checksum = (checksum + temp) and 0FFFFh - end repeat - dw checksum - end postpone -end macro diff --git a/frontends/calculator/CEdev/include/fileioc.h b/frontends/calculator/CEdev/include/fileioc.h deleted file mode 100644 index cdce463..0000000 --- a/frontends/calculator/CEdev/include/fileioc.h +++ /dev/null @@ -1,509 +0,0 @@ -/** - * @file - * @author Matt "MateoConLechuga" Waltz - * @brief Implements variable reading and writing routines - */ - -#ifndef H_FILEIOC -#define H_FILEIOC - -#include -#include -#include -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Varible and flag definitions */ -#define TI_PRGM_TYPE (0x05) -#define TI_PPRGM_TYPE (0x06) -#define TI_TPRGM_TYPE (0x16) -#define TI_APPVAR_TYPE (0x15) -#define TI_REAL_TYPE (0x00) -#define TI_CPLX_TYPE (0x0C) -#define TI_MATRIX_TYPE (0x02) -#define TI_STRING_TYPE (0x04) -#define TI_EQU_TYPE (0x03) -#define TI_REAL_LIST_TYPE (0x01) -#define TI_CPLX_LIST_TYPE (0x0D) - -#ifndef EOF -#define EOF (-1) -#endif - -/** - * @brief Variable slot type - */ -typedef uint8_t ti_var_t; - -/** - * Closes all open slots - * @warning Call before you use any variable functions - */ -void ti_CloseAll(void); - -/** - * Opens a file - * - * An AppVar is used as default file storage - * @param name Name of file to open - * @param mode - * "r" - Opens a file for reading. The file must exist. Keeps file in archive if in archive.
- * "w" - Creates an empty file for writing. Overwrites file if already exists.
- * "a" - Appends to a file. Writing operations, append data at the end of the file. The file is created if it does not exist.
- * "r+" - Opens a file to update both reading and writing. The file must exist. Moves file from archive to RAM if in archive.
- * "w+" - Creates an empty file for both reading and writing. Overwrites file if already exists.
- * "a+" - Opens a file for reading and appending. Moves file from archive to RAM if in archive. Created if it does not exist. - * @returns Slot variable - * @note If there isn't enough memory to create the variable, or a slot isn't open, zero (0) is returned - */ -ti_var_t ti_Open(const char *name, const char *mode); - -/** - * Opens a variable - * - * Can open any type of program or appvar variable - * @param varname Name of variable to open - * @param mode - * "r" - Opens a file for reading. The file must exist. Keeps file in archive if in archive.
- * "w" - Creates an empty file for writing. Overwrites file if already exists.
- * "a" - Appends to a file. Writing operations, append data at the end of the file. The file is created if it does not exist.
- * "r+" - Opens a file to update both reading and writing. The file must exist. Moves file from archive to RAM if in archive.
- * "w+" - Creates an empty file for both reading and writing. Overwrites file if already exists.
- * "a+" - Opens a file for reading and appending. Moves file from archive to RAM if in archive. Created if it does not exist. - * @param type Specifies the type of variable to open - * @returns Slot variable - * @note If there isn't enough memory to create the variable, or a slot isn't open, zero (0) is returned - */ -ti_var_t ti_OpenVar(const char *varname, const char *mode, uint8_t type); - -/** - * Frees an open variable slot - * @returns Zero if closing failed - */ -int ti_Close(const ti_var_t slot); - -/** - * Returns the name of the file(s) that contains the string as the first part of the variable; - * which can then be used with ti_Open and other functions - * - * seach_pos should be set to NULL to begin a search, and is updated with each call - * - * @code - * char *var_name; - * uint8_t *search_pos = NULL; - * while((var_name = ti_Detect(&search_pos, "my_data")) != NULL) { - * ...do something with the name or search_pos... - * } - * @endcode - * @param curr_search_posistion Current offset in the VAT - * @param detection_string String to search for (NULL to search for all) - * @note If the return value is NULL, there are no more variables to find - */ -char *ti_Detect(void **curr_search_posistion, const char *detection_string); - -/** - * Returns the name of the file(s) that contains the string as the first part of the variable; - * which can then be used with ti_OpenVar and other functions - * - * seach_pos should be set to NULL to begin a search, and is updated with each call - * - * @code - * char *var_name; - * uint8_t *search_pos = NULL; - * while((var_name = ti_DetectVar(&search_pos, "my_data", TI_PRGM_TYPE)) != NULL) { - * ...do something with the name or search_pos... - * } - * @endcode - * @param curr_search_posistion Current offset in the VAT - * @param detection_string String to search for (NULL to search for all) - * @param var_type Type of variable to detect - * @note If the return value is NULL, there are no more variables to find - */ -char *ti_DetectVar(void **curr_search_posistion, const char *detection_string, uint8_t var_type); - -/** - * Returns the name of the file(s) that contains the string as the first part of the variable; - * which can then be used with ti_OpenVar and other functions - * - * seach_pos should be set to NULL to begin a search, and is updated with each call - * - * @code - * char *var_name; - * uint8_t *search_pos = NULL; - * uint8_t type; - * while((var_name = ti_DetectVar(&search_pos, "my_data", &type)) != NULL) { - * if (type == TI_PRGM_TYPE || type == TI_PPRGM_TYPE) { - * ...do something with the name or search_pos... - * } - * } - * @endcode - * @param curr_search_posistion Current offset in the VAT - * @param detection_string String to search for (NULL to search for all) - * @param var_type Type of variable found - * @note If the return value is NULL, there are no more variables to find - */ -char *ti_DetectAny(void **curr_search_posistion, const char *detection_string, uint8_t *var_type); - -/** - * Writes to the current variable slot - * - * @param data Pointer to data to write - * @param size Size (in bytes) of a single data chunk - * @param count Number of data chunks to write to the variable slot - * @param slot Variable slot to write the data to - * @returns The number of chunks written (should be equal to count) - */ -size_t ti_Write(const void *data, size_t size, size_t count, const ti_var_t slot); - -/** - * Reads from the current variable pointer - * - * @param data Pointer to data to read into - * @param size Size (in bytes) of a single data chunk - * @param count Number of data chunks to read from the variable slot - * @param slot Variable slot to read the data from - * @returns The number of chunks read (should be equal to count) - */ -size_t ti_Read(const void *data, size_t size, size_t count, const ti_var_t slot); - -/** - * Writes a character directly into the slot data pointer, and increments the offset - * - * @param c Character to write - * @param slot Variable slot to put the character to - * @returns The input c is returned if no error - * @returns 'EOF' if current offset is larger than file size, or memory isn't large enough - */ -int ti_PutC(const char c, const ti_var_t slot); - -/** - * Pulls a character directly from the slot data pointer, and increments the offset - * - * @param slot Variable slot to get the character from - * @returns 1 byte character at the current variable offset - * @returns 'EOF' if current offset is larger than file size - */ -int ti_GetC(const ti_var_t slot); - -/** - * Seeks to an offset - * - * @param offset Number of bytes to offest from (can be negative) - * @param origin - * SEEK_SET (0) - Seek from beginning of file
- * SEEK_CUR (1) - Seek from current offset in file
- * SEEK_END (2) - Seek from end of file - * @param slot Variable slot seeking in - * @returns 'EOF' on seek failure - */ -int ti_Seek(int offset, unsigned int origin, const ti_var_t slot); - -/** - * Seeks to the start of the given variable - * - * Basically an ti_Seek(0, SEEK_SET, slot); - * @param slot Variable slot to rewind - * @returns 'EOF' on rewind failure - */ -int ti_Rewind(const ti_var_t slot); - -/** - * Gets the offset in a slot - * - * @param slot Slot to test - * @returns The value of the current slot offset - */ -uint16_t ti_Tell(const ti_var_t slot); - -/** - * Gets the size of a slot - * - * @param slot Slot to test - * @returns The size of the slot variable - */ -uint16_t ti_GetSize(const ti_var_t slot); - -/** - * Resizes the slot variable - * - * @param slot Slot to resize - * @param new_size New size of slot - * @returns Resized size on success, 0 on failure, or -1 if the slot cannot be opened - * @note The variable offset is set to the beginning of the file - */ -int ti_Resize(size_t new_size, const ti_var_t slot); - -/** - * Tests if a slot is in the archive - * - * @param slot Slot to test - * @returns Zero (0) if the slot is not in the archive - */ -int ti_IsArchived(const ti_var_t slot); - -/** - * Sends the variable into either the archive or RAM if needed - * - * @param archived - * True - Send to Archive
- * False - Send to RAM - * @param slot Slot to send - * @returns Zero if the operation fails from not enough memory or another error - */ -int ti_SetArchiveStatus(bool archived, const ti_var_t slot); - -/** - * Deletes an AppVar - * - * @param name Name of AppVar to delete - * @returns 0 if failed - */ -int ti_Delete(const char *name); - -/** - * Deletes a variable given the name and type - * - * @param varname Name of variable to delete - * @param type Type of variable to delete - * @returns 0 if failed - */ -int ti_DeleteVar(const char *varname, const uint8_t type); - -/** - * Gets the string used for displaying a TI token - * - * @param length_of_string Pointer to variable to hold length of resulting string (Can be NULL if you don't care) - * @param length_of_token Pointer to variable to hold length of the token, used for determining the next read location (Can be NULL if you don't care) - * @param read_pointer Address of pointer to data to read - * @note read_pointer is updated to the next token, depending on if it is 1 or 2 bytes in length - */ -char *ti_GetTokenString(void **read_pointer, uint8_t *length_of_token, unsigned int *length_of_string); - -/** - * Gets a pointer to the data located at the current posistion in the slot; - * Good way for fast reading of data - * @param slot Variable slot to get pointer of - * @returns Pointer to variable data - */ -void *ti_GetDataPtr(const ti_var_t slot); - -/** - * Gets the VAT location of the slot - * - * @param slot Variable slot to get VAT location of - * @returns VAT location of variable - */ -void *ti_GetVATPtr(const ti_var_t slot); - -/** - * Gets the variable name of an already opened slot - * - * @param slot Variable slot to get name of - * @param name Buffer to store name in, generally at least 10 bytes including null terminator. - * @returns None - */ -void ti_GetName(char *name, const ti_var_t slot); - -/** - * Renames a file - * - * @param old Old name of file - * @param new New name of file - * @returns 0 if success, 1 if file already exists, 2 any other error occurs. - * @warning It is potentially hazardous to rename an open file. Be sure to close the open file before renaming, - */ -uint8_t ti_Rename(const char *old, const char *new); - -/** - * Renames a variable - * - * @param old Old name of variable - * @param new New name of variable - * @param type Type of variable to rename - * @returns 0 if success, 1 if variable already exists, 2 any other error occurs. - * @warning It is potentially hazardous to rename an open variable. Be sure to close the open variable before renaming, - */ -uint8_t ti_RenameVar(const char *old, const char *new, const uint8_t type); - -/** - * Sets a variable - * - * @param var_type Type of variable to set - * @param name Pointer to name of variable - * @param data Pointer to data to set - * @returns 0 if success - */ -uint8_t ti_SetVar(const ti_var_t var_type, const char *name, void *data); - -/** - * Stores a variable to another variable - * - * @param var_type_to Type of variable to store to - * @param to Pointer to data to store to - * @param var_type_from Type of variable to get from - * @param from Pointer to data to get from - * @returns 0 if success - */ -uint8_t ti_StoVar(const ti_var_t var_type_to, void *to, const ti_var_t var_type_from, void *from); - -/** - * Recalls a variable - * - * @param var_type Type of variable to recall - * @param var_name Pointer to name of variable to recall - * @param data_struct Address of pointer to variable structure - * @returns 0 if success - * @note data_struct is set to the variable's data - */ -uint8_t ti_RclVar(const uint8_t var_type, const char *var_name, void **data_struct); - -/** - * Allocates space for a real variable - * @returns Pointer to variable - */ -#define ti_MallocReal() ((real_t*)malloc(sizeof(real_t))) - -/** - * Allocates space for a complex variable - * @returns Pointer to variable - */ -#define ti_MallocCplx() ((cplx_t*)malloc(sizeof(cplx_t))) - -/** - * Allocates space for a string variable - * @param len Length of string - * @returns Pointer to variable - */ -#define ti_MallocString(len) ti_AllocString((len), ((void*)malloc)) - -/** - * Allocates space for a list variable - * @param dim Dimension of list - * @returns Pointer to variable - */ -#define ti_MallocList(dim) ti_AllocList((dim), ((void*)malloc)) - -/** - * Allocates space for a matrix variable - * @param rows Rows in matrix - * @param cols Columns in matrix - * @returns Pointer to variable - */ -#define ti_MallocMatrix(rows, cols) ti_AllocMatrix((rows), (cols), ((void*)malloc)) - -/** - * Allocates space for a complex list variable - * @param dim Dimension of complex list - * @returns Pointer to variable - */ -#define ti_MallocCplxList(dim) ti_AllocCplxList((dim), ((void*)malloc)) - -/** - * Allocates space for an equation variable - * @param len Length of equation variable - * @returns Pointer to variable - */ -#define ti_MallocEqu(len) ti_AllocEqu((len), ((void*)malloc)) - -string_t *ti_AllocString(unsigned len, void (*malloc_routine)(size_t)); -list_t *ti_AllocList(unsigned dim, void (*malloc_routine)(size_t)); -matrix_t *ti_AllocMatrix(uint8_t rows, uint8_t cols, void (*malloc_routine)(size_t)); -cplx_list_t *ti_AllocCplxList(unsigned dim, void (*malloc_routine)(size_t)); -equ_t *ti_AllocEqu(unsigned len, void (*malloc_routine)(size_t)); - -/* Some more definitions using Ans */ -#define TI_ANS_TYPE (0x00) -#define ti_Ans ("\x72\0") - -/* Some string definitions */ -#define ti_Str1 ("\xAA\x0\0") -#define ti_Str2 ("\xAA\x1\0") -#define ti_Str3 ("\xAA\x2\0") -#define ti_Str4 ("\xAA\x3\0") -#define ti_Str5 ("\xAA\x4\0") -#define ti_Str6 ("\xAA\x5\0") -#define ti_Str7 ("\xAA\x6\0") -#define ti_Str8 ("\xAA\x7\0") -#define ti_Str0 ("\xAA\x8\0") -#define ti_StrT ('\xAA') - -/* Some equation definitions */ -#define ti_Y1 ("\x5E\x10\0") -#define ti_Y2 ("\x5E\x11\0") -#define ti_Y3 ("\x5E\x12\0") -#define ti_Y4 ("\x5E\x13\0") -#define ti_Y5 ("\x5E\x14\0") -#define ti_Y6 ("\x5E\x15\0") -#define ti_Y7 ("\x5E\x16\0") -#define ti_Y8 ("\x5E\x17\0") -#define ti_Y9 ("\x5E\x18\0") -#define ti_Y0 ("\x5E\x19\0") -#define ti_EquT ('\x5E') - -/* Some real and complex defines */ -#define ti_A ("\x41\0\0") -#define ti_B ("\x42\0\0") -#define ti_C ("\x43\0\0") -#define ti_D ("\x44\0\0") -#define ti_E ("\x45\0\0") -#define ti_F ("\x46\0\0") -#define ti_G ("\x47\0\0") -#define ti_H ("\x48\0\0") -#define ti_I ("\x49\0\0") -#define ti_J ("\x4A\0\0") -#define ti_K ("\x4B\0\0") -#define ti_L ("\x4C\0\0") -#define ti_M ("\x4D\0\0") -#define ti_N ("\x4E\0\0") -#define ti_O ("\x4F\0\0") -#define ti_P ("\x50\0\0") -#define ti_Q ("\x51\0\0") -#define ti_R ("\x52\0\0") -#define ti_S ("\x53\0\0") -#define ti_T ("\x54\0\0") -#define ti_U ("\x55\0\0") -#define ti_V ("\x56\0\0") -#define ti_W ("\x57\0\0") -#define ti_X ("\x58\0\0") -#define ti_Y ("\x59\0\0") -#define ti_Z ("\x60\0\0") -#define ti_Theta ("\x61\0\0") - -/* Some matrix defines */ -#define ti_MatA ("\x5C\x0\0") -#define ti_MatB ("\x5C\x1\0") -#define ti_MatC ("\x5C\x2\0") -#define ti_MatD ("\x5C\x3\0") -#define ti_MatE ("\x5C\x4\0") -#define ti_MatF ("\x5C\x5\0") -#define ti_MatG ("\x5C\x6\0") -#define ti_MatH ("\x5C\x7\0") -#define ti_MatI ("\x5C\x8\0") -#define ti_MatJ ("\x5C\x9\0") -#define ti_MatT ('\x5C') - -/* Some list defines */ -#define ti_L1 ("\x5D\x0\0") -#define ti_L2 ("\x5D\x1\0") -#define ti_L3 ("\x5D\x2\0") -#define ti_L4 ("\x5D\x3\0") -#define ti_L5 ("\x5D\x4\0") -#define ti_L6 ("\x5D\x5\0") -#define ti_LT ('\x5D') - -/* Compatibility defines */ -#define ti_Program TI_PRGM_TYPE -#define ti_ProtectedProgram TI_PPRGM_TYPE -#define ti_TempProgram TI_TPRGM_TYPE -#define ti_AppVar TI_APPVAR_TYPE - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/frontends/calculator/CEdev/include/float.h b/frontends/calculator/CEdev/include/float.h deleted file mode 100644 index ea526e8..0000000 --- a/frontends/calculator/CEdev/include/float.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (C) 1999-2008 by Zilog, Inc. - * All Rights Reserved - * Modified by Matt "MateoConLechuga" Waltz for TI84+CE platform - */ -#ifndef FLOAT_H -#define FLOAT_H - -#define FLT_RADIX 2 /* radix of exponent representation */ - -#define FLT_ROUNDS 0 /* addition rounds to nearest */ - -/* number of base-FLT_RADIX digits in the mantissa */ - -#define FLT_MANT_DIG 24 -#define DBL_MANT_DIG FLT_MANT_DIG -#define LDBL_MANT_DIG FLT_MANT_DIG - -/* number of decimal digits of precision */ - -#define FLT_DIG 6 -#define DBL_DIG FLT_DIG -#define LDBL_DIG FLT_DIG - -/* minimum negative integer such that FLT_RADIX raised to that */ -/* power approximates a positive floating point number in the */ -/* range of representable values. */ - -#define FLT_MIN_EXP -125 -#define DBL_MIN_EXP FLT_MIN_EXP -#define LDBL_MIN_EXP FLT_MIN_EXP - -/* maximum integer such that FLT_RADIX raised to that power */ -/* approximates a floating point number in the range of */ -/* representable numbers. */ - -#define FLT_MAX_EXP 128 -#define DBL_MAX_EXP FLT_MAX_EXP -#define LDBL_MAX_EXP FLT_MAX_EXP - -/* maximum integer such that 10 raised to that power */ -/* approximates a floating point number in the range of */ -/* representable value ((int)log10(FLT_MAX),etc) */ - -#define FLT_MAX_10_EXP +38 -#define DBL_MAX_10_EXP FLT_MAX_10_EXP -#define LDBL_MAX_10_EXP FLT_MAX_10_EXP - -/* minimum negative integer such that 10 raised to that power */ -/* approximates a positive floating point number in the range */ -/* of representable values ((int)log10(FLT_MIN),etc.) */ - -#define FLT_MIN_10_EXP -37 -#define DBL_MIN_10_EXP FLT_MIN_10_EXP -#define LDBL_MIN_10_EXP FLT_MIN_10_EXP - -/* maximum representable floating point numbers */ - -#define FLT_MAX 3.40282347E+38 -#define DBL_MAX FLT_MAX -#define LDBL_MAX FLT_MAX - -/* minimum positive number x such that 1.0 + x != 1.0 (b ^ (1-p)) */ - -#define FLT_EPSILON 1.19209290E-07 -#define DBL_EPSILON FLT_EPSILON -#define LDBL_EPSILON FLT_EPSILON - -/* minimum representable positive floating point numbers */ - -#define FLT_MIN 1.17549435E-38 -#define DBL_MIN FLT_MIN -#define LDBL_MIN FLT_MIN - -#endif diff --git a/frontends/calculator/CEdev/include/format.h b/frontends/calculator/CEdev/include/format.h deleted file mode 100644 index 16186bf..0000000 --- a/frontends/calculator/CEdev/include/format.h +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (C) 1999-2008 by Zilog, Inc. - * All Rights Reserved - * Modified by Matt "MateoConLechuga" Waltz for TI84+CE platform - */ -#ifndef FORMAT_H -#define FORMAT_H - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef _PTR_ -#define _PTR_ * -#endif - -/* Note: 24 bits times log(2) is 7.224 decimal digits. - We only need 14 if and when we support doubles. */ -#define MAXDIGITS 10 -#define MINEXP -4 -#define DEFAULT_PRECISION 6 - -/* format status codes */ -#define FMT_OK 0 -#define FMT_ERR 1 -#define FMT_PASS_THRU 2 - -/* format flags */ -#define FMT_FLAG_MINUS 0x01 -#define FMT_FLAG_PLUS 0x02 -#define FMT_FLAG_SPACE 0x04 -#define FMT_FLAG_POUND 0x08 -#define FMT_FLAG_IGNORE 0x10 // scanf only. -#define FMT_FLAG_PRECISION 0x10 // Only needed for %s, as 0 is valid precision -#define FMT_FLAG_UPPERCASE 0x20 // Added. -#define FMT_FLAG_PAD_ZERO 0x40 -#define FMT_FLAG_STRIP 0x80 // Output only. -#define FMT_FLAG_SET 0x80 // Input only; maybe not needed if - // set_begin != 0 is used instead. - -/* structures and defines for format routines */ -/* NOTE: Some fields in this structure, and the bits in flags, are */ -/* known to the optimizer, If you change this, check out the */ -/* optimizer code in genprintf.c . */ - -struct fmt_type { - unsigned char status; /* status, OK, ERR, or PASS_THRU */ - unsigned char flags; /* flags bit mask */ - char size; /* size character h,l or L */ - char chr; /* pass thru character */ - char type; /* type of argument d,i,o,u,x ... */ - char field_width; /* field width */ - char precision; /* precision */ - char _PTR_ set_begin; /* pointer to first char in set */ - char _PTR_ set_end; /* pointer to last char in set */ - unsigned char pad_whole; - unsigned char pad_pre_fract; - unsigned char pad_post_fract; - char _PTR_ pad_at; - }; - -/* info flags */ -#define FLT_INFO_SIGN (1<<0) -#define FLT_INFO_INF (1<<1) -#define FLT_INFO_NAN (1<<2) - -/* Note: using char to represent the (decimal) exponent only works for - 4-byte floats. If we choose to support 8-byte doubles, then this must - be increased. */ -struct flt_info { - unsigned char flags; /* 1=sign, 2=inf, 4=nan */ - char exp; /* (signed) exponent (base 10) */ - unsigned char digits[MAXDIGITS]; /* max significant digits */ -}; - -extern struct fmt_type __print_fmt; -extern char __print_buff[]; -extern unsigned char __print_len; -extern char __print_leading_char; // Initial +, -, or space for number -extern void __print_send(); - -extern void _u_stoa(short); -extern void _u_ustoa(unsigned short); -extern void _u_itoa(int); -extern void _u_uitoa(unsigned int); -extern void _u_ltoa(long); -extern void _u_ultoa(unsigned long); -extern int _u_print(char _PTR_ src,char _PTR_ fmt,va_list); -extern int _u_scan(char _PTR_ src,char _PTR_ fmt,va_list ap); -extern void _u_dtof(double); -extern void _u_dtog(double); - -extern char _PTR_ _u_pscan(char _PTR_ fmt,struct fmt_type _PTR_ str, va_list _PTR_ argp); -extern char _PTR_ _u_sscan (char _PTR_ fmt,struct fmt_type _PTR_ str); - -extern void _u_reverse(char _PTR_ s); -extern char _PTR_ _u_dtoe(double); - -extern void _u_flt_info(double,struct flt_info _PTR_); -extern void _u_flt_rnd(struct flt_info _PTR_ , char); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/frontends/calculator/CEdev/include/graphx.h b/frontends/calculator/CEdev/include/graphx.h deleted file mode 100644 index 33e93e7..0000000 --- a/frontends/calculator/CEdev/include/graphx.h +++ /dev/null @@ -1,1514 +0,0 @@ -/** - * @file - * @brief Contains optimized graphics operations and routines - * - * Example program template with best graphx buffer usage pattern: - * @code - * // Standard #includes omitted - * - * bool partial_redraw; - * - * // Implement us! - * void begin(); - * void end(); - * bool step(); - * void draw(); - * - * void main() { - * begin(); // No rendering allowed! - * gfx_Begin(); - * gfx_SetDrawBuffer(); // Draw to the buffer to avoid rendering artifats - * - * while (step()) { // No rendering allowed in step! - * if (partial_redraw) // Only want to redraw part of the previous frame? - * gfx_BlitScreen(); // Copy previous frame as a base for this frame - * draw(); // As little non-rendering logic as possible - * gfx_SwapDraw(); // Queue the buffered frame to be displayed - * } - * - * gfx_End(); - * end(); - * } - * @endcode - * - * @authors Matt "MateoConLechuga" Waltz - * @authors Jacob "jacobly" Young - * @authors Zachary "Runer112" Wassall - * @authors Patrick "tr1p1ea" Prendergast - * @authors "grosged" - */ - -#ifndef H_GRAPHX -#define H_GRAPHX - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @brief Sprite (image) type. - * - * Whether or not a sprite includes transparency is not explicitly encoded, and - * is determined only by usage. If used with transparency, transparent pixels - * are those with a certain color index, which can be set with - * gfx_SetTransparentColor(). - * - * @attention - * Displaying a gfx_rletsprite_t (which includes transparency) is significantly - * faster than displaying a gfx_sprite_t with transparency, and should be - * preferred. However, gfx_rletsprite_t does not support transformations, such - * as flipping and rotation. Such transformations can be applied to a - * gfx_sprite_t, which can then be converted to a gfx_rletsprite_t for faster - * display using gfx_ConvertToNewRLETSprite() or gfx_ConvertToRLETSprite(). - * - * @remarks - * Create at compile-time with a tool like - * convpng. - * Create at runtime (with uninitialized data) with gfx_MallocSprite(), - * gfx_UninitedSprite(), or gfx_TempSprite(). - */ -typedef struct { - uint8_t width; /**< Width of the image */ - uint8_t height; /**< Height of the image */ - uint8_t data[1]; /**< Image data array */ -} gfx_sprite_t; - -/** - * @brief Sprite (image) type with RLE transparency. - * - * @attention - * Displaying a gfx_rletsprite_t (which includes transparency) is significantly - * faster than displaying a gfx_sprite_t with transparency, and should be - * preferred. However, gfx_rletsprite_t does not support transformations, such - * as flipping and rotation. Such transformations can be applied to a - * gfx_sprite_t, which can then be converted to a gfx_rletsprite_t for faster - * display using gfx_ConvertToNewRLETSprite() or gfx_ConvertToRLETSprite(). - * - * @remarks - * Create at compile-time with a tool like - * convpng. - */ -typedef struct { - uint8_t width; /**< Width of the image */ - uint8_t height; /**< Height of the image */ - uint8_t data[1]; /**< Image data array */ -} gfx_rletsprite_t; - -/** - * @brief A simple structure for working with 2D points - */ -typedef struct { - int x; /**< x point */ - int y; /**< y point */ -} gfx_point_t; - -/** - * @brief Stores operating modes of this library - * @see gfx_Begin - */ -typedef enum { - gfx_8bpp = 0x27 /**< Enable 8 bits per pixel mode */ -} gfx_mode_t; - -/** - * Dynamically allocates memory for a sprite. - * - * Allocates the memory with \p malloc_routine. \p width and \p height will be - * set in the allocated sprite. Returns \c NULL upon allocation failure. - * - * @note - * If not used in a dynamic context and \p width and \p height are static, - * consider statically allocating the sprite instead with gfx_UninitedSprite() - * or gfx_TempSprite(). - * - * @remarks - * If using \c malloc as the \p malloc_routine, gfx_MallocSprite() can be used - * as a shortcut. - * - * @param width sprite width - * @param height sprite height - * @param malloc_routine malloc implementation to use - * @return pointer to the allocated sprite - */ -gfx_sprite_t *gfx_AllocSprite(uint8_t width, uint8_t height, void *(*malloc_routine)(size_t)); - -/** - * Dynamically allocates memory for a sprite using \c malloc. - * - * \p width and \p height will be set in the sprite. Returns \c NULL upon - * allocation failure. - * - * @note - * If not used in a dynamic context and \p width and \p height are static, - * consider statically allocating the sprite instead with gfx_UninitedSprite() - * or gfx_TempSprite(). - * - * @param width sprite width - * @param height sprite height - * @return pointer to the allocated sprite - * @see gfx_AllocSprite - */ -#define gfx_MallocSprite(width, height) \ -gfx_AllocSprite(width, height, malloc) - -/** - * Statically allocates unitialized memory for a sprite. - * - * Declares a gfx_sprite_t * with the given \p name pointing to the - * allocated memory. \p width and \p height will \b not be set in the sprite, - * unlike gfx_TempSprite(). - * - * @warning - * If used outside of a function body, the memory will be allocated in the - * global unitialized data segment (BSS). If used inside a function body, the - * memory will be allocated on the stack. If the sprite is sufficiently large, - * usage inside a function body will overflow the stack, so it is recommended - * that this normally be used outside of a function body. - * - * @param name name of declared gfx_sprite_t * - * @param width sprite width - * @param height sprite height - * @see gfx_MallocSprite - */ -#define gfx_UninitedSprite(name, width, height) \ -uint8_t name##_data[2 + (width) * (height)]; \ -gfx_sprite_t *name = (gfx_sprite_t *)name##_data - -/** - * Statically allocates memory for a sprite. - * - * Declares a gfx_sprite_t * with the given \p name pointing to the - * allocated memory. \p width and \p height will be set in the sprite, unlike - * gfx_UninitedSprite(). - * - * @attention - * Due to \p width and \p height being set, the memory will be allocated in the - * initialized data segment. If the compiled program is not compressed, then - * this could be a serious source of bloat and gfx_UninitedSprite() should be - * preferred. - * - * @param name name of declared gfx_sprite_t * - * @param width sprite width - * @param height sprite height - * @see gfx_MallocSprite - */ -#define gfx_TempSprite(name, width, height) \ -uint8_t name##_data[2 + (width) * (height)] = { (width), (height) }; \ -gfx_sprite_t *name = (gfx_sprite_t *)name##_data - -/** - * Dynamically allocates memory for a sprite with RLE transpareny. - * - * Allocates the memory with \p malloc_routine. Returns \c NULL upon allocation - * failure. - * - * \p data_size is the maximum predicted/calculated size of the sprite data - * (excuding the width and height bytes) that will be stored in the allocated - * sprite. Sprite data size could be up to (width + 1) * height * 3 / 2 - * bytes in the worst case, in which pixels horizontally alternate between - * non-transparent and transparent and each row begins with a non-transparent - * pixel. But if the average length of a horizontal transparent run is at least - * 2, then the sprite data will be no larger than (width + 1) * height - * bytes. The exact data size necessary is 2 * - * num_horizontal_transparent_runs + num_non_transparent_pixels + - * num_rows_beginning_with_non_transparent_pixel - - * num_rows_ending_with_transparent_pixel bytes. - * - * @note - * If not used in a dynamic context and \p data_size is static, consider - * statically allocating the sprite instead with gfx_UninitedRLETSprite() or - * gfx_TempRLETSprite(). - * - * @remarks - * If using \c malloc as the \p malloc_routine, gfx_MallocRLETSprite() can be - * used as a shortcut. - * - * @param data_size (maximum) sprite data size - * @param malloc_routine malloc implementation to use - * @return pointer to the allocated sprite - */ -#define gfx_AllocRLETSprite(data_size, malloc_routine) \ -(gfx_rletsprite_t *)(malloc_routine)(data_size) - -/** - * Dynamically allocates memory for a sprite with RLE transparency using \c - * malloc. - * - * \p data_size is the size to allocate for sprite data; see - * gfx_AllocRLETSprite() for information. Returns \c NULL upon allocation - * failure. - * - * @note - * If not used in a dynamic context and \p data_size is static, consider - * statically allocating the sprite instead with gfx_UninitedRLETSprite() or - * gfx_TempRLETSprite(). - * - * @param data_size (maximum) sprite data size - * @return pointer to the allocated sprite - * @see gfx_AllocRLETSprite - */ -#define gfx_MallocRLETSprite(data_size) \ -gfx_AllocRLETSprite(data_size, malloc) - -/** - * Statically allocates unitialized memory for a sprite with RLE transparency. - * - * Declares a gfx_rletsprite_t * with the given \p name pointing to the - * allocated memory. \p data_size is the size to allocate for sprite data; see - * gfx_AllocRLETSprite() for information. - * - * @warning - * If used outside of a function body, the memory will be allocated in the - * global unitialized data segment (BSS). If used inside a function body, the - * memory will be allocated on the stack. If the sprite is sufficiently large, - * usage inside a function body will overflow the stack, so it is recommended - * that this normally be used outside of a function body. - * - * @param name name of declared gfx_rletsprite_t * - * @param data_size (maximum) sprite data size - * @see gfx_MallocRLETSprite - */ -#define gfx_UninitedRLETSprite(name, data_size) \ -uint8_t name##_data[2 + (data_size)]; \ -gfx_rletsprite_t *name = (gfx_rletsprite_t *)name##_data - -/** - * Initializes the graphics library setup - */ -int gfx_Begin(); - -/** - * Closes the graphics setup - * - * Restores the LCD to 16bpp prefered by the OS and clears the screen. - */ -void gfx_End(void); - -/** - * Used for accessing the lcd palette directly - * - * This consists of 256 entries, each 2 bytes in size for a total of 512 bytes - */ -#define gfx_palette \ -((uint16_t*)0xE30200) - -/** - * Array of the LCD RAM - * - * Total of 153600 bytes in size - * @see gfx_vbuffer - */ -#define gfx_vram \ -((uint8_t*)0xD40000) - -/** - * Array of the current drawing buffer - * - * Total of 76800 bytes in size - * @see gfx_vram - */ -#define gfx_vbuffer \ -(**(uint8_t(**)[240][320])0xE30014) - -/** - * @brief Defines a rectangular graphics region - * - * @see gfx_GetClipRegion - */ -typedef struct { - int xmin; /**< Minimum x coordinate */ - int ymin; /**< Minimum y coordinate */ - int xmax; /**< Maximum x coordinate */ - int ymax; /**< Maximum y coordinate */ -} gfx_region_t; - -/** - * @brief Defines tilemap structure - * - * @see gfx_Tilemap - */ -typedef struct { - uint8_t *map; /**< Pointer to indexed map array */ - gfx_sprite_t **tiles; /**< Pointer to tiles */ - uint8_t tile_height; /**< Individual tile height */ - uint8_t tile_width; /**< Individual tile width */ - uint8_t draw_height; /**< Number of tiles per row to draw */ - uint8_t draw_width; /**< Number of tile per column to draw */ - uint8_t type_width; /**< Tile type height @see gfx_tilemap_type_t */ - uint8_t type_height; /**< Tile type width @see gfx_tilemap_type_t */ - uint8_t height; /**< Total number of rows in the tilemap */ - uint8_t width; /**< Total number of columns in the tilemap */ - uint8_t y_loc; /**< Y pixel location of tilemap */ - uint24_t x_loc; /**< X pixel location to tilemap */ -} gfx_tilemap_t; - -/** - * @brief Used for defining tile types - * - * @see gfx_tilemap_t - */ -typedef enum { - gfx_tile_no_pow2 = 0, /**< Set when using non powers of 2 */ - gfx_tile_2_pixel, /**< Set when using 2 pixel tiles */ - gfx_tile_4_pixel, /**< Set when using 4 pixel tiles */ - gfx_tile_8_pixel, /**< Set when using 8 pixel tiles */ - gfx_tile_16_pixel, /**< Set when using 16 pixel tiles */ - gfx_tile_32_pixel, /**< Set when using 32 pixel tiles */ - gfx_tile_64_pixel, /**< Set when using 64 pixel tiles */ - gfx_tile_128_pixel /**< Set when using 128 pixel tiles */ -} gfx_tilemap_type_t; - -/** - * Draws a tilemap given an initialized tilemap structure - * - * @param tilemap Pointer to initialized tilemap structure - * @param x_offset Offset in pixels from the left of the tilemap - * @param y_offset Offset in pixels from the top of the tilemap - * @see gfx_tilemap_t - */ -void gfx_Tilemap(gfx_tilemap_t *tilemap, uint24_t x_offset, uint24_t y_offset); - -/** - * Draws an unclipped tilemap given an initialized tilemap structure - * - * @param tilemap Pointer to initialized tilemap structure - * @param x_offset Offset in pixels from the left of the tilemap - * @param y_offset Offset in pixels from the top of the tilemap - * @see gfx_tilemap_t - */ -void gfx_Tilemap_NoClip(gfx_tilemap_t *tilemap, uint24_t x_offset, uint24_t y_offset); - -/** - * Draws a transparent tilemap given an initialized tilemap structure - * - * @param tilemap Pointer to initialized tilemap structure - * @param x_offset Offset in pixels from the left of the tilemap - * @param y_offset Offset in pixels from the top of the tilemap - * @see gfx_tilemap_t - */ -void gfx_TransparentTilemap(gfx_tilemap_t *tilemap, uint24_t x_offset, uint24_t y_offset); - -/** - * Draws an unclipped transparent tilemap given an initialized tilemap structure - * - * @param tilemap Pointer to initialized tilemap structure - * @param x_offset Offset in pixels from the left of the tilemap - * @param y_offset Offset in pixels from the top of the tilemap - * @see gfx_tilemap_t - */ -void gfx_TransparentTilemap_NoClip(gfx_tilemap_t *tilemap, uint24_t x_offset, uint24_t y_offset); - -/** - * Gets a pointer to a particular tile given an initialized tilemap structure and pixel offsets - * - * @param tilemap Pointer to initialized tilemap structure - * @param x_offset Offset in pixels from the left of the tilemap - * @param y_offset Offset in pixels from the top of the tilemap - */ -uint8_t *gfx_TilePtr(gfx_tilemap_t *tilemap, uint24_t x_offset, uint24_t y_offset); - -/** - * Sets a particular tile's value given an initialized tilemap structure and pixel offsets - * - * @param tilemap Pointer to initialized tilemap structure - * @param x_offset Offset in pixels from the left of the tilemap - * @param y_offset Offset in pixels from the top of the tilemap - * @param value Value to set tile to - */ -#define gfx_SetTile(tilemap, x_offset, y_offset, value) \ -(*(gfx_TilePtr((tilemap), (x_offset), (y_offset))) = (uint8_t)(value)) - -/** - * Gets a particular tile's value given an initialized tilemap structure and pixel offsets - * - * @param tilemap Pointer to initialized tilemap structure - * @param x_offset Offset in pixels from the left of the tilemap - * @param y_offset Offset in pixels from the top of the tilemap - */ -#define gfx_GetTile(tilemap, x_offset, y_offset) \ -(*(gfx_TilePtr((tilemap), (x_offset), (y_offset)))) - -/** - * Gets a pointer to a particular tile given an initialized tilemap structure and mapped offsets - * - * @param tilemap Pointer to initialized tilemap structure - * @param row Offset in bytes in the row - * @param col Offset in bytes in the column - */ -uint8_t *gfx_TilePtrMapped(gfx_tilemap_t *tilemap, uint8_t row, uint8_t col); - -/** - * Sets a particular tile's value given an initialized tilemap structure and mapped offsets - * - * @param tilemap Pointer to initialized tilemap structure - * @param row Offset in bytes in the row - * @param col Offset in bytes in the column - * @param value Value to set tile to - */ -#define gfx_SetTileMapped(tilemap, row, col, value) \ -(*(gfx_TilePtrMapped((tilemap), (row), (col))) = (uint8_t)(value)) - -/** - * Gets a particular tile's value given an initialized tilemap structure and mapped offsets - * - * @param tilemap Pointer to initialized tilemap structure - * @param row Offset in bytes in the row - * @param col Offset in bytes in the column - */ -#define gfx_GetTileMapped(tilemap, row, col) \ -(*(gfx_TilePtrMapped((tilemap), (row), (col)))) - -/** - * Sets the color index that drawing routines will use - * - * This applies to lines, rectangles, circles, etc - * @param index Color index to set - * @returns Previous set color index - */ -uint8_t gfx_SetColor(uint8_t index); - -/** - * Sets the transparent index that drawing routines will use - * - * This currently applies to transparent sprites, both scaled and unscaled - * @param index Transparent color index to set - * @returns The previous transparent color index - */ -uint8_t gfx_SetTransparentColor(uint8_t index); - -/** - * Sets up the default palette for the given mode - * - * @param mode Palette to use - */ -void gfx_SetDefaultPalette(gfx_mode_t mode); - -/** - * Sets entries in the palette - * - * @param palette Pointer to palette to use - * @param size Size of palette to store - * @param offset Offset in bytes to start at (Generally set to 0) - */ -void gfx_SetPalette(uint16_t *palette, uint24_t size, uint8_t offset); - -/** - * Fills the screen with a given palette index - * - * @param index Color index to fill with - */ -void gfx_FillScreen(uint8_t index); - -/** - * Implements a faster version of gfx_FillScreen(0) - * - * @see gfx_FillScreen - */ -void gfx_ZeroScreen(void); - -/** - * Sets a pixel to the global color index - * - * This is measured from the top left origin of the screen. - * Pixels are only clipped within the screen boundaries - * @param x X coordinate location - * @param y Y coordinate location - * @see gfx_SetColor - */ -void gfx_SetPixel(uint24_t x, uint8_t y); - -/** - * Gets a pixel's color index - * - * This is measured from the top left origin of the screen. - * Pixels are only clipped within the screen boundaries - * @param x X coordinate location - * @param y Y coordinate location - */ -uint8_t gfx_GetPixel(uint24_t x, uint8_t y); - -/** - * Draws a line - * - * This is measured from the top left origin of the screen. - * @param x0 First X coordinate - * @param y0 First Y coordinate - * @param x1 Second X coordinate - * @param y1 Second Y coordinate - */ -void gfx_Line(int x0, int y0, int x1, int y1); - -/** - * Draws an unclipped line - * - * This is measured from the top left origin of the screen. - * @param x0 First X coordinate - * @param y0 First Y coordinate - * @param x1 Second X coordinate - * @param y1 Second Y coordinate - */ -void gfx_Line_NoClip(uint24_t x0, uint8_t y0, uint24_t x1, uint8_t y1); - -/** - * Clips the points in a window region - * - * This is measured from the top left origin of the screen. - * @param x0 First X coordinate - * @param y0 First Y coordinate - * @param x1 Second X coordinate - * @param y1 Second Y coordinate - * @returns False if not within window, true otherwise - */ -bool gfx_CohenSutherlandClip(int *x0, int *y0, int *x1, int *y1); - -/** - * Draws a horizontal line - * - * This is measured from the top left origin of the screen. - * Performs faster than using @c gfx_Line - * @param x X coordinate - * @param y Y coordinate - * @param length Length of line - */ -void gfx_HorizLine(int x, int y, int length); - -/** - * Draws an unclipped horizontal line - * - * This is measured from the top left origin of the screen. - * Performs faster than using @c gfx_Line - * @param x X coordinate - * @param y Y coordinate - * @param length Length of line - */ -void gfx_HorizLine_NoClip(uint24_t x, uint8_t y, uint24_t length); - -/** - * Draws a vertical line - * - * This is measured from the top left origin of the screen. - * Performs faster than using @c gfx_Line - * @param x X coordinate - * @param y Y coordinate - * @param length Length of line - */ -void gfx_VertLine(int x, int y, int length); - -/** - * Draws an unclipped vertical line - * - * This is measured from the top left origin of the screen. - * Performs faster than using @c gfx_Line - * @param x X coordinate - * @param y Y coordinate - * @param length Length of line - */ -void gfx_VertLine_NoClip(uint24_t x, uint8_t y, uint24_t length); - -/** - * Draws a rectangle outline - * - * This is measured from the top left origin of the screen. - * @param x X coordinate - * @param y Y coordinate - * @param width Width of rectangle - * @param height Height of rectangle - */ -void gfx_Rectangle(int x, int y, int width, int height); - -/** - * Draws an unclipped rectangle outline - * - * This is measured from the top left origin of the screen. - * @param x X coordinate - * @param y Y coordinate - * @param width Width of rectangle - * @param height Height of rectangle - */ -void gfx_Rectangle_NoClip(uint24_t x, uint8_t y, uint24_t width, uint8_t height); - -/** - * Draws a filled rectangle - * - * This is measured from the top left origin of the screen. - * @param x X coordinate - * @param y Y coordinate - * @param width Width of rectangle - * @param height Height of rectangle - */ -void gfx_FillRectangle(int x, int y, int width, int height); - -/** - * Draws an unclipped filled rectangle - * - * This is measured from the top left origin of the screen. - * @param x X coordinate - * @param y Y coordinate - * @param width Width of rectangle - * @param height Height of rectangle - */ -void gfx_FillRectangle_NoClip(uint24_t x, uint8_t y, uint24_t width, uint8_t height); - -/** - * Draws a circle outline - * - * This is measured from the top left origin of the screen. - * @param x X coordinate - * @param y Y coordinate - * @param radius The radius of the circle - */ -void gfx_Circle(int x, int y, unsigned radius); - -/** - * Draws a filled circle - * - * This is measured from the top left origin of the screen. - * @param x X coordinate - * @param y Y coordinate - * @param radius The radius of the circle - */ -void gfx_FillCircle(int x, int y, unsigned radius); - -/** - * Draws an unclipped filled circle - * - * This is measured from the top left origin of the screen. - * @param x X coordinate - * @param y Y coordinate - * @param radius The radius of the circle - */ -void gfx_FillCircle_NoClip(uint24_t x, uint8_t y, unsigned radius); - -/** - * Draws an unclipped circle outline - * - * This is measured from the top left origin of the screen. - * @param x X coordinate - * @param y Y coordinate - * @param radius The radius of the circle - */ -#define gfx_Circle_NoClip(x, y, radius) \ -gfx_Circle((x), (y), (radius)) - -/** - * Draws a polygon outline - * - * Points are measured from the top left origin of the screen. - * @code - * int points[6] = { - * 160, 1, // (x0, y0) - * 1, 238, // (x1, y1) - * 318,238, // (x2, y2) - * }; - * num_points = 3; - * gfx_Polygon(points, num_points) - * @endcode - * @param points Pointer to x and y pairs - * @param num_points Number of x and y pairs - */ -void gfx_Polygon(int *points, unsigned num_points); - -/** - * Draws an unclipped polygon outline - * - * Points are measured from the top left origin of the screen. - * @code - * int points[6] = { - * 160, 1, // (x0, y0) - * 1, 238, // (x1, y1) - * 318,238, // (x2, y2) - * }; - * num_points = 3; - * gfx_Polygon_NoClip(points, num_points) - * @endcode - * @param points Pointer to x and y pairs - * @param num_points Number of x and y pairs - */ -void gfx_Polygon_NoClip(int *points, unsigned num_points); - -/** - * Draws a filled triangle - * - * Points are measured from the top left origin of the screen. - * @param x0 First X coordinate - * @param y0 First Y coordinate - * @param x1 Second X coordinate - * @param y1 Second Y coordinate - * @param x2 Third X coordinate - * @param y2 Third Y coordinate - */ -void gfx_FillTriangle(int x0, int y0, int x1, int y1, int x2, int y2); -void gfx_FillTriangle_NoClip(int x0, int y0, int x1, int y1, int x2, int y2); - -/** - * Forces all graphics routines draw location - * - * @param location Location routines should draw to - * @see gfx_draw_location_t - */ -void gfx_SetDraw(uint8_t location); - -/** - * @brief Different locations routines can be drawn to - */ -typedef enum { - gfx_screen = 0, /**< Screen */ - gfx_buffer /**< Buffer */ -} gfx_draw_location_t; - -/** - * Makes the subsequent GraphX drawing routines act on the buffer - */ -#define gfx_SetDrawBuffer() \ -gfx_SetDraw(gfx_buffer) - -/** - * Makes the subsequent GraphX drawing routines act on the screen - */ -#define gfx_SetDrawScreen() \ -gfx_SetDraw(gfx_screen) - -/** - * Gets current draw location - * - * @returns Location type enumeration - * @see gfx_draw_location_t - */ -uint8_t gfx_GetDraw(void); - -/** - * Swaps the roles of the screen and drawing buffers. - * - * Does not wait for the old screen buffer to finish being displayed. Instead, - * the next invocation of a graphx drawing function will block, waiting for this - * event. To block and wait explicitly, use gfx_Wait(). - * - * The LCD driver maintains its own screen buffer pointer for the duration of a - * refresh. The swap performed by this function will only be picked up at a - * point between refreshes. - * - * @remarks - * In practice, this function should be invoked immediately after finishing - * drawing a frame to the drawing buffer, and invocation of the first graphx - * drawing function for the next frame should be scheduled as late as possible - * relative to non-drawing logic. Non-drawing logic can execute during time when - * a drawing function may otherwise block. - */ -void gfx_SwapDraw(void); - -/** - * Waits for the screen buffer to finish being displayed after gfx_SwapDraw(). - * - * @remarks - * In practice, this function should not need to be invoked by user code. It - * should be invoked by custom drawing functions (as late as reasonably - * possible) before writing to the drawing buffer, gfx_vbuffer. - */ -void gfx_Wait(void); - -/** - * Copies the input buffer to the opposite buffer - * - * No clipping is performed; as it is a copy not a draw - * @param src drawing location to copy from - * @see gfx_draw_location_t - */ -void gfx_Blit(uint8_t src); - -/** - * Copies lines from the input buffer to the opposite buffer - * - * No clipping is performed; as it is a copy not a draw - * @param src drawing location to copy from - * @param y_loc Y Location to begin copying at - * @param num_lines Number of lines to copy - * @see gfx_draw_location_t - */ -void gfx_BlitLines(uint8_t src, uint8_t y_loc, uint8_t num_lines); - -/** - * Copies a rectangle from the input buffer to the opposite buffer - * - * No clipping is performed; as it is a copy not a draw - * @param src drawing location to copy from - * @param x X coordinate - * @param y Y coordinate - * @param width Width of rectangle - * @param height Height of rectangle - * @see gfx_draw_location_t - */ -void gfx_BlitRectangle(uint8_t src, uint24_t x, uint8_t y, uint24_t width, uint24_t height); - -/** - * Copies the screen to the buffer - */ -#define gfx_BlitScreen() \ -gfx_Blit(gfx_screen) - -/** - * Copies the buffer to the screen - */ -#define gfx_BlitBuffer() \ -gfx_Blit(gfx_buffer) - -/** - * Sets the scaling for text - * - * Values in the range from 1-5 are preferred. - * @param width_scale Text width scaling - * @param height_scale Text height scaling - */ -void gfx_SetTextScale(uint8_t width_scale, uint8_t height_scale); - -/** - * Prints a character - * - * Outputs a character at the current cursor position. - * @param c Character to print - * @note By default, no text clipping is performed (configurable with gfx_SetTextConfig) - */ -void gfx_PrintChar(const char c); - -/** - * Prints a signed integer - * - * Outputs at the current cursor position. Padded with leading zeros if - * necessary to satisfy the specified minimum length. - * @param n Integer to print - * @param length Minimum number of characters to print - * @note By default, no text clipping is performed (configurable with gfx_SetTextConfig) - * @note \c length must be between 1 and 8, inclusive - */ -void gfx_PrintInt(int n, uint8_t length); - -/** - * Prints an unsigned integer - * - * Outputs at the current cursor position. Padded with leading zeros if - * necessary to satisfy the specified minimum length. - * @param n Unsigned integer to print - * @param length Minimum number of characters to print - * @note By default, no text clipping is performed (configurable with gfx_SetTextConfig) - * @note \c length must be between 1 and 8, inclusive - */ -void gfx_PrintUInt(unsigned int n, uint8_t length); - -/** - * Prints a string - * - * Outputs a string at the current cursor position. - * @param string Pointer to string to print - * @note By default, no text clipping is performed (configurable with gfx_SetTextConfig) - */ -void gfx_PrintString(const char *string); - -/** - * Prints a string at coordinates - * - * Outputs a string at the supplied coordinates - * Posistion is measured from top left origin of screen. - * @param string Pointer to string to print - * @param x X coordinate - * @param y Y coordinate - * @note By default, no text clipping is performed (configurable with gfx_SetTextConfig) - */ -void gfx_PrintStringXY(const char *string, int x, int y); - -/** - * @returns The current text cursor X position - */ -int gfx_GetTextX(void); - -/** - * @returns The current text cursor Y position - */ -int gfx_GetTextY(void); - -/** - * Sets the text cursor XY position - * - * @param x X coordinate - * @param y Y coordinate - */ -void gfx_SetTextXY(int x, int y); - -/** - * Sets the configuration for the text routines - * - * @param config Set the options for the text mode - * @see gfx_text_options_t - * @note Scaled text does not clip - */ -void gfx_SetTextConfig(uint8_t config); - -/** - * @brief Different available text modes - */ -typedef enum { - gfx_text_clip = 1, /**< Text routines will clip against the defined clip window */ - gfx_text_noclip /**< Default, text routines do not clip (much faster) */ -} gfx_text_options_t; - -/** - * Sets text foreground color - * - * @param color Color index to set - * @returns Previous text foreground color index - * @note Default text foreground color index: 0 - */ -uint8_t gfx_SetTextFGColor(uint8_t color); - -/** - * Sets text background color - * - * @param color Color index to set - * @returns Previous text background color index - * @note Default text background color index: 255 - */ -uint8_t gfx_SetTextBGColor(uint8_t color); - -/** - * Sets text transparency color - * - * @param color Color index to set - * @returns Previous text transparency color index - * @note Default text transparency color index: 255 - */ -uint8_t gfx_SetTextTransparentColor(uint8_t color); - -/** - * Draws a sprite - * - * @param sprite Pointer to initialized sprite structure - * @param x X coordinate - * @param y Y coordinate - */ -void gfx_Sprite(gfx_sprite_t *sprite, int x, int y); - -/** - * Draws an unclipped sprite - * - * @param sprite Pointer to initialized sprite structure - * @param x X coordinate - * @param y Y coordinate - */ -void gfx_Sprite_NoClip(gfx_sprite_t *sprite, uint24_t x, uint8_t y); - -/** - * Draws a transparent sprite - * - * @param sprite Pointer to initialized sprite structure - * @param x X coordinate - * @param y Y coordinate - */ -void gfx_TransparentSprite(gfx_sprite_t *sprite, int x, int y); - -/** - * Draws an unclipped transparent sprite - * - * @param sprite Pointer to initialized sprite structure - * @param x X coordinate - * @param y Y coordinate - */ -void gfx_TransparentSprite_NoClip(gfx_sprite_t *sprite, uint24_t x, uint8_t y); - -/** - * Grabs the background behind a sprite - * - * This is useful for partial redraw. - * @param sprite_buffer Buffer used to store grabbed sprite - * @param x X coordinate to grab sprite - * @param y Y coordinate to grab sprite - * @returns A pointer to sprite_buffer - * @note sprite_buffer must be pointing to a large enough buffer to hold width*height number of bytes - */ -gfx_sprite_t *gfx_GetSprite(gfx_sprite_t *sprite_buffer, int x, int y); - -/** - * Grabs the background behind an unclipped sprite - * - * This is useful for partial redraw. - * @param sprite_buffer Buffer used to store grabbed sprite - * @param x X coordinate to grab sprite - * @param y Y coordinate to grab sprite - * @returns A pointer to sprite_buffer - * @note sprite_buffer must be pointing to a large enough buffer to hold width*height number of bytes - */ -#define gfx_GetSprite_NoClip(sprite_buffer, x, y) \ -gfx_GetSprite((sprite_buffer), (x), (y)) - -/** - * Scales an unclipped sprite - * - * Scaling factors must be greater than or equal to 1, and an integer factor - * @param sprite Pointer to initialized sprite structure - * @param x X coordinate - * @param y Y coordinate - * @param width_scale Width scaling factor - * @param height_scale Height scaling factor - * @note Useable with gfx_GetSprite in order to create clipped versions - */ -void gfx_ScaledSprite_NoClip(gfx_sprite_t *sprite, uint24_t x, uint8_t y, uint8_t width_scale, uint8_t height_scale); - -/** - * Scales an unclipped transparent sprite - * - * Scaling factors must be greater than or equal to 1, and an integer factor - * @param sprite Pointer to initialized sprite structure - * @param x X coordinate - * @param y Y coordinate - * @param width_scale Width scaling factor - * @param height_scale Height scaling factor - * @note Useable with gfx_GetSprite in order to create clipped versions - */ -void gfx_ScaledTransparentSprite_NoClip(gfx_sprite_t *sprite, uint24_t x, uint8_t y, uint8_t width_scale, uint8_t height_scale); - -/** - * Fixed Rotation with scaling fator for sprites - * - * @note A scale factor of 64 represents 100% scaling - * @warning This routine only accepts square input sprites - * @param sprite Input sprite to rotate/scale - * @param x X coordinate position - * @param x Y coordinate position - * @param angle 256 position angular integer - * @param scale Scaling factor; range is about 1% to 400% scale - * @returns The size of the sprite after scaling. This can be used for centering purposes. - */ -uint8_t gfx_RotatedScaledTransparentSprite_NoClip(gfx_sprite_t *sprite, uint24_t x, uint8_t y, uint8_t angle, uint8_t scale); - -/** - * Helper macro to only perform rotation using gfx_RotatedScaledTransparentSprite_NoClip - * - * @param sprite_in Input sprite to rotate - * @param sprite_out Pointer to where rotated sprite will be stored - * @param angle 256 position angular integer - * @see gfx_RotatedScaledTransparentSprite_NoClip - */ -#define gfx_RotatedTransparentSprite_NoClip(sprite, x, y, angle) gfx_RotatedScaledTransparentSprite_NoClip(sprite, x, y, angle, 64) - -/** - * Fixed Rotation with scaling fator for sprites without transparency - * - * @note A scale factor of 64 represents 100% scaling - * @warning This routine only accepts square input sprites - * @param sprite Input sprite to rotate/scale - * @param x X coordinate position - * @param x Y coordinate position - * @param angle 256 position angular integer - * @param scale Scaling factor; range is about 1% to 400% scale - * @returns The size of the sprite after scaling. This can be used for centering purposes. - */ -uint8_t gfx_RotatedScaledSprite_NoClip(gfx_sprite_t *sprite, uint24_t x, uint8_t y, uint8_t angle, uint8_t scale); - -/** - * Helper macro to only perform rotation using gfx_RotatedScaledSprite_NoClip - * - * @param sprite_in Input sprite to rotate - * @param sprite_out Pointer to where rotated sprite will be stored - * @param angle 256 position angular integer - * @see gfx_RotatedScaledTransparentSprite_NoClip - */ -#define gfx_RotatedSprite_NoClip(sprite, x, y, angle) gfx_RotatedScaledTransparentSprite_NoClip(sprite, x, y, angle, 64) - -/** - * Flips a sprite along the X axis - * - * @param sprite_in Input sprite to flip - * @param sprite_out Pointer to where flipped sprite will be stored - * @returns A pointer to sprite_out - * @note sprite_in and sprite_out cannot be the same - */ -gfx_sprite_t *gfx_FlipSpriteX(gfx_sprite_t *sprite_in, gfx_sprite_t *sprite_out); - -/** - * Flips a sprite along the Y axis - * - * @param sprite_in Input sprite to flip - * @param sprite_out Pointer to where flipped sprite will be stored - * @returns A pointer to sprite_out - * @note sprite_in and sprite_out cannot be the same - */ -gfx_sprite_t *gfx_FlipSpriteY(gfx_sprite_t *sprite_in, gfx_sprite_t *sprite_out); - -/** - * Rotates a sprite 90 degrees clockwise - * - * @param sprite_in Input sprite to rotate - * @param sprite_out Pointer to where rotated sprite will be stored - * @returns A pointer to sprite_out - * @note sprite_in and sprite_out cannot be the same - */ -gfx_sprite_t *gfx_RotateSpriteC(gfx_sprite_t *sprite_in, gfx_sprite_t *sprite_out); - -/** - * Rotates a sprite 90 degrees counter clockwise - * - * @param sprite_in Input sprite to rotate - * @param sprite_out Pointer to where rotated sprite will be stored - * @returns A pointer to sprite_out - * @note sprite_in and sprite_out cannot be the same - */ -gfx_sprite_t *gfx_RotateSpriteCC(gfx_sprite_t *sprite_in, gfx_sprite_t *sprite_out); - -/** - * Rotates a sprite 180 degrees - * - * @param sprite_in Input sprite to rotate - * @param sprite_out Pointer to where rotated sprite will be stored - * @returns A pointer to sprite_out - */ -gfx_sprite_t *gfx_RotateSpriteHalf(gfx_sprite_t *sprite_in, gfx_sprite_t *sprite_out); - -/** - * Resizes a sprite to new dimensions - * - * Place new image dimensions in sprite_out; i.e. sprite_out->width = 80; sprite_out->height = 20. - * @param sprite_in Input sprite to scale - * @param sprite_out Pointer to where scaled sprite will be stored - * @returns A pointer to \p sprite_out - */ -gfx_sprite_t *gfx_ScaleSprite(gfx_sprite_t *sprite_in, gfx_sprite_t *sprite_out); - -/** - * Fixed Rotation with scaling factor for sprites - * - * The output sprite is updated with the dimensions required for the implemented scaling factor. - * You must make sure that \p sprite_out has enough memory to store the needed output sprite. This can be - * found with the following formula: size = (max_scale / 64) * width * height + 2; - * - * @note A scale factor of 64 represents 100% scaling - * @warning This routine only accepts square input sprites - * @param sprite_in Input sprite to rotate/scale - * @param sprite_out Pointer to where rotated/scaled sprite will be stored - * @param angle 256 position angular integer - * @param scale Scaling factor; range is about 1% to 400% scale - * @returns A pointer to \p sprite_out - */ -gfx_sprite_t *gfx_RotateScaleSprite(gfx_sprite_t *sprite_in, gfx_sprite_t *sprite_out, uint8_t angle, uint8_t scale); - -/** - * Helper macro to only perform rotation using gfx_RotateScaleSprite - * - * @param sprite_in Input sprite to rotate - * @param sprite_out Pointer to where rotated sprite will be stored - * @param angle 256 position angular integer - * @returns A pointer to \p sprite_out - * @see gfx_RotateScaleSprite - */ -#define gfx_RotateSprite(sprite_in, sprite_out, angle) gfx_RotateScaleSprite(sprite_in, sprite_out, angle, 64) - -/** - * Creates a temporary character sprite - * - * This may be useful for performing rotations and other - * operations on characters. The sprite returned is always 8x8 pixels. - * @param c Character to generate - */ -gfx_sprite_t *gfx_GetSpriteChar(char c); - -/** - * Sets the font's character data - * - * Fonts can be created manually or and exported to a C-style format using 8x8 Pixel ROM Font Editor. - * (https://www.min.at/prinz/o/software/pixelfont/#download) - * - * @param data Pointer to formated 8x8 pixel font - * @returns Pointer to previous font data - * @note Format of font data is 8 bytes horizontally aligned. - */ -uint8_t *gfx_SetFontData(uint8_t *data); - -/** - * Sets the font data for a specific character - * - * @param index Character index to modify (if using default font, values range from 0-127, custom font can have indexes 0-255) - * @param data Pointer to formated 8x8 pixel font - * @returns Pointer to current character data if \p data is NULL, otherwise a pointer to next character data - * @note Format of font data is 8 bytes horizontally aligned. - * @see gfx_SetFontData - */ -uint8_t *gfx_SetCharData(uint8_t index, uint8_t *data); - -/** - * Sets the font spacing - * - * @param spacing Pointer to array of character spacing - */ -void gfx_SetFontSpacing(uint8_t *spacing); - -/** - * Sets the height in pixels of each character - * - * The default value is 8 pixels - * @param height New font height in pixels - * @returns Previous height of font in pixels - */ -uint8_t gfx_SetFontHeight(uint8_t height); - -/** - * Sets monospaced font - * - * @param spacing Distance between characters - * @note To disable monospaced font, set to 0 - */ -void gfx_SetMonospaceFont(uint8_t spacing); - -/** - * Gets the pixel width of the given string - * - * @param string Pointer to string - * @note Takes into account monospacing flag - */ -unsigned int gfx_GetStringWidth(const char *string); - -/** - * Gets the pixel width of the given character - * - * @param c Character to get width of - * @returns Width in pixels of character - * @note Takes into account monospacing flag - */ -unsigned int gfx_GetCharWidth(const char c); - -/** - * Sets the clipping window - * - * This window is used across all clipped routines - * @param xmin Minimum x coordinate - * @param ymin Minimum y coordinate - * @param xmax Maximum x coordinate - * @param ymax Maximum y coordinate - * @note This routine is exclusive - */ -void gfx_SetClipRegion(int xmin, int ymin, int xmax, int ymax); - -/** - * Clips a region to fit within the window - * - * @returns False if offscreen, true if onscreen - */ -bool gfx_GetClipRegion(gfx_region_t *region); - -/** - * Shifts the drawing window down - * - * @param pixels Number of pixels to shift - * @note Data left over is undefined (Must be drawn over) - */ -void gfx_ShiftDown(uint8_t pixels); - -/** - * Shifts the drawing window up - * - * @param pixels Number of pixels to shift - * @note Data left over is undefined (Must be drawn over) - */ -void gfx_ShiftUp(uint8_t pixels); - -/** - * Shifts the drawing window left - * - * @param pixels Number of pixels to shift - * @note Data left over is undefined (Must be drawn over) - */ -void gfx_ShiftLeft(uint24_t pixels); - -/** - * Shifts the drawing window right - * - * @param pixels Number of pixels to shift - * @note Data left over is undefined (Must be drawn over) - */ -void gfx_ShiftRight(uint24_t pixels); - -/** - * Lightens a given 1555 color; useful for palette color conversions. - * - * @param color Original color input in 1555 format - * @param amount Amount to lighten by - * @returns Lightened color - * @note 0 returns full white, 255 returns original color - */ -uint16_t gfx_Lighten(uint16_t color, uint8_t amount); - -/** - * Darkens a given 1555 color; useful for palette color conversions. - * - * @param color Original color input in 1555 format - * @param amount Amount to darken by - * @returns Darkened color - * @note 0 returns full black, 255 returns original color - */ -uint16_t gfx_Darken(uint16_t color, uint8_t amount); - -/** - * Fills an area with a color - * - * @param x X coordinate to begin filling at - * @param y Y coordinate to begin filling at - * @param color New color to fill with - * - * @note This routine performs clipping to stay within the window, but you must ensure it starts in the window. - */ -void gfx_FloodFill(unsigned int x, uint8_t y, uint8_t color); - -/** - * Draws a sprite with RLE transparency. - * - * @param sprite sprite to draw - * @param x x-coordinate - * @param y y-coordinate - */ -void gfx_RLETSprite(gfx_rletsprite_t *sprite, int x, int y); - -/** - * Draws an unclipped sprite with RLE transparency. - * - * @param sprite sprite to draw - * @param x x-coordinate - * @param y y-coordinate - */ -void gfx_RLETSprite_NoClip(gfx_rletsprite_t *sprite, uint24_t x, uint8_t y); - -/** - * Converts a sprite with RLE transpareny to a sprite with normal transparency. - * - * Width and height will be set in the converted sprite. - * - * The transparent color index in the converted sprite is controlled by - * gfx_SetTransparentColor(). - * - * @attention - * The output sprite must have been allocated with a large enough \c data field - * to hold the converted sprite data, which will be width * height - * bytes large. - * - * @param[in] sprite_in input sprite with RLE transparency - * @param[out] sprite_out converted sprite with normal transparency - * @returns the converted sprite - * @see gfx_ConvertMallocRLETSprite - * @see gfx_ConvertToRLETSprite - */ -gfx_sprite_t *gfx_ConvertFromRLETSprite(gfx_rletsprite_t *sprite_in, gfx_sprite_t *sprite_out); - -/** - * Converts a sprite with normal transpareny to a sprite with RLE transparency. - * - * Width and height will be set in the converted sprite. - * - * The transparent color index in the input sprite is controlled by - * gfx_SetTransparentColor(). - * - * @attention - * The output sprite must have been allocated with a large enough data field to - * hold the converted sprite data; see gfx_AllocRLETSprite() for information. - * - * @note - * To avoid needing to predict the output size and risking either the prediction - * being too high and wasting space, or being too low and corrupting memory, - * gfx_ConvertMallocRLETSprite() can be used instead to allocate the exact - * amount of necessary space for the converted sprite. - * - * @param[in] sprite_in input sprite with normal transparency - * @param[out] sprite_out converted sprite with RLE transparency - * @returns the converted sprite - * @see gfx_ConvertFromRLETSprite - */ -gfx_rletsprite_t *gfx_ConvertToRLETSprite(gfx_sprite_t *sprite_in, gfx_rletsprite_t *sprite_out); - -/** - * Converts a sprite with normal transpareny to a sprite with RLE transparency, - * allocating the exact amount of necessary space for the converted sprite. - * - * Allocates the memory with \p malloc_routine. Width and height will be set in - * the converted sprite. Returns \c NULL upon allocation failure. - * - * The transparent color index in the input sprite is controlled by - * gfx_SetTransparentColor(). - * - * @remarks - * If using \c malloc as the \p malloc_routine, gfx_ConvertMallocRLETSprite() - * can be used as a shortcut. - * - * @remarks - * A gfx_sprite_t can be converted into an appropriately large, - * already-allocated gfx_rletsprite_t using gfx_ConvertToRLETSprite(). - * - * @param sprite_in input sprite with normal transparency - * @param malloc_routine malloc implementation to use - * @returns a newly allocated converted sprite with RLE transparency - * @see gfx_ConvertFromRLETSprite - */ -gfx_rletsprite_t *gfx_ConvertToNewRLETSprite(gfx_sprite_t *sprite_in, void *(*malloc_routine)(size_t)); - -/** - * Converts a sprite with normal transpareny to a sprite with RLE transparency, - * allocating the exact amount of necessary space for the converted sprite using - * \c malloc. - * - * Width and height will be set in the converted sprite. Returns \c NULL upon - * allocation failure. - * - * The transparent color index in the input sprite is controlled by - * gfx_SetTransparentColor(). - * - * @remarks - * A gfx_sprite_t can be converted into an appropriately large, - * already-allocated gfx_rletsprite_t using gfx_ConvertToRLETSprite(). - * - * @param sprite_in input sprite with normal transparency - * @param malloc_routine malloc implementation to use - * @returns a newly allocated converted sprite with RLE transparency - * @see gfx_ConvertFromRLETSprite - */ -#define gfx_ConvertMallocRLETSprite(sprite_in) \ -gfx_ConvertToNewRLETSprite(sprite_in, malloc) - -/** - * Converts an RGB value to a palette color - * - * Conversion is not 100% perfect, but is quite close - */ -#define gfx_RGBTo1555(r,g,b) \ -((uint16_t)(((uint8_t)(r) >> 3) << 10) | \ -(((uint8_t)(g) >> 3) << 5) | \ -((uint8_t)(b) >> 3)) - -/** - * Checks if we are currently in a rectangular hotspot area - */ -#define gfx_CheckRectangleHotspot(master_x, master_y, master_width, master_height, test_x, test_y, test_width, test_height) \ -(((test_x) < ((master_x) + (master_width))) && \ -(((test_x) + (test_width)) > (master_x)) && \ -((test_y) < ((master_y) + (master_height))) && \ -(((test_y) + (test_height)) > (master_y))) - -/* Color definitions (try to avoid) */ -#define gfx_black 0x00 -#define gfx_red 0xE0 -#define gfx_orange 0xE3 -#define gfx_green 0x03 -#define gfx_blue 0x10 -#define gfx_purple 0x50 -#define gfx_yellow 0xE7 -#define gfx_pink 0xF0 -#define gfx_white 0xFF - -/* Compatability defines (don't use please) */ -typedef gfx_sprite_t gfx_image_t; -#define gfx_BlitArea gfx_BlitRectangle -void gfx_LZDecompress(uint8_t *in, uint8_t *out, unsigned int in_size); - -#define gfx_lcdWidth (320) -#define gfx_lcdHeight (240) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/frontends/calculator/CEdev/include/intce.h b/frontends/calculator/CEdev/include/intce.h deleted file mode 100644 index dd27a31..0000000 --- a/frontends/calculator/CEdev/include/intce.h +++ /dev/null @@ -1,93 +0,0 @@ -/** - * @file - * @authors Matt "MateoConLechuga" Waltz - * @authors Jacob "jacobly" Young - * @brief Interrupt configuring and setting - */ - -#ifndef INTCE_H -#define INTCE_H - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @brief Enable global interrupts - */ -#define int_Enable() \ -asm("ei") - -/** - * @brief Diasble global interrupts - */ -#define int_Disable() \ -asm("di") - -/** - * @brief Blocking wait for an interrupt to trigger - */ -#define int_Wait() \ -asm("halt") - -#ifdef FORCE_INTERRUPTS -#warning TI has removed custom interrupt support on CE models with hardware revision >= I. Please check that this is acceptable. - -/** - * Initizalize to use custom interrupts - * @note Saves status of current interrupt state - * @warning TI has removed custom interrupt support on CE models with hardware revision >= I. - */ -void int_Initialize(void); - -/** - * Resets interrupts back to the OS expected values - * @warning Must have called int_Initialize before using - * @warning TI has removed custom interrupt support on CE models with hardware revision >= I. - */ -void int_Reset(void); - -/** - * Sets up an interrupt vector given an ISR - * @param ivect Interrupt vector to set - * @param handler Handler to interrupt service routine - * @warning TI has removed custom interrupt support on CE models with hardware revision >= I. - */ -void int_SetVector(uint8_t ivect, void (*handler)(void)); - -#endif - -#define ON_IVECT 0 /**< [on] key interrupt source */ -#define TIMER1_IVECT 1 /**< Timer 1 interrupt source */ -#define TIMER2_IVECT 2 /**< Timer 2 interrupt source */ -#define TIMER3_IVECT 3 /**< Timer 3 interrupt source */ -#define TIMEROS_IVECT 4 /**< Timer OS interrupt source */ -#define KEYBOARD_IVECT 10 /**< Keyboard interrupt source */ -#define LCD_IVECT 11 /**< LCD interrupt source */ -#define RTC_IVECT 12 /**< Real Time Clock interrupt source */ -#define USB_IVECT 13 /**< USB interrupt source */ - -#define INT_ON 1< -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef uint8_t kb_key_t; ///< Normal key type -typedef uint16_t kb_lkey_t; ///< Long key type - -/** - * Scans the keyboard to update data values - * @note Disables interrupts - */ -void kb_Scan(void); - -/** - * Scans the given keyboard row and returns the row value - * @param row Row to scan - * @note Disables interrupts - */ -kb_key_t kb_ScanGroup(uint8_t row); - -/** - * Scans the keyboard quickly to tell if any key was pressed - * @note Disables interrupts - */ -uint8_t kb_AnyKey(void); - -/** - * Resets the keyboard - * @note Only use if you modify keyboard timers or number of rows - */ -void kb_Reset(void); - -/** - * @brief Sets the keypad scanning mode - * @see kb_scan_mode_t - */ -#define kb_SetMode(mode) \ -(kb_Config = ((kb_Config & ~3)|(mode))) - -/** - * @brief Gets the keypad scanning mode - * @see kb_scan_mode_t - */ -#define kb_GetMode() \ -(kb_Config & 3) - -/** - * Different available scanning modes - */ -typedef enum { - MODE_0_IDLE = 0, /**< Keypad scanning is idle */ - MODE_1_INDISCRIMINATE, /**< Indiscriminate key detection. Data registers are invalid, but whenever any key is pressed, interrupt KB_MODE_1_PRESS is set (and cannot be cleared until the key is released). */ - MODE_2_SINGLE, /**< Single scan. The keypad is scanned once, and then the mode returns to MODE_0_IDLE. */ - MODE_3_CONTINUOUS /**< Continuous scan. When scanning completes, it just starts over again after a delay. */ -} kb_scan_mode_t; - -#define kb_EnableInt \ -(*(uint8_t*)0xF5000C) /**< Enabled keypad interrupt signals */ -#define kb_IntAcknowledge \ -(*(volatile uint8_t*)0xF50008) /**< Acknowledege keypad interrupt signals */ -#define kb_IntStatus \ -(*(volatile uint8_t*)0xF50008) /**< Status of keypad interrupt signals */ -#define kb_Config \ -(*(uint8_t*)0xF50000) /**< Configuration of keypad controller */ - -/** - * Keypad Data registers - * - * | Offset | Bit 0 | Bit 1 | Bit 2 | Bit 3 | Bit 4 | Bit 5 | Bit 6 | Bit 7 | - * | -------| ---------- | ---------- | ---------- | ---------- | ---------- | ---------- | ---------- | ---------- | - * | 1 | kb_Graph | kb_Trace | kb_Zoom | kb_Window | kb_Yequ | kb_2nd | kb_Mode | kb_Del | - * | 2 | | kb_Sto | kb_Ln | kb_Log | kb_Square | kb_Recip | kb_Math | kb_Alpha | - * | 3 | kb_0 | kb_1 | kb_4 | kb_7 | kb_Comma | kb_Sin | kb_Apps | kb_GraphVar| - * | 4 | kb_DecPnt | kb_2 | kb_5 | kb_8 | kb_LParen | kb_Cos | kb_Prgm | kb_Stat | - * | 5 | kb_Chs | kb_3 | kb_6 | kb_9 | kb_RParen | kb_Tan | kb_Vars | | - * | 6 | kb_Enter | kb_Add | kb_Sub | kb_Mul | kb_Div | kb_Power | kb_Clear | | - * | 7 | kb_Down | kb_Left | kb_Right | kb_Up | | | | | - * - * These data registers can be indexed just like an array. For example, if you want to check the status of the '2nd' key: - * @code - * if (kb_Data[1] & kb_2nd) { - * ... - * } - * @endcode - */ -#define kb_Data \ -(uint8_t)((uint16_t*)0xF50010) - -/** - * Different available interrupt signals - */ -typedef enum { - KB_SCAN_COMPLETE = 1, /**< Interrupt set when keypad is done scanning */ - KB_DATA_CHANGED = 2, /**< Interrupt set when data is changed on a press or a release */ - KB_MODE_1_PRESS = 4 /**< Interrupt set when a key is pressed in MODE_1_INDISCRIMINATE */ -} kb_int_signal_t; - -/* Keyboard group 1 */ -#define kb_Graph 1<<0 -#define kb_Trace 1<<1 -#define kb_Zoom 1<<2 -#define kb_Window 1<<3 -#define kb_Yequ 1<<4 -#define kb_2nd 1<<5 -#define kb_Mode 1<<6 -#define kb_Del 1<<7 - -/* Keyboard group 2 */ -#define kb_Sto 1<<1 -#define kb_Ln 1<<2 -#define kb_Log 1<<3 -#define kb_Square 1<<4 -#define kb_Recip 1<<5 -#define kb_Math 1<<6 -#define kb_Alpha 1<<7 - -/* Keyboard group 3 */ -#define kb_0 1<<0 -#define kb_1 1<<1 -#define kb_4 1<<2 -#define kb_7 1<<3 -#define kb_Comma 1<<4 -#define kb_Sin 1<<5 -#define kb_Apps 1<<6 -#define kb_GraphVar 1<<7 - -/* Keyboard group 4 */ -#define kb_DecPnt 1<<0 -#define kb_2 1<<1 -#define kb_5 1<<2 -#define kb_8 1<<3 -#define kb_LParen 1<<4 -#define kb_Cos 1<<5 -#define kb_Prgm 1<<6 -#define kb_Stat 1<<7 - -/* Keyboard group 5 */ -#define kb_Chs 1<<0 -#define kb_3 1<<1 -#define kb_6 1<<2 -#define kb_9 1<<3 -#define kb_RParen 1<<4 -#define kb_Tan 1<<5 -#define kb_Vars 1<<6 - -/* Keyboard group 6 */ -#define kb_Enter 1<<0 -#define kb_Add 1<<1 -#define kb_Sub 1<<2 -#define kb_Mul 1<<3 -#define kb_Div 1<<4 -#define kb_Power 1<<5 -#define kb_Clear 1<<6 - -/* Keyboard group 7 */ -#define kb_Down 1<<0 -#define kb_Left 1<<1 -#define kb_Right 1<<2 -#define kb_Up 1<<3 - -/* Keyboard group 1 */ -#define kb_KeyGraph (kb_lkey_t)(1 << 8 | 1<<0) -#define kb_KeyTrace (kb_lkey_t)(1 << 8 | 1<<1) -#define kb_KeyZoom (kb_lkey_t)(1 << 8 | 1<<2) -#define kb_KeyWindow (kb_lkey_t)(1 << 8 | 1<<3) -#define kb_KeyYequ (kb_lkey_t)(1 << 8 | 1<<4) -#define kb_Key2nd (kb_lkey_t)(1 << 8 | 1<<5) -#define kb_KeyMode (kb_lkey_t)(1 << 8 | 1<<6) -#define kb_KeyDel (kb_lkey_t)(1 << 8 | 1<<7) - -/* Keyboard group 2 */ -#define kb_KeyStore (kb_lkey_t)(2 << 8 | 1<<1) -#define kb_KeyLn (kb_lkey_t)(2 << 8 | 1<<2) -#define kb_KeyLog (kb_lkey_t)(2 << 8 | 1<<3) -#define kb_KeySquare (kb_lkey_t)(2 << 8 | 1<<4) -#define kb_KeyRecip (kb_lkey_t)(2 << 8 | 1<<5) -#define kb_KeyMath (kb_lkey_t)(2 << 8 | 1<<6) -#define kb_KeyAlpha (kb_lkey_t)(2 << 8 | 1<<7) - -/* Keyboard group 3 */ -#define kb_Key0 (kb_lkey_t)(3 << 8 | 1<<0) -#define kb_Key1 (kb_lkey_t)(3 << 8 | 1<<1) -#define kb_Key4 (kb_lkey_t)(3 << 8 | 1<<2) -#define kb_Key7 (kb_lkey_t)(3 << 8 | 1<<3) -#define kb_KeyComma (kb_lkey_t)(3 << 8 | 1<<4) -#define kb_KeySin (kb_lkey_t)(3 << 8 | 1<<5) -#define kb_KeyApps (kb_lkey_t)(3 << 8 | 1<<6) -#define kb_KeyGraphVar (kb_lkey_t)(3 << 8 | 1<<7) - -/* Keyboard group 4 */ -#define kb_KeyDecPnt (kb_lkey_t)(4 << 8 | 1<<0) -#define kb_Key2 (kb_lkey_t)(4 << 8 | 1<<1) -#define kb_Key5 (kb_lkey_t)(4 << 8 | 1<<2) -#define kb_Key8 (kb_lkey_t)(4 << 8 | 1<<3) -#define kb_KeyLParen (kb_lkey_t)(4 << 8 | 1<<4) -#define kb_KeyCos (kb_lkey_t)(4 << 8 | 1<<5) -#define kb_KeyPrgm (kb_lkey_t)(4 << 8 | 1<<6) -#define kb_KeyStat (kb_lkey_t)(4 << 8 | 1<<7) - -/* Keyboard group 5 */ -#define kb_KeyChs (kb_lkey_t)(5 << 8 | 1<<0) -#define kb_Key3 (kb_lkey_t)(5 << 8 | 1<<1) -#define kb_Key6 (kb_lkey_t)(5 << 8 | 1<<2) -#define kb_Key9 (kb_lkey_t)(5 << 8 | 1<<3) -#define kb_KeyRParen (kb_lkey_t)(5 << 8 | 1<<4) -#define kb_KeyTan (kb_lkey_t)(5 << 8 | 1<<5) -#define kb_KeyVars (kb_lkey_t)(5 << 8 | 1<<6) - -/* Keyboard group 6 */ -#define kb_KeyEnter (kb_lkey_t)(6 << 8 | 1<<0) -#define kb_KeyAdd (kb_lkey_t)(6 << 8 | 1<<1) -#define kb_KeySub (kb_lkey_t)(6 << 8 | 1<<2) -#define kb_KeyMul (kb_lkey_t)(6 << 8 | 1<<3) -#define kb_KeyDiv (kb_lkey_t)(6 << 8 | 1<<4) -#define kb_KeyPower (kb_lkey_t)(6 << 8 | 1<<5) -#define kb_KeyClear (kb_lkey_t)(6 << 8 | 1<<6) - -/* Keyboard group 7 */ -#define kb_KeyDown (kb_lkey_t)(7 << 8 | 1<<0) -#define kb_KeyLeft (kb_lkey_t)(7 << 8 | 1<<1) -#define kb_KeyRight (kb_lkey_t)(7 << 8 | 1<<2) -#define kb_KeyUp (kb_lkey_t)(7 << 8 | 1<<3) - -/* Compatibility defines */ -#define kb_DataArray ((uint16_t*)0xF50010) -#define kb_dataArray ((uint16_t*)0xF50010) -#define kb_Store 1<<1 -#define kb_KeyPgrm kb_KeyPrgm -#define kb_group_0 0 -#define kb_group_1 1 -#define kb_group_2 2 -#define kb_group_3 3 -#define kb_group_4 4 -#define kb_group_5 5 -#define kb_group_6 6 -#define kb_group_7 7 - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/frontends/calculator/CEdev/include/lib/ce/fileioc.h b/frontends/calculator/CEdev/include/lib/ce/fileioc.h deleted file mode 100644 index b29714c..0000000 --- a/frontends/calculator/CEdev/include/lib/ce/fileioc.h +++ /dev/null @@ -1,2 +0,0 @@ -#warning You are using a deprecated lib include path. Simply use #include instead -#include diff --git a/frontends/calculator/CEdev/include/lib/ce/graphx.h b/frontends/calculator/CEdev/include/lib/ce/graphx.h deleted file mode 100644 index 45534b0..0000000 --- a/frontends/calculator/CEdev/include/lib/ce/graphx.h +++ /dev/null @@ -1,2 +0,0 @@ -#warning You are using a deprecated lib include path. Simply use #include instead -#include diff --git a/frontends/calculator/CEdev/include/lib/ce/keypadc.h b/frontends/calculator/CEdev/include/lib/ce/keypadc.h deleted file mode 100644 index b17fd8e..0000000 --- a/frontends/calculator/CEdev/include/lib/ce/keypadc.h +++ /dev/null @@ -1,2 +0,0 @@ -#warning You are using a deprecated lib include path. Simply use #include instead -#include diff --git a/frontends/calculator/CEdev/include/limits.h b/frontends/calculator/CEdev/include/limits.h deleted file mode 100644 index 8d4a333..0000000 --- a/frontends/calculator/CEdev/include/limits.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 1999-2008 by Zilog, Inc. - * All Rights Reserved - * Modified by Matt "MateoConLechuga" Waltz for TI84+CE platform - */ -#ifndef LIMITS_H -#define LIMITS_H - -#define CHAR_BIT 8 /* number of bits in byte */ -#define SCHAR_MAX 127 /* max value for signed char */ -#define SCHAR_MIN (-127-1) /* min value for signed char */ -#define UCHAR_MAX 0xFF /* max value for unsigned char */ -#ifdef __UNSIGNED_CHARS__ -#define CHAR_MAX UCHAR_MAX /* max value for char */ -#define CHAR_MIN 0 /* Min value for char */ -#else -#define CHAR_MAX SCHAR_MAX /* max value for char */ -#define CHAR_MIN SCHAR_MIN /* Min value for char */ -#endif - -#define SHRT_MAX 32767 /* max value for short int */ -#define SHRT_MIN (-32767-1) /* min value for short int */ -#define USHRT_MAX 0xFFFF /* max value for unsigned short */ - -#define INT_MAX 8388607 /* max value for int */ -#define INT_MIN (-8388607 - 1) /* min value for int */ -#define UINT_MAX 0xFFFFFF /* max value for unsigned int */ - -#define LONG_MAX 2147483647L /* max value for long int */ -#define LONG_MIN (-2147483647L - 1) /* min value for long int */ -#define ULONG_MAX 0xFFFFFFFFUL /* max value for unsigned long */ - -#define MB_LEN_MAX 1 /* max multibyte char length */ - -#endif diff --git a/frontends/calculator/CEdev/include/math.h b/frontends/calculator/CEdev/include/math.h deleted file mode 100644 index 1360e45..0000000 --- a/frontends/calculator/CEdev/include/math.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright (C) 1999-2008 by Zilog, Inc. - * All Rights Reserved - * Modified by Matt "MateoConLechuga" Waltz for TI84+CE platform - */ -#ifndef MATH_H -#define MATH_H - -#ifdef __cplusplus -extern "C" { -#endif - -extern double _huge_val; -#define HUGE_VAL _huge_val /* overflow error */ - -#define M_E 2.71828182845904523536 /* e */ -#define M_LOG2E 1.44269504088896340736 /* log2(e) */ -#define M_LOG10E 0.434294481903251827651 /* log10(e) */ -#define M_LN2 0.693147180559945309417 /* ln(2) */ -#define M_LN10 2.30258509299404568402 /* ln(10) */ -#define M_PI 3.14159265358979323846 /* pi */ -#define M_PI_2 1.57079632679489661923 /* pi/2 */ -#define M_PI_4 0.785398163397448309616 /* pi/4 */ -#define M_1_PI 0.318309886183790671538 /* 1/pi */ -#define M_2_PI 0.636619772367581343076 /* 2/pi */ -#define M_2_SQRTPI 1.12837916709551257390 /* 2/sqrt(pi) */ -#define M_SQRT2 1.41421356237309504880 /* sqrt(2) */ -#define M_SQRT1_2 0.707106781186547524401 /* 1/sqrt(2) */ -#define M_LOG_2M_PI 1.83787706640934548 /* log2(M_PI) */ - -double acos(double x); -double asin(double x); -double atan(double x); -double atan2(double y,double x); -double cos(double x); -double sin(double x); -double tan(double x); -double cosh(double x); -double sinh(double x); -double tanh(double x); -double exp(double x); -double ldexp(double x, int exp); -double log(double x); -double log10(double x); -double pow(double x,double y); -double sqrt(double x); -double ceil(double x); -double floor(double x); -double fabs(double x); -double fmod(double x, double y); -double round(double x); - -double frexp(double value, int *exp); -double modf(double value, double *iptr); - -int isinf(double n); -int isnan(double n); -int finite(double n); - -double tgamma(double x); -double log2(double x); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/frontends/calculator/CEdev/include/setjmp.h b/frontends/calculator/CEdev/include/setjmp.h deleted file mode 100644 index e8376c5..0000000 --- a/frontends/calculator/CEdev/include/setjmp.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (C) 1999-2008 by Zilog, Inc. - * All Rights Reserved - */ -#ifndef __SETJMP_H -#define __SETJMP_H - -#ifdef __cplusplus -extern "C" { -#endif - -typedef unsigned char jmp_buf[12]; - -int setjmp(jmp_buf env); -void longjmp(jmp_buf env, int val); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/frontends/calculator/CEdev/include/stdarg.h b/frontends/calculator/CEdev/include/stdarg.h deleted file mode 100644 index b794bdb..0000000 --- a/frontends/calculator/CEdev/include/stdarg.h +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (C) 1999-2008 by Zilog, Inc. - * All Rights Reserved - */ -#ifndef STDARG_H -#define STDARG_H - -typedef char * va_list; -#define _INTSIZEOF(n) (sizeof(n) + sizeof(int)-1-((sizeof(n)-1)%sizeof(int))) - -#define va_start(ap, parm) (ap = (char *)&parm + _INTSIZEOF(parm)) -#define va_arg(ap,type) (*(type *)((ap += _INTSIZEOF(type)) - _INTSIZEOF(type))) -#define va_end(ap) - -#endif diff --git a/frontends/calculator/CEdev/include/stdbool.h b/frontends/calculator/CEdev/include/stdbool.h deleted file mode 100644 index c6c20fd..0000000 --- a/frontends/calculator/CEdev/include/stdbool.h +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright (C) 1999-2008 by Zilog, Inc. - * All Rights Reserved - * Modified by Matt "MateoConLechuga" Waltz for TI84+CE platform - */ -#ifndef STDBOOL_H -#define STDBOOL_H - -#ifndef __bool_true_false_are_defined -#define __bool_true_false_are_defined - -#ifndef __cplusplus - -typedef unsigned char bool; - -#define _Bool bool -#define false 0 -#define true 1 - -#endif - -#endif -#endif diff --git a/frontends/calculator/CEdev/include/stddef.h b/frontends/calculator/CEdev/include/stddef.h deleted file mode 100644 index e436fcb..0000000 --- a/frontends/calculator/CEdev/include/stddef.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright (C) 1999-2008 by Zilog, Inc. - * All Rights Reserved - * Modified by Matt "MateoConLechuga" Waltz for TI84+CE platform - */ -#ifndef STDDEF_H -#define STDDEF_H - -#ifndef SIZE_T_DEFINED -#define SIZE_T_DEFINED -typedef unsigned int size_t; -#endif - -#ifndef NULL -#define NULL ((void *)0) -#endif -#define offsetof(type,member) ((size_t) &((type*)0)->member) - -typedef int ptrdiff_t; - -#ifndef __cplusplus -#ifndef WCHAR_T_DEFINED -#define WCHAR_T_DEFINED -typedef unsigned short wchar_t; -#endif -#endif - -#endif diff --git a/frontends/calculator/CEdev/include/stdint.h b/frontends/calculator/CEdev/include/stdint.h deleted file mode 100644 index c1fbe17..0000000 --- a/frontends/calculator/CEdev/include/stdint.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef __STDINT_H -#define __STDINT_H - -typedef signed char int8_t; -typedef unsigned char uint8_t; - -typedef signed short int16_t; -typedef unsigned short uint16_t; - -typedef signed int int24_t; -typedef unsigned int uint24_t; - -typedef signed long int32_t; -typedef unsigned long uint32_t; - -typedef int24_t intptr_t; -typedef uint24_t uintptr_t; - -#endif diff --git a/frontends/calculator/CEdev/include/stdio.h b/frontends/calculator/CEdev/include/stdio.h deleted file mode 100644 index 1d35443..0000000 --- a/frontends/calculator/CEdev/include/stdio.h +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef STDIO_H -#define STDIO_H - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define FILENAME_MAX 9 -#define SYS_OPEN 5 /* max open files */ -#define FOPEN_MAX 5 - -#define SEEK_CUR 1 -#define SEEK_END 2 -#define SEEK_SET 0 - -/* ANSI prototypes */ -#ifndef SIZE_T_DEFINED -#define SIZE_T_DEFINED -typedef unsigned int size_t; -#endif - -#ifndef NULL -#define NULL ((void *)0) -#endif - -#ifndef EOF -#define EOF (-1) /* end of file */ -#endif - -typedef struct __stdio_file { - unsigned char slot; -} FILE; - -extern FILE __stdio_files[FOPEN_MAX]; - -int sprintf(char *s, const char *format, ...); -int vprintf(const char *format, va_list arg); -int vsprintf(char *s, const char *format, va_list arg); - -/* stdio.h functions implemented using FILEIOC */ -int remove(const char *filename); -int fgetc(FILE *stream); -int fputc(int c, FILE *stream); -char *fgets(char *str, int num, FILE *stream); -int fputs(const char *str, FILE *stream); -size_t fread(void *ptr, size_t size, size_t count, FILE *stream); -size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream); -int fseek(FILE *stream, long int offset, int origin); -long int ftell(FILE *stream); -int fclose(FILE *stream); -FILE *fopen(const char *filename, const char *mode); -int feof(FILE *stream); -#define ferror(stream) (0) -#define fflush(ignore) ((void)0) -#define rewind(stream) ti_Rewind(stream->slot) -#define fcloseall() ti_CloseAll() - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/frontends/calculator/CEdev/include/stdlib.h b/frontends/calculator/CEdev/include/stdlib.h deleted file mode 100644 index cef8c10..0000000 --- a/frontends/calculator/CEdev/include/stdlib.h +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (C) 1999-2008 by Zilog, Inc. - * All Rights Reserved - * Modified by Matt "MateoConLechuga" Waltz for TI84+CE platform - */ -#ifndef STDLIB_H -#define STDLIB_H - -#ifdef __cplusplus -extern "C" { -#endif - -#define EXIT_SUCCESS 0 -#define EXIT_FAILURE 1 - -typedef int onexit_t; - -#ifndef __cplusplus -#ifndef WCHAR_T_DEFINED -#define WCHAR_T_DEFINED -typedef unsigned short wchar_t; -#endif -#endif - -typedef struct { - int quot; - int rem; -} div_t; - -typedef struct { - long quot; - long rem; -} ldiv_t; - -/* Heap packet header for malloc */ - -typedef char __align; /* alignment type */ -union header { - struct { - union header *ptr; /* next free block */ - unsigned int size; /* size of block */ - } s; - __align x; -}; -typedef union header _HEADER; - -#define EDOM 4 /* domain error */ -#define ERANGE 5 /* range error */ -extern double _huge_val; -#define HUGE_VAL _huge_val /* overflow error */ - -#define RAND_MAX 8388607 /* maximum value returned by rand() */ - -#ifndef SIZE_T_DEFINED -#define SIZE_T_DEFINED -typedef unsigned int size_t; -#endif -#define HEADER _HEADER -#define allocp _allocp -#define NALLOC 50 - -#ifndef NULL -#define NULL ((void *)0) -#endif - -/* Dynamic memory functions */ -void *calloc(size_t, size_t); -void *malloc(size_t); -void *realloc(void *, size_t); -void free(void *); - -/* Character and string functions */ -double atof(char * nptr); -int atoi(char * nptr); -long atol(char * nptr); -double strtod(char * nptr,char ** endptr); -long strtol(char *nptr,char ** endptr,int base); -unsigned long strtoul(char *nptr,char ** endptr,int base); - -/* Random routines */ -void srand(unsigned int seed); -int rand(void); - -/* Binary search and quicksort */ -void *bsearch(void * key,void * base, size_t nmemb, size_t size, int (*compar)(void * ,void * )); -void qsort(void * base,size_t nmemb,size_t size, int (*compar)(void * ,void * )); - -/* Exit and abort */ -void abort(void); -void exit(int status); - -/* Absolutes and division */ -int abs(int j); -long labs(long j); -div_t div(int numer,int denom); -ldiv_t ldiv(long numer, long denom); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/frontends/calculator/CEdev/include/string.h b/frontends/calculator/CEdev/include/string.h deleted file mode 100644 index 760cfc5..0000000 --- a/frontends/calculator/CEdev/include/string.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (C) 1999-2008 by Zilog, Inc. - * All Rights Reserved - * Modified by Matt "MateoConLechuga" Waltz for TI84+CE platform - */ -#ifndef STRING_H -#define STRING_H - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef SIZE_T_DEFINED -#define SIZE_T_DEFINED -typedef unsigned int size_t; -#endif - -void *memcpy(void *, const void *, size_t); -void *memchr(const void *, int, size_t); -void *memset(void *, int, size_t); -void *memmove(void *, const void *, size_t); -int memcmp(const void *, const void *, size_t); - -char *strcpy(char *, const char *); -char *strncpy(char *, const char *, size_t); -char *strcat(char *, const char *); -char *strncat(char *, const char *, size_t); -char *strchr(const char *, int); -char *strpbrk(const char *, const char *); -char *strrchr(const char *, int); -char *strstr(const char *, const char *); -char *strtok(char *, const char *); -char *strerror(int errnum); -char *strdup(const char *); -char *strndup(const char *, size_t n); -size_t strcspn(const char *, const char *); -size_t strspn(const char *, const char *); -size_t strlen(const char *); -size_t strnlen(const char *, size_t); -int strcmp(const char *, const char *); -int strncmp(const char *, const char *, size_t); -int strcasecmp(const char *, const char *); -int strncasecmp(const char *, const char *, size_t); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/frontends/calculator/CEdev/include/tice.h b/frontends/calculator/CEdev/include/tice.h deleted file mode 100644 index 1ace792..0000000 --- a/frontends/calculator/CEdev/include/tice.h +++ /dev/null @@ -1,2082 +0,0 @@ -/** - * @file - * @authors Matt "MateoConLechuga" Waltz - * @authors Jacob "jacobly" Young - * @brief Core CE define file - */ - -#ifndef H_TICE -#define H_TICE - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Hardware & custom macros/functions - */ - -/** - * Returns a pseudo-random 32-bit integer. - * - * @return the random integer - */ -uint32_t random(void); - -/** - * Seeds the pseudo-random number generator used by random() and rand() with the - * value seed. - * - * @param seed the seed value - */ -void srandom(uint32_t seed); - -/** - * Returns a pseudo-random integer in the range of \p min to \p max (inclusive). - */ -#define randInt(min, max) \ -((unsigned)random() % ((max) - (min) + 1) + (min)) - -/** - * Delays for a number of milliseconds. - *

- * Counts time spent while interrupted. Assumes a CPU clock speed of 48MHz. - * - * @param msec number of milliseconds - */ -void delay(uint16_t msec); - -/** - * "Atomically" loads from a volatile 32-bit value. - * - * @remarks - * The hardware does not provide a mechanism to truly atomically load from a - * 32-bit value. This "atomic" load is implemented by non-atomically reading the - * value twice and retrying if the values read differ. - * - * @attention - * If the maximum period between two value changes is 1us or less (assuming a - * CPU clock speed of 48MHz), then this function may never complete. For - * instance, the counter of a timer ticking at 1MHz or more should not be read - * using this function. In such a case of a purely increasing or decreasing - * value, atomic_load_increasing_32() or atomic_load_decreasing_32() may be - * appropriate instead. - * - * @param p pointer to 32-bit value - */ -uint32_t atomic_load_32(volatile uint32_t *p); - -/** - * "Atomically" loads from a volatile, increasing 32-bit value. - * - * @remarks - * The hardware does not provide a mechanism to truly atomically load from a - * 32-bit value. This "atomic" load is implemented by temporarily disabling - * interrupts while non-atomically reading the value twice and then returning - * the lesser of the two values read. - * - * @attention - * If the minimum period between two value changes is 5us or less and the - * value's maximum rate of change over a 5us period exceeds 256 (assuming a CPU - * clock speed of 48MHz), then the value returned may be incorrect. Of relevant - * note may be the fact that a 48MHz counter does not exceed this limit. - * - * @param p pointer to 32-bit value - */ -uint32_t atomic_load_increasing_32(volatile uint32_t *p); - -/** - * "Atomically" loads from a volatile, decreasing 32-bit value. - * - * @remarks - * The hardware does not provide a mechanism to truly atomically load from a - * 32-bit value. This "atomic" load is implemented by temporarily disabling - * interrupts while non-atomically reading the value twice and then returning - * the greater of the two values read. - * - * @attention - * If the minimum period between two value changes is 5us or less and the - * value's maximum rate of change over a 5us period exceeds 256 (assuming a CPU - * clock speed of 48MHz), then the value returned may be incorrect. Of relevant - * note may be the fact that a 48MHz counter does not exceed this limit. - * - * @param p pointer to 32-bit value - */ -uint32_t atomic_load_decreasing_32(volatile uint32_t *p); - -/** - * Gets a combination of the RTC time; useful for srand() - */ -#define rtc_Time() (*(volatile uint32_t*)0xF30044) - -/* RTC definitions */ -#define RTC_UNFREEZE (1<<7) -#define RTC_FREEZE (0<<7) -#define RTC_LOAD (1<<6) -#define RTC_ENABLE ((1<<0)|(RTC_UNFREEZE)) -#define RTC_DISABLE (0<<0) - -/* RTC registers */ -#define rtc_Seconds (*(volatile uint8_t*)0xF30000) -#define rtc_Minutes (*(volatile uint8_t*)0xF30004) -#define rtc_Hours (*(volatile uint8_t*)0xF30008) -#define rtc_Days (*(volatile uint16_t*)0xF3000C) -#define rtc_AlarmSeconds (*(uint8_t*)0xF30010) -#define rtc_AlarmMinutes (*(uint8_t*)0xF30014) -#define rtc_AlarmHours (*(uint8_t*)0xF30018) -#define rtc_Control (*(uint8_t*)0xF30020) -#define rtc_LoadSeconds (*(uint8_t*)0xF30024) -#define rtc_LoadMinutes (*(uint8_t*)0xF30028) -#define rtc_LoadHours (*(uint8_t*)0xF3002C) -#define rtc_LoadDays (*(uint16_t*)0xF30030) -#define rtc_IntStatus (*(volatile uint8_t*)0xF30034) -#define rtc_IntAcknowledge (*(volatile uint8_t*)0xF30034) -#define rtc_IsBusy() (rtc_Control & RTC_LOAD) - -/* RTC interrupt masks */ -#define RTC_ALARM_INT_SOURCE (1<<5) -#define RTC_DAY_INT_SOURCE (1<<4) -#define RTC_HR_INT_SOURCE (1<<3) -#define RTC_MIN_INT_SOURCE (1<<2) -#define RTC_SEC_INT_SOURCE (1<<1) - -/* RTC interrupt statuses */ -#define RTC_LOAD_INT (1<<5) -#define RTC_ALARM_INT (1<<4) -#define RTC_DAY_INT (1<<3) -#define RTC_HR_INT (1<<2) -#define RTC_MIN_INT (1<<1) -#define RTC_SEC_INT (1<<0) -#define RTC_INT_MASK (RTC_SEC_INT | RTC_MIN_INT | RTC_HR_INT | RTC_DAY_INT | RTC_ALARM_INT | RTC_LOAD_INT) - -/* Whole bunch of useful timer functions */ -#define TIMER1_ENABLE (1<<0) /* Enables Timer 1 */ -#define TIMER1_DISABLE (0<<0) /* Disables Timer 1 */ -#define TIMER1_32K (1<<1) /* Use the 32K clock for timer 1 */ -#define TIMER1_CPU (0<<1) /* Use the CPU clock rate for timer 1 */ -#define TIMER1_0INT (1<<2) /* Enable an interrupt when 0 is reached for the timer 1 */ -#define TIMER1_NOINT (0<<2) /* Disable interrupts for the timer 1 */ -#define TIMER1_UP (1<<9) /* Timer 1 counts up */ -#define TIMER1_DOWN (0<<9) /* Timer 1 counts down */ - -#define TIMER2_ENABLE (1<<3) /* Enables Timer 2 */ -#define TIMER2_DISABLE (0<<3) /* Disables Timer 2 */ -#define TIMER2_32K (1<<4) /* Use the 32K clock for timer 2 */ -#define TIMER2_CPU (0<<4) /* Use the CPU clock rate for timer 2 */ -#define TIMER2_0INT (1<<5) /* Enable an interrupt when 0 is reached for the timer 2 */ -#define TIMER2_NOINT (0<<5) /* Disable interrupts for the timer 2 */ -#define TIMER2_UP (1<<10) /* Timer 2 counts up */ -#define TIMER2_DOWN (0<<10) /* Timer 2 counts down */ - -#define TIMER3_ENABLE (1<<6) /* Enables Timer 3 */ -#define TIMER3_DISABLE (0<<6) /* Disables Timer 3 */ -#define TIMER3_32K (1<<7) /* Use the 32K clock for timer 3 */ -#define TIMER3_CPU (0<<7) /* Use the CPU clock rate for timer 3 */ -#define TIMER3_0INT (1<<8) /* Enable an interrupt when 0 is reached for the timer 3 */ -#define TIMER3_NOINT (0<<8) /* Disable interrupts for the timer 3 */ -#define TIMER3_UP (1<<11) /* Timer 3 counts up */ -#define TIMER3_DOWN (0<<11) /* Timer 3 counts down */ - -/* These defines can be used to check the status of the timer */ -#define TIMER1_MATCH1 (1<<0) /* Timer 1 hit the first match value */ -#define TIMER1_MATCH2 (1<<1) /* Timer 1 hit the second match value */ -#define TIMER1_RELOADED (1<<2) /* Timer 1 was reloaded (Needs TIMER1_0INT enabled) */ - -#define TIMER2_MATCH1 (1<<3) /* Timer 2 hit the first match value */ -#define TIMER2_MATCH2 (1<<4) /* Timer 2 hit the second match value */ -#define TIMER2_RELOADED (1<<5) /* Timer 2 was reloaded (Needs TIMER2_0INT enabled) */ - -#define TIMER3_MATCH1 (1<<6) /* Timer 3 hit the first match value */ -#define TIMER3_MATCH2 (1<<7) /* Timer 3 hit the second match value */ -#define TIMER3_RELOADED (1<<8) /* Timer 3 was reloaded (Needs TIMER3_0INT enabled) */ - -/* Timer registers */ -#define timer_1_Counter (*(volatile uint32_t*)0xF20000) -#define timer_1_ReloadValue (*(uint32_t*)0xF20004) -#define timer_1_MatchValue_1 (*(uint32_t*)0xF20008) -#define timer_1_MatchValue_2 (*(uint32_t*)0xF2000C) -#define timer_2_Counter (*(volatile uint32_t*)0xF20010) -#define timer_2_ReloadValue (*(uint32_t*)0xF20014) -#define timer_2_MatchValue_1 (*(uint32_t*)0xF20018) -#define timer_2_MatchValue_2 (*(uint32_t*)0xF2001C) -#define timer_3_Counter (*(volatile uint32_t*)0xF20020) -#define timer_3_ReloadValue (*(uint32_t*)0xF20024) -#define timer_3_MatchValue_1 (*(uint32_t*)0xF20028) -#define timer_3_MatchValue_2 (*(uint32_t*)0xF2002C) -#define timer_Control (*(uint16_t*)0xF20030) -#define timer_IntStatus (*(volatile uint16_t*)0xF20034) -#define timer_IntAcknowledge (*(volatile uint16_t*)0xF20034) -#define timer_EnableInt (*(uint16_t*)0xF20038) - -/* LCD defines */ -#define lcd_BacklightLevel (*(uint8_t*)0xF60024) -#define lcd_Timing0 (*(uint32_t*)0xE30000) -#define lcd_Timing1 (*(uint32_t*)0xE30004) -#define lcd_Timing2 (*(uint32_t*)0xE30008) -#define lcd_Timing3 (*(uint24_t*)0xE3000C) -#define lcd_UpBase (*(uint32_t*)0xE30010) -#define lcd_LpBase (*(uint32_t*)0xE30014) -#define lcd_Control (*(uint24_t*)0xE30018) -#define lcd_EnableInt (*(uint8_t*)0xE3001C) -#define lcd_IntStatus (*(uint8_t*)0xE30020) -#define lcd_IntStatusMasked (*(uint8_t*)0xE30024) -#define lcd_IntAcknowledge (*(volatile uint8_t*)0xE30028) -#define lcd_UpBaseCurr (*(volatile uint32_t*)0xE3002C) -#define lcd_LpBaseCurr (*(volatile uint32_t*)0xE30030) -#define lcd_Palette ((uint16_t*)0xE30200) -#define lcd_Ram ((uint16_t*)0xD40000) - -/** - * Width of LCD in pixels - */ -#define LCD_WIDTH \ -(320) - -/** - * Height of LCD in pixels - */ -#define LCD_HEIGHT \ -(240) - -/** - * Total number of pixels in LCD - */ -#define LCD_SIZE \ -(LCD_WIDTH*LCD_HEIGHT*2) - -/** - * @brief Structure of real variable type - */ -typedef struct { int8_t sign, exp; uint8_t mant[7]; } real_t; -/** - * @brief Structure of complex variable type - */ -typedef struct { real_t real, imag; } cplx_t; -/** - * @brief Structure of list variable type - */ -typedef struct { uint16_t dim; real_t items[1]; } list_t; -/** - * @brief Structure of complex list variable type - */ -typedef struct { uint16_t dim; cplx_t items[1]; } cplx_list_t; -/** - * @brief Structure of matrix variable type - */ -typedef struct { uint8_t cols, rows; real_t items[1]; } matrix_t; -/** - * @brief Structure of string variable type - */ -typedef struct { uint16_t len; char data[1]; } string_t; -/** - * @brief Structure of equation variable type - */ -typedef struct { uint16_t len; char data[1]; } equ_t; -/** - * @brief Structure of miscellaneous variable type - */ -typedef struct { uint16_t size; uint8_t data[1]; } var_t; - -/** - * Gets an element from a matrix - * - * @param matrix Structure of matrix - * @param row Row in matrix - * @param col Column in matrix - * @returns real_t containing element data - */ -#define matrix_element(matrix, row, col) ((matrix)->items[(row)+(col)*(matrix)->rows]) - -/** - * Resets the OS homescreen; accounts for split screen - */ -#define os_ClrHome() do { _OS(asm_ClrLCD); _OS(asm_HomeUp); _OS(asm_DrawStatusBar); } while (0) - -/** - * Resets the OS homescreen fully - */ -#define os_ClrHomeFull() do { _OS(asm_ClrLCDFull); _OS(asm_HomeUp); _OS(asm_DrawStatusBar); } while (0) - -/* - * Bootcode functions - */ - -/** - * Sets the calculator's date - * - * Performs checks to ensure date is within range - * @param day Day to set - * @param month Month to set - * @param year Year to set - */ -void boot_SetDate(uint8_t day, uint8_t month, uint16_t year); - -/** - * Gets the calculator's date - * - * @param day Pointer to variable to store day - * @param month Pointer to variable to store month - * @param year Pointer to variable to store year - */ -void boot_GetDate(uint8_t *day, uint8_t *month, uint16_t *year); - -/** - * Sets the calculator's time - * - * Performs checks to ensure time is within range - * @param seconds Seconds to set - * @param minutes Minutes to set - * @param hours Hours to set - */ -void boot_SetTime(uint8_t seconds, uint8_t minutes, uint8_t hours); - -/** - * Gets the calculator's time - * - * @param seconds Pointer to variable to store seconds - * @param minutes Pointer to variable to store minutes - * @param hours Pointer to variable to store hours - */ -void boot_GetTime(uint8_t *seconds, uint8_t *minutes, uint8_t *hours); - -/** - * Checks if past noon - * - * @returns True if past noon - */ -bool boot_IsAfterNoon(void); - -/** - * @returns Bootcode version major - */ -uint8_t boot_GetBootMajorVer(void); - -/** - * @returns Bootcode version minor - */ -uint8_t boot_GetBootMinorVer(void); - -/** - * @returns Hardware version - */ -uint8_t boot_GetHardwareVer(void); - -/** - * Turns all of VRAM into 0xFF (white) - */ -void boot_ClearVRAM(void); - -/** - * Checks if the [on] key was pressed - * - * @returns True is returned if [on] key was pressed - */ -bool boot_CheckOnPressed(void); - -/** - * Basically a reimplemented form of printf that prints to some debugging device - * - * @param string String to send to debug device - */ -void boot_DebugPrintf(const char *string); - -/** - * Turns off the calculator (probably not a good idea to use) - */ -void boot_TurnOff(void); - -/** - * Inserts a new line at the current cursor posistion on the homescreen - * Does not scroll. - */ -void boot_NewLine(void); - -/** - * @returns Current battery status - */ -uint8_t boot_GetBatteryStatus(void); - -/** - * Waits for ~10 ms - */ -void boot_WaitShort(void); - -/* - * OS Routines - */ - -/** - * Inserts a new line at the current cursor posistion on the homescreen - * Does scroll. - */ -void os_NewLine(void); - -/** - * Disables the OS cursor - */ -void os_DisableCursor(void); - -/** - * Enables the OS cursor - */ -void os_EnableCursor(void); - -/** - * Sets the foreground color used to draw text on the graphscreen - * @param color 565 BGR color to set text foreground to - */ -void os_SetDrawFGColor(uint24_t color); - -/** - * Gets the foreground color used to draw text on the graphscreen - * @returns 565 BGR color of text foreground - */ -uint24_t os_GetDrawFGColor(void); - -/** - * Sets the background color used to draw text on the graphscreen - * @param color 565 BGR color to set text background to - */ -void os_SetDrawBGColor(uint24_t color); - -/** - * Gets the background color used to draw text on the graphscreen - * - * @returns 565 BGR color of text nackground - * @warning Only useable in OS 5.2 and above; use at your own risk - */ -uint24_t os_GetDrawBGColor(void); - -/** - * Set the cursor posistion used on the homescreen - * - * @param curRow The row aligned offset - * @param curCol The column aligned offset - */ -void os_SetCursorPos(uint8_t curRow, uint8_t curCol); - -/** - * Gets the cursor posistion used on the homescreen - * - * @param curRow Pointer to store the row aligned offset - * @param curCol Pointer to store the column aligned offset - */ -void os_GetCursorPos(unsigned int *curRow, unsigned int *curCol); - -/** - * Selects the font to use when drawing on the graphscreen - * - * @param id - * 0: small font
- * 1: large monospace font - */ -void os_FontSelect(char id); - -/** - * Gets the font to use when drawing on the graphscreen - * - * @returns - * 0: small font
- * 1: large monospace font - */ -uint24_t os_FontGetID(void); - -/** - * @param string String to get pixel width of - * @returns The width of a string in the variable-width format - */ -uint24_t os_FontGetWidth(const char *string); - -/** - * @returns The height of the font characters - */ -uint24_t os_FontGetHeight(void); - -/** - * Draws text using the small font to the screen - * - * @param string String to draw - * @param col Column to start drawing at - * @param row Row to start drawing at - * @returns The end column - */ -uint24_t os_FontDrawText(const char *string, uint16_t col, uint8_t row); - -/** - * Draws transparent text using the small font to the screen - * - * @param string String to draw - * @param col Column to start drawing at - * @param row Row to start drawing at - * @returns The end column - */ -uint24_t os_FontDrawTransText(const char *string, uint16_t col, uint8_t row); - -/** - * Puts some text at the current homescreen cursor location - * - * @param string Test to put on homescreen - * @returns 1 if string fits on screen, 0 otherwise - */ -uint24_t os_PutStrFull(const char *string); - -/** - * Puts some text at the current homescreen cursor location - * - * @param string Test to put on homescreen - * @returns 1 if string fits on line, 0 otherwise - */ -uint24_t os_PutStrLine(const char *string); - -/** - * Set a particular flag variable - * - * @param offset Offset to particular flag in list - * @param set Bitmask of flag to set - */ -void os_SetFlagByte(int offset, uint8_t set); - -/** - * Get a particular flag variable - * - * @param offset Offset to particular flag in list - * @returns Bitmask of flag - */ -uint8_t os_GetFlagByte(int offset); - -/** - * Get amount of free ram in order to allocate extra ram - * - * @param free Set to start of free available ram - * @returns Size of available ram - */ -size_t os_MemChk(void **free); - -/** - * Throws an OS error - * - * @param error Error code to throw - */ -void os_ThrowError(uint8_t error); - -/** - * Gets a pointer to the system stats - * - * @returns - * [3] - Hardware version
- * [12-13] - Boot Version Major
- * [14] - Boot Version Minor
- * [15-16] - Boot Version Build
- * [28-37] - Calc ID (From certificate if exists)
- * [38-39] - Appears to be localization language - */ -void *os_GetSystemStats(void); - -/** - * This function can return twice (like setjmp). - * First return always happens with a return value of 0. - * Second return only happens if an error occurs before os_PopErrorHandler is called, - * with the errNo as the return value. - * - * @code - * int errno = os_PushErrorHandler(); - * if (errno) { - * // handle error, but no longer under the protection of the error handler so do not call os_PopErrorHandler() - * } else { - * // run some code that may error - * os_PopErrorHandler(); - * } - * @endcode - * - * @param routine Error handling routine - * @see os_PopErrorHandler - */ -int os_PushErrorHandler(void); - -/** - * Restores stack state after a call to os_PushErrorHandler. Must be called with stack in the same state - * as it was when os_PushErrorHandler returned with 0, and should not be called along the error path. - * - * @see os_PushErrorHandler - */ -void os_PopErrorHandler(void); - -/** - * @returns A pointer to symtable of the OS - */ -void *os_GetSymTablePtr(void); - -/** - * Creates an AppVar - * - * @param name Pointer to name of AppVar to create - * @param size Size of AppVar to create - * @returns A pointer to the AppVar data - * @note Returns NULL if creation failed for some reason, otherwise a pointer to the size bytes - */ -var_t *os_CreateAppVar(const char *name, uint16_t size); - -/** - * Returns next entry or NULL if no more entries, pass os_GetSymTablePtr() as first entry - */ -void *os_NextSymEntry(void *entry, uint24_t *type, uint24_t *nameLength, char *name, void **data); - -/** - * Locates a symbol in the symtable - * - * @param type Type of symbol to find - * @param name Pointer to name of symbol to find - * @param entry Can be NULL if you don't care - * @param data Can be NULL if you don't care - * @returns If file exists, returns 1 and sets entry and data, otherwise returns 0. - */ -int os_ChkFindSym(uint8_t type, const char *name, void **entry, void **data); - -/** - * Gets the Ans variable - * - * @param type This is set to the current variable type in ANS - * @returns Pointer to the data - * @note Returns NULL if Ans doesn't exist or type is NULL - */ -void *os_RclAns(uint8_t *type); - -/** - * Copies a real_t type - * - * @param src Pointer to original real_t - * @returns Copied real_t - */ -real_t os_RealCopy(const real_t *src); - -/* Unary operations used to interact with the OS math functions */ -real_t os_RealAcosRad(const real_t *arg); -real_t os_RealAsinRad(const real_t *arg); -real_t os_RealAtanRad(const real_t *arg); -real_t os_RealCosRad(const real_t *arg); -real_t os_RealRadToDeg(const real_t *arg); -real_t os_RealExp(const real_t *arg); -real_t os_RealFloor(const real_t *arg); -real_t os_RealFrac(const real_t *arg); -real_t os_RealRoundInt(const real_t *arg); -real_t os_RealLog(const real_t *arg); -real_t os_RealNeg(const real_t *arg); -real_t os_RealDegToRad(const real_t *arg); -real_t os_RealInv(const real_t *arg); -real_t os_RealSinRad(const real_t *arg); -real_t os_RealSqrt(const real_t *arg); -real_t os_RealTanRad(const real_t *arg); -real_t os_RealInt(const real_t *arg); -cplx_t os_CplxSquare(const cplx_t *arg); - -/* Binary operations used to interact with the OS math functions */ -real_t os_RealAdd(const real_t *arg1, const real_t *arg2); -real_t os_RealDiv(const real_t *arg1, const real_t *arg2); -real_t os_RealGcd(const real_t *arg1, const real_t *arg2); -real_t os_RealLcm(const real_t *arg1, const real_t *arg2); -real_t os_RealMax(const real_t *arg1, const real_t *arg2); -real_t os_RealMin(const real_t *arg1, const real_t *arg2); -real_t os_RealMul(const real_t *arg1, const real_t *arg2); -real_t os_RealNcr(const real_t *total, const real_t *num); -real_t os_RealNpr(const real_t *total, const real_t *num); -real_t os_RealPow(const real_t *base, const real_t *exp); -real_t os_RealRandInt(const real_t *min, const real_t *max); -real_t os_RealMod(const real_t *arg1, const real_t *arg2); -real_t os_RealSub(const real_t *arg1, const real_t *arg2); - -/** - * Rounds a real_t - * - * @note digits must be in the range 0 - 9 - */ -real_t os_RealRound(const real_t *arg, char digits); - -/** - * Compares two real_t - * - * @returns -1, 0, or 1 depending on the comparison - */ -int os_RealCompare(const real_t *arg1, const real_t *arg2); - -/** - * Converts a real_t to an integer - * @note Saturates on overflow - */ -int24_t os_RealToInt24(const real_t *arg); - -/** - * Converts an integer to a real_t - * @note Saturates on overflow - */ -real_t os_Int24ToReal(int24_t arg); - -/** - * Converts a real_t to a float - * @note Saturates on overflow - */ -float os_RealToFloat(const real_t *arg); - -/** - * Converts an float to a real_t - * @note Saturates on overflow - */ -real_t os_FloatToReal(float arg); - -/** This converts a ti-float to a ti-ascii string. - * - * @param result Zero terminated string copied to this address - * @param arg Real to convert - * @param maxLength - * <=0: use default max length (14)
- * >0: max length of result, minimum of 6 - * @param mode: - * 0: Use current mode for everything (digits ignored)
- * 1: Normal mode
- * 2: Sci mode
- * 3: Eng mode
- * >4: Use current Normal/Sci/Eng mode (digits still used)
- * @param digits - * -1: Float mode
- * 0-9: Fix # mode
- * @returns Length of result - */ -int os_RealToStr(char *result, const real_t *arg, int8_t maxLength, uint8_t mode, int8_t digits); - -/** - * This converts a ti-ascii string to a ti-float. - * - * String format regexp: / *[-\032+]?[0-9]*(\.[0-9]*)?([eE\033][-\032+]?[0-9]*)?/ - * @param string TI-ascii string to convert - * @param end If non-null, pointer to end of parsed number is stored here - * @returns resulting TI-float; on exponent overflow this is +-9.9999999999999e99 - */ -real_t os_StrToReal(const char *string, char **end); - -/** - * High 8 is unsigned offset, low 8 is bits to test - */ -int os_TestFlagBits(uint16_t offset_pattern); -void os_SetFlagBits(int16_t offset_pattern); -void os_ResetFlagBits(int16_t offset_pattern); - -/** - * Custom implementation input routine for use in conjunction with the TIOS. - * It is HIGHLY recommended you implement your own routine, this routine has - * some quirks. It is good enough for getting basic input however. - * - * @param string Input prompt string to be displayed to the user - * @param buf Storage location to store input string - * @param bufsize Available storage size for input string. -1 for null termination. - * @returns None - */ -void os_GetStringInput(char *string, char *buf, size_t bufsize); - -/** - * Gets a key from the OS - * - * @returns Key code - * @returns Extended key code in high byte - */ -uint16_t os_GetKey(void); - -/** - * Disable text buffering on the homescreen. C programs use this area by default for the BSS / Heap. - */ -void os_DisableHomeTextBuffer(void); - -/** - * Enables text buffering on the homescreen. C programs use this area by default for the BSS / Heap. - */ -void os_EnableHomeTextBuffer(void); - -/** - * @brief Scan code type - */ -typedef uint8_t sk_key_t; - -/** - * Performs an OS call to get the keypad scan code - * - * You can also use this function to get input from the user as a string like this: - * @code - * const char *chars = "\0\0\0\0\0\0\0\0\0\0\"WRMH\0\0?[VQLG\0\0:ZUPKFC\0 YTOJEB\0\0XSNIDA\0\0\0\0\0\0\0\0"; - * uint8_t key, i = 0; - * char buffer[50]; - * - * while((key = os_GetCSC()) != sk_Enter) { - * if(chars[key]) { - * buffer[i++] = chars[key]; - * } - * } - * @endcode - * Feel free to modify the string to suit your needs. - * @returns Key scan code - */ -sk_key_t os_GetCSC(void); - -/** - * Runs the calulator at 6 MHz - */ -void boot_Set6MHzMode(void); - -/** - * Runs the calulator at 48 MHz - */ -void boot_Set48MHzMode(void); - -/** - * Runs the calulator at 6 MHz (saves interrupt status) - */ -void boot_Set6MHzModeI(void); - -/** - * Runs the calulator at 48 MHz (saves interrupt status) - */ -void boot_Set48MHzModeI(void); - -/** - * Executes the assembly routine _ForceCmdNoChar - */ -void os_ForceCmdNoChar(void); - -/** - * Use this function to call assembly functions in the OS and Bootcode - * i.e. _OS( asm_ArcChk ); - */ -void _OS(void (*function)(void)); - -/** - * Assembly routine to scroll homescreen up - */ -void asm_MoveUp(void); - -/** - * Assembly routine to scroll homescreen down - */ -void asm_MoveDown(void); - -/** - * Assembly routine to move row and column posistion to (0,0) - */ -void asm_HomeUp(void); - -/** - * Assembly routine to turn on the Run Indicator - */ -void asm_RunIndicOn(void); - -/** - * Assembly routine to turn off the Run Indicator - */ -void asm_RunIndicOff(void); - -/** - * Assembly routine to turn off APD - */ -void asm_DisableAPD(void); - -/** - * Assembly routine to turn on APD - */ -void asm_EnableAPD(void); - -/** - * Assembly routine checks the amount of free archive - */ -void asm_ArcChk(void); - -/** - * Assembly routine to clear the homescreen lcd - */ -void asm_ClrLCDFull(void); - -/** - * Assembly routine to clear the homescreen lcd. - * Accounts for split screen - */ -void asm_ClrLCD(void); - -/** - * Assembly routine to redraw the status bar - */ -void asm_DrawStatusBar(void); - -/** - * Invalidate and clear stat variables - */ -void asm_DelRes(void); - -/** - * Invalidate and clear text shadow area - */ -void asm_ClrTxtShd(void); - -/** - * Colors used by the OS - */ -typedef enum { - OS_COLOR_BLUE = 10, - OS_COLOR_RED, - OS_COLOR_BLACK, - OS_COLOR_MAGENTA, - OS_COLOR_GREEN, - OS_COLOR_ORANGE, - OS_COLOR_BROWN, - OS_COLOR_NAVY, - OS_COLOR_LTBLUE, - OS_COLOR_YELLOW, - OS_COLOR_WHITE, - OS_COLOR_LTGRAY, - OS_COLOR_MEDGRAY, - OS_COLOR_GRAY, - OS_COLOR_DARKGRAY -} os_colors_t; - -#define os_RamStart ((uint8_t*)0xD00000) -#define os_Flags ((uint8_t*)0xD00080) -#define os_TextFlags (*(uint8_t*)0xD00080) -#define os_ApdFlags (*(uint8_t*)0xD00088) -#define os_RclFlags (*(uint8_t*)0xD0008E) - -#define os_AppData ((uint8_t*)0xD00429) - -#define os_KbdScanCode (*(uint8_t*)0xD00587) -#define os_KbdLGSC (*(uint8_t*)0xD00588) -#define os_KbdPSC (*(uint8_t*)0xD00589) -#define os_KbdWUR (*(uint8_t*)0xD0058A) -#define os_KbdDebncCnt (*(uint8_t*)0xD0058B) -#define os_KbdKey (*(uint8_t*)0xD0058C) -#define os_KbdGetKy (*(uint8_t*)0xD0058D) -#define os_KeyExtend (*(uint8_t*)0xD0058E) -#define os_Brightness (*(uint8_t*)0xD0058F) -#define os_ApdSubTimer (*(uint8_t*)0xD00590) -#define os_ApdTimer (*(uint8_t*)0xD00591) -#define os_CurRow (*(uint8_t*)0xD00595) -#define os_CurCol (*(uint8_t*)0xD00596) - -#define os_OP1 ((uint8_t*)0xD005F8) -#define os_OP2 ((uint8_t*)0xD00603) -#define os_OP3 ((uint8_t*)0xD0060E) -#define os_OP4 ((uint8_t*)0xD00619) -#define os_OP5 ((uint8_t*)0xD00624) -#define os_OP6 ((uint8_t*)0xD0062F) -#define os_OP7 ((uint8_t*)0xD0063A) - -#define os_ProgToEdit ((char*)0xD0065B) -#define os_NameBuff ((char*)0xD00663) - -#define os_TextShadow ((uint8_t*)0xD006C0) /**< Text buffer 260 bytes */ - -#define os_PromptRow (*(uint8_t*)0xD00800) -#define os_PromptCol (*(uint8_t*)0xD00801) -#define os_PromptIns (*(uint8_t*)0xD00802) -#define os_PromptShift (*(uint8_t*)0xD00803) -#define os_PromptRet (*(uint8_t*)0xD00804) -#define os_PromptValid (*(uint8_t*)0xD00807) - -#define os_PenCol (*(uint24_t*)0xD008D2) /**< Small font column location */ -#define os_PenRow (*(uint8_t*)0xD008D5) /**< Small font row location */ - -#define os_StatVars ((uint8_t*)0xD01191) -#define os_AsmPrgmSize (*(uint16_t*)0xD0118C) /**< Current size of executing program */ - -#define os_uXMin (*(real_t*)0xD01D61) -#define os_uXMax (*(real_t*)0xD01D6A) -#define os_uXScl (*(real_t*)0xD01D73) -#define os_uYMin (*(real_t*)0xD01D7C) -#define os_uYMax (*(real_t*)0xD01D85) -#define os_uYScl (*(real_t*)0xD01D8E) -#define os_uThetaMin (*(real_t*)0xD01D97) -#define os_uThetaMax (*(real_t*)0xD01DA0) -#define os_uThetaStep (*(real_t*)0xD01DA9) -#define os_uTmin (*(real_t*)0xD01DB2) -#define os_uTmax (*(real_t*)0xD01DBB) -#define os_uTStep (*(real_t*)0xD01DC4) -#define os_uPlotStart (*(real_t*)0xD01DCD) -#define os_unMax (*(real_t*)0xD01DD6) -#define os_uu0 (*(real_t*)0xD01DDF) -#define os_uv0 (*(real_t*)0xD01DE8) -#define os_unMin (*(real_t*)0xD01DF1) -#define os_uu02 (*(real_t*)0xD01DFA) -#define os_uv02 (*(real_t*)0xD01E03) -#define os_uw0 (*(real_t*)0xD01E0C) -#define os_uPlotStep (*(real_t*)0xD01E15) -#define os_uXres (*(real_t*)0xD01E1E) -#define os_uw02 (*(real_t*)0xD01E27) -#define os_XMin (*(real_t*)0xD01E33) -#define os_XMax (*(real_t*)0xD01E3C) -#define os_XScl (*(real_t*)0xD01E45) -#define os_YMin (*(real_t*)0xD01E4E) -#define os_YMax (*(real_t*)0xD01E57) -#define os_YScl (*(real_t*)0xD01E60) -#define os_ThetaMin (*(real_t*)0xD01E69) -#define os_ThetaMax (*(real_t*)0xD01E72) -#define os_ThetaStep (*(real_t*)0xD01E7B) -#define os_TMinPar (*(real_t*)0xD01E84) -#define os_TMaxPar (*(real_t*)0xD01E8D) -#define os_TStep (*(real_t*)0xD01E96) -#define os_PlotStart (*(real_t*)0xD01E9F) -#define os_NMax (*(real_t*)0xD01EA8) -#define os_u0 (*(real_t*)0xD01EB1) -#define os_V0 (*(real_t*)0xD01EBA) -#define os_NMin (*(real_t*)0xD01EC3) -#define os_u02 (*(real_t*)0xD01ECC) -#define os_V02 (*(real_t*)0xD01ED5) -#define os_W0 (*(real_t*)0xD01EDE) -#define os_PlotStep (*(real_t*)0xD01EE7) -#define os_XResO (*(real_t*)0xD01EF0) -#define os_W02 (*(real_t*)0xD01EF9) -#define os_un1 (*(real_t*)0xD01F02) -#define os_un2 (*(real_t*)0xD01F0B) -#define os_Vn1 (*(real_t*)0xD01F14) -#define os_Vn2 (*(real_t*)0xD01F1D) -#define os_Wn1 (*(real_t*)0xD01F26) -#define os_Wn2 (*(real_t*)0xD01F2F) -#define os_Fin_N (*(real_t*)0xD01F38) -#define os_Fin_I (*(real_t*)0xD01F41) -#define os_Fin_PV (*(real_t*)0xD01F4A) -#define os_Fin_PMT (*(real_t*)0xD01F53) -#define os_Fin_FV (*(real_t*)0xD01F5C) -#define os_Fin_PY (*(real_t*)0xD01F65) -#define os_Fin_CY (*(real_t*)0xD01F6E) -#define os_Cal_N (*(real_t*)0xD01F77) -#define os_Cal_I (*(real_t*)0xD01F80) -#define os_Cal_PV (*(real_t*)0xD01F89) -#define os_Cal_PMT (*(real_t*)0xD01F92) -#define os_Cal_FV (*(real_t*)0xD01F9B) -#define os_Cal_PY (*(real_t*)0xD01FA4) - -#define os_CmdShadow ((uint8_t*)0xD0232D) - -#define os_Y1LineType (*(uint8_t*)0xD024BF) -#define os_Y2LineType (*(uint8_t*)0xD024C0) -#define os_Y3LineType (*(uint8_t*)0xD024C1) -#define os_Y4LineType (*(uint8_t*)0xD024C2) -#define os_Y5LineType (*(uint8_t*)0xD024C3) -#define os_Y6LineType (*(uint8_t*)0xD024C4) -#define os_Y7LineType (*(uint8_t*)0xD024C5) -#define os_Y8LineType (*(uint8_t*)0xD024C6) -#define os_Y9LineType (*(uint8_t*)0xD024C7) -#define os_Y0LineType (*(uint8_t*)0xD024C8) -#define os_Para1LineType (*(uint8_t*)0xD024C9) -#define os_Para2LineType (*(uint8_t*)0xD024CA) -#define os_Para3LineType (*(uint8_t*)0xD024CB) -#define os_Para4LineType (*(uint8_t*)0xD024CC) -#define os_Para5LineType (*(uint8_t*)0xD024CD) -#define os_Para6LineType (*(uint8_t*)0xD024CE) -#define os_Polar1LineType (*(uint8_t*)0xD024CF) -#define os_Polar2LineType (*(uint8_t*)0xD024D0) -#define os_Polar3LineType (*(uint8_t*)0xD024D1) -#define os_Polar4LineType (*(uint8_t*)0xD024D2) -#define os_Polar5LineType (*(uint8_t*)0xD024D3) -#define os_Polar6LineType (*(uint8_t*)0xD024D4) -#define os_SecULineType (*(uint8_t*)0xD024D5) -#define os_SecVLineType (*(uint8_t*)0xD024D6) -#define os_SecWLineType (*(uint8_t*)0xD024D7) -#define os_Y1LineColor (*(uint8_t*)0xD024D8) -#define os_Y2LineColor (*(uint8_t*)0xD024D9) -#define os_Y3LineColor (*(uint8_t*)0xD024DA) -#define os_Y4LineColor (*(uint8_t*)0xD024DB) -#define os_Y5LineColor (*(uint8_t*)0xD024DC) -#define os_Y6LineColor (*(uint8_t*)0xD024DD) -#define os_Y7LineColor (*(uint8_t*)0xD024DE) -#define os_Y8LineColor (*(uint8_t*)0xD024DF) -#define os_Y9LineColor (*(uint8_t*)0xD024E0) -#define os_Y0LineColor (*(uint8_t*)0xD024E1) -#define os_Para1LineColor (*(uint8_t*)0xD024E2) -#define os_Para2LineColor (*(uint8_t*)0xD024E3) -#define os_Para3LineColor (*(uint8_t*)0xD024E4) -#define os_Para4LineColor (*(uint8_t*)0xD024E5) -#define os_Para5LineColor (*(uint8_t*)0xD024E6) -#define os_Para6LineColor (*(uint8_t*)0xD024E7) -#define os_Polar1LineColor (*(uint8_t*)0xD024E8) -#define os_Polar2LineColor (*(uint8_t*)0xD024E9) -#define os_Polar3LineColor (*(uint8_t*)0xD024EA) -#define os_Polar4LineColor (*(uint8_t*)0xD024EB) -#define os_Polar5LineColor (*(uint8_t*)0xD024EC) -#define os_Polar6LineColor (*(uint8_t*)0xD024ED) -#define os_SecULineColor (*(uint8_t*)0xD024EE) -#define os_SecVLineColor (*(uint8_t*)0xD024EF) -#define os_SecWLineColor (*(uint8_t*)0xD024F0) - -#define os_AppErr1 ((char*)0xD025A9) /**< String [1] for custom error */ -#define os_AppErr2 ((char*)0xD025B6) /**< String [2] for custom error */ - -#define os_CursorHookPtr (*(uint24_t*)0xD025D5) -#define os_LibraryHookPtr (*(uint24_t*)0xD025D8) -#define os_RawKeyHookPtr (*(uint24_t*)0xD025DB) -#define os_GetKeyHookPtr (*(uint24_t*)0xD025DE) -#define os_HomescreenHookPtr (*(uint24_t*)0xD025E1) -#define os_WindowHookPtr (*(uint24_t*)0xD025E4) -#define os_GraphHookPtr (*(uint24_t*)0xD025E7) -#define os_YEqualsHookPtr (*(uint24_t*)0xD025EA) -#define os_FontHookPtr (*(uint24_t*)0xD025ED) -#define os_RegraphHookPtr (*(uint24_t*)0xD025F0) -#define os_GraphicsHookPtr (*(uint24_t*)0xD025F3) -#define os_TraceHookPtr (*(uint24_t*)0xD025F6) -#define os_ParserHookPtr (*(uint24_t*)0xD025F9) -#define os_AppChangeHookPtr (*(uint24_t*)0xD025FC) -#define os_Catalog1HookPtr (*(uint24_t*)0xD025FF) -#define os_HelpHookPtr (*(uint24_t*)0xD02602) -#define os_CxRedispHookPtr (*(uint24_t*)0xD02605) -#define os_MenuHookPtr (*(uint24_t*)0xD02608) -#define os_Catalog2HookPtr (*(uint24_t*)0xD0260B) -#define os_TokenHookPtr (*(uint24_t*)0xD0260E) -#define os_LocalizeHookPtr (*(uint24_t*)0xD02611) -#define os_SilentLinkHookPtr (*(uint24_t*)0xD02614) -#define os_ActiveUSBHookPtr (*(uint24_t*)0xD0261A) - -#define os_TempFreeArc (*(uint24_t*)0xD02655) /**< Set after asm_ArcChk call */ - -#define os_TextBGcolor (*(uint16_t*)0xD02688) /**< Large font background color */ -#define os_TextFGcolor (*(uint16_t*)0xD0268A) /**< Large font foreground color */ - -#define os_DrawBGColor (*(uint16_t*)0xD026AA) /**< Small font background color */ -#define os_DrawFGColor (*(uint16_t*)0xD026AC) /**< Small font foreground color */ -#define os_DrawColorCode (*(uint8_t*)0xD026AE) - -#define os_BatteryStatus (*(uint8_t*)0xD02A86) - -#define os_GraphBGColor (*(uint16_t*)0xD02A98) /**< Graph background 565 color */ - -#define os_FillRectColor (*(uint16_t*)0xD02AC0) -#define os_StatusBarBGColor (*(uint16_t*)0xD02ACC) /**< Status bar 565 color */ - -#define os_TmpYears (*(real_t*)0xD02B01) -#define os_TmpMonths (*(real_t*)0xD02B0A) -#define os_TmpDays (*(real_t*)0xD02B13) -#define os_TmpHours (*(real_t*)0xD02B1C) -#define os_TmpMinutes (*(real_t*)0xD02B25) - -#define os_RamCode ((uint8_t*)0xD18C7C) /**< 1023 bytes free ram */ - -/* - * TI-OS Token definitions - */ - -#define tToDMS 0x01 -#define tToDEC 0x02 -#define tToAbc 0x03 -#define tStore 0x04 -#define tBoxPlot 0x05 -#define tLBrack 0x06 -#define tRBrack 0x07 -#define tLBrace 0x08 -#define tRBrace 0x09 -#define tFromRad 0x0A -#define tFromDeg 0x0B -#define tRecip 0x0C -#define tSqr 0x0D -#define tTrnspos 0x0E -#define tCube 0x0F -#define tLParen 0x10 -#define tRParen 0x11 -#define tRound 0x12 -#define tPxTst 0x13 -#define tAug 0x14 -#define tRowSwap 0x15 -#define tRowPlu 0x16 -#define tmRow 0x17 -#define tmRowPlus 0x18 -#define tMax 0x19 // 'max' -#define tMin 0x1A // 'min' -#define tRToPr 0x1B // 'R>Pr' -#define tRToPo 0x1C // 'R>Po' -#define tPToRx 0x1D // 'P>Rx' -#define tPToRy 0x1E // 'P>Ry' -#define tMedian 0x1F // 'MEDIAN' -#define tRandM 0x20 // 'randM' -#define tMean 0x21 // 'MEAN' -#define tRoot 0x22 // 'ROOT' -#define tSeries 0x23 // 'seq' -#define tFnInt 0x24 // 'fnInt' -#define tNDeriv 0x25 // 'fnIr' -#define tEvalF 0x26 -#define tFmin 0x27 -#define tFmax 0x28 -#define tSpace 0x29 // ' ' -#define tString 0x2A // '"' -#define tComma 0x2B // ',' -#define tii 0x2C // 'i' -#define tFact 0x2D // '!' -#define tCubicR 0x2E -#define tQuartR 0x2F -#define t0 0x30 -#define t1 0x31 -#define t2 0x32 -#define t3 0x33 -#define t4 0x34 -#define t5 0x35 -#define t6 0x36 -#define t7 0x37 -#define t8 0x38 -#define t9 0x39 -#define tDecPt 0x3A // '.' -#define tee 0x3B // 'e' -#define tOr 0x3C // '_or_' -#define tXor 0x3D -#define tColon 0x3E // ':' -#define tEnter 0x3F -#define tAnd 0x40 // '_and_' -#define tA 0x41 -#define tB 0x42 -#define tC 0x43 -#define tD 0x44 -#define tE 0x45 -#define tF 0x46 -#define tG 0x47 -#define tH 0x48 -#define tI 0x49 -#define tJ 0x4A -#define tK 0x4B -#define tL 0x4C -#define tM 0x4D -#define tN 0x4E -#define tO 0x4F -#define tP 0x50 -#define tQ 0x51 -#define tR 0x52 -#define tS 0x53 -#define tT 0x54 -#define tU 0x55 -#define tV 0x56 -#define tW 0x57 -#define tX 0x58 -#define tY 0x59 -#define tZ 0x5A -#define tTheta 0x5B -#define tProg 0x5F - -/* - * Mode settings tokens - */ -#define tRad 0x64 // 'Radian' -#define tDeg 0x65 // 'Degree' -#define tNormF 0x66 // 'Normal' -#define tSci 0x67 // 'Sci' -#define tEng 0x68 // 'Eng' -#define tFloat 0x69 // 'Float' -#define tFix 0x73 // 'Fix_' -#define tSplitOn 0x74 -#define tFullScreen 0x75 -#define tStndrd 0x76 // 'Func' -#define tParam 0x77 // 'Param' -#define tPolar 0x78 // 'Pol' -#define tSeqG 0x79 // ;79h -#define tAFillOn 0x7A // 'AUTO FILL ON' -#define tAFillOff 0x7B // 'AutoFill OFF' -#define tACalcOn 0x7C -#define tACalcOff 0x7D - -#define tEQ 0x6A // '=' -#define tLT 0x6B // '<' -#define tGT 0x6C // '>' -#define tLE 0x6D // LLE -#define tGE 0x6E // LGE -#define tNE 0x6F // LNE -#define tAdd 0x70 // '+' -#define tSub 0x71 // '-' -#define tAns 0x72 -#define tMul 0x82 // '*' -#define tDiv 0x83 // '/' - -#define tBoxIcon 0x7F -#define tCrossIcon 0x80 -#define tDotIcon 0x81 - -#define tTrace 0x84 // 'Trace' -#define tClDrw 0x85 // 'ClrDraw' -#define tZoomStd 0x86 // 'ZStd' -#define tZoomtrg 0x87 // 'Ztrg' -#define tZoomBox 0x88 // 'ZBOX' -#define tZoomIn 0x89 // 'ZIn' -#define tZoomOut 0x8A // 'ZOut' -#define tZoomSqr 0x8B // 'ZSqr' -#define tZoomInt 0x8C // 'ZInt' -#define tZoomPrev 0x8D // 'ZPrev' -#define tZoomDec 0x8E // 'ZDecm' -#define tZoomStat 0x8F // 'ZStat -#define tUsrZm 0x90 // 'ZRcl' -#define tPrtScrn 0x91 // 'PrtScrn' -#define tZoomSto 0x92 // 'ZSto' -#define tText 0x93 - -#define tnPr 0x94 // '_nPr_' -#define tnCr 0x95 // '_nCr_' - -// Graph Commands -#define tYOn 0x96 // 'FnOn_' -#define tYOff 0x97 // 'FnOff_' -#define tStPic 0x98 // 'StPic_' -#define tRcPic 0x99 // 'RcPic_' -#define tStoDB 0x9A // 'StGDB_' -#define tRclDB 0x9B // 'RcGDB_' -#define tLine 0x9C // 'Line' -#define tVert 0x9D // 'Vert_' -#define tPtOn 0x9E // 'PtOn' -#define tPtOff 0x9F // 'PtOff' -#define tPtChg 0xA0 // 'PtChg' -#define tPXOn 0xA1 -#define tPXOff 0xA2 -#define tPXChg 0xA3 -#define tShade 0xA4 // 'Shade' -#define tCircle 0xA5 // 'Circle' -#define tHorz 0xA6 // 'HORIZONTAL' -#define tTanLn 0xA7 // 'TanLn' -#define tDrInv 0xA8 // 'DrInv_' -#define tDrawF 0xA9 // 'DrawF_' - -// Functions with no argument -#define tRand 0xAB // 'rand' -#define tPi 0xAC // Lpi -#define tGetKey 0xAD // 'getKy' -#define tAPost 0xAE // ''' -#define tQuest 0xAF // '?' -#define tChs 0xB0 -#define tInt 0xB1 -#define tAbs 0xB2 -#define tDet 0xB3 -#define tIdent 0xB4 -#define tDim 0xB5 -#define tSum 0xB6 -#define tProd 0xB7 -#define tNot 0xB8 -#define tIPart 0xB9 -#define tFPart 0xBA - -// New 2 Byte Tokens -#define t2ByteTok 0xBB -#define tSqrt 0xBC -#define tCubRt 0xBD -#define tLn 0xBE -#define tExp 0xBF -#define tLog 0xC0 -#define tALog 0xC1 -#define tSin 0xC2 -#define tASin 0xC3 -#define tCos 0xC4 -#define tACos 0xC5 -#define tTan 0xC6 -#define tATan 0xC7 -#define tSinH 0xC8 -#define tASinH 0xC9 -#define tCoshH 0xCA -#define tACosH 0xCB -#define tTanH 0xCC -#define tATanH 0xCD - -// Some Programming Commands -#define tIf 0xCE // 'If_' -#define tThen 0xCF // 'Then_' -#define tElse 0xD0 // 'Else_' -#define tWhile 0xD1 // 'While_' -#define tRepeat 0xD2 // 'Repeat_' -#define tFor 0xD3 // 'For_' -#define tEnd 0xD4 // 'End' -#define tReturn 0xD5 // 'Return' -#define tLbl 0xD6 // 'Lbl_' -#define tGoto 0xD7 // 'Goto_' -#define tPause 0xD8 // 'Pause_' -#define tStop 0xD9 // 'Stop' -#define tISG 0xDA // 'IS>' -#define tDSL 0xDB // 'DS<' -#define tInput 0xDC // 'Input_' -#define tPrompt 0xDD // 'Prompt_' -#define tDisp 0xDE // 'Disp_' -#define tDispG 0xDF // 'DispG' -#define tOutput 0xE0 // 'Outpt' -#define tClLCD 0xE1 // 'ClLCD' -#define tConst 0xE2 // 'Fill' -#define tSortA 0xE3 // 'sortA_' -#define tSortD 0xE4 // 'sortD_' -#define tDispTab 0xE5 // 'Disp Table -#define tMenu 0xE6 // 'Menu' -#define tSendMBL 0xE7 // 'Send' -#define tGetMBL 0xE8 // 'Get' - -// Stat Plot Commands -#define tPlotOn 0xE9 // 'PLOTSON' -#define tPlotOff 0xEA // 'PLOTSOFF -#define tListName 0xEB // List Designator -#define tPlot1 0xEC -#define tPlot2 0xED -#define tPlot3 0xEE -#define tUnused01 0xEF // available? -#define tPower 0xF0 // '^' -#define tXRoot 0xF1 // LsupX,Lroot -#define tOneVar 0xF2 // 'OneVar_' -#define tTwoVar 0xF3 -#define tLR 0xF4 // 'LinR(A+BX)' -#define tLRExp 0xF5 // 'ExpR_' -#define tLRLn 0xF6 // 'LnR_' -#define tLRPwr 0xF7 // 'PwrR_' -#define tMedMed 0xF8 -#define tQuad 0xF9 -#define tClrLst 0xFA // 'Clear List' -#define tClrTbl 0xFB // 'Clear Table' -#define tHist 0xFC // 'Hist_' -#define txyLine 0xFD // 'xyline_' -#define tScatter 0xFE // 'Scatter_' -#define tLR1 0xFF // 'LINR(AX+B)' - -#define tGFormat 0x7E -// 2nd Half Of Graph Format Tokens -#define tSeq 0x00 // 'SeqG' -#define tSimulG 0x01 // 'SimulG' -#define tPolarG 0x02 // 'PolarGC' -#define tRectG 0x03 // 'RectGC' -#define tCoordOn 0x04 // 'CoordOn' -#define tCoordOff 0x05 // 'CoordOff' -#define tDrawLine 0x06 // 'DrawLine' -#define tDrawDot 0x07 // 'DrawDot' -#define tAxisOn 0x08 // 'AxesOn' -#define tAxisOff 0x09 // 'AxesOff' -#define tGridOn 0x0A // 'GridOn' -#define tGridOff 0x0B // 'GridOff' -#define tLblOn 0x0C // 'LabelOn' -#define tLblOff 0x0D // 'LabelOff' -#define tWebOn 0x0E // 'WebOn' -#define tWebOff 0x0F // 'WebOFF' -#define tuv 0x10 // U vs V -#define tvw 0x11 // V vs W -#define tuw 0x12 // U vs W - -#define tVarMat 0x5C -// 2nd Half Of User Matrix Tokens -#define tMatA 0x00 // MAT A -#define tMatB 0x01 // MAT B -#define tMatC 0x02 // MAT C -#define tMatD 0x03 // MAT D -#define tMatE 0x04 // MAT E -#define tMatF 0x05 // MAT F -#define tMatG 0x06 // MAT G -#define tMatH 0x07 // MAT H -#define tMatI 0x08 // MAT I -#define tMatJ 0x09 // MAT J - -#define tVarLst 0x5D -// 2nd Half Of User List Tokens -#define tL1 0x00 // LIST 1 -#define tL2 0x01 // LIST 2 -#define tL3 0x02 // LIST 3 -#define tL4 0x03 // LIST 4 -#define tL5 0x04 // LIST 5 -#define tL6 0x05 // LIST 6 - -#define tVarEqu 0x5E -// 2nd Half Of User Equation Tokens - -// Y Equations have bit 4 set -#define tY1 0x10 // Y1 -#define tY2 0x11 // Y2 -#define tY3 0x12 // Y3 -#define tY4 0x13 // Y4 -#define tY5 0x14 // Y5 -#define tY6 0x15 // Y6 -#define tY7 0x16 // Y7 -#define tY8 0x17 // Y8 -#define tY9 0x18 // Y9 -#define tY0 0x19 // Y0 - -// Param Equations Have Bit 5 Set -#define tX1T 0x20 // X1t -#define tY1T 0x21 // Y1t -#define tX2T 0x22 // X2t -#define tY2T 0x23 // Y2t -#define tX3T 0x24 // X3t -#define tY3T 0x25 // Y3t -#define tX4T 0x26 // X4t -#define tY4T 0x27 // Y4t -#define tX5T 0x28 // X5t -#define tY5T 0x29 // Y5t -#define tX6T 0x2A // X6t -#define tY6T 0x2B // Y6t - -// Polar Equations Have Bit 6 Set -#define tR1 0x40 // R1 -#define tR2 0x41 // R2 -#define tR3 0x42 // R3 -#define tR4 0x43 // R4 -#define tR5 0x44 // R5 -#define tR6 0x45 // R6 - -// Recursion Equations Have Bit 7 Set -#define tun 0x80 // Un -#define tvn 0x81 // Vn -#define twn 0x82 // Wn - -#define tVarPict 0x60 -// 2nd Half User Picture Tokens -#define tPic1 0x00 // PIC1 -#define tPic2 0x01 // PIC2 -#define tPic3 0x02 // PIC3 -#define tPic4 0x03 // PIC4 -#define tPic5 0x04 // PIC5 -#define tPic6 0x05 // PIC6 -#define tPic7 0x06 // PIC7 -#define tPic8 0x07 // PIC8 -#define tPic9 0x08 // PIC9 -#define tPic0 0x09 // PIC0 - -#define tVarGDB 0x61 -// 2nd Half User Graph Database Tokens -#define tGDB1 0x00 // GDB1 -#define tGDB2 0x01 // GDB2 -#define tGDB3 0x02 // GDB3 -#define tGDB4 0x03 // GDB4 -#define tGDB5 0x04 // GDB5 -#define tGDB6 0x05 // GDB6 -#define tGDB7 0x06 // GDB7 -#define tGDB8 0x07 // GDB8 -#define tGDB9 0x08 // GDB9 -#define tGDB0 0x09 // GDB0 - -#define tVarStrng 0xAA -// 2nd Half Of String Vars -#define tStr1 0x00 -#define tStr2 0x01 -#define tStr3 0x02 -#define tStr4 0x03 -#define tStr5 0x04 -#define tStr6 0x05 -#define tStr7 0x06 -#define tStr8 0x07 -#define tStr9 0x08 -#define tStr0 0x09 - -#define tVarOut 0x62 -// 2nd Half Of System Output Only Variables -#define tRegEq 0x01 // REGRESSION EQUATION -#define tStatN 0x02 // STATISTICS N -#define tXMean 0x03 // X MEAN -#define tSumX 0x04 // SUM(X) -#define tSumXSqr 0x05 // SUM(X^2) -#define tStdX 0x06 // STANDARD DEV X -#define tStdPX 0x07 // STANDARD DEV POP X -#define tMinX 0x08 // Min X VALUE -#define tMaxX 0x09 // Max X VALUE -#define tMinY 0x0A // Min Y VALUE -#define tMaxY 0x0B // Max Y VALUE -#define tYmean 0x0C // Y MEAN -#define tSumY 0x0D // SUM(Y) -#define tSumYSqr 0x0E // SUM(Y^2) -#define tStdY 0x0F // STANDARD DEV Y -#define tStdPY 0x10 // STANDARD DEV POP Y -#define tSumXY 0x11 // SUM(XY) -#define tCorr 0x12 // CORRELATION -#define tMedX 0x13 // MED(X) -#define tQ1 0x14 // 1ST QUADRANT OF X -#define tQ3 0x15 // 3RD QUADRANT OF X -#define tQuadA 0x16 // 1ST TERM OF QUAD POLY REG/ Y-INT -#define tQuadB 0x17 // 2ND TERM OF QUAD POLY REG/ SLOPE -#define tQuadC 0x18 // 3RD TERM OF QUAD POLY REG -#define tCubeD 0x19 // 4TH TERM OF CUBIC POLY REG -#define tQuartE 0x1A // 5TH TERM OF QUART POLY REG -#define tMedX1 0x1B // x1 FOR MED-MED -#define tMedX2 0x1C // x2 FOR MED-MED -#define tMedX3 0x1D // x3 FOR MED-MED -#define tMedY1 0x1E // y1 FOR MED-MED -#define tMedY2 0x1F // y2 FOR MED-MED -#define tMedY3 0x20 // y3 FOR MED-MED -#define tRecurn 0x21 // RECURSION N -#define tStatP 0x22 -#define tStatZ 0x23 -#define tStatT 0x24 -#define tStatChi 0x25 -#define tStatF 0x26 -#define tStatDF 0x27 -#define tStatPhat 0x28 -#define tStatPhat1 0x29 -#define tStatPhat2 0x2A -#define tStatMeanX1 0x2B -#define tStatStdX1 0x2C -#define tStatN1 0x2D -#define tStatMeanX2 0x2E -#define tStatStdX2 0x2F -#define tStatN2 0x30 -#define tStatStdXP 0x31 -#define tStatLower 0x32 -#define tStatUpper 0x33 -#define tStat_s 0x34 -#define tLRSqr 0x35 -#define tBRSqr 0x36 - -// These next tokens are only used to access the data -// They are display only and the user cannot access them at all -#define tF_DF 0x37 -#define tF_SS 0x38 -#define tF_MS 0x39 -#define tE_DF 0x3A -#define tE_SS 0x3B -#define tE_MS 0x3C - -#define tVarSys 0x63 -// 2nd Half Of System Input/Output Variables -#define tuXscl 0x00 -#define tuYscl 0x01 -#define tXscl 0x02 -#define tYscl 0x03 -#define tRecuru0 0x04 -#define tRecurv0 0x05 -#define tun1 0x06 -#define tvn1 0x07 -#define tuRecuru0 0x08 -#define tuRecurv0 0x09 -#define tXmin 0x0A -#define tXmax 0x0B -#define tYmin 0x0C -#define tYmax 0x0D -#define tTmin 0x0E -#define tTmax 0x0F -#define tThetaMin 0x10 -#define tThetaMax 0x11 -#define tuXmin 0x12 -#define tuXmax 0x13 -#define tuYmin 0x14 -#define tuYmax 0x15 -#define tuThetMin 0x16 -#define tuThetMax 0x17 -#define tuTmin 0x18 -#define tuTmax 0x19 -#define tTblMin 0x1A -#define tPlotStart 0x1B -#define tuPlotStart 0x1C -#define tnMax 0x1D -#define tunMax 0x1E -#define tnMin 0x1F -#define tunMin 0x20 -#define tTblStep 0x21 -#define tTStep 0x22 -#define tThetaStep 0x23 -#define tuTStep 0x24 -#define tuThetStep 0x25 -#define tDeltaX 0x26 -#define tDeltaY 0x27 -#define tXFact 0x28 -#define tYFact 0x29 -#define tTblInput 0x2A -#define tFinN 0x2B -#define tFinI 0x2C -#define tFinPV 0x2D -#define tFinPMT 0x2E -#define tFinFV 0x2F -#define tFinPY 0x30 -#define tFinCY 0x31 -#define tRecurw0 0x32 -#define tuRecurw0 0x33 -#define tPlotStep 0x34 -#define tuPlotStep 0x35 -#define tXres 0x36 -#define tuXres 0x37 -#define tRecuru02 0x38 -#define tuRecuru02 0x39 -#define tRecurv02 0x3C -#define tuRecurv02 0x3D -#define tRecurw02 0x3E -#define tuRecurw02 0x3F - -// 2nd Byte Of t2ByteTok Tokens -#define tFinNPV 0x00 -#define tFinIRR 0x01 -#define tFinBAL 0x02 -#define tFinPRN 0x03 -#define tFinINT 0x04 -#define tFinToNom 0x05 -#define tFinToEff 0x06 -#define tFinDBD 0x07 -#define tLCM 0x08 -#define tGCD 0x09 -#define tRandInt 0x0A -#define tRandBin 0x0B -#define tSubStrng 0x0C -#define tStdDev 0x0D -#define tVariance 0x0E -#define tInStrng 0x0F -#define tDNormal 0x10 -#define tInvNorm 0x11 -#define tDT 0x12 -#define tChI 0x13 -#define tDF 0x14 -#define tBINPDF 0x15 -#define tBINCDF 0x16 -#define tPOIPDF 0x17 -#define tPOICDF 0x18 -#define tGEOPDF 0x19 -#define tGEOCDF 0x1A -#define tNormalPDF 0x1B -#define tTPDF 0x1C -#define tChiPDF 0x1D -#define tFPDF 0x1E -#define tRandNorm 0x1F -#define tFinFPMT 0x20 -#define tFinFI 0x21 -#define tFinFPV 0x22 -#define tFinFN 0x23 -#define tFinFFV 0x24 -#define tConj 0x25 -#define tReal 0x26 -#define tImag 0x27 -#define tAngle 0x28 -#define tCumSum 0x29 -#define tExpr 0x2A -#define tLength 0x2B -#define tDeltaLst 0x2C -#define tRef 0x2D -#define tRRef 0x2E -#define tToRect 0x2F -#define tToPolar 0x30 -#define tConste 0x31 -#define tSinReg 0x32 -#define tLogistic 0x33 -#define tLinRegTTest 0x34 -#define tShadeNorm 0x35 -#define tShadeT 0x36 -#define tShadeChi 0x37 -#define tShadeF 0x38 -#define tMatToLst 0x39 -#define tLstToMat 0x3A -#define tZTest 0x3B -#define tTTest 0x3C -#define t2SampZTest 0x3D -#define t1PropZTest 0x3E -#define t2PropZTest 0x3F -#define tChiTest 0x40 -#define tZIntVal 0x41 -#define t2SampZInt 0x42 -#define t1PropZInt 0x43 -#define t2PropZInt 0x44 -#define tGraphStyle 0x45 -#define t2SampTTest 0x46 -#define t2SampFTest 0x47 -#define tTIntVal 0x48 -#define t2SampTInt 0x49 -#define tSetupLst 0x4A -#define tFinPMTend 0x4B -#define tFinPMTbeg 0x4C -#define tRealM 0x4D -#define tPolarM 0x4E -#define tRectM 0x4F -#define tExprOn 0x50 -#define tExprOff 0x51 -#define tClrAllLst 0x52 -#define tGetCalc 0x53 -#define tDelVar 0x54 -#define tEquToStrng 0x55 -#define tStrngToequ 0x56 -#define tDelLast 0x57 -#define tSelect 0x58 -#define tANOVA 0x59 -#define tModBox 0x5A -#define tNormProb 0x5B -#define tMGT 0x64 -#define tZFit 0x65 -#define tDiag_on 0x66 -#define tDiag_off 0x67 -#define tArchive 0x68 -#define tUnarchive 0x69 -#define tAsm 0x6A -#define tAsmComp 0x6B -#define tAsmPrgm 0x6C -#define tAsmCmp 0x6D -#define tLcapAAcute 0x6E -#define tLcapAGrave 0x6F -#define tLcapACaret 0x70 -#define tLcapADier 0x71 -#define tLaAcute 0x72 -#define tLaGrave 0x73 -#define tLaCaret 0x74 -#define tLaDier 0x75 -#define tLcapEAcute 0x76 -#define tLcapEGrave 0x77 -#define tLcapECaret 0x78 -#define tLcapEDier 0x79 -#define tLeAcute 0x7A -#define tLeGrave 0x7B -#define tLeCaret 0x7C -#define tLeDier 0x7D -#define tLcapIGrave 0x7F -#define tLcapICaret 0x80 -#define tLcapIDier 0x81 -#define tLiAcute 0x82 -#define tLiGrave 0x83 -#define tLiCaret 0x84 -#define tLiDier 0x85 -#define tLcapOAcute 0x86 -#define tLcapOGrave 0x87 -#define tLcapOCaret 0x88 -#define tLcapODier 0x89 -#define tLoAcute 0x8A -#define tLoGrave 0x8B -#define tLoCaret 0x8C -#define tLoDier 0x8D -#define tLcapUAcute 0x8E -#define tLcapUGrave 0x8F -#define tLcapUCaret 0x90 -#define tLcapUDier 0x91 -#define tLuAcute 0x92 -#define tLuGrave 0x93 -#define tLuCaret 0x94 -#define tLuDier 0x95 -#define tLcapCCed 0x96 -#define tLcCed 0x97 -#define tLcapNTilde 0x98 -#define tLnTilde 0x99 -#define tLaccent 0x9A -#define tLgrave 0x9B -#define tLdieresis 0x9C -#define tLquesDown 0x9D -#define tLexclamDown 0x9E -#define tLalpha 0x9F -#define tLbeta 0xA0 -#define tLgamma 0xA1 -#define tLcapDelta 0xA2 -#define tLdelta 0xA3 -#define tLepsilon 0xA4 -#define tLlambda 0xA5 -#define tLmu 0xA6 -#define tLpi 0xA7 -#define tLrho 0xA8 -#define tLcapSigma 0xA9 -#define tLphi 0xAB -#define tLcapOmega 0xAC -#define tLphat 0xAD -#define tLchi 0xAE -#define tLstatF 0xAF -#define tLa 0xB0 -#define tLb 0xB1 -#define tLc 0xB2 -#define tLd 0xB3 -#define tLsmalle 0xB4 -#define tLf 0xB5 -#define tLsmallg 0xB6 -#define tLh 0xB7 -#define tLi 0xB8 -#define tLj 0xB9 -#define tLk 0xBA -#define tLl 0xBC -#define tLm 0xBD -#define tLsmalln 0xBE -#define tLo 0xBF -#define tLp 0xC0 -#define tLq 0xC1 -#define tLsmallr 0xC2 -#define tLs 0xC3 -#define tLsmallt 0xC4 -#define tLu 0xC5 -#define tLv 0xC6 -#define tLw 0xC7 -#define tLx 0xC8 -#define tLy 0xC9 -#define tLz 0xCA -#define tLsigma 0xCB -#define tLtau 0xCC -#define tLcapIAcute 0xCD -#define tGarbageCollect 0xCE - -#define tExtTok 0xEF -// 2nd Byte Of tExtTok Tokens -#define tSetDate 0x00 -#define tSetTime 0x01 -#define tCheckTmr 0x02 -#define tSetDtFmt 0x03 -#define tSetTmFmt 0x04 -#define tTimeCnv 0x05 -#define tDayOfWk 0x06 -#define tGetDtStr 0x07 -#define tGetTmStr 0x08 -#define tGetDate 0x09 -#define tGetTime 0x0A -#define tStartTmr 0x0B -#define tGtDtFmt 0x0C -#define tGetTmFmt 0x0D -#define tIsClockOn 0x0E -#define tClockOff 0x0F -#define tClockOn 0x10 -#define tOpenLib 0x11 -#define tExecLib 0x12 -#define tInvT 0x13 -#define tChiSquaredTest 0x14 -#define tLinRegTInt 0x15 -#define tManualFit 0x16 -#define tZQuadrant 0x17 -#define tZFracHalf 0x18 -#define tZFracThird 0x19 -#define tZFracFourth 0x1A -#define tZFracFifth 0x1B -#define tZFracEighth 0x1C -#define tZFracTenth 0x1D -#define tFracSlash 0x2E -#define tFracMixedNum 0x2F -#define tSwapImProper 0x30 -#define tSwapFracDec 0x31 -#define tRemainder 0x32 -#define tSummationSigma 0x33 -#define tLogBase 0x34 -#define tRandIntNoRep 0x35 -#define tMathPrint 0x36 -#define tClassic 0x38 -#define tAutoAnswer 0x3B -#define tDecAnswer 0x3C -#define tFracAnswer 0x3D -#define tBlue 0x41 -#define tRed 0x42 -#define tBlack 0x43 -#define tMagenta 0x44 -#define tGreen 0x45 -#define tOrange 0x46 -#define tBrown 0x47 -#define tNavy 0x48 -#define tLtBlue 0x49 -#define tYellow 0x4A -#define tWhite 0x4B -#define tLtGray 0x4C -#define tMedGray 0x4D -#define tGray 0x4E -#define tDarkGray 0x4F -#define tGraphColor 0x65 -#define tTextColor 0x67 -#define tBackgroundOn 0x5B -#define tBackgroundOff 0x64 -#define tThin 0x74 -#define tBorderColor 0x6C -#define tAsm84CPrgm 0x68 -#define tAsm84CCmp 0x69 -#define tAsm84CeCmp 0x7B -#define tAsm84CePrgm 0x7A - -/* 2 byte extended tokens (tExtTok) present in OS 5.2 and above */ -#define tSEQn 0x8F /* 'SEQ(n)' */ -#define tSEQn1 0x90 /* 'SEQ(n+1)' */ -#define tSEQn2 0x91 /* 'SEQ(n+2)' */ -#define tLEFT 0x92 /* 'LEFT' */ -#define tCENTER 0x93 /* 'CENTER' */ -#define tRIGHT 0x94 /* 'RIGHT' */ -#define tInvBinom 0x95 /* 'invBinom(' */ -#define tWait 0x96 /* 'Wait_' */ -#define tToString 0x97 /* 'toString(' */ -#define tEval 0x98 /* 'eval(' */ - -/* - * --- TIOS System error codes --- - */ -#define OS_E_EDIT (1<<7) -#define OS_E_MASK (0x7F) -#define OS_E_OVERFLOW (1+OS_E_EDIT) -#define OS_E_DIVBY0 (2+OS_E_EDIT) -#define OS_E_SINGULARMAT (3+OS_E_EDIT) -#define OS_E_DOMAIN (4+OS_E_EDIT) -#define OS_E_INCREMENT (5+OS_E_EDIT) -#define OS_E_BREAK (6+OS_E_EDIT) -#define OS_E_NONREAL (7+OS_E_EDIT) -#define OS_E_SYNTAX (8+OS_E_EDIT) -#define OS_E_DATATYPE (9+OS_E_EDIT) -#define OS_E_ARGUMENT (10+OS_E_EDIT) -#define OS_E_DIMMISMATCH (11+OS_E_EDIT) -#define OS_E_DIMENSION (12+OS_E_EDIT) -#define OS_E_UNDEFINED (13+OS_E_EDIT) -#define OS_E_MEMORY (14+OS_E_EDIT) -#define OS_E_INVALID (15+OS_E_EDIT) -#define OS_E_ILLEGALNEST (16+OS_E_EDIT) -#define OS_E_BOUND (17+OS_E_EDIT) -#define OS_E_GRAPHRANGE (18+OS_E_EDIT) -#define OS_E_ZOOM (19+OS_E_EDIT) -#define OS_E_LABEL (20) -#define OS_E_STAT (21) -#define OS_E_SOLVER (22+OS_E_EDIT) -#define OS_E_SINGULARITY (23+OS_E_EDIT) -#define OS_E_SIGNCHANGE (24+OS_E_EDIT) -#define OS_E_ITERATIONS (25+OS_E_EDIT) -#define OS_E_BADGUESS (26+OS_E_EDIT) -#define OS_E_STATPLOT (27) -#define OS_E_TOLTOOSMALL (28+OS_E_EDIT) -#define OS_E_RESERVED (29+OS_E_EDIT) -#define OS_E_MODE (30+OS_E_EDIT) -#define OS_E_LNKERR (31+OS_E_EDIT) -#define OS_E_LNKMEMERR (32+OS_E_EDIT) -#define OS_E_LNKTRANSERR (33+OS_E_EDIT) -#define OS_E_LNKDUPERR (34+OS_E_EDIT) -#define OS_E_LNKMEMFULL (35+OS_E_EDIT) -#define OS_E_UNKNOWN (36+OS_E_EDIT) -#define OS_E_SCALE (37+OS_E_EDIT) -#define OS_E_IDNOTFOUND (38) -#define OS_E_NOMODE (39+OS_E_EDIT) -#define OS_E_VALIDATION (40) -#define OS_E_LENGTH (41+OS_E_EDIT) -#define OS_E_APPLICATION (42+OS_E_EDIT) -#define OS_E_APPERR1 (43+OS_E_EDIT) -#define OS_E_APPERR2 (44+OS_E_EDIT) -#define OS_E_EXPIREDAPP (45) -#define OS_E_BADADD (46) -#define OS_E_ARCHIVED (47+OS_E_EDIT) -#define OS_E_VERSION (48) -#define OS_E_ARCHFULL (49) -#define OS_E_VARIABLE (50+OS_E_EDIT) -#define OS_E_DUPLICATE (51+OS_E_EDIT) - -/* - * --- TI-OS os_GetCSC Scan Code Return Values --- - */ -#define sk_Down 0x01 -#define sk_Left 0x02 -#define sk_Right 0x03 -#define sk_Up 0x04 -#define sk_Enter 0x09 -#define sk_2nd 0x36 -#define sk_Clear 0x0F -#define sk_Alpha 0x30 -#define sk_Add 0x0A -#define sk_Sub 0x0B -#define sk_Mul 0x0C -#define sk_Div 0x0D -#define sk_Graph 0x31 -#define sk_Trace 0x32 -#define sk_Zoom 0x33 -#define sk_Window 0x34 -#define sk_Yequ 0x35 -#define sk_Mode 0x37 -#define sk_Del 0x38 -#define sk_Store 0x2A -#define sk_Ln 0x2B -#define sk_Log 0x2C -#define sk_Square 0x2D -#define sk_Recip 0x2E -#define sk_Math 0x2F -#define sk_0 0x21 -#define sk_1 0x22 -#define sk_4 0x23 -#define sk_7 0x24 -#define sk_2 0x1A -#define sk_5 0x1B -#define sk_8 0x1C -#define sk_3 0x12 -#define sk_6 0x13 -#define sk_9 0x14 -#define sk_Comma 0x25 -#define sk_Sin 0x26 -#define sk_Apps 0x27 -#define sk_GraphVar 0x28 -#define sk_DecPnt 0x19 -#define sk_LParen 0x1D -#define sk_Cos 0x1E -#define sk_Prgm 0x1F -#define sk_Stat 0x20 -#define sk_Chs 0x11 -#define sk_RParen 0x15 -#define sk_Tan 0x16 -#define sk_Vars 0x17 -#define sk_Power 0x0E - -/* Compatibility defines */ -#define prgm_CleanUp() -#define pgrm_CleanUp() -#define memset_fast memset - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/frontends/calculator/CEdev/include/usb.h b/frontends/calculator/CEdev/include/usb.h deleted file mode 100644 index 3bbf465..0000000 --- a/frontends/calculator/CEdev/include/usb.h +++ /dev/null @@ -1,52 +0,0 @@ -/** - * @file - * @authors Matt "MateoConLechuga" Waltz - * @authors Jacob "jacobly" Young - * @brief USB communication routines - */ - -#ifndef H_USB -#define H_USB - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @returns True if the usb bus line is powered, i.e. connected to a another calc - */ -bool usb_BusPowered(void); - -/** - * @returns True if the usb is self powered - */ -bool usb_SelfPowered(void); - -/** - * Resets the usb controller chip - */ -void usb_ResetChip(void); - -/** - * Disables the usb timer interrupt (timer 3) - */ -void usb_DisableTimers(void); - -/** - * Enables the usb timer interrupt (timer 3) - */ -void usb_EnableTimers(void); - -/** - * Resets the usb timer interrupt (timer 3) - */ -void usb_ResetTimers(void); - -#ifdef __cplusplus -} -#endif - -#endif -- cgit v1.2.3-101-g0448