From a708870ec50c3e8cd3393780c3690d6ea8421afc Mon Sep 17 00:00:00 2001 From: Thomas Touhey Date: Sun, 15 May 2016 14:00:40 +0200 Subject: [PATCH] First reorganization --- .gitignore | 2 + Makefile | 88 ++-- Makefile.cfg | 41 ++ Sound4Calc.sublime-workspace | 576 --------------------------- autre/OldFunctions.c | 51 --- autre/SCIFTEST.zip | Bin 55799 -> 0 bytes autre/sprintf.zip | Bin 9337 -> 0 bytes autre/syscall.h | 12 - autre/syscall.s | 11 - bin/sound.g1a | Bin 2328 -> 0 bytes build/Sound4Calc.o | Bin 1832 -> 0 bytes build/crt0.o | Bin 2236 -> 0 bytes build/sound.bin | Bin 1816 -> 0 bytes build/sound.elf | Bin 5781 -> 0 bytes build/syscall.o | Bin 711 -> 0 bytes bin/icon.bmp => icon.bmp | Bin Sound4Calc.h => include/Sound4Calc.h | 0 include/_h_c_lib.h | 29 -- addresses.h => include/addresses.h | 0 include/assert.h | 39 -- include/builtin.h | 84 ---- include/complex | 189 --------- include/ctype.h | 66 --- include/ensigdsp.h | 257 ------------ include/errno.h | 114 ------ include/exception.h | 74 ---- include/filt_ws.h | 26 -- include/float.h | 208 ---------- include/iomanip | 60 --- include/ios | 192 --------- include/iostream | 27 -- include/istream | 112 ------ include/limits.h | 35 -- include/machine.h | 23 -- include/math.h | 111 ------ include/mathf.h | 66 --- include/mystrbuf | 53 --- include/new | 31 -- include/new_ecpp.h | 41 -- include/new_edg.h | 122 ------ include/ostream | 87 ---- include/setjmp.h | 48 --- include/smachine.h | 28 -- include/stdarg.h | 36 -- include/stddef.h | 46 --- include/stdexcept.h | 47 --- include/stdio.h | 146 ------- include/streambuf | 97 ----- include/string | 213 ---------- include/string.h | 57 --- syscall.h => include/syscall.h | 0 include/typeinfo.h | 82 ---- include/umachine.h | 55 --- {bin => scripts}/addin.ld | 0 Sound4Calc.c => src/Sound4Calc.c | 26 +- crt0.s => src/crt0.s | 0 syscall.s => src/syscall.s | 0 57 files changed, 99 insertions(+), 3609 deletions(-) create mode 100644 .gitignore create mode 100644 Makefile.cfg delete mode 100644 Sound4Calc.sublime-workspace delete mode 100644 autre/OldFunctions.c delete mode 100644 autre/SCIFTEST.zip delete mode 100644 autre/sprintf.zip delete mode 100644 autre/syscall.h delete mode 100644 autre/syscall.s delete mode 100644 bin/sound.g1a delete mode 100644 build/Sound4Calc.o delete mode 100644 build/crt0.o delete mode 100755 build/sound.bin delete mode 100755 build/sound.elf delete mode 100644 build/syscall.o rename bin/icon.bmp => icon.bmp (100%) rename Sound4Calc.h => include/Sound4Calc.h (100%) delete mode 100644 include/_h_c_lib.h rename addresses.h => include/addresses.h (100%) delete mode 100644 include/assert.h delete mode 100644 include/builtin.h delete mode 100644 include/complex delete mode 100644 include/ctype.h delete mode 100644 include/ensigdsp.h delete mode 100644 include/errno.h delete mode 100644 include/exception.h delete mode 100644 include/filt_ws.h delete mode 100644 include/float.h delete mode 100644 include/iomanip delete mode 100644 include/ios delete mode 100644 include/iostream delete mode 100644 include/istream delete mode 100644 include/limits.h delete mode 100644 include/machine.h delete mode 100644 include/math.h delete mode 100644 include/mathf.h delete mode 100644 include/mystrbuf delete mode 100644 include/new delete mode 100644 include/new_ecpp.h delete mode 100644 include/new_edg.h delete mode 100644 include/ostream delete mode 100644 include/setjmp.h delete mode 100644 include/smachine.h delete mode 100644 include/stdarg.h delete mode 100644 include/stddef.h delete mode 100644 include/stdexcept.h delete mode 100644 include/stdio.h delete mode 100644 include/streambuf delete mode 100644 include/string delete mode 100644 include/string.h rename syscall.h => include/syscall.h (100%) delete mode 100644 include/typeinfo.h delete mode 100644 include/umachine.h rename {bin => scripts}/addin.ld (100%) rename Sound4Calc.c => src/Sound4Calc.c (82%) rename crt0.s => src/crt0.s (100%) rename syscall.s => src/syscall.s (100%) diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f708fb8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/obj +/Sound4Calc.sublime-workspace diff --git a/Makefile b/Makefile index 80f5803..38ca915 100644 --- a/Makefile +++ b/Makefile @@ -1,48 +1,64 @@ -.PHONY: all mrproper send +#!/usr/bin/make -f +# INCLUDE CONFIGURATION +include $(CURDIR)/Makefile.cfg -PREFIX = sh3eb-elf- -AS = $(PREFIX)as -CC = $(PREFIX)gcc -CXX = $(PREFIX)g++ -OBJCOPY = $(PREFIX)objcopy -WRAPPER = g1a-wrapper -SEND = UsbConnector +# DEDUCED VARS +ALLOBJ = $(SRC:%=$(OBJDIR)/%.o) -FLAGS = -m3 -mb -Os -nostdlib -CFLAGS = -W -Wall -Wno-main -pedantic -std=c11 -INCLUDE = -I. -Iinclude -isystem stdinc -LIBS = -Llib -lgcc -lfx -NAME = sound +# RULES +## Make it all (default rule) +all: $(NAME).g1a -OBJ = build/Sound4Calc.o build/crt0.o build/syscall.o -ICON = icon.bmp +## Make the object directory +$(OBJDIR): + mkdir -p $(OBJDIR) +## Make an object file out of an ASM source file +$(OBJDIR)/%.o: $(SRCDIR)/%.s + $(AS) -c -o $@ $< -all: build/$(NAME).bin - @ $(WRAPPER) build/$(NAME).bin -o bin/$(NAME).g1a - @ echo "Build finished." - @ stat -c "Output size is %s bytes." bin/$(NAME).g1a +## Make an object file out of a C source file +$(OBJDIR)/%.o: $(SRCDIR)/%.c + $(CC) -c -o $@ $< $(CFLAGS) -build/$(NAME).bin: build/$(NAME).elf - @ $(OBJCOPY) -R .comment -R .bss -O binary build/$(NAME).elf build/$(NAME).bin +## Make the ELF file +$(NAME).elf: $(OBJDIR) $(ALLOBJ) + $(LD) -o $@ $(ALLOBJ) $(LFLAGS) -build/$(NAME).elf: bin/addin.ld $(OBJ) - @ $(CC) $(FLAGS) $(OBJ) -T"bin/addin.ld" -o build/$(NAME).elf $(LIBS) +## Make the BIN file +$(NAME).bin: $(NAME).elf + $(OBJCOPY) -R .comment -R .bss -R '$$iop' -O binary $< $@ -build/%.o: %.c - @ $(CC) $(FLAGS) -c $^ -o $@ $(INCLUDE) $(CFLAGS) +## Make the G1A file +$(NAME).g1a: $(NAME).bin + $(WRAPR) $< -o $(NAME).g1a + @stat -c "Build finished -- output size is %s bytes." $(NAME).g1a -build/%.o: %.s - @ $(AS) -c $^ -o $@ +## Clean up your mess +clean: + $(RM) $(ALLOBJ) + $(RM) $(NAME).elf + $(RM) $(NAME).bin +## Clean up everything +mrproper: clean + $(RM) $(NAME).g1a +fclean: mrproper + +## Remake +re: fclean all + +## Send to calc send: - @ cp bin/$(NAME).g1a $(NAME).g1a - @ $(SEND) SEND $(NAME).g1a $(NAME).g1a fls0 - @ rm -f $(NAME).g1a - -mrproper: - rm -f build/*.o - rm -f build/$(NAME).elf - rm -f build/$(NAME).bin - + @if [ ! -f $(NAME).g1a ]; then \ + echo "Please make before sending." >&2; false; \ + fi + @if $(SENDR) SEND $(NAME).g1a $(NAME).g1a fls0 1>/dev/null; \ + then true; \ + else echo "UsbConnector: calculator not plugged-in/in receive mode" >&2; \ + false; \ + fi +## Phuneral phuture ? +.PHONY: all clean fclean mrproper re send +# END OF FILE diff --git a/Makefile.cfg b/Makefile.cfg new file mode 100644 index 0000000..a32bff7 --- /dev/null +++ b/Makefile.cfg @@ -0,0 +1,41 @@ +#!/usr/bin/make -f +# PROJECT INFORMATION +NAME = Sound4Calc +ICON = ./icon.bmp +LIB = gcc fx + +## DIRECTORIES +SRCDIR = ./src +INCDIR = ./include +OBJDIR = ./obj +LIBDIR = ./lib +SCPTDIR = ./scripts + +# TOOLCHAIN +## Directory maker +MD = mkdir -p +## File remover +RM = rm -f +## Assembler +AS = sh3eb-elf-as +## C compiler +CC = sh3eb-elf-gcc +CFLAGS = -m3 -mb -Os -nostdlib -Wall -Wextra -Wno-main -pedantic -std=c11 -I $(INCDIR) +## Linker +LD = sh3eb-elf-ld +LFLAGS = -T $(SCPTDIR)/addin.ld -L $(LIBDIR) $(addprefix -l,$(LIB)) +## Object copier +OBJCPY = sh3eb-elf-objcopy +## G1A Wrapper +WRAPR = g1a-wrapper +## Sender +SENDR = UsbConnector + +# SOURCES +SRC = crt0 Sound4Calc syscall + +# INCLUDES +INC = dispbios endian filebios fxlib keybios syscall timer \ + Sound4Calc + +# END OF FILE diff --git a/Sound4Calc.sublime-workspace b/Sound4Calc.sublime-workspace deleted file mode 100644 index d35c061..0000000 --- a/Sound4Calc.sublime-workspace +++ /dev/null @@ -1,576 +0,0 @@ -{ - "auto_complete": - { - "selected_items": - [ - [ - "a", - "a" - ], - [ - "ma", - "math" - ], - [ - "ml", - "ML_display_vram" - ], - [ - "boat_", - "boat_r" - ], - [ - "bot_", - "boat_r" - ], - [ - "bot", - "boat_r" - ], - [ - "l", - "l" - ], - [ - "hl", - "hl" - ], - [ - "c", - "c" - ], - [ - "d", - "d" - ], - [ - "L", - "Load_polygone_loop2" - ], - [ - "proprié", - "propriété" - ], - [ - "Del", - "Delta_Y" - ], - [ - "D", - "Delta_X" - ], - [ - "__", - "__base_printf" - ], - [ - "be", - "before" - ] - ] - }, - "buffers": - [ - { - "file": "Sound4Calc.c", - "settings": - { - "buffer_size": 5121, - "line_ending": "Unix" - } - }, - { - "file": "addresses.h", - "settings": - { - "buffer_size": 40864, - "line_ending": "Unix" - } - }, - { - "file": "Makefile", - "settings": - { - "buffer_size": 1104, - "line_ending": "Unix" - } - }, - { - "file": "Sound4Calc.h", - "settings": - { - "buffer_size": 215, - "line_ending": "Unix" - } - } - ], - "build_system": "", - "build_system_choices": - [ - ], - "build_varint": "", - "command_palette": - { - "height": 0.0, - "last_filter": "", - "selected_items": - [ - ], - "width": 0.0 - }, - "console": - { - "height": 153.0, - "history": - [ - ] - }, - "distraction_free": - { - "menu_visible": true, - "show_minimap": false, - "show_open_files": false, - "show_tabs": false, - "side_bar_visible": false, - "status_bar_visible": false - }, - "file_history": - [ - "/home/ulimit/Bureau/Sound4Calc/Sound4Calc.sublime-workspace", - "/home/ulimit/.config/sublime-text-3/Packages/User/C++.sublime-settings", - "/home/ulimit/Bureau/Sound4Calc/Sound4Calc.h", - "/home/ulimit/Bureau/Sound4Calc/crt0.s", - "/home/ulimit/Bureau/CasioUsb-Files-14276/CasioUsb-Sources/Makefile", - "/home/ulimit/Bureau/Sound4Calc/Sound4Calc.c", - "/home/ulimit/Bureau/Sound4Calc/.git/refs/remotes/origin/master", - "/home/ulimit/Bureau/Sound4Calc/.git/refs/heads/master", - "/home/ulimit/.cache/.fr-hsDhJT/Sound4Calc-master-ea3869585beb9d01cd849a1ec4ee6a9f1551e9c4/Sound4Calc.c", - "/home/ulimit/Bureau/Git_depot/.git/config", - "/home/ulimit/.cache/.fr-HaPj72/GeometryDash-master-2de6dc00c6d375594eed64bc489aa43c44d0b05f/Menu.cpp", - "/home/ulimit/.cache/.fr-2XLUx2/GeometryDash-master-2de6dc00c6d375594eed64bc489aa43c44d0b05f/Menu.hpp", - "/home/ulimit/.cache/.fr-jL6Cxs/GeometryDash-master-2de6dc00c6d375594eed64bc489aa43c44d0b05f/README.md", - "/media/ulimit/Chang/Comté/.~lock.comté ecrit.odt#", - "/home/ulimit/.cache/.fr-8aSPsA/SCIFTEST.c", - "/home/ulimit/Bureau/Sound4Calc/autre/syscall.s", - "/home/ulimit/Bureau/Sound4Calc/syscall.h", - "/home/ulimit/Bureau/Sound4Calc/syscall.s", - "/media/ulimit/Chang/Sound4Calc/New/Sound4Calc.c", - "/home/ulimit/Bureau/key_test/Makefile", - "/home/ulimit/Bureau/key_test/syscall.h", - "/home/ulimit/Bureau/key_test/syscall.s", - "/home/ulimit/Bureau/key_test/key.c", - "/home/ulimit/Bureau/key_test/syscall.c", - "/home/ulimit/.cache/.fr-evMloG/RTC.c", - "/home/ulimit/Bureau/Nouveau dossier 3/Nouveau", - "/home/ulimit/Bureau/Nouveau dossier 3/Nouveau document", - "/home/ulimit/Bureau/RPi 3", - "/home/ulimit/Sound4Calc/.git/config", - "/home/ulimit/Bureau/Caisse Régionale Loire Haute Loire_files/infosbulle.js", - "/media/ulimit/OS/Program Files (x86)/Steam/steamapps/common/Empire Total War/data/campaigns/natives/scripting.lua", - "/media/ulimit/OS/Program Files (x86)/Steam/steamapps/common/Empire Total War/data/campaigns/natives/startpos.esf", - "/media/ulimit/OS/Program Files (x86)/Steam/steamapps/common/Empire Total War/data/anim.pack", - "/media/ulimit/OS/Program Files (x86)/Steam/steamapps/common/Empire Total War/data/all_scripted.lua", - "/media/ulimit/OS/Program Files (x86)/Steam/steamapps/common/Empire Total War/data/checksum", - "/media/ulimit/OS/Program Files (x86)/Steam/steamapps/common/Empire Total War/data/battle_scripted.lua", - "/home/ulimit/Bureau/mon_script.sh", - "/home/ulimit/Bureau/Nouveau dossier/xinput-decoder.py", - "/home/ulimit/Bureau/Nouveau dossier/xinputtest", - "/media/ulimit/My U3 Drive/ZbThumbnail.info", - "/media/ulimit/OS/Program Files (x86)/Steam/steamapps/common/Empire Total War/data/language.txt", - "/media/ulimit/e6e7f776-11a4-4cd7-b4fd-c44ecdbfcf90/etc/resolv.conf", - "/home/ulimit/.cache/.fr-v6y6TO/minetest.conf.example", - "/home/ulimit/.cache/.fr-tH2FKG/Jetpack Joyride Casio - LastIndev/fonctions.c", - "/home/ulimit/.cache/.fr-LkbQfI/Jetpack Joyride Casio - LastIndev/._fonctions.c", - "/home/ulimit/Bureau/test", - "/media/ulimit/FREEDOM/ ", - "/home/ulimit/.cache/.fr-tLHu3g/mods/mods_here.txt", - "/home/ulimit/.cache/.fr-pL7Ev9/misc/minetest.desktop", - "/home/ulimit/.cache/.fr-mugyGQ/CMakeLists.txt", - "/home/ulimit/.cache/.fr-KtLxHU/minetest.conf.example", - "/home/ulimit/.cache/.fr-LB61pY/po/minetest.pot", - "/home/ulimit/.cache/.fr-MaDHoM/C-Engine-master-88e60a9aea1f9f68623519f87ae25763c15d8add/CHeader.hpp", - "/home/ulimit/.cache/.fr-LwMtxQ/Jetpack Joyride Casio - LastIndev/include.h", - "/home/ulimit/.cache/.fr-bQC73D/Jetpack Joyride Casio - LastIndev/Jetpack.c", - "/home/ulimit/.cache/.fr-UQheAl/Jetpack Joyride Casio - LastIndev/Elements.c", - "/home/ulimit/Bureau/projet agrobot/logiciel agrobot/agrobot/main.c", - "/home/ulimit/Bureau/5001_1_43132081.pdf", - "/home/ulimit/.minetest/worlds/sylvaintest/world.mt", - "/home/ulimit/.minetest/worlds/sylvaintest/auth.txt", - "/home/ulimit/.minetest/worlds/sylvaintest/ipban.txt", - "/home/ulimit/.minetest/worlds/valentin/env_meta.txt", - "/home/ulimit/.minetest/worlds/valentin/map_meta.txt", - "/home/ulimit/.minetest/worlds/valentin/world.mt", - "/home/ulimit/.minetest/worlds/valentin/auth.txt", - "/home/ulimit/.minetest/worlds/valentin/players/singleplayer", - "/home/ulimit/Bureau/con-addin/bin/test_l.g1a", - "/home/ulimit/Bureau/con-addin/Makefile", - "/home/ulimit/Bureau/con-addin/test.c", - "/home/ulimit/Bureau/con-addin/crt0.s", - "/home/ulimit/Bureau/con-addin/test_l_si.g1a", - "/home/ulimit/.minetest/client/serverlist/favoriteservers.txt", - "/home/ulimit/Bureau/projet agrobot/logiciel agrobot/agrobot/agrobot.depend", - "/media/ulimit/2821-0000/System Volume Information/IndexerVolumeGuid", - "/home/ulimit/Bureau/fréquen.g1m", - "/home/ulimit/Bureau/con-addin/test_l.g1a", - "/home/ulimit/Bureau/Nouveau document", - "/home/ulimit/Bureau/Nouveau dossier/tampon", - "/home/ulimit/Bureau/worms/SH4Comp.c", - "/home/ulimit/Bureau/Atomas/atomas.c", - "/home/ulimit/Bureau/mon script.sh", - "/home/ulimit/Bureau/worms/bateau.c", - "/home/ulimit/Bureau/testbash", - "/home/ulimit/Bureau/chr_giant.info", - "/home/ulimit/Bureau/building_barbarian_hut_tex.sc", - "/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C006%5D/Card/Android/data/com.supercell.clashroyale/cache/swfcache/sc/arena_training.info", - "/home/ulimit/Bureau/arena_training.info", - "/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C006%5D/Card/Android/data/com.supercell.clashroyale/cache/swfcache/sc/building_barbarian_hut_tex.sc", - "/home/ulimit/Bureau/Atomas/maths.c", - "/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C006%5D/Card/Android/data/com.supercell.clashroyale/cache/swfcache/sc/building_elixir_collector.info", - "/home/ulimit/Bureau/1", - "/home/ulimit/Bureau/execute", - "/home/ulimit/Bureau/moteur 3D sylvain/bin/maths_add.asm", - "/home/ulimit/Bureau/moteur 3D sylvain/bin/transformations et quaternions/transformation.asm", - "/home/ulimit/Bureau/moteur 3D sylvain/bin2/classe_vecteur", - "/home/ulimit/Bureau/moteur 3D sylvain/bin/classe_polygone", - "/home/ulimit/Bureau/moteur 3D sylvain/bin/classes/classe_octree", - "/home/ulimit/Bureau/moteur 3D sylvain/bin/tables_align.inc", - "/home/ulimit/Bureau/moteur 3D sylvain/bin/ram_area.inc", - "/home/ulimit/Bureau/moteur 3D sylvain/bin/todolist", - "/home/ulimit/Bureau/moteur 3D sylvain/bin/transformations et quaternions/quaternions.asm", - "/home/ulimit/Bureau/Sound4Calc/Makefile", - "/home/ulimit/Bureau/Sound4Calc/addresses.h", - "/media/ulimit/LEXAR/tpe final/readme.txt", - "/media/ulimit/LEXAR/tpe final/readme", - "/home/ulimit/Bureau/jahshaka/INSTALL", - "/home/ulimit/.cache/.fr-1OmWIK/jahshaka/INSTALL", - "/home/ulimit/Bureau/TS3.run", - "/media/ulimit/LEXAR/fact", - "/media/ulimit/LEXAR/Nouveau document texte.txt", - "/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C028%5D/Phone/Android/data/com.fungames.sniper3d/files/Library", - "/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C028%5D/Phone/Android/data/uk.co.aifactory.chessfree/files/B.current", - "/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C028%5D/Phone/Android/data/com.fungames.sniper3d/files/savegame.bin.bkp", - "/run/user/1000/gvfs/mtp:host=%5Busb%3A002%2C028%5D/Phone/Android/data/com.fungames.sniper3d/files/savegame.bin", - "/home/ulimit/Bureau/2_05_0000_sh4.fls", - "/home/ulimit/Bureau/worms/bateau.h", - "/home/ulimit/Bureau/worms/MonochromeLib.c", - "/home/ulimit/Bureau/worms/sprite.c", - "/home/ulimit/Bureau/worms/Makefile", - "/home/ulimit/.cache/.fr-ZkiGuQ/worms/bateau.c", - "/home/ulimit/Bureau/webcalc/examples/old/suites.htm", - "/home/ulimit/Bureau/webcalc/tex-0.9.c", - "/home/ulimit/Bureau/webcalc/examples/old/lim asym.htm", - "/usr/share/magicrescue/recipes/png", - "/home/ulimit/Bureau/INTEGR.htm", - "/home/ulimit/Bureau/webcalc/libfont-3.1.c", - "/usr/share/magicrescue/recipes/jpeg-jfif", - "/home/ulimit/Sound4Calc/Sound4Calc.c.save" - ], - "find": - { - "height": 27.0 - }, - "find_in_files": - { - "height": 0.0, - "where_history": - [ - ] - }, - "find_state": - { - "case_sensitive": false, - "find_history": - [ - "SH7305_PUDR", - "SH7305_PUCR", - "SH7305_PJCR", - "SH7305_PUCR", - "SH7305_PJDR", - "appart", - "math", - "j", - "itoa", - "strcat", - "sgn", - "ML_display_vram();", - "tbl64Div", - "RTC2Time", - "BCD2int", - "memory_user_select", - "strcmp", - "Sin", - "_Sin", - "sub_Sin", - "Key", - "IsKeyDown" - ], - "highlight": true, - "in_selection": false, - "preserve_case": false, - "regex": false, - "replace_history": - [ - "" - ], - "reverse": false, - "show_context": true, - "use_buffer2": true, - "whole_word": false, - "wrap": true - }, - "groups": - [ - { - "selected": 0, - "sheets": - [ - { - "buffer": 0, - "file": "Sound4Calc.c", - "semi_transient": false, - "settings": - { - "buffer_size": 5121, - "regions": - { - }, - "selection": - [ - [ - 109, - 109 - ] - ], - "settings": - { - "syntax": "Packages/C++/C++.tmLanguage" - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 3, - "type": "text" - } - ] - }, - { - "selected": 1, - "sheets": - [ - { - "buffer": 1, - "file": "addresses.h", - "semi_transient": false, - "settings": - { - "buffer_size": 40864, - "regions": - { - }, - "selection": - [ - [ - 0, - 0 - ] - ], - "settings": - { - "syntax": "Packages/C++/C++.tmLanguage" - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 1, - "type": "text" - }, - { - "buffer": 2, - "file": "Makefile", - "semi_transient": false, - "settings": - { - "buffer_size": 1104, - "regions": - { - }, - "selection": - [ - [ - 0, - 0 - ] - ], - "settings": - { - "syntax": "Packages/Makefile/Makefile.tmLanguage" - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 0, - "type": "text" - } - ] - }, - { - "selected": 0, - "sheets": - [ - { - "buffer": 3, - "file": "Sound4Calc.h", - "semi_transient": false, - "settings": - { - "buffer_size": 215, - "regions": - { - }, - "selection": - [ - [ - 215, - 215 - ] - ], - "settings": - { - "syntax": "Packages/C++/C++.tmLanguage" - }, - "translation.x": 0.0, - "translation.y": 0.0, - "zoom_level": 1.0 - }, - "stack_index": 2, - "type": "text" - } - ] - } - ], - "incremental_find": - { - "height": 27.0 - }, - "input": - { - "height": 0.0 - }, - "layout": - { - "cells": - [ - [ - 0, - 0, - 1, - 2 - ], - [ - 1, - 0, - 2, - 1 - ], - [ - 1, - 1, - 2, - 2 - ] - ], - "cols": - [ - 0.0, - 0.7328125, - 1.0 - ], - "rows": - [ - 0.0, - 0.716904276986, - 1.0 - ] - }, - "menu_visible": true, - "output.find_results": - { - "height": 0.0 - }, - "pinned_build_system": "", - "project": "", - "replace": - { - "height": 50.0 - }, - "save_all_on_build": true, - "select_file": - { - "height": 0.0, - "last_filter": "", - "selected_items": - [ - ], - "width": 0.0 - }, - "select_project": - { - "height": 500.0, - "last_filter": "", - "selected_items": - [ - [ - "", - "~/Bureau/Sound4Calc/Sound4Calc.sublime-workspace" - ] - ], - "width": 380.0 - }, - "select_symbol": - { - "height": 0.0, - "last_filter": "", - "selected_items": - [ - ], - "width": 0.0 - }, - "selected_group": 1, - "settings": - { - "last_automatic_layout": - [ - [ - 0, - 0, - 1, - 2 - ], - [ - 1, - 0, - 2, - 1 - ], - [ - 1, - 1, - 2, - 2 - ] - ] - }, - "show_minimap": true, - "show_open_files": false, - "show_tabs": true, - "side_bar_visible": true, - "side_bar_width": 150.0, - "status_bar_visible": true, - "template_settings": - { - "max_columns": 2 - } -} diff --git a/autre/OldFunctions.c b/autre/OldFunctions.c deleted file mode 100644 index 57e2a7b..0000000 --- a/autre/OldFunctions.c +++ /dev/null @@ -1,51 +0,0 @@ -void SetPin() -{ - if(is_SH4) - { - *(unsigned char*)SH7305_PJDR |= 0x04; - *(unsigned char*)SH7305_PJDR &= ~0x08; - //set pin to 0x4B - } - else - { - *(unsigned char*)SH7337_SCPDR |= 0x01; - } -} - -void ResetPin() -{ -if(is_SH4) - { - *(unsigned char*)SH7305_PJDR &= ~0x04; - *(unsigned char*)SH7305_PJDR |= 0x08; - // set the pin to 0x47 - } - else - { - - *(unsigned char*)SH7337_SCPDR &= ~0x01; - } -} - - -char getMPU(void) -{ - // Port L control register. - volatile unsigned short *plcr = (unsigned short *)0xa4000114; - // Saved value for PLCR. - unsigned short saved_plcr; - unsigned int tested_plcr; - - saved_plcr = *plcr; - *plcr = 0xffff; - - tested_plcr = *plcr; - *plcr = saved_plcr; - - if(tested_plcr == 0x00ff || tested_plcr == 0x0fff) - { - return 0; // MPU_SH3 - } - - return 1; // MPU_SH4 -} \ No newline at end of file diff --git a/autre/SCIFTEST.zip b/autre/SCIFTEST.zip deleted file mode 100644 index 6bfa48359ab0cf8f83214c1676b5d7c108d1c236..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55799 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

2GaM2&PYix$H7Deu>ypeOcZ2WWe71De zT;4ynEy_wwB<6(Pkc`uQ6SIS_%GReo)c7Z2xo5h-k;K1>fw7k1JKg3Szq0YXfq;YW zD$$jSN}}UU_R4-6zuZ`2-I(_u(iDCTey&n4`ns%KrYzro9YRSrz9;1xPyW4cj@mz* z*Qmf^TIJ0h3z&EJ_)_6#-mAsm25#kfjo>*J{2Ft7Y0IC)6&WYhJE0?ycegBPizGaP zgPvo)K02cIH!S<)t2;6mY@2r(Mc&B*Q4S#{Lze23^Hor+xb58uV z;LzTJ#$?NW>t1Ki9$y=xA*mX3b+T>b^y7l<+sD)x#X~IHes4}bxv(np z)v`ISq*gDvGIP?Ydp6TcV+EXc2&_LF-rw~|d1I>mu-eLab{lz&U=Y&E}od*zH4upqh8MH z!N{N+fBSc8>Zgi`n!7I%O%CxH)na?Qw%?wvzJ^B?+ALQs&AV$9@UeB*jaz~Wxo4SP z{UgL=Mir-53#EG-h`l(Y*C*@n+|C$VmFm051_W;!_12g4C5^t14ym`MGQAqPHh37B zUais)?Wo4-)qCW>Uf-qOm3lzggZv~KV@fdh;W?iC1s%3>Pm6^z6CD+6!v?L-}{AlRD|u?|S7?kuAz_<@ofTJZj(c6UzqY`>sQVr&k_T zt54pU3~Z!wWrr7reU` zSvmbzIyDHn1@#e2{55s2z_u4>|VVh^lBkZmt0}et2bUI zFW_wE-Mv`M^d-ZS8GMi0)DK1fBfl@SjPx%FW7jO`)$jne&OIFZb*6b(1$hJeL9d>3 zFlR94K6vUkBYNdg;aMD~apg1V)m$Dmu1U?|5&t6Z=fZ1zKS>$gD4S>=-XLpsy+Y|~N84HdkHqElSQzf%2WXy(3Z>2PyG6t;hs#Q9i)H#0Vt;#7E3dL=@z0k-o zXb6@B8V@fzKdt8aj>)a5hn4Hkt`N>Xt~u`g`3=J&cgs{pao*jhZpiTXtQqp@(&X}M zW>cyXtl>FE4%=tLfE*+^vyRNKyH8%gozkU2o5TuySN6|1xdNFT)h^DvJM3+su|$@u z#=sZ0Dh;WJ=T=ZpM}-$6zsl}p-d*Idk7thB zbg^i-e$6z~uy6D1Q<`V#IcE-7MOnK`pG|K5m}<`H)%_O38wgxI)(~F6`_0PCyL%D( zk}q)e$tQgt{ZY1y{YP$p#4pVKlChgzGoV+`IvCxdPI~pe+wcYk7Yi&x9+k3oC$c1s zkqPXTM_qL)LrBy29rWs6dDJZaMP4s}tKm7OJZgNEyxFxMMl4(OTy&A!W4!B)N){}8 zG}e&xFZWF0RWbE*4ySf8y}Fkd+U}+6A_2hE3`#N+b z@dDs#=wEdSN7TBQcUOOS!PQNpGF;&~J~#{6I+^!DnEO3>)O;^p!6z=plE?z~%A@j8 zwutG~z4E9h7V#GZEEmpo)e`udYOUCeJ)k_Kmlyh&D)cYuFE{tk{Kc|GeaH)q48y|K zWR^XevFA?3cw~662j>pZc6*Er&ug)Ws_8qz%ISOM`M*f7-W5_i%_62z_o~DUd_PN)UcKBy(Khk#LKEoK zmc9k_y|O&2S5E&WuEeLm5%0;P;vIRy^MCc^QCYTVIO)~Mqbgh7|3z5_hWF3r4nii7 zvJCXTOfW6!@j@rmD;!IPM=7Fare7g43rw%(=IQ4^d=D1WeunNM@2+w)l;_88^u2cb zzbG4EFZk4XnJDyX_%@i|t3Cnq^vV{=LLcZ$?o0ZlIV`M?=e)b`gYmtdCcRp@`M#5S z>&@-*H4(@JUNYwNYU*>)Wc?2C9Ls*aeoVb3&W>e^E>bpN?UY|PET=NPT1z1P>~i6^ zzR5oH<7rZK#~wQnZ& zfVz0RFT@Aj^P9OB^VET|0mxx%xn+;u4BrO%Gs5t_BE!SxDSZ!@WOs%k!*jn;?FjK- zr(O=%r+$YnRonPF`F-K#6SrP29lAE)#Xt?04A$qs%~NrG@YYPPMkX+^W5Eu}2GIA~ zo#pjlZqteIY&oI=bYRE6}T3V%a>EqVM6A`Bd~IAj4xb8@&nq*=~ko zyZv9)(5r!~1u~K0c?G@tGw1hW^Yn`0=t94hqB-u1`I3(*)FBvY*v+iDw|WG8rF^7UV^7CCW&IAlvb>Zn%0M=tAfQ*4SG#Yz_cHM}0m$(5WO=!K z^nd!I{rmjqKbsBWa~9k1Yxa)o-{<;*lU$9RXSMUE(a7-h`oox@H@gWD1e$q&y1iNR{ zUYYOL9p|>j*$jGpVWZS%hM^Rj;}0+7Fx2{?$SdP5)e}iNvJn3bn8rtM{44L3BKU8_ z-uQd_ruUgGoau?;lC{IQCuOY})|7ZTO$Mbt4z3(ayq&fYH z#CklxgI0KC^Dhc27Te&^3E8ukuh+r4PT2)SOK7JRtjvP_VlNpq!p0g+N zm&^|K#&eo!YU_XHAK@WLp}ew=NRbb`@B3%|bIlaHjrHu7(|UM2Y3Es8dw1WYvKy4A zGQ%!rIQFTtR{z|yN{va!R2hc4uwmGzKqFu%jedA5e?LHu3U6o0720{03uhk3E_QHM z{k{LnKQ7^a>8*>djV%(rJipJ+!h;lOH15@TgC5T>aU7HxST39wdvH$ML-IWAo8rHE z+(#rZpPtddn{T7i6mB717K&YLjabfU%74)tPx-IileVzL;2(zo%0VPPql(}9^|SwoW)z&w$LG@9B=0<^z4-2Eqy7X(>%)|?XS$X$TC^< z9t_(+JJ0d#!}P{eo{I8c=Zl8x{a5~xFw||X)8}Nm=t?*2Vm?LF_E4TWrG3_c=)uc8 zGW%`~E*_!pTPwFKshwdc*3VGNFw~*@b@PvKZ~g|#44lp%sBr?j7;<3yDgT8xp7LLw z8GSVWEB{yt4?%m97XQ;Tx?)9saLMkG|8{Mcdi$dT%IMnQqn+oSzrjD@`zM!Sw*iJ4 zQgnHv6vI%~ign;R7>2?w_Bn8=AniO!j!F#=_D=tGW2Xdr+s~^{ILJIm=-MdsW5{_AI`sq}y4AN!+gW6Y+C$vcomv5RR}u;uy%MsGzA z!tH-#cV6#Qw~uQOUFn&@xA^J@>^|r{_%m-?$Pe@&yr#S|!%*?f6FqRbdnUi} z#p00$cWcQ*$S@S^XQ*4OHPcYreofjj=Ov-rZFJFl0Bq-xj~;|Sl&6+Ai>R2m?c*q5 zJ5dL(?6Jr{?*DiGakoWmOPtk06LGz3d1sc5c;#m>@($&xP3N}5>ysmPU3mMrEu-EI zTT>gpQ}*jaKd(v^^d4OPqWell?C;CY3$q{ca~SG^fpFL63JwC9e-!^#=8$k+dXc7#4yym(RU^u4tmpf-L*nB z_gTfWZH^R4n|;)(p0#F3-f69+PqgjTTcXLMMES=ee30GwN92{)`ISm-{61lOROReL z55XN!p8Di_sV%;5_uQ?VyyJTNT)PJi19d&K`WQ0|rEn;zZ6U)@lvlp=fng}>CrN0N zGY@T=wDC&Wunnh525TN)=#bc=X!H3e-t|wTHX;8Q{lN8P`p6|$UQOI^_=DwW*W8JZ z9c6_R2Y*|9^8J=cXD4a|ABqsyYRs6Pn6zSyW54zB%ktJOKDbRP!mdH`n8>$%ufo(d zZrwU|+v%&Y-s@@g2<|zsG`iXOlem|CocpY1yYxqngGf8WN<=J{WZ8gEo6*u(9 z6?lKla?5nn-dKRI8u`bs_spiW$jKG`vHe`{E$lw#xBp$mR=*7In@L;vMjt%9{;H1N zm)fW_>vQJQ%<{(1*FQErW@)ge_flhxAK@_r`#WlN2^`zI-f)bZSc;hYyS&#Ep5`1| zn|e&KDSZFT(is|WXcv2X6E(%OOvk0X;#SWhm|@K{%yYJbJC z)XUKP$gBZB@*{nQmxbz^oR$zMO(}LR!zK9;6VD4%fYoA~PWpGV)C(DroMIpL?NVS`p& zoMyUspr&==BxmpE=Y1F1=Ls4F{F%S5M55wW%?Z2YCIy2tFJxD{e4P5)zhKJU+8a9) zTjw5(Z$vT4BMBM8P)*8KkJ?ljhVn@a3Ao}CI&g?q-7(RoF`>E-Q!C3B_&zjV^F6p^ z!kz)AcN(vpv#e;)t z+X5u>rtJJ~X&&%;+}TUT{WZH59k)$Xo$DN;vbp4!{JMbUkJk1%Y%lokjCFzd*;U5H zKlTfUdRg*^w|WaK*&|wTX1i7O#cgZ4uATZ4k#0Qnp{=OYg;W`#X=^Os2AL@ooKgGf zw^voD`n$G9@R}D(o*Idsw^pesPE$w`+BfS$;HHtFKSW+#)o8CSR&KS~k2<)G5~bej z#IoHryE0^Go}#A&bDv=->sO~595h}`ty^h(YR1R#3tp!LBF4`bcA0k|Ew?|zU%Fab zf(^Wb`=rZ^W)%2s(8+@rxlQzoN=x*JFH$Qm@7xw#Gws1je$AtgHAml;T3oO>Byqc+W|eZWks zu<{rC=4S*Nsrt&U^C`7A=y=Q*8MQGhwCc;{@DCH$2HDw`oJ!Ff`nxV!p+m+l+l?O1H^W+%cO455arWg9 zJOt>To5JHHs{_^zL0*|*sAyZ2KaV&JMH)`T)^3+4uqkHZ~ z1?DL-H1Tx`$SVsh3N9YI#-H-kvOAMH6|Li5@Hj~kohBv6hkwTJ3ag%hJT><8$3n|a zwj-NZbX<*NGS1 zf((tQj%QY1%zg3IJ~h*^2Y}G5SMhvCd1@XfIsXXPht%EA0FMLf#8b2kM-Rd$$&Ke< z)4ndCmC{ZfVe+6qk*DTyl9X3oKJx83Xb6<2Hb+m%;e}6JXr6A7D7;|s>&{-8Z)rys zq6Yza>O}&@!JCJ?Bh0zB?|)*@yP|x~=h}{vk3{106@!tD@NIVUN({4M=R%fUsR?`- z!*r{M5@vgO3fPEc?k#2zrn>|*c7EC5JZEinfkkJZ3$OG2JkF?m!uESV@$dTYLI;;D z>iHY7{_;nQ$e+afssS5O4`Fvke5(1iZyz)ijek&h-^mY8M+qLqm z&%YnN)j1P9(?W+NV56u?%+QZxH=lb)JX1gIwt3dEE%K?c}pE81z+-uX3sTiD;Zj^M*QbAj2iiE@Ts4L*!@+TeG6kXq!L zg)Dmm@zm&JE1$q&HsMvr9}8gDQnckToy@l=vnfCi3tHW@_;XKj8SxOxDO2wEz^q(P z>LJ`HS>yxWcgN)NL`S8%c-9+=T?;y}tzuW|5nv-rxwippB};=e1YdZp{2gaExBa@g z9I%m8F|bjd2Rf&YsI?=zUKxe{LDn0}b=sWJ7?^(=`fu=7_^bEH*RW0-bWJSbFAbs| zLh4PV9zv@*r*%Z1oYWru>D+4ZpOMz{{&Jl*470gu2|PP%qtKM>u#jOohS>(^o&q*X zI}B{ZFkML?<&>#&DlxmShWB&vwZ7P8evCJds8O{4kh#7*zAl^5%OWl@w z2+f8SeS#trq7UP)~90gBpM!at* z>kS>S>g*E%>{?c*!C|0d3fO4oUar$-5p_(V&(!D&_-f)XsE065cscbDUV*I3)~AhmM14RN>b+(aTu+v(}rQT zPtMwSyARB1Nj}Cf-4}-020ioC>eG>Sbarz*!*n06Y#mkzz8aiBCjUzBXT$?b-25?V z-@O`zL&>cR7oEr&u;Sbs>LE0{18kJqI@c~HmzUcgw&CY=%aC$lBj`*1Z@>cs8=c9q ziEaXCQ6{tZb}i+U;iSj`Hd=T%zL`2ECYW-)p(1*C%ahuvV`_vxno4(HgTBN%Z78Qq z91Hwk=$Q%qy5LwMuu*=0U?bvK#F10RTmE-G@*51Z0UJSIQn60$n$IxZYvNeOX`Xo2 zPb2Lwb!5%lkGK5l2jW-;t#Hm(JMyTGILUJb^ox+lRXIC4_Ry#0gjp zett@u@6%NyU?cFp+hmwd!+Jxh=XZs0g0*5-BCt`U<@AC8MN4zz4+TeE)$3i{CHnUrksfT#i#Nf@N-ubQ`{0#b1 zN20^5W)9PpT!H`V6mbIXnS85GJr~zUMWmL^DNo@r-s+qQ)c;L%fee^u?4iIN?{j2OA>LCU;T6sFB-{Ou1N2z0i zcwfpXQ*H^}7}PQ4@otzw@cT)oA<&mtrwzXraV&mC62{cw7+SWFe4AeR1C|oU;#(lL zAHL0<!`vDt3~s@Gz7s})WzFP`v={P6*o*~RCAp+ zSuT2miDP*mynVtCaE;VygAT_Wx5a3XSv&L%I8y3x?1(-@981PYBPr-hD#TlJ9O+2n zSZL?UjX5xfdWfr_F9jP(ygRpI&~xZZt!Xw2)RFb=rbNkA12OSs-syd{nNCwBXCCqc zfBz%a`{fSMb$d$lb)Hj5`ILS4hIi)*vCFV|DvR9m)C+~gS+L$vrqiVSp^ms!9+|Xb zp<}9+=`=QRyj&r;#!nJPx5|japiUcb77Dfxs^!t$NZ)IBM;vjY)G;;H9Q^|DAMj~| zdyH*Sa!mS8oXeE8e&8P6pTf6^-&Hnw7wbWI&g+O9X23YnSqBr^=4qe>wcEG3>)JQ@ zJ@L&7nEL{nXLIfF-R_WKIt}Tn^!HC4acsVRx&)oZg_kQNT@~B_&C^YSna-rEl1>Az z@%|xBr=cBd4fAb6UxI(5ZzeBS$aEU6BhF2;Pp&6*Ozo5{4l)?_&SRx$`blu2w#ZfO zK~9M`U$F9oXB$JEgU*aOfxrO}V|AP{G3s8 z)A{KjU7DwqTL$;YbQ-R6mFYCBBTjUs2j)I?OkHI<4cEB}o#yOwaE+fw?IImGyh+i? zHOu~Cr_#aOmD6|J`Yy4B*Ad5YqUNF416b!O{9oW6AN-!@l!ABVZuLmuEXj?RK4A~Q z?<$j}9)v^pyF230OH7>T-C9Lk>;a2N2j)6$Sg(0P{Va!MU?b89YOZgWWjf7rVfy>0 zjyP_~Vvs%8I=i3C==)ubs z@_d{2>TZiM_n{Pp?BY6CJywBxRHs}O<&?f&=jLn1$z`JWKL4g28()F`4_-$cxJT-k zsz`EJ*bt{XfH=_)SJw=A&3et}vmOL+qA$)Eh!tHnMxGj7u+}QjE?7q#^%9o^P9h&Q zy4Icua-FL`Nmtz*SVFq0u=erCtaEi6nU3an4->At|QK$bXCKC zPtVZ)YdNu;>s)entCR2`K4_G!h z*F~H2ZPI?eZNcBfgGw*GwS~KVo5(xL)y7iC)KS65Jl`f^Hhq!*#BkC5_?#~r>c6SX zsf@CaUlU(=t1GdW{*3>>JC^7rM+cot66WLGN;D#m-Ar2H={)rGv+k&=d&w_SG!*Yc zKMj{$5xcnG3ywbeItd+;`tWaUCI8mBH$D0@{2-XytUIcg{!Cf~&GDe(Uive9+c|^Q z+^d>o5&}Qh`BzMvpt&6nV=nw#3>ToM9Ph&+CA<&RUl93f_ZtYRZHPUhbNcf!-3 z*}LU5uM?fLJ^J%B_HJSC=t%6PKktx1?oz2G&VB*;xd@|4DnsB;W${k32^I2>C(O?Qed=JZIbq z|DqGvzw7ATqCO)<4i|i+cMZRb_KbNp51JTvg8KqeM(o|9J!7sT<4)MSw*7P9TJhK3 zG#4G`|4AVKC2%s&zlHaKaVMtIWs&=f&XXTRQ{b8B3dWs$y-xQ92IaUd>4Wz{>`l}@ zdGz$NKCja>x3O>IeWMYknz0ejcjyVaOr zjrW1H&QJ#T?)<+`?s7Wd>7|m4c|ij1!tf4 zKNtt!1v7DS{w=!q;fsAc^efXQteLit7U+VJOxwTB?h7m>KS;paAzOn=rFWu3(mJ70 z%@K2(?tMgjm)*{A!Ansc_%D+?6l^&E)@VcWbGbhrxayROO-%b-Q`$4`y&kbK@Kayy z6VC?o;eR*z|MML)9?0h$BlPTorgP?z)GkHah$?xL+m#IKYte4fq+)|Ch6!b+8P-QO z1AJ&?mF&(Cbf_fMiLUg5*M<1dfGO0cXCGg;@JJ$IeQr0wTeF`s(|CIr*5~+8sSoH5 z$UOzsk<$~W&~6Sr@#AGJ0n+~&)<>`U&wKES8aWvp&l7%r)=HT?-^7PDtn82M)R$_?o?Iw>7EB}t$KNGF>9;i3us*ylx`W_P`189Gex#9ZW&jpt{cU`PWI6U3*Ht;#q6REFJ z0J}Nq|I*;-z;TT=bjuc4b~cw`eQ;b;&0h`Fb${B&_;L}ilaKMCOiz68P~f|n!}@Uz zczdW%au71pl3Rip)~DSZo?unHHS+KTPsH0ZbUnw19!3y5N^&QE zf_IspG2WiX#E0T{$!rVhBJL30@5jU)4p|pK+~E{-kYP%IoA?%$J!=9UtWR+9`X9^ndNXXkq2BewgXBpONq+ahx;IKY<(zkrM8Ax{dXF{6C;rT)*ADo<%;UijezDPt5z3TRa^~1`? zTSEW$L1qdZm+n~(>+hfd$v`&0-5kCIx2Iz_lZQI0Qf7B(8+8aRJDm?-QLz**hcK)U z9Tabmpa!~)R@06^Sf6%t_>3O4sU3{QP99n&y@mRusbA7f?MT}1*@r^E%A18VtS_K- z92_0|6y#3`tDerVKIebJ?~*kk?l7UT|4QNx$&-%X1#h?Qee4Jf>lcczhWGp04|E%$ zLoK<3Z*ePbZPeT`o%GFEq9njzAn6mCiB5{}d`*WPl=T1Ni%a-P|0k>uj%(_#$RULn zjmD8b;Wc#7A0gZ3u}(f6k;m?vM$wK?eRtbL+RZzXg)*Jt0)<}j`4YqWO0*+%F75|k z(NNMSXh$gUT_p^Tj`WEZ_=w6vO(j2}OOS5*ys%RytWa^?O#UB+^)>qtmViHj=YM+X zxug$qhw!8mcSxRe;tqlJN79Y}9Rs^I3K; zc-;92{d-k%yF$9yjgb3|=py+hyEEb!hxJdUL${zlX=Pvr>;@(DzR>sDC$($t!I=8# z`@_m7fa4#qg2VbIx4=O#tj{_Q`!lRxLEIs6aVoYR`PdDLM{NoyKvxPlh<0^!k-=A# z>@eZ$EpXBXBTE8}1kzns2{%2k!gosgzv+i7xZwk2{nUMlTIYS*&2htLi`4rIr2qey zCzHpWZ^G<_mo%PsbL`-YgwP>`TSGkV{Gieqz5ZFQP7}++_sPEs1lB)JH+_~j#~fSm z_vZEqHFpT>uN8mpjV{5X3p%3h@V&z0eU`Eo>kYRmb2Him%)|V{<2f?uZ zN!D>F`O(Kf?2hI1FJa{IwpPsdz%I`+B)xWGy04Oi*^6D?{|$C|a9qbTRgcmQpYYm= z+d@Zgy<9X@k8b$5w9myZKXd`D52rOK*miU0f%r~ozH;|f ztYaGII;MV^y#HPmo2N@pq+^#?J`mlYvX{6xdS5OS_FsuzKDAZ-(0y?H*yT6>`@RZ( z7j^@N_2Db>dck4+su|!QfFA1REc3|gtL<7UfnDD0cBRY?%8=xq?YXalofz{}Fde%* zIJtRk;JCoiF+I_9rRZb#qpEG#<>`h`+1AnT&#xZ*U!F{kJ7-uQbKiU_bqF;*V0vP4 zu<=kHcTV#abHDAOi8OI>y!$FIPqBI0dUFSM`SrumAtX#0>deCn;q9JE9&dDgVwYzb z64r6ZVSRRAg<*XTV-VIS?(nG_he0ANz(E{SZA-8crHpqvG9*(id+o&0Etsd@$M1-$ z+~8k;T|R?4G?|{bKl~ruZ5X!^yZj1|7Xq5xd}Ua_XD8-y=fL`y`}qP|mp{T+#Pme! z5bEa6sZV-1<}2^M3i_l~okG6QeFld0(c3(5c{BA%&wOK!Yj0z|8cPXTlNJwQV+g>Lp8 zkpGEY{!<|Oq*;b!3+sDlSfB1m=ni05pJ5DOee$HQKsJM6kgACN*ySD7u*+lalQu`0 zq@JDl0Gp>36R^v#_bnK+>D2SV=v8MOLi?ir8NVC)KX&<*r2o@=?Y^(#k|mSuigiMpngiWuh`>C>F2B?jyF567 z*e1FC#0gM`5Z8I&Kz-6N$dDv=_3{^w-%Xk6=!OOM#3&3DYuCCIdB@_3W}k8H*anyTlfHa`HP7= z&p~$TPoShz)O~$vzI?x|>(l;i$>|}-@ z>qtl69=hA@)6ksGd2VTk9ToZ&UW4Dtb}8*#udYuKyaucTozuTRNx^HtI?|I{=i^&r zGaEZM=~Z-x??61d+pm>lhh@FGJK&MCQ(_(H(4_*_idRL#yUIG!p-Zh0ei5KAReG7- z7=iv{Kd)ZbwJ@7Kxjt(lrr#vBNs3Ww~k( z$b+u@K4^2KKx`!Q>-OXg4+n$+i0lZ8*H|?;qnp4nI zxAD@uA?EDHNC&1#vo7`2aWiI$1s4$MyEb1fp}TgJd!id7 zvw<~n*N)v7!HgNK!+CC*N9e-qk(;hOrk!#`jt&0p z)gE3?9d~1d&6p{?p1S6Ep>$wP+!m86W;aGGlp29GUFgOLd2BWMb|vCYY$WwyL+3&M zkIfj~-As6dsQ1zkxhFl5=J-RZ9cj!X^!ftrtjH0^*!1vR90qQC2;WC9o-2$zd$=u@ z>d=elVzjCZ&t6!$oF%WP z4!s@ZG0(u?eF3khF724YpQVCyCzd>W@6k_NeHXeiuqL}PvSuW5PxI*}AbPN6%dg=c z*cve|!@}Loq}(F7EAs5oO+e_%bLl1^?q<@?N;%@@7`?%id-`~J{fKvaW@smh>sod$7Z@8zad7b*kdF7`{{T?2W~4 zIL$1kUT$~D7uHMf{cM1?bBCJ4{pQ&$!@_!WX@?cjiLa-dfaEU&wj|FU?X1w1|B_yX z8-}cx9v(i0LtKW1_11^~Gr{amGkNyrYPsYNTJDeJOE7u%rd!4~0c)m@HuQf(Hw^g} zvtD}Q$tOcchCao5>oNDqvo{fYfVh58=@{lOYao4U!H%1ixYKYO`p+YFb0psbyWnNI zBf(`@{-)x4AkUsI@_+Ds+~VoA$I@L%@6i*%eP{5ybQ6$v#8ID-tzj9KMDp<2Gk;kC z-2?;|k{|z{oe2Nz%;}6v`_lc>-?2`roDMmZcCmD~r30QkbePi=i<0FV zrV}o2l*kXz6~=)){?=4W#pYXPGfFN^BESWk>fDax#rQ*8IW!*zPuNs{Mp($xZ9B@# zcHhpVevAt0pQPKF&KiPQE{jBR?38||9#XFeHk(oHyH4zVkY*RzRAX&a8}G3Ld1GNy z9b9k*b_`eb&J-)ghm$I+~4o%$DdPvK)IB3}TzbvGfT<*~yfQ9b0>**)dR zUsK^1VA#a-<)FoG@MNON*ESCQFt@%=vgh`li@DW!&b0 zKFa3C#)$l3pKvqFIpq)Cx)Whs>UZ)n&Op{n-N`u$o%T3=@u~<*^k`7Nz5AXC`52eO$8dN) z(;?ws2s9q|h$=oI`6}ebTIo!;e|0jifjCzbq zMeZKuDeRtd{%PLr%(azK&_`2vw=*}5Vq7YI*CTt}%z}^6hxSm$rPkdip9Q<8Jm$kC zy3IpA4ArjK19O;;8+h}}%>5CKO6WCTLRta&0Tgv z=JwHa$Bi5B=W`Cyt-D)g=rtdq@Bd*eZf1$BJcGS1rE|hg%nj;u^m)zhDIcS}EX@tv zKMw*Y13$yD6zrjxZ;VR?W(u!Ww5Gj|Zrzby>Ho%pcRQ2xO7C(^ z()Khu5rK-|odAiWa3s|zVhg$yR`ai4t+#BeiKx*UGq?t3OB@G-tTb#M;#Ibm;~ zQma1#S^*#Lo=Nk4vnkbK+h~s~IFyeR^F4sYaf>ySxIKIauB5wzOX%VD zkRimrM7sOdvQX09t(4myk?y`yq|gW7!){cibaQ*XZd3Jed${8Rd=s)0_@+DCNcY6) z7VBYr59U)Z^l*ECveZ9Z9w{!0~cbt39J@?#mfB!kZKYpL{JKxXe z{eHck&*$Tb=B~YS;woeuz|T;D_htj#i#cy553xh;o>n91Bf2+Zx-#>o_p+l0rTm}= zdSNd+ihP%-n-BFnz`Yp0d#gzQMc#BQ_^!ZC2KCAFLI)r6&hMSWjA?`Lz1zvUKsO)K zW_Yir?)6i{9QzwD;On3JsiET&^xq+r9sO;N-Sc(xJ7fB(aiEJ7X-B}{-9q=~vw!KQ zM&~f6P0>8un^9Jd2zFhtL&IeA;CF@f{x7?|J?#u>X~6GaE5CXS`R-8Gx5rP4bXPmu z+3hKl)OgA+jJcPbKzwP##U?2A}6!DTE(+gTbft}=58QMGSYG;4h?d{B6XisALm))K!X6_nFHRJk@ z<}S1+0q(?Wv?l?sQ@)ePUv_)H^@Z*3_K?5eFWC$)%y~-N23+&;6zIAuB2t5UKefftPMwQhra{&VivQqE#U7oBW(uyoIpdJ zL;X#NzjO8;=DyN_vM$iU2l)k*b%7L1+@pS`-59aTB)F+R!=%~*LX){8QQU9&m8}-R^W3n!FC>OG`+tWjQaF}l( zqyLxP9@;zXe*Zy(7vF|XR_F<#Lwko^?d%`018V%vlL9XZGWx7YEBIODaC)^&9(zwa z+nKwF5FZB3U1(1NozG}b(hC0F4?#O~*HAjlH(IoCo&tA8Wk1@JY`(E%{rl_y#GClK zGk2X_0S^J@JiSPV_%Nd>u;0Y+cU+K<@%033MMs$RkT!$*oIFq8-OG;d+*hy^AUpco z9D6YcJPt^kiGt2R==j9&cR-u*tvPInw3(5kRyp5KIzsLOb6*L>@OR8p22WU{ZhPPN z68DfclMiSv==R>5V^N$ghs&v&Mq;%_k@i8KVS#!X=jL+1bu#c+8NqApgzAVM=^63+$X`$`Z(zGVn{^Dc=@!%$h=TEb=iTZH7Q<6VsJ>C4CyQqn&6Eg~>_%WsZgS6#UXL z{h-aDY&RRcr=X!WBW;Em`kW5KxevJu41Wi-UJ~VljzHiP&({P0}oyarGfoeHvOT(&TO->LkK zZSf6t@$clM>QK%Ee)lY6yV*SSKEQr(`GqatH0%raw6n%X{D_aZr=7vx0T=lGgnyqM zu&13NUQ*u`);;ZP9rg|%{k3V)9wG*szM>RKTD;}<`of^|`5@|Ig>#?yW6&)TxCelr z*M?^|+lW{ssEhUQvjb}V)sWZc@W4*42dHg#;oOIOj1DF0^NasVp$qqP8J{{=)aL~6 zsaf&>vmVlBkk*0e%49P^{ztTjdVk8MKG$V}f&^Oc}E1a1Q_)#2^QB zX#cs}JFr2>0nHak>xH>zuiG1GGpTS70KYWq;`f65R&?u$8>z70M!Ad1-`Eyo(AqtP z$w~c_dxC%JZ*BPJKk@e$;=lR#_kr6KG+%H}yxvEiuo=T|G#p8X^Zga3dmVUi+7urH z&*RnX@f%@|zhgyD9po!wdr_YwiP{1>-!c0W_@2P|iQx^x z`C01)nPcEmBCpJ7nY-kC5ivSH8!_2l;3DQ)W3s*Al>to;lkJ7`6ZS|qIpN-ma%-P< zy4NN4z9*BAIRDW?laqTam+&2LgB!{P!ugJJP;sE&pz|{ae9Gk;@~B@m1hn0!1DNhz@F}12NZDbz zpd1wPHbCv~b?{7K`WoRJMf|z~$VXw=E_4@B_b%e=1?_%MP~Q}=Tu=_`%})Wfhb{1) zV)~|R(D`1tA^@Gi1X6o^Oz5pad_AP?B5&7Y=$iu16v{!p_0nI&u#H$SESG*a zxc6eb4akcW&~*6flTT0$wZMM8bVJOm0!!HsVr{Wqv?fX893c1#-7dqD^sFaVy7yYZ z5e)Cr7PiOh6P|JP{YPH9B0VbTW|{o7_5Qj?&d4YY2ihx10E?1K(1bHP1k@HcijR z2u-{u4~f-3+@*3Xgy!=M=sqWz$P+XHD!15GYO{uOI{UgXRY#~2Uj0>AALCvy*P^O)0w_fZcv)SaQOwp!84}&yVMeKOzT~x`Ne5G-#T*Y7m zeS9j-jCJIR9z2%5{&j= zi63Orc`*;;(YW;evX#@1+Nl)+2M?M?_cC5DToAM?`6=dI3D(yRa@CmbL&mA&@PS?w zb1KD>^{U-Gb@z?H^@1s|zJ6uajiS(aP)7{rn`McD?xj~))J#nTKaUl;bN z!nu|;%kL1?$6%B~ARo~Bna(kHlE)H9%B^%&E36q$>0#n9EL7%%Zl%w7RIW<9R}srU z?j!^2>(CLK?3okxuS8udHf8*ph*Tn?7x}HyC)kW)x@qCL0_wNU`n+B{ee>l6yLG|{ zt9Go?!+I)}(6SXd&&nANix=~>y0QH%X86jX&6HwyOS7)Y?t^RE&yHY#V6yZlYctQ~ z+H=f2_mKHnd{2ey{bTi5J=&2tljGwr9r)METqSYqeG#~_E5_*XXsYp{?&t^&2o|2l zsc@B8wG&)Ow>k1P1uo>RkL3xP?};wgc+5Pv6qwC7q#2ICa-O&$SZfs)j@WNGC(B%g zsS)BS$?R}Xl&;Whh6PuZkMwfsBlQEdfy#qVuCjiGy2XV&@n3H|&urHQsgbqoGIuAy zApQKhz~WeCD(m9%Ws>uPuBCz#;M?r{pTL`vs``B&1;>u#CN@PMb4)R z0;Zj$x>4On%%H0MIt);*WmwYio}PAjEpQ`ihT}^70J9;yr+!U@XS@Jln!6x)tDu)r z2ddg1zNfqxTCyza_KpMA{X&i)U>c|5DH+9l5rj1z=QW%&u4Stl;q7=AOyY*=^kU}( zEHY;96)#JBfUFtTOu?j`JaXh(&eREqRpGmE5%X^#Q*(m%6xMVsP|!%?w3G2$Y5%NxhHLzl9e;1s z6}G_uWuoQ?F<4(q<7Qa%&J}8-_W^1HdT1`an&r01g!lCIhWev+fP)OO=tO_zu}oj! zyH~Oz<5o>_F06y{(zEVES2JOO^!Q_brPg@xVN=Sx zXkDUULeM@J;tt9Eia~Xhsv+gS&bt4>VVgB4p#7xpplQm`5re0nq4sn7*dI7jcZ$|k zBEUj#oH|OUpF1aHp8fsK8(eAk4|wOpTY8u-C5^C}KmT#Uei_Vs*z$f&zeI1pn1gHB zFcbrSg6BH_uyIS)<@E+EXeYRg5OXx44xaGwHX4 z=AsQ5`cwVj`W&XUTIwc+<1MvW;-W>>8X!-QV#Lt*^rp~!n(cO#kMMeVh$dcJFw>W) zD@UetuATf|AhBHS28NYD73wHm=C4UGNW*sqo(nFJ0OxcPTYPnmeJb%P>!%oaE&%kF zI?G{K*m8^)UT5r$Ha$4_K$)WDvDil0ed+N`DDrn|C%+I_d(Aoz-bZRnh5^~Nced0xAm zahA);UCjE;)Czu0n=(Gd>tKx*yqVWcZ<;cw=v#k4)dkRf-Zku2d2>QKu#oXf9Xezf z{rTke>}k%LO{v>u6e^G5+&4-3OlJW10Q>yYuCH;=dNko_Mttm{(TgA9w8;7)=&&m8 z29UA)73-o7FK2lyGDZ*T#dg7S$p=+!NjsHp@Y{p&0IZm-Cd5kqZDeY9i?HRq;M~7n z*hOmy_kcPg6^75R?06?Ly=AdVZi}G;7$T_3j5LJby*bxRl^5V_A1dIth4wtV#QHVS z2AJ>mVjHDy()e{js+64qU>jl|O)z5q)DE&mt^XOEH%{UO4uTU|Mn^`X^bQi$MQD0J^@I8$#dGtu|}CMc11{ zXha)mweOE!e%eQ8pF4ld zrg}@-rEEj}F@R;_ztET_OmmwTe&@UQ8e7hzkp$HR>BM|xy_z`%!88abbTC+3hA>T`h~wq=~&Y{9vI((YL=J=_D7AGDEbI+w3Y`iyhf=FSW0K815X zW#EwB6SxOtjd8xkfpeciE3B3f?g0>1$o~fN%W3B#T*<%>1e%XpKQo!c4RP9J|2SC$ zFvUOcWIW*9cg&yTF;5J{4F7mj>W>6UVvd*`b;=X9>U;FnnALql~ziexQ!POtpoem3ix;6fhAP0{)w)%hwB zSNMo7m+~zY01!FFgyD14?)m!sra+PN>CLxZ=SW%~X?CIWG~0%AKL5sAv5)jt%j1g# z4R8-Y-xu`0dP!oHJ82$h4pP8R27BTwxCbO&f#(85_H7BQcOKkh8IC7*u#1jNiImT_D z`vY^H!nv;z0@hV9YS_I%YXDB%e{GNO@BW?mSN}Z|VyydTMvj;@^a|XW%(Y)Z_pA4Q z7husv*8@%l_>Q0a0r#pJH!0$`F2d^t4gzCY@c$dk>=?|y&s3J>ksa=c-Tol|3yW`V z+icB!0e$_Ne5WbO7s`;=gFmc75tk$}>p^D@(pND14E`FG?Nj$L+!4@M5GM%rQ2-|h zUE}xWHyfdam%k*mFCA=uqV3nlDo(Ik>A|q9c$I5B^@?HK3Ta2sdEz=xG2jGwN{(mn zaL;K_1ADdwGrx)0<876hvy7Y!Z@0)9Wi^%B?6!T;LUNvNvotv2-4?0ezTI?%d9!M>Qt?z3sV3?-hB>(S=SlnQtfNa|EQXYC9bVWr zhaK!ouLevK>4Xk2>6yH}B^!Lwsp#<;b>R5idfr9Lk})iKr?lgwd-Hw;pXzl3PvFnz zeaAL`zINK-%@U_q6}b}Z!Hu7R|19r2=iS#867JRb@-%G=8j(Fm3@>c--FP*_Z7n!P z5Z+CDFP{Udn*e(?R?8e(4d|Vd^Zp}MeOU^a1QG!!I&)$6`1>z}sR+oDlHY zkfVNMxGp13$Q!(`TX# zyWm|9RWxGd&e_Z0$T^(Os1~cm04HWV0Ty}m>U(C(*Rt!Z_m57)2yVt~u>J?3 zT8Ox#+xqFNnPU@nneyD`$s^mYA8dE`)yS_yYx8^v>0zgD6(P18iBeqaAndEzO%6;; zO@bcgev$CXb`zCegbhxF@Vb!0ORp0iOoOmTr_%QSfH($X9+083elb&TGZv&3+siQE zJK?2RvS6#@u4Swm+tQ;=e=hNKLDN2RlwB$$m{~Z=9$|i7`O=Aa)m*L8K z^Ap0)8e&ik?3Rb;_??US&$P+CuK?znbgz zYE?KXc{;`B6O~q1AAZSwc=Yef;y)^fj#-ZVxJb~+bY-~KWf}PMMD?%aShRpm{Mm*F z<^Q+KZ;7C60?HBre}0eSvs&dYQa4adhWZzQKaYIe2XojthCm0zjiew&+1zQ5MdT+y z{CULTLj3ur01U?m`3Yw8L+EOsT;5mbD@2j2K#cPLJ&++r{Q1!x_BrAefUodi%v1Ga z!?{++3kqokR~2yHE2w5QMuD!n+iwBf5O^+{j!+dM=$$#cRXHzG0$h`c)F(p%=c(U$ z$t*W&-w@a;cS##lH{%2!cW)d%PHmtj$#U@-al{gi)+$8%V3w_lDgkHz7V=s@ck;_& zUubydTg_p==^(q2BjMRXs`#{{Uq1o-)>FKQ>*Z0=&A9%k1Nx!uB-Dv$T{nC(#&Iq0JLT=14N34@pATt=EYdq1 zpOR9zkj-$-r>*J3ep8qJV~!~3C2nWeS}ucrVq-x~7>;2vlK?Le#;#$M>(Gk+w9VRI z3H#_*<0LokN*(Tr(W1umt(bwo=$6ojU^q{qCkA{0W63v8OcdW1>8+Sve;=?NKQ5B| z;s^7ob!CSgze2R(?59xh7rD!~m!Yh$8Gl6*@EyVo7;(U_(Bv<$)aZJ4Fw>HM)&i6D z-LAK|EePl7d+*aQXlqi==1N1ZZSJKBK>7bS%hLCpzz-MEdho(6$oj3H@-JCFVw*g1)F$C8k&b^0na(3Q zTjb-$?8Ctavg22wxPULJU%Gw7B4(0CA9w|3Dbx~vMT-|gn&}jMz8uty?2@?|FwEid za{lyP$T&S}Aif#)lg1$B8@q1-35Qe3=2`Z4Y|^10i4|39E;}JVTt2Xrcl|1`4?p*S z?o34CD#z7CBA&t)s>@G%*kztqBfrX}`|cyhAfxCon_0pZUv@`05_G_KuQFLZVl}9< ztNh2#xl3#p@ToSk$!j$nx=7IYpnE&4s>W4g1SJJMxm#xz6AH)8n53fQlGcT zYKYT6ke#QP|JFp_vphlO7mYRFoT(3u{fCf4=4Sq6>Q3@Ypo0+V*l>zGzC_m>o4aqd zIQk@9%%OADv1d^|W|Hcv&M1%jgq3D*OWQ7IGSmsUSjMr zZ=xJdpH#no7ID20H&Y64ZZ+QF^}`&Muv^}NuM#Q0&R2uvxJfx!pbl~v-WQ%TC@kpqI*RHG>Sdp;!i+PSBLsDG6wA#t3`@s+B36O(-=o*0cq z_{YPIi7UDpxeI}YB|}o4?`btcKMWGt3`UE5Op~i(I8Ej2{2uzc z-23upxIw2jeo~A2Y#`Uck>bu};$wH=U(qA~i~qhKSK(Ss(qNuDoq6l&=Sag0U`>$J zKNMMj?JaEQj>D$=5Li74o59xtzqgfw>%3EGCTx4Ymfl#F5me0ly8$5U_xu_Xy)_LBG3M^#h1+iSC&n;5^$ZG2=k|%LuJQh-357>)cMB0D6zc zQ2jjs%* z_b9J}8nTPna*(GwW|sTCWIdv`Z|%g_@YX~6s~lEkzGr6-$w}T3nB%#U!Ecn;3BHzc zddhPTP(H)wC7~GjZdVMoL-pw{J{fp3Eo^I*vuxV>{#URpaE)RnkE{EBxSh8$#ksF? zli#`Zpsr8Jvh~yHeri$B@ndl{!W(d9Dp%BG?jIj#zm|C^t^c4}a2w85orfOaky)}W zS!dCI%5I$TtScOnm{`?h@=j?Z;x=XZBi|5Hq=VHori1)?#?~U=2D;Y}=mfWHNhEa& za2W6dKQv7uuyKLQvXeqb`GFaOepK7d%AdzBhVMTe=%ML?_>Lp_x3~uq4e7sMJ9GhM zSWCTu24llN`kH6zh~eS($Y5QD8h26Lk^n5AyG*B>njRmER>b)dd3`iFYc#`(S7f{T zuFzb#G|Ll}xYqE?j8lcSd;?GXB=OwDHG-g*us`$Kfkq#R$u}p*&Vc~%^06UxU4b3n zSh?_g4_#-B@i~gtAc8EiadIv&^mL^u_mK2%r&78P5_(?Bz)aFGuhojYTjeyDy3cSI z(O_IZmG*JxlHqSg@37>hZc{f9%X=QSN&DQPxXN?gEcraHLSXalD(q8d3THSyUGn18 z!}}QnJ4n@(s-)a%%hz9k4u7nl<63wWkwHLrD;{`oh3yw495a$>LTV4vXfSkA>%||l zE13R%`R%-hqMHih2kWKw9j5VLIpKIc%k%8L7t4>n(921`I#>aeaysb(d7q8FPK+N`2YJ9Fli?~3=YmkLmR6#sibr zo71E@k!tFXc(jm9I)gY=(r<2Dg-)H%;I{$2{M0YJd#9XH@6jHQHily0xCQ%Uo&!Jf z$$86N?s_;t1wL+$T@KabjpA^`w}kE=(93OjPUT;%L;Op0&U(rm&Nw4@lM#BP;$Z#h z-%M7x80J@ggUuvwl3EvWg8V<~DErrV0FM*H^-Ahv%8u`hLcW%YEeXfGS$=2oeNv4+ zu>OQ>F?eLml4V6~CBY~62K+V{UkeB0rCU5VQ%1#I5y$9Jqk*cgIr6n!-|dk~h-@oy zEZR7I1;Zz#(fl!au-UVQ{Cp|w1&WurZY<4m9f3|I#4!Rtt6Rx=X(u7zq*d+sY{Nd; znkQdlw|G7+;)L!s@39k~w8Uyao)ohe$XJ(rSH9kgbbSz*bPy+P?Z+`(^gaOR8RH9g zTY5P_)fS6%Zpi64^J~-tA0hY3u|1wLO^~c#DJ;P9cYP?6TI2>%(EGdR3vXB0AV;~5 zoxEW7T4v9PB zQ)BYF=3f#r7{5><9UlC5(A_hWQ^q?wM&BESI97;vXW_9>u!a~Le|YWWhXm6v=MJWz zTnF;W61H@y5MDuyjV#2^gj@%)r!WoTSnYHQJ^pNKo}`F6O!hj3s!L{LfgelGyPm_5wYn)IK5VS<=K$QS*rH-;FCq1Fv!RB(`O}q?u~+bi+43*zzaH(;!4aV51p{?+U=2JAy$w@djas@ zC5;|?)@N-Tu8Vr9!G8y9ru>Ou@2Wrrp9WIMWh34pTTStFB`{3Hed-WXh~9X-mwq9C zhShw>hkxNABbnT>UM8K#Gl(DD=P7U85mJUaYG6L(n$Faw638$JL43wSX92{Nnp?Kv zFo`odfP60CXZ=;ycotG^+~Y}xhik#l+8Uk5Hax)&p(TFQ^SS0DYx*U)59RX^Q))cT zoA$Y%>aIp{m&7{a=9!V58M zlnBw>+7p+0uv5f_b2PtHBFE*-a3*Fm+4``b?O{?*( zhrT_y8A}0tW-pdRt+OR~fr83#F%)u|zSTHM;~w_;cSW4aenI}GfkZ8`-NE8nzG?Ct zrxWtY6*iDXKdehZ9n&yxTuB*}bS2sr>_Yrd;1X-+&uB#RvKjBM#aDhLe!F2y)vaVw zM%2cTQZv3=BdBK|K^&3lgS(}6CvGH<<^1H)(dwr(ej57z9pa>wu1ULkRA7aD?WFpG zd~%cQPI=jrcd97&pCPTrQGLK>Q_%6*DtBI($66XX7G7SCY#~tanPsptiFD$$(K|%d z9--XwNKk^*SK10F%TqJy+J~R&6JQVNkxHV@sy8ltBj$Gwjiny!rbHY%PZ^@ZlMC3D zF7s)Pkn2!0;r{XjnEe)~U)xqL7Tl8{=nA~h5Ey@jKkJfx{`Di@Hd?~?f!WW}sfufX z^0{T+lA|WhXYmuLT2I{;UaR^DAA4KAFwKGS*pK`E2tDs9zf|F^^0W5ibY@C_9LmLb z$iTko6ftn<)?rV~Z_F4QdV%uuGd<>!-ihNg*bcH>`|F81RY_UCm;+;@9GF$sN7uq| zYnGOR)$zY%^|m~W)RNk)qWQFGz5XqIlm43Uk6${hQj?~HlEjRmoU7RP1=k%Xwr=Ep zqJ_o5J*CU_T?%*JEsD-@-zazqG`JoHz34V_*#}Lyh|ddoXTux0KZF`ex3MqyH4^DX zw0+Z$;Rr*%@coM?Z->KPz`vI1=;Lucow zE=W0eUf8a}hjT3R2bVQpn9<>3VznTKfP3P&u>X}UFzJ}7eD;M}tBICQ&T~O7pm61c zy)xS=kD7hwpEQ$eMy?(+gnhcTfx-b*>-b{ViSFYvAe2H}4Td9HL#$3#y zX%X`Q%Ch9I0;e;}EJ?~B?;fR0-SOD)`%c~+!*$&4#9#mx%p&AiCeEU>T8*R~Ix!%j zLe+O1oz)U`55PB923*JLZ>)o_ty{yvK^w0CzPXF9Rti1O%;evIJuzD^u;W$Xr%?Om zt_D#w%a7a_-@ z5#N_!N;8@50BoK6z_9TZ{vjCr1{ez9XEh8PV79^r?m-ZE*&siiHGcfs%Q$+2;#N}C zQ1G*o0*?Vd%Qg=O5-OtybRxRRWE0lMl7`i;75$U~KP!!l{|DZ-$j=gn!z_;3b3BMU z8b;DUtIU^+tMF*B3A&k*?LsDxcg&nB89=1;4z zerSg(A=D<3o-8wNYZ^rFP=3`Qc|6 zeC2Wb0<5S@G%3@eo|i3Wgn# z_@gs8P4>rUQk;)w$uf5YcAjjnG8P$6yzy}2)9p)}mG^xg_*1@otj*{V%gdFTd9_@; zY)PmRm{o6;PW7v6(p@{@FgS}3yjxMa_U)hUWoE3deK`7%>xfnJeNCYpvUod+0C*u| z;Ir?i*N*N8QF{0e?igoo6|MpUYy|TC1HkNS0B&d>VhTY|v49)!mgRvHjXF#WuX0?= z`hNO8oTrW<_4o?+jhPH1+ppyU11xg`2%t-WYN3CKn`I62SUsoKiXVcW_liBzo~3%dm$U0pEGO zrz&w91^f({tKC%B z@uUtk2kJ7zeVqmJ?i(QUmB`1%n0ljuA}J*7iNOo*R>a%XkWQ@Xn+{wMbY|Nr~{ zfB*mQ|Ns5J@i+YQCs0cR1QY-O00;oXj_E$TBmQY90000`0000K00006 zM;0d+CkMx#po6m>q9@VWYdLu*68x>PpS(Z_VcjqKl3{@f24Gap2Ddgn?%w+0Zn*41 zVvEYAg)NUH`GNVY+FW;9NTQO2M1mJTdI3;N0|W{H000008i+kVEiwcsF8}}lF8}}l z1poj5Z*_DoV=pftRA^~)AZBT7Wgur|baNnYc4cyRa%psQWo{s1c_4IXWgug3ZgypI zbY*fbP)h>@6aWAK2msfCFh2_Vc<`$U005Pt000I60047iX=W~H?VVZA(m)i3?@jy< zO}tT~vAYUabOR|=($*Mbj8VjW3*Z*xf47@Lr>AB5QbFtBg*u;oJe2diGnBS$w(C#J zt+d%b-Yj1|m%dA!j~iE|V$;aJ<4Mxh8y7Dy|K!vAS0CQ<5N}*fAkjSh_4ggCLfpK1 z@qYD8+PwU*-b(lHhR(3clJ0+4Ka)nwPzPl*1 zvLT3-Jd(P)=?UA9q=CB6N{2XEKZ@V2JMo@EE$jO6`%k&R2?<~=Up`rv2EM#e9;%Oq z2V2IFI8@*Jz$LO|E4#8~En7sgB}>Q>*@l#TtQpHN2npdU zMV3J%2?=8v`z}kiv9B>kX|XRw#?Jp<`b9lG|MNU|&T;SgyzhD6_sluhYur(y%*`=i z7_I40tVybkOp}3)q~0U7tl-3`hg^#@fEx2-vI@_}((_@_TXR$i!4^pR*QoNuUeUz0 z{U!=B2)jRs$2q91EauBU>qU4n=XxacqG^Naa@KFGCr%jI*k0ttN}z zNpl3w2S8oFLU7frSD=QMAED1i8c(GweUNS;_nVY@qx1o;*`#S~bhE%Xp-8%|p~u4K z95bO$Ll*u~BaRklYeDA`A3SMa*fWRQD!#H=^K2YSwR9f|9kHN`H`<_SP-mYxc5!?d z9fpjh0lp*4m((%?OF1BCc$sLB9%3xoo`{{FOQ1;2PlNce%6<2s$U)ISI~T|A#-><_ zHTm4h+uB~1_I37HQQmkTwKmn7?~EN(U@$fvT5-ZdtUgl13Qj9-}bn! zbr&zoYux7LXjomYS{VIf2o+@&gNkbWLB`!!S%grb6JT}5sLOjBk{Mp6D)`D0=lkEP zReaXA$}ZCz!^Nxqd+Wa5 zhW1fP^?zn6%iXPTIt4R%g^jyWaIH)z$UFdMB3)02D-{nUu5`*GI_ZwpC1sc{<)K9t zRX8O#J5~9^u#d2pr%Rnq3-&l+IgDOmOK$?G(^CM&UI0;g5XBJ9-GgB>U9mGMSgMKA zC3Aw9Ju`%Nnegh?f_p~)h%lKYl zX+a&@?tpl?UO+NlnFkmTEogu3A9%d9CSYDDl^bkwVLAN zThVCn8A-SHk;a`U)DO%E6bv>$&!NFePBJ1L82``9itbA2); zT{ug=IisTrSJmlYZOIiqX(;M>wyasu=>3@M7)y~kz0^OeA8RO4Z}@AhkJJ3!!M#TU z=dvNIkq>&`^-SQbWK$cHq-9h4#XJ(0VY{<=tOA+1uhSPpphM^mykJ@cwAgmWL$F3p zBge{q!PtRy?o-X>Y{86(jAGk14^+_F!WFMMs+*w?=J$9is;J8%@4o3Wos|8i@t^vn z(K)#CKyzE(EUS) z@edwl9{3&bgz}_If%0U*^Zw61#u(2K`lF=CK52Ed+e)+u=Y{8&PCZvje#Ir0Nv~nu zwU;23zX7Vyi;}WT<`N4H;t>n&d?D#ecB}2Inf1Qnvw~4l_a>|N2i&1N`D`ioXJSW1 z9{aq=MA~=PqV3j9?Y5Tr#WO8tPn(MB${&6G8Ku#RxM~=zADSLH+!3^MU2AN*T5JD> zm^hJEU+0yS!v7j*M!FY}ooCPLF7REg{SsX%?cDvodS~e@Et30(X)3)2N^948(uEhW zm@rD}^ZKLKvs6R!$x@6W>2<<#CUX9(4_4>S^of|&Y;QDT`LGaYNZ&5@1*AKsGq2T5 zwNf}UQsA4AL7otDIc~%AC8TW3FKRPiD5f*k8gm8`uBFobGM6?WW(u8i?q+Sa0oIm2 z47rW>D)Otm<4Ein+oNlUzJWxVmf&=TX|wd>6AK?}@y87|-ES`#cmf?n&+`sNTg)(H z@~ot^P_`794x^i_7$?hIrlH&?--giDyhHF1iFTjY5fU)V8gnB=Gs`fVR|^$Sf$21g zkp}*oezmfrZ+SOy2))fabS4D37H`&)D1jaqLsi$=hzrO!+)5#5$DoSq`m`Ko6D0>% zBeDdR^1X3zibSI&X2Wr_V~v$w7ONgrx9j3(36~ra!x~c#Z|4kw8$@09D*syG&XAUx zfB?L0)Kj{lqJLdaU)ZVyG6U@_OGcnln7%9E7T3|Isn(^<45jO)FfUC`$cPONSYLm+U!;-8C*V zwiriVi5Q~oCM&x(^YvBBfm!Nk+-90fbNwl{;;s;`E%y%+Tft&XGFJY_B*kd@FH}>* zm=uv@aTqUyiy0IlbENSbEhRY;%#u{IK5V;roD8M=o;aV zjwTIF=9%uCuO^>ipUrD-U1EHO(OhX-)WC;(Pxz0x5Q%&C8o%`& zEi>)VP=Edp6S53c^Owoznjw1MVr?}ggEm(-IgR)-2-EQPh}zMpG=_#`i?$O{ucH+( zX{#CMo~$8GEI($Uluow#pi^=JS!t5Tm`fS+4Tmc&{Ol~UcKD`#ArPl!k24iJC6QL)>rb_%jMtx%)s;n zls^qW>FL6dl5=gSqzrR=tyOxhH3WM-YtVt(`oZMH#~UUB5rafhNnW0O;qZVRZyDf8 z1utlQ?3mYIUF?X+U%a&Ig^uNtCv89nO$=%>4`C=FR7jhQBs{gKJCnU753eicibgYe za1a9X=5d*2yI({HNmb7}OadWVguGAok>;6N6x&?MQm9VA{Zgn+ztrZ#etqv=zM40+BXeG9AJs!>L4;tdFH88vOFZ@Le}i}!Zat657^6tCZ9 zw;%9yvN!ik^I84FU%zusK>Eh6Hx;^l$<(Rx8xiOw$yQOm#zGxe0Qbb>r`@f0y*hUd za+TlMG0LFrJ#6tf@y2fpDoFJ=+WFBlYL7F5#+|56%-OCbgfB?-4d}*`K+0S4?=#~u z-wP>L89h6NHq{c^ZzEk4CNN`0*Cz?7i~Wh~>TjFLUkz!dul74h!s8~zD%EC4#D;FiF`Lvn+)sYYBOkowXB|y+|n8|C%-d@BupaF zUXYMoC)0$lPlZ|4?fx+NC$8`}BiDL-7ddx|FF=S2AmXgYOohG{ySUG8IhjRBCyU@` zDv&?@7f~}ISko346ImY7s7n@g!+H3R?`wjnL#L9TkSdY)R4Mst^Y=WOC!?!B5_k@gO7W(T)h&x=fJv-laa62sZ zY`Cp9M^{>xPu4TleOr-YhnHm4rsS;g+?;gr9^d)7LGDg4A2;WKVhb%{pP|CZu;#>G z-?nM?BWmB2dSJ#r7?Nx{?EXolU&S&j(oTX8lluIp8=E~ZZE5do_xu}@Pa!NABiZ-6 zTN;C3tQ=kz!=I4tifYCpr+=JEH(=K5jhmGy47_G-M*TYb(PY;EN$E6^WW#39&SeMc zg-EV;r3R0Fg8ox`dqYpsV1i$elE8yO%p8-dcV-CCB4iqadWjwWy99@6054#bzxuc{ z_7t$Xg9n(2_`S+o-*Yoj*3`3i()EDpxmZ|1?^2Q77MW(EbL_HWWz5oV(&=jz!x;q0(QIhzFO~I zX>0E`F7fZ4eP8IMrP5}%djg;AKOAh+W>;xOzxCx@z5^v*?);F7mFE0%1;3<8TGlIm z=FWEHh(mKZuC=3qZgf{_*XSMYmnf|Ri@jMV?l=|f6-M^32Mq=2pN|U)#aZ& zEk-4)Q?=TX(M4|6j#I(JW{dlHF;8h5Kd71?zP2f$6Q9st6h<5o7I3R!_tuHy(PBup zxNn;XtVkd}{N3V1Vub3LU_PTooeP>=ElV>;1l||Qei*gD^o#O|6Mmb0K%k|7$o&yD zTT#!uz-Rg!F4Fi?f7KH%771lo)=A8Pe1CkW-SyK3O;X9E9mPG}p1LwEgC0L48=KJQ zxW^^ph@eIG(So#eLxys}?81#_lsxhe$IEH8jTPJC`+HXAT^^VSkH^sW*JLPH9y9sy z*5&JR6_b`ZtLeG?+3YaIRGn@rQ3ZAWkq9K~g`|jN$@RC;9Pv!$cMqn$#{9oI3o9F> zDZN=^<#Eh(&yxsT^Ns3=5sDEHWHL)++g{uqZ}P&oI;VKR#p=y`3AXOLDkY?A>#(@Q z`8ra~tF_S|PImQ&Ggkq#e-{#3EN&vd(+u%#TPr&6tz(th5 z0ghiS1#4>{SqHOm7Iyb?KR^$%YM;X7?)5)k$~bM}Wy@|PFo`-sj5 zSOPt~juQ|tg2;a10A4Ts!TpvX48I3EI_}XBN%>h{^Bc}o0CW4OkaNI^cEY2|j|lN_ zJ}M;d)kS%0I`&0bA_4+C;I@wiKo1HBP{DvT;x{VtyCsaUa&dEZI4TDmj07(Q<5OVl z;lS!3^h*i>0VwA){r@LNSm7SjOV1hRz26Y_fJ5DmihlQ4PCoc#8?z*kVcY@ydioF1 zm4NSl4@|@f$f^okxwstg2jN)yD@b6X@}Pi0;$$NrP=;E1*!~e9aIp)ey-+*`1n1pJ z0s_D@zX}IXU;oYQ&kSKF3&*1a-he)mXd$VZHUzpl00+3x9uy9sx(P%Fs$k`AkFa<5 z{$B?8C=Ti_6MQwp2e?uYh$0x?gTet+{Q$0Fq^D-4=wW})TG-O!j|mCpuzz*lufR0# zK>=;$<^Gk?KB{iRcjoGsXzv7BKwTm*3&0iPpl|@y4FIu+*}KEN;qFi;VXLDgs0>v# zIv1ZvKoDE=x1ISsf2GgC-1*=5-}&}K#UAhe!hdDok4pGgUj0x)Hz46?mi>S{m=pg> zhaZx<^}mwiN0t36-+hRr1IR)4`zZ6TU#bonIOfRa`^&Qj!~54ZeaIR29^rsZ`>4i$ z?b3&2?4P9PQSx6q#UZKQe?%v+Zyb;Zqy5)9dq9GdPG#W8s!P28=3@jFJOnT`9f3;( G1pf#4YEcV+qUk+PA0y|#I`-LHL)kQZJQI@wllGv33uM#*6x10@9tJtHU4?3 z`t&(fr@9^m83;&B0000Bc&KxfTx!3_W*`LsLTvy56aXPWU*E{k$yDFo(bCr0jM-RK z1r7k=bNWqbC9X@?;H2JOEi)S5VWflZXBA`L+KPZM)gc1^O_V zPpXpDGZSC_t-8uc^K>as{dARK?wXb2;bAK$uP@~LaejY)Ur}P0o%7@KD5Yk*3&`-c z#A&9jZnLOow>#{j+TUSrX)NF3qSt)3x>0xlZ@H>#ea6a^tEpD#vL+&b|HI30QnN*` zAJvQ?BbiAcc37r;DppkJ>s$oQHuL$dUFLpU%_GY|Zetc3pH01;$_aH{>)WM5apkng#x%-` zPLO&^tBO$oY>#+Hm6505oQ1kmli3D$980HE>p7@#fhgQ zB*j9tg6X#3D85hx3yxGMvp;5`VDc7;p5q*EIB=sw>ws~^Ot%vM0Fg!E>a6=Wt^SlN;OW*iS7@RnrzG9Ob? zyxNxwDqjrXv=tX0mW?T4PdmA>m4Y$03NXPq zKlpWcnl4uvg#g91M4Bi>s@qE2jf$4AEDEht1JA+jiSL6{a>x~rk1;NfO)V|X3#l5rZW9F2@m;b zMHEP#ajQv8hM%$KJ5;Gy-rxmcFQg5ubqS#f`d-zk=9qBr94gf#Rq-17$W!*ioxKFN#D z|3L6~XF9sMM;~Fhhws6lPP{O??H{?s{O7H zF}h{t4_L%TUHcvgdpeQb?`;890z->6XH8ibHYAt!{Eg*8AaAtb89(;xa)c(rkn%l? zEz^k;n$cTm@)xLq9d~Vcyw`zd;G-r#ekg@K)a5LsTpNZ*5MisqY=@-ot&{Ne(M514 zL=OnRcc&mL8WIG3vYSJ^Qx+)Wppk(JHSu(>gDUBfa__oslTkAwv8 z*=uVabt(=cbJ}mnI!v)3&cy|Z4^S$dD;&!Jgq5H8Qq`}$QZ51~du`Iw6lte2RA^VS+>tek8aCo~YF0Iv84 zd@YZKcjh$B22E-M%ct3)dq@_Jh|G$R5?GAjbF@tioxqXhW!kK^Q;SF~FAg@&X*qi7 z88#H5>M_w!u-Ek_{)Ooz1H7-5^?%A z36XI@?UqS0R6ChcBYq*q=ZOL`+0XK47@;+}J8zGwT$&Mt>vOR4;af&WS?sv4-K; zgQqotS5|9jHy4$TJLa*NrQcX@sN3d-6~Oam9jr0pAoe@!$bz}$PrJbs!E4#~tb z+_NOEYLh|WS{dVKe|BAx>7oiQXkuvoXP4|;mPeg0YDcEH>>6<@{stp_qY4#M3Tfo4 zI)ueHMJwTrbf%Z~Yb7E4fHUJ)%wzqzP7hJTCQyBu+HrSvBK-FSFZR|>+eC!?g-8UL zFjOfnIIXXJo{XKguIQBmEgtxzz>t3C-L!o|`z8Naae3MZfj1co#h}T&Kjfk6u{0Iv zglhK*om?>%yx@1w$Uoq`d_sN1kEqO$p2OXUB@>t5f2C3ymy+3veNosbXtZ6(et;$? zcp2D0xC|x-53vrky|q}kA?PORV=y`OtEYM(c3rzOZVV)3&jqN^fvYS|DMH;GPmV({ z`pMV!Z!s(~|JdI!`n-^*85W9Uc(HLgdCp@&%f{#ppAr1l$C4is2OC=I^qr_RYR?Z- zy9C#PoKYeshdZR;nQ+`a2R#%FM8%ocRRb=X=gx#uf0qs^Fj!n4Ak{dRlTwZ%9WW{RI)(yYs+o= zO`F-uICA%G#=iGSINpMMmaEyu>kg!S{0EVrhjMuxeplD(1uHe#t=a}&>b2d!jNj1& z^%P)F7M4J1{><7e2Embul(t&S)u-1`Pon35#!*Q6HJJx5pk2!)E%JA=s)veeFr;M) z|ILK=pMh`k#fO)=327`lN7E&qRQFRu{SIe9V+@GoLxek?cn2*29Etn`2DLoHfjEF~ zf2+2`&SY1n!TZlIIBS`w{D2GS}7Z#S#-q=u5oR>a6zXV%%Iy+6deb9}L1*T+&+l$LF~5 zXAdTWKJcH{)^?YlkBAjbZ=WPT-Z8pl%o>`RO>xB{$s7El8xXqBBDTG?qmA(VBR763 zmCZ+$y$t!LOF7+vhAoj_m=Ya(+N$y#|?{Xx(rXAv9m}u1L9`gQx07Q z!*v=@&yTCh+(vQ@BzT~*JoCu68&it7114rnab9Y;>J(Eh zh5W6yGkl)Us>0hH<8jvt+HwY!k6dm_GYChUNQHXTd^3h<(x1=*sl`uwwWI+wLBE&| zsEBCgKO#DiGFCK5LW#xBdF13@bjews)5k~AWp%A$Uu3{Lq>Za5A%zOrQ;Wtvf^5 z{ZGb%y5Zi#h^o%c$_SaGv+NX~;be5ok~e0L)v5mItg{hI)0o?k2dtXJoG)4CKZm?c z^1{{L72J)Xt)Ls%skhT?3C0{sjZTPXv_8?s)oe+^XvTRP{4i}G@p&77_~$@ef-*s5Vs?PY98xTFo}05EQLHP z=iq-fc4`!H8W1`(NqalA1MndR9 zLFMo+h7+_fP- zAdQ@k)cL*<6EB3jiof|9d#1~eW5FcQb*QX4P0`Op z=3%I&KPzrTrnD@UVje0VV1=q_NCt+Ra1<7lxp!ZuFc~nO+JKf&2!Q)=6Xq(s-?nP8 z#2fmkmnyiiN_Zm9w*{r6_3=~yWV=fg(^cTjTuGvcl!A;_ouwzP*2=e{!AU%o!ms@h z{Jf5=l-dZV@Cr7om@3>DegVP+j9G&(Iwn8^C#+IiauUPfnQ;Vtu#kqZNbvq2XQ!gX zCzAKfh%UISJtMU*LpQqitbw&%NtU!DSBGB%M$h2O2Ptyg1$fYiUD>~%IM_ewDQuOX z{Sx-D^pJH`Y9EOD8B3?EI06is-rhszlwOp24j`>`n;Z$(Xlvg{+Kg~hhT2g4xnyXj zBoWLIWj7(q58q8liTAG9VK=CKmc-DP?+x|gNZqDVv#tg1jNW%681FHQH8{Ige2f}$ zj(`7?-VZ&`taE@f(LjNx`bb0Ct~k&Tjm~*gZ_iWVWswTbt8JOI2%JyUXmi>mK1^No zL{zK;86eHOiM4Dz$undyRqfJ;p6$nXicB2as;BzEr|++KnZcATZ9p=TH4LkYZ(|(U zRAWP32J65bEs}`MSq(a~PBto6evpLk!6?hDDUfj6B^P5;H}yw1XLL@_E2FArQ!SHC zU2uT#pX;Gbg$lDv2MbZ0}>Zpg)=@m`m`~K(1Od<*D_tuNroxL1j%k!>3V;rWn zYkMU=!cWrLF5}l=3oxYMchT#@@z{fnmQ(K=HPjzJq6mhge)2&0TQbUffl_YeYr25w>n#W6SF&>P>a>;Z)iTuhL=%QQ$@LRc zCf9aNqrM=Y-S1Y>*`vaB+s6i@nY2HyqEZ*OCUi8vxASKtNVV?v@#Unk@%HWDVU+SV zfj97ZT*L4(sCc?^hC0y^uA7O>3BGP~6Lk!${PZad6e;e?AIK*r6 zWcYv`BOvkUBL~aIIIEaT`&v{u3gOU0l7jl3=nR1$S!5UPCc>X?cJKVEKppCc*rV z223m!#a=fP$RhjL@$1k7bOa$-LdMXto-P_+MXcmV|= zRs!X?-Wokyt_+^aU~$XG$1|u@ShXl0F2#E+4Ynl=t)s0Sw<(z!0}n^gZ`I~c+=8p> zK|ny0261Ag)52;?)!hztD0_hD<#?vY-D-d=C+wf8 zDoQ<CA7%u#728`t9sjr`TOhO!F%gH61_CS}o$r2_oCR(+}S-}(R#j6xexZAX$!R-*mJK}fF@1nk*}G7sBH0?5o6(`}IE_n}xF6d6zB-+#=#>KT zb%Mt=v)r1L{FJX1IUmc0zT!XKLgWG`qPCVP1?kbJ=xO`j1(qbmUpjP7bT98ivp%l( zU!R0dsm;JXWn)mB5!BfFlVcV(JIjmi zf(G}FAyneyz>s<1B~cYvi3a~4SDt{{E1k|AV>bhzv2fh$Cx2U*grk*NqzAOtFjq^x zX2(@Op`Y@@J+I-f+L`xGFj5jmIDrGnSMj$+)%1$xjxVc}%#nxX{zV9z<*BV>IWfgi z=Ehm52RzJ>vfodp6awRAW+TY_!1td(g(v%l3 z&>a%%WE8;{5rR6GyckfJVPJ|DHOFGdXL&=m_K>cyuBo1x4`Y61we2Cn z$^0SQx#`o;h1gv(g7`4&VsiAc02!${+Kz-Coh7+&e3UO@(EmKO4)i7>@J948&}@x-T&nj;+kL5<|KgtKb`KL*y)Cjj2mN-(iE3FhMX6mC^0jYp;6xh|fh>L!jk5tv( z#l&3LC{E>*SwgPjj(lAE!P?5{NX6Xl4(7Rhhqn0T++UHQ6{eo(?al*qXhKXiCgmf) z3MQ_qWQ%goFj``uy!y+nlopxruY_+xJv|(BC1~YQ`}^ke3O^1r^90oOv$!1!BCb>U zoqTJLVTI&O`$NEEKh6TOo~ip?(O6gr!P(r=EQf?WG~+rk=o9jwn0N`Y>qf3H@MMlw z*KL0r#p2(5$ahSsIK7l0hsd$vF1m0(;G@}zmbnk_P^c~mXc~VuA@B^9lM2>mhfCRL z?#NU+CTl7SgueG!Svm19?cOgt4*0Xele)Q|@vMQNehSMz%G|KN1jkd+ogF0aE+kpF zL51jGteUMoO50$ua@$ie9rv}KG$}CPx>ib9r{Qyh5U`#q+PHcrNHW|R;f&e68S`h7 zDZ)L2ml@?O&$@G{S@2qg1mHpeC|!r~%b$O%UOQ}nnnGn<8x^gD2xlv%cOi;J{&_7M zJ(}57?Rt;HE8Z7-1QaF?b#bPLo>19`cSI%b-6=;@Buj=Sx;pkRmp_Fl+WwjFxUGe1 zAFuzb^qfh0;aJAUkLxx*zvzuh-x-6%BqlOI2VAwhNY^L69Xy<+-QRzbu5X0f%3lv1 zhEUu09hZnndu+ywjw8i5AI3rJV&YcO+0E*a{ud{mafmk{_kB~k1;EFg8OeAg4C9z1 zHG0t#)xsP}ywLc`8hb;^Skb&(&fY-33FJUmP8mFh5=~B$HHZ#5e_CzIUxg9js?o=% zW8h`{^ZZL#jDTD7o*;tvSHZXv4U+SD^Vvw>Y3B05EjIy%9A}4naR95^CmfvW56uIX1 z<4Dh@xhRfs8k;|T^ggdo7cX+B*?d3Ou7Z4^G2%+AaDLnGuebh2hMw(ikjG?c82`xE zy2r#McE#*hv{KuqH}~d`stf7EM9&G2Gz^7mb11rcJ+o7lK1}OixRsXGU1AoT!iFy8 z7~H4LzTXAZhxT>`ywRM7DLiQmb8%47fKyxPoG8zeMu4()N!}C9;y1{ZF`xv zO0u)>%iog|5-ISc*)p5KwkJC!h|4*|TG4?UFpL5b=?clX=3}4;J_WWN9GOlX4sXMN z8ERgI+4Gw9W$gnY2VCOr%N166+&4&5?A_0EEq4u3G_Jhc^>>ftM(V~_1^APe3hd#Gr*w5$hvDBRNKNjhb zk83KNV@?L*xTZ0oZbD)E>+jV3>iVrnGFUNsV%?_Z-<0$d@8~1SbTl0;YcnM-B?3ly z=p$&v26qp=zhd{F{Z4s-6=kRK?)5Ra_Pg>OXK=fKIBK?hm(2wQ2($uW20shNHkF3K z-*@41avgseUa)Z{KbO}?s-MAg(rKy7O(!Tt)uAIF%h*untP)TYMj7OO*>4+DiAkY} z3FSd{QSc!$@4L0g(AFq7-m>@{N@@Ku?6hm8-H5L1-eo75K& zJ;z$?+tu*QV@080pJRB>j@iVz1>*ChZ5)#ukm63oA<7d*?GK`WhyMbk@x4CTp^*~6 z-Ak8a@4y4EYH_+4Ms>?kp_>qTX@Ut;=KsLP6P;i4b}1RwPErf;BhHmAjw2H-B^WEM z9`!+gcskXWI%9aZLKzJkoR937s^1X>(2{IM8N_E2JR(V!@IwE{6vF}%wk^QRw(z01 zqcnxE@I!S8qsf?)7@Cw{sTPV_2Y522x@@RD&2kXKLASEU4Z#?vgQeqstY)#`&P#nT zJ;i$g`(V2q5~Uv$yxvY*2>SE0$@4ByP$H2VA0}HLTcE@n&@wYF`rFz+SQ4E45?$hC zrWNHSXe9RDilr}^5zC;k?h2)s7_>2;uPmruMU>92WS~CH?mIvA=KZn*cQ;7(Hd49{ z&hkaRE7yO#IKH(e(@4uHok{)joteE@0R{!Gd&#A5qB<0G*b&;o4rU7Ib-r7kr6@&L ztaWVYv0yeJmUJd6I!+J|3qAhHf}k2PWmTbKL!oGYu-M{C?b_j>2pFE8_*oNXZ_dnl z!Y5PSyM`ei04xzX*S`h5`Zk$7$2yfcsYK7@^# z6St8osv5)D5_b>J=sP%M(1itrBTc}Zq}YYvtUSLWcA7JHBf);8#XxnQ)NW2O z`65FRk^nokkN@_nm+2CtWpm-OCD9ufIUm5%yqK*9^GVo^hI8YFWqvm z#tN1;?~_CU51TBXa6a5oeKcLikAQZ93EfIaZu;(l2Jtt9&}a4c84efpLqSh!loH3M z=@5wnWWX#OH9cWpjraxE?hi{hF3)>}uxIC(pNf&qci&RRsVohB3MI+4`Ak^dk(H~o z>89?3lYXxa42MK-E+YuyLbBZ4Mq>#xU%N5(#_ws*!1!&ZvEMF6@vYg8A@+4m%oNWk zgwFR6*cQXMz6eom*3Mt^~uH8%7AEr54Kp){9hT7(G{U$6-Onb&0HG`Oz zg0`*@Xl$>O8Zon1qKxA_*l8B0i+595f`p&jO4(cKkg$$g4}JKNiFXZvkyQk52p1J0 zKFf~dj(Ye07z1|=usL2nZqmXXyv-Ok!B!>tRmUp;D)T(&m1Vi)2(&j!{p9ftx9{~N zQt56Z7wH#SYdRqZN!>{y7b|&(+x@S|VWuTYj4zs@2mXy(!Cwah=AXzpn^@X0Tl|-$ zk;=-UO80L|BTIQxrXPsvtM?IM>|;56oSDml@l`i8@XO#Nj=0D&wRLVW6)05sZCiHk zdxh5ZeqQ3n<`sn-PK;tUI=p)wp}gHS$Eo|v2=}U_L0If?DN`RPO?}Qgtn=^3gL6&$ zbqIf-vIH7FqHuX4mLW7NLpeW`9<6;)2JX?fa)pK)${Hnb^LB3RGaz40-g%M%l$CZo zem^EdYuUC(rl6SnYNG|jn&GhDH`zfdZKrtf{V}xYOo176K6nbQ?wrY7MrSg#3(w;G zJTtI<(VlD{U*%d%&)!)^3wX`SxHQZ?9yMug`rsuaZ=}Y(@VI!gdQO{w7Z5hWF^K9V z_P8*BSD5K5NgohVg2T^Ovh^@+TmE{o``Xq!7l!&ttlQ}W%BsCy0c&wSzMZLp>7G#D z-U4YP9~};C%#pmmA9||5;^&vHP7Sf=M_XQfIed)13Jr9fgxw@HQt%9d-kVXn)7GS> ztu<+q9Enon%LlrX&nC7gDhsFe$JDJSmeRKJOYt871sO1KVu=5jbA$W05&(d|j|yn? z|7Z6v0|)BA8#w=mee<8te;3t%LY+wg|5;*xasQOq{|EQ)O#4q|H!+)uz&LI VUoa@>f35=YcijA49Vz}f{Wm|xsiOb@ diff --git a/autre/syscall.h b/autre/syscall.h deleted file mode 100644 index f2ba177..0000000 --- a/autre/syscall.h +++ /dev/null @@ -1,12 +0,0 @@ -#ifndef _SYSCALL_H - #define _SYSCALL_H - -int IsKeyDown(short* matrixcode); - -#define KEY_CTRL_EXE 0x0201 -#define KEY_CTRL_SHIFT 0x0608 - - - -#endif - diff --git a/autre/syscall.s b/autre/syscall.s deleted file mode 100644 index 484af3c..0000000 --- a/autre/syscall.s +++ /dev/null @@ -1,11 +0,0 @@ - .global_IsKeyDown - -_IsKeyDown: - mov.l sc_addr, r2 - mov.l 1f, r0 - jmp @r2 - nop -1: .long 0x24B - -sc_addr: - .long 0x80010070 diff --git a/bin/sound.g1a b/bin/sound.g1a deleted file mode 100644 index f02904c9ab825173b114cb8b8455eabaf5de8948..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2328 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 diff --git a/bin/icon.bmp b/icon.bmp similarity index 100% rename from bin/icon.bmp rename to icon.bmp diff --git a/Sound4Calc.h b/include/Sound4Calc.h similarity index 100% rename from Sound4Calc.h rename to include/Sound4Calc.h diff --git a/include/_h_c_lib.h b/include/_h_c_lib.h deleted file mode 100644 index 78fe26a..0000000 --- a/include/_h_c_lib.h +++ /dev/null @@ -1,29 +0,0 @@ -/*------------------------------------------------------*/ -/* SH SERIES C/C++ Compiler Ver. 6.0 */ -/* Copyright (c) 1992,2000 Hitachi,Ltd. */ -/* Licensed material of Hitachi,Ltd. */ -/*------------------------------------------------------*/ -/***********************************************************************/ -/* SPEC; */ -/* NAME = _h_c_lib.h : */ -/* */ -/* FUNC = Include file for SH SERIES C/C++ Compiler environment */ -/* */ -/* CLAS = UNIT; */ -/* */ -/* END; */ -/***********************************************************************/ - -#ifndef _H_C_LIB -#define _H_C_LIB - -#ifdef __cplusplus -extern "C"{ -#endif -extern void _CALL_INIT(void); /* for global class object initial processing */ -extern void _CALL_END(void); /* for global class object post-processing */ -#ifdef __cplusplus -} -#endif /* #ifdef __cplusplus */ - -#endif /* #ifndef _H_C_LIB */ diff --git a/addresses.h b/include/addresses.h similarity index 100% rename from addresses.h rename to include/addresses.h diff --git a/include/assert.h b/include/assert.h deleted file mode 100644 index 4c88665..0000000 --- a/include/assert.h +++ /dev/null @@ -1,39 +0,0 @@ -/*------------------------------------------------------*/ -/* SH SERIES C Compiler Ver. 1.0 */ -/* Copyright (c) 1992 Hitachi,Ltd. */ -/* Licensed material of Hitachi,Ltd. */ -/*------------------------------------------------------*/ -/***********************************************************************/ -/* SPEC; */ -/* NAME = assert.h : debug macro define ; */ -/* */ -/* FUNC = this module do the following functions; */ -/* (1) if NDEBUG defined assert(x) = (void)0; */ -/* CLAS = UNIT; */ -/* */ -/* END; */ -/***********************************************************************/ -#ifndef _ASSERT -#define _ASSERT - -#include -#ifdef NDEBUG -#ifdef assert -#undef assert -#endif -#define assert(x) ((void)0) -#else -#ifdef assert -#undef assert -#endif -#define assert(x) ( x ? (void) 0 : (fprintf(stderr,\ - "ASSERTION FAILED: "#x" FILE %s,LINE %d \n", \ - __FILE__,__LINE__),abort(),(void)0)) -#endif -#ifdef __cplusplus -extern "C" { -void abort(void); -} -#endif - -#endif diff --git a/include/builtin.h b/include/builtin.h deleted file mode 100644 index abf96df..0000000 --- a/include/builtin.h +++ /dev/null @@ -1,84 +0,0 @@ -/*------------------------------------------------------*/ -/* SH SERIES C Compiler Ver. 6.0 */ -/* Copyright (c) 1992, 2000 Hitachi,Ltd. */ -/* Licensed material of Hitachi,Ltd. */ -/*------------------------------------------------------*/ -/*****************************************************************/ -/* SPEC ; */ -/* NAME = builtin : */ -/* */ -/* FUNC = this header file do the following functions; */ -/* (1)builtin function prototype define; */ -/* */ -/* CLAS = UNIT ; */ -/* */ -/* END ; */ -/*****************************************************************/ - -#ifndef _BUILTIN -#define _BUILTIN - -#ifdef __cplusplus -extern "C" { -/* follow math.h & mathf.h */ -extern float _builtin_fabsf(float); -extern double _builtin_fabs(double); -extern float _builtin_sqrtf(float); -extern double _builtin_sqrt(double); - -/* follow private.h */ -extern void _builtin_fsca(long ,float *,float *); -extern float _builtin_fsrra(float); - -/* follow smachine.h */ -extern void _builtin_set_imask(int); -extern int _builtin_get_imask(void); -extern void _builtin_set_cr(int); -extern int _builtin_get_cr(void); -extern void _builtin_set_vbr(void *); -extern void *_builtin_get_vbr(void); -extern void _builtin_sleep(void); - -/* follow string.h */ -extern char *_builtin_strcpy(char *, const char *); -extern int _builtin_strcmp(const char *, const char *); - -/* follow umachine.h */ -extern void _builtin_set_gbr(void *); -extern void *_builtin_get_gbr(void); -extern unsigned char _builtin_gbr_read_byte(int); -extern unsigned short _builtin_gbr_read_word(int); -extern unsigned long _builtin_gbr_read_long(int); -extern void _builtin_gbr_write_byte(int, unsigned char); -extern void _builtin_gbr_write_word(int, unsigned short); -extern void _builtin_gbr_write_long(int, unsigned long); -extern void _builtin_gbr_and_byte(int, unsigned char); -extern void _builtin_gbr_or_byte(int, unsigned char); -extern void _builtin_gbr_xor_byte(int, unsigned char); -extern int _builtin_gbr_tst_byte(int, unsigned char); -extern int _builtin_tas(char *); -extern int _builtin_trapa(int); -extern int _builtin_macw(short *, short *, unsigned int); -extern int _builtin_macwl(short *, short *, unsigned int, unsigned int); -extern int _builtin_macl(int *, int *, unsigned int); -extern int _builtin_macll(int *, int *, unsigned int, unsigned int); -extern int _builtin_trapa_svc(...); -extern void _builtin_prefetch(void *); -extern void _builtin_set_fpscr(int); -extern int _builtin_get_fpscr(void); -extern float _builtin_fipr(float a1[], float b1[]); -extern void _builtin_ftrv(float a1[], float b1[]); -extern void _builtin_ftrvadd(float a1[], float b1[], float c1[]); -extern void _builtin_ftrvsub(float a1[], float b1[], float c1[]); -extern void _builtin_mtrx4mul(float [][4], float [][4]); -extern void _builtin_mtrx4muladd(float [][4], float [][4], float [][4]); -extern void _builtin_mtrx4mulsub(float [][4], float [][4], float [][4]); -extern void _builtin_ld_ext(float [][4]); -extern void _builtin_st_ext(float [][4]); -extern void _builtin_add4(float a1[], float b1[], float c1[]); -extern void _builtin_sub4(float a1[], float b1[], float c1[]); -extern void _builtin_trace(int); -} -#endif /* #ifdef __cplusplus */ - -#endif /* #ifndef _BUILTIN */ diff --git a/include/complex b/include/complex deleted file mode 100644 index 76b0085..0000000 --- a/include/complex +++ /dev/null @@ -1,189 +0,0 @@ -//Embedded C++ Library -//Copyright (c) Hitachi,Ltd. 1997 -//Licensed material of Hitachi,Ltd - -//==================================================================== -// File: complex -// Purpose: Numerics library / Complex numbers -// Header -// Create: 1997.09.20 Rev. 1.0 -//==================================================================== - -#ifndef _COMPLEX_ -#define _COMPLEX_ - -#include -#include - -class float_complex; // based on float -class double_complex; // based on double - -// complex specialization -class float_complex { -public: - typedef float value_type; - - float_complex(float re = 0.0f, float im = 0.0f){ - _re = re; _im = im; return; } - float_complex(const double_complex&); - float real() const{ return (_re);} - float imag() const{ return (_im);} - - float_complex& operator= (float rhs){ - _re = rhs; _im = 0.0; return *this; } - float_complex& operator+=(float rhs){ _re += rhs; return *this; } - float_complex& operator-=(float rhs){ _re -= rhs; return *this; } - float_complex& operator*=(float rhs){ - _re *= rhs; _im *= rhs; return *this; } - float_complex& operator/=(float rhs){ - _re /= rhs; _im /= rhs; return *this; } - - float_complex& operator=(const float_complex&rhs){ - _re = rhs.real(); _im = rhs.imag(); return *this; } - float_complex& operator+=(const float_complex&rhs){ - _re += rhs.real(); _im += rhs.imag(); return *this; } - float_complex& operator-=(const float_complex&rhs){ - _re -= rhs.real(); _im -= rhs.imag(); return *this; } - float_complex& operator*=(const float_complex&); - float_complex& operator/=(const float_complex&); -private: - float _re, _im; -}; - -class double_complex { -public: - typedef double value_type; - - double_complex(double re = 0.0, double im = 0.0){ - _re = re; _im = im; return; } - double_complex(const float_complex&rhs){ - _re = (double)rhs.real(); _im = (double)rhs.imag(); return; } - double real() const{ return (_re);} - double imag() const{ return (_im);} - - double_complex& operator= (double rhs){ - _re = rhs; _im = 0.0; return *this; } - double_complex& operator+=(double rhs){ _re += rhs; return *this; } - double_complex& operator-=(double rhs){ _re -= rhs; return *this; } - double_complex& operator*=(double rhs){ - _re *= rhs; _im *= rhs; return *this; } - double_complex& operator/=(double rhs){ - _re /= rhs; _im /= rhs; return *this; } - - double_complex& operator=(const double_complex&rhs){ - _re = rhs.real(); _im = rhs.imag(); return *this; } - double_complex& operator+=(const double_complex&rhs){ - _re += rhs.real(); _im += rhs.imag(); return *this; } - double_complex& operator-=(const double_complex&rhs){ - _re -= rhs.real(); _im -= rhs.imag(); return *this; } - double_complex& operator*=(const double_complex&); - double_complex& operator/=(const double_complex&); -private: - double _re, _im; -}; - - -// complex non-member functions -float_complex operator+(const float_complex&); -float_complex operator-(const float_complex&); -float_complex operator+(const float_complex&, const float_complex&); -float_complex operator+(const float_complex&, const float&); -float_complex operator+(const float&, const float_complex&); -float_complex operator-(const float_complex&, const float_complex&); -float_complex operator-(const float_complex&, const float&); -float_complex operator-(const float&, const float_complex&); -float_complex operator*(const float_complex&, const float_complex&); -float_complex operator*(const float_complex&, const float&); -float_complex operator*(const float&, const float_complex&); -float_complex operator/(const float_complex&, const float_complex&); -float_complex operator/(const float_complex&, const float&); -float_complex operator/(const float&, const float_complex&); -bool operator==(const float_complex&, const float_complex&); -bool operator==(const float_complex&, const float&); -bool operator==(const float&, const float_complex&); -bool operator!=(const float_complex&, const float_complex&); -bool operator!=(const float_complex&, const float&); -bool operator!=(const float&, const float_complex&); -istream& operator>>(istream&, float_complex&); -ostream& operator<<(ostream&, const float_complex&); - -double_complex operator+(const double_complex&); -double_complex operator-(const double_complex&); -double_complex operator+(const double_complex&, const double_complex&); -double_complex operator+(const double_complex&, const double&); -double_complex operator+(const double&, const double_complex&); -double_complex operator-(const double_complex&, const double_complex&); -double_complex operator-(const double_complex&, const double&); -double_complex operator-(const double&, const double_complex&); -double_complex operator*(const double_complex&, const double_complex&); -double_complex operator*(const double_complex&, const double&); -double_complex operator*(const double&, const double_complex&); -double_complex operator/(const double_complex&, const double_complex&); -double_complex operator/(const double_complex&, const double&); -double_complex operator/(const double&, const double_complex&); -bool operator==(const double_complex&, const double_complex&); -bool operator==(const double_complex&, const double&); -bool operator==(const double&, const double_complex&); -bool operator!=(const double_complex&, const double_complex&); -bool operator!=(const double_complex&, const double&); -bool operator!=(const double&, const double_complex&); -istream& operator>>(istream&, double_complex&); -ostream& operator<<(ostream&, const double_complex&); - -// complex value operations -float real(const float_complex&); -float imag(const float_complex&); -float abs(const float_complex&); -float arg(const float_complex&); -float norm(const float_complex&); -float_complex conj(const float_complex&); -float_complex polar(const float&, const float&); - -double real(const double_complex&); -double imag(const double_complex&); -double abs(const double_complex&); -double arg(const double_complex&); -double norm(const double_complex&); -double_complex conj(const double_complex&); -double_complex polar(const double&, const double&); - -// complex transcendentals - -#ifdef sqrt -#undef sqrt -extern "C" double sqrt(double); -#endif - -float_complex cos (const float_complex&); -float_complex cosh (const float_complex&); -float_complex exp (const float_complex&); -float_complex log (const float_complex&); -float_complex log10(const float_complex&); - -float_complex pow(const float_complex&, int); -float_complex pow(const float_complex&, const float&); -float_complex pow(const float_complex&, const float_complex&); -float_complex pow(const float&, const float_complex&); -float_complex sin (const float_complex&); -float_complex sinh (const float_complex&); -float_complex sqrt (const float_complex&); -float_complex tan (const float_complex&); -float_complex tanh (const float_complex&); - -double_complex cos (const double_complex&); -double_complex cosh (const double_complex&); -double_complex exp (const double_complex&); -double_complex log (const double_complex&); -double_complex log10(const double_complex&); - -double_complex pow(const double_complex&, int); -double_complex pow(const double_complex&, const double&); -double_complex pow(const double_complex&, const double_complex&); -double_complex pow(const double&, const double_complex&); -double_complex sin (const double_complex&); -double_complex sinh (const double_complex&); -double_complex sqrt (const double_complex&); -double_complex tan (const double_complex&); -double_complex tanh (const double_complex&); - -#endif diff --git a/include/ctype.h b/include/ctype.h deleted file mode 100644 index 66bcd87..0000000 --- a/include/ctype.h +++ /dev/null @@ -1,66 +0,0 @@ -/*------------------------------------------------------*/ -/* SH SERIES C Compiler Ver. 1.0 */ -/* Copyright (c) 1992 Hitachi,Ltd. */ -/* Licensed material of Hitachi,Ltd. */ -/*------------------------------------------------------*/ -/*****************************************************************/ -/* SPEC ; */ -/* NAME = ctype : */ -/* FUNC = */ -/* ; */ -/* */ -/* */ -/* */ -/* CLAS = UNIT ; */ -/* END ; */ -/*****************************************************************/ -#ifndef _CTYPE -#define _CTYPE - -#ifdef __cplusplus -extern "C" { -#endif - -extern unsigned char _ctype[]; - -extern int isalnum(int); -extern int isalpha(int); -extern int iscntrl(int); -extern int isdigit(int); -extern int isgraph(int); -extern int islower(int); -extern int isprint(int); -extern int ispunct(int); -extern int isspace(int); -extern int isupper(int); -extern int isxdigit(int); -extern int tolower(int); -extern int toupper(int); -#ifdef __cplusplus -} -#endif - -#define _UPPER 0x01 -#define _LOWER 0x02 -#define _DIGIT 0x04 -#define _SPACE 0x08 -#define _PUNCT 0x10 -#define _CNTRL 0x20 -#define _WHITE 0x40 -#define _HEX 0x80 - -#define isalnum(c) (_ctype[(c) & 0xff] & (_UPPER | _LOWER | _DIGIT)) -#define isalpha(c) (_ctype[(c) & 0xff] & (_UPPER | _LOWER)) -#define iscntrl(c) (_ctype[(c) & 0xff] & _CNTRL) -#define isdigit(c) (_ctype[(c) & 0xff] & _DIGIT) -#define isgraph(c) (_ctype[(c) & 0xff] & (_UPPER | _LOWER | _DIGIT | _PUNCT)) -#define islower(c) (_ctype[(c) & 0xff] & _LOWER) -#define isprint(c) (_ctype[(c) & 0xff] & (_UPPER|_LOWER|_DIGIT|_PUNCT|_SPACE)) -#define ispunct(c) (_ctype[(c) & 0xff] & _PUNCT) -#define isspace(c) (_ctype[(c) & 0xff] & _WHITE) -#define isupper(c) (_ctype[(c) & 0xff] & _UPPER) -#define isxdigit(c) (_ctype[(c) & 0xff] & _HEX) -#define tolower(c) (isupper(c) ? ((c)-'A'+'a') : (c)) -#define toupper(c) (islower(c) ? ((c)-'a'+'A') : (c)) - -#endif diff --git a/include/ensigdsp.h b/include/ensigdsp.h deleted file mode 100644 index a82d9e0..0000000 --- a/include/ensigdsp.h +++ /dev/null @@ -1,257 +0,0 @@ -/* -*SHDSP Library -*Copyright (c) Hitachi,Ltd. 1998 -*Licensed material of Hitachi,Ltd -*/ -/*********************************************************** -* File: ensigdsp.h -* Purpose: Common -* Create: 1998.03.20 Rev. 1.0 -***********************************************************/ - -/* -** Copyright Ensigma Ltd. 1995 -** -** Unauthorised copying or distribution of this software is prohibited. -** -** Version 1.0. -** -*/ - -/* -** ENSIGMA DSP Library -*/ - -/* Constants */ -#ifndef _ENSIGDSP -#define _ENSIGDSP - -#define BIQUAD_SIZE 6 /* no. coefficients in an IIR biquad */ - -#define EDSP_OK 0 -#define EDSP_BAD_ARG 1 -#define EDSP_NO_HEAP 2 - -#define EFFTALLSCALE (-1L) -#define EFFTMIDSCALE 0x55555555L -#define EFFTNOSCALE 0x00000000L - -#ifdef __cplusplus /*A-10-014-01*/ -extern"C"{ /*A-10-014-01*/ -#endif /*A-10-014-01*/ - -/* -** Fourier transforms -*/ -int FftComplex(short op_x[], - short op_y[], - const short ip_x[], - const short ip_y[], - long size, - long scale); -int FftInComplex(short data_x[], - short data_y[], - long size, - long scale); -int FftReal(short op_x[], - short op_y[], - const short ip[], - long size, - long scale); - /* int ip_is_x);*/ -int FftInReal(short data_x[], - short data_y[], - long size, - long scale, - int not_sure_about_ip_format); -int IfftComplex(short op_x[], - short op_y[], - const short ip_x[], - const short ip_y[], - long size, - long scale); -int IfftInComplex(short data_x[], - short data_y[], - long size, - long scale); -int IfftReal(short op_x[], - short op_y[], - const short ip_x[], - const short ip_y[], - long size, - long scale, - int op_is_x_scratch_is_y); -int IfftInReal(short data_x[], - short data_y[], - long size, - long scale, - int not_sure_about_op_format); -int InitFft(long max_size); -void FreeFft(void); /*A-10-015-01*/ -int LogMagnitude(short output[], - const short ip_x[], - const short ip_y[], - long no_elements, - float fscale); - -/* -** These three variables are for the internal use of the library FFT -** functions only. They should not be accessed by user programs. -*/ -extern long max_fft_size; -extern short *twtble; - -/* -** Window functions -*/ -int GenBlackman(short data[], long N); -int GenHamming(short data[], long N); -int GenHanning(short data[], long N); -int GenTriangle(short data[], long N); - -/* -** Filters. The coefficients must be supplied in X and the workspace in Y. -** If it is straightforward we can support the opposite, ie Xworkspace and -** Ycoeff. -*/ -int FreeFir(short **Yworkspace, long order); -int InitFir(short **Yworkspace, long order); -int InitIir(short **Yworkspace, long no_sections); -int FreeIir(short **Yworkspace, long no_sections); /*A-10-015-01*/ -int InitDIir(long **Yworkspace, long no_sections); -int FreeDIir(long **Yworkspace, long no_sections); /*A-10-015-01*/ -int InitLms(short **Yworkspace, long order); -int FreeLms(short **Yworkspace, long order); /*A-10-015-01*/ -int Fir(short op[], - const short ip[], - long no_samples, - const short Xcoeff[], - long order, - int res_shift, - short *Yworkspace); -int Fir1(short *op_ptr, - short input, - const short Xcoeff[], - long order, - int res_shift, - short *Yworkspace); -int Iir(short op[], - const short ip[], - long no_samples, - const short Xcoeff[], - long no_sections, - short *Yworkspace); -int Iir1(short *op_ptr, - short input, - const short Xcoeff[], - long no_sections, - short *Yworkspace); -int DIir(short op[], - const short ip[], - long no_samples, - const long Xcoeff[], - long no_sections, - long *Yworkspace); -int DIir1(short *op_ptr, - const short input, /*98.01.09 C-10-005-01 */ -/* short input, 98.01.09 D-10-005-01 */ - const long Xcoeff[], - long no_sections, - long *Yworkspace); -int Lms(short op[], - const short ip[], - const short ref[], - long no_samples, - short Xcoeff[], - long order, - int res_shift, - short mu, - short *Yworkspace); -int Lms1(short *op_ptr, - short input, - short ref_op, - short Xcoeff[], - long order, - int res_shift, - short mu, - short *Yworkspace); - -/* -** Convolution and Correlation -*/ -int ConvComplete(short op[], - const short ix[], - const short iy[], - long ix_size, - long iy_size, - int res_shift); -int ConvCyclic(short op[], - const short ix[], - const short iy[], - long size, - int res_shift); -int ConvPartial(short op[], - const short ix[], - const short iy[], - long ix_size, - long iy_size, - int res_shift); -int Correlate(short op[], - const short ix[], - const short iy[], - long ix_size, - long iy_size, - long no_corr, - int x_is_larger, - int res_shift); -int CorrCyclic(short op[], - const short ix[], - const short iy[], - long size, - int reverse, - int res_shift); - - -/* -** Miscellaneous -*/ -int GenGWnoise(short output[], long no_samples, float variance); - -int MinI(short **min_ptr, short buffer[], long buff_len, int src_is_x); -int MaxI(short **max_ptr, short buffer[], long buff_len, int src_is_x); -int PeakI(short **peak_ptr, short buffer[], long buff_len, int src_is_x); - -int Mean(short *mean_ptr, const short buffer[], long buff_len, int src_is_x); -int Variance(long *variance_ptr, - short *mean_ptr, - const short buffer[], - long buff_len, int src_is_x); - -int VectorMult(short dest[], - const short matrixX[], - const short matrixY[], - long length, - int res_shift); -int MatrixMult(void *matrix3, - const void *matrixX, - const void *matrixY, - long m, - long n, - long p, - int res_shift, int dest_is_x); -int MsPower(long *pow_ptr, const short input[], long buff_size, int src_is_x); - -int CopyXtoY(short y[], const short x[], long n); -int CopyYtoX(short x[], const short y[], long n); -int CopyToX(short x[], const short src[], long n); -int CopyToY(short y[], const short src[], long n); -int CopyFromX(short src[], const short x[], long n); -int CopyFromY(short src[], const short y[], long n); - -int Limit(short data[], long no_elements, int data_is_x); - -#ifdef __cplusplus /*A-10-014-01*/ -} /*A-10-014-01*/ -#endif /*A-10-014-01*/ - -#endif diff --git a/include/errno.h b/include/errno.h deleted file mode 100644 index 67daf07..0000000 --- a/include/errno.h +++ /dev/null @@ -1,114 +0,0 @@ -/*------------------------------------------------------*/ -/* SH SERIES C Compiler Ver. 1.0 */ -/* Copyright (c) 1992 Hitachi,Ltd. */ -/* Licensed material of Hitachi,Ltd. */ -/*------------------------------------------------------*/ -/*****************************************************************/ -/* SPEC ; */ -/* NAME = errno : */ -/* FUNC = */ -/* ; */ -/* */ -/* */ -/* */ -/* CLAS = UNIT ; */ -/* END ; */ -/*****************************************************************/ -#ifndef _ERRNO -#define _ERRNO - -#ifndef ERANGE -#define ERANGE 1100 -#endif - -#ifndef EDOM -#define EDOM 1101 -#endif - -#ifndef EDIV -#define EDIV 1102 -#endif - -#ifndef ESTRN -#define ESTRN 1104 -#endif - -#ifndef PTRERR -#define PTRERR 1106 -#endif - -#ifndef SEQERR -#define SEQERR 1108 -#endif - -#ifndef ECBASE -#define ECBASE 1200 -#endif - -#ifndef ETLN -#define ETLN 1202 -#endif - -#ifndef EEXP -#define EEXP 1204 -#endif - -#ifndef EEXPN -#define EEXPN 1206 -#endif - -#ifndef ENUM -#define ENUM 1208 -#endif - -#ifndef EFLOATO -#define EFLOATO 1210 -#endif - -#ifndef EFLOATU -#define EFLOATU 1220 -#endif - -#ifndef EDBLO -#define EDBLO 1250 -#endif - -#ifndef EDBLU -#define EDBLU 1260 -#endif - -#ifndef ELDBLO -#define ELDBLO 1270 -#endif - -#ifndef ELDBLU -#define ELDBLU 1280 -#endif - -#ifndef NOTOPN -#define NOTOPN 1300 -#endif - -#ifndef EBADF -#define EBADF 1302 -#endif - -#ifndef ECSPEC -#define ECSPEC 1304 -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -extern volatile int _errno; - -#ifdef __cplusplus -} -#endif - -#ifndef errno -#define errno _errno -#endif - -#endif diff --git a/include/exception.h b/include/exception.h deleted file mode 100644 index c7da5a6..0000000 --- a/include/exception.h +++ /dev/null @@ -1,74 +0,0 @@ -/*------------------------------------------------------*/ -/* SH SERIES C Compiler Ver. 1.0 */ -/* Copyright (c) 1992 Hitachi,Ltd. */ -/* Licensed material of Hitachi,Ltd. */ -/*------------------------------------------------------*/ -/***********************************************************************/ -/* SPEC; */ -/* NAME = exception.h : */ -/* */ -/* FUNC = Include file for exception handling (see 18.6) */ -/* */ -/* CLAS = UNIT; */ -/* */ -/* END; */ -/***********************************************************************/ - -#ifndef _EXCEPTION_H -#define _EXCEPTION_H - -/* This lets users disable the EDG supplied exception classes. */ -#ifndef __NO_EDG_EXCEPTION_CLASSES - -#include - -#ifdef __EDG_RUNTIME_USES_NAMESPACES -namespace std { -#endif /* ifdef __EDG_RUNTIME_USES_NAMESPACES */ - - /* - If bool is not supported, use a typedef for bool. - */ - #ifdef _BOOL - typedef bool __bool; - #else /* ifndef _BOOL */ - typedef int __bool; - #endif /* ifdef _BOOL */ - - class bad_exception : public exception { - public: - bad_exception() throw(); - bad_exception(const bad_exception&) throw(); - bad_exception& operator=(const bad_exception&) throw(); - virtual ~bad_exception() throw(); - virtual const char* what() const throw(); - }; - - typedef void (*terminate_handler)(); - extern terminate_handler set_terminate(terminate_handler); - - typedef void (*unexpected_handler)(); - extern unexpected_handler set_unexpected(unexpected_handler); - - /* unexpected and terminate are in the WP definition of exception.h. - It is not clear why. */ - void terminate(); - void unexpected(); - - extern __bool uncaught_exception(); - -#ifdef __EDG_RUNTIME_USES_NAMESPACES -} /* namespace */ - -#ifdef __EDG_IMPLICIT_USING_STD -/* Implicitly include a using directive for the STD namespace when this - preprocessing flag is TRUE. */ -using namespace std; -#endif /* ifdef __EDG_IMPLICIT_USING_STD */ - -#endif /* ifdef __EDG_RUNTIME_USES_NAMESPACES */ - -#endif /* ifndef __NO_EDG_EXCEPTION_CLASSES */ - -#endif /* _EXCEPTION_H */ - diff --git a/include/filt_ws.h b/include/filt_ws.h deleted file mode 100644 index e9ef4c5..0000000 --- a/include/filt_ws.h +++ /dev/null @@ -1,26 +0,0 @@ -/* -*SHDSP Library -*Copyright (c) Hitachi,Ltd. 1998 -*Licensed material of Hitachi,Ltd -*/ -/*********************************************************** -* File: filt_ws.h -* Purpose: Filter -* Create: 1998.03.20 Rev. 1.0 -***********************************************************/ - -#ifndef FILT_WS -#define FILT_WS - -#ifndef WS_SIZE -#define WS_SIZE 1024 /* Set Global workspace buffer size=1024 shorts (2048 bytes) */ -#endif - -#define MEMSIZE WS_SIZE*sizeof(short) -#pragma section Y /*need to equate DYRAM with link.cmd file*/ -short ws_mem[WS_SIZE]; -short * ws_ptr=ws_mem; -long ws_left=MEMSIZE; -#pragma section - -#endif diff --git a/include/float.h b/include/float.h deleted file mode 100644 index cf32062..0000000 --- a/include/float.h +++ /dev/null @@ -1,208 +0,0 @@ -/*------------------------------------------------------*/ -/* SH SERIES C Compiler Ver. 1.0 */ -/* Copyright (c) 1992 Hitachi,Ltd. */ -/* Licensed material of Hitachi,Ltd. */ -/*------------------------------------------------------*/ -/*****************************************************************/ -/* SPEC ; */ -/* NAME = float : */ -/* FUNC = limit about float type and double type ; */ -/* */ -/* */ -/* END ; */ -/*****************************************************************/ -#ifndef _FLOAT -#define _FLOAT - -extern const float _FLT_MAX_VAL; -extern const float _FLT_MIN_VAL; -extern const double _DBL_MAX_VAL; -extern const double _DBL_MIN_VAL; -extern const long double _LDBL_MAX_VAL; -extern const long double _LDBL_MIN_VAL; - -#ifndef _FPD - -#define FLT_RADIX 2 -#if defined(_SH2E)|defined(_SH3E)|(defined(_SH4)&!defined(_RON)) -#define FLT_ROUNDS 0 -#define FLT_GUARD 0 -#else -#define FLT_ROUNDS 1 -#define FLT_GUARD 1 -#endif -#define FLT_NORMALIZE 1 -#define FLT_MAX _FLT_MAX_VAL -#define FLT_MIN _FLT_MIN_VAL -#define FLT_MAX_EXP 127 -#if defined(_SH2E)|defined(_SH3E)|(defined(_SH4)&!defined(_DON)) -#define FLT_MIN_EXP (-126) -#else -#define FLT_MIN_EXP (-149) -#endif -#define FLT_MAX_10_EXP 38 -#if defined(_SH2E)|defined(_SH3E)|(defined(_SH4)&!defined(_DON)) -#define FLT_MIN_10_EXP (-38) -#else -#define FLT_MIN_10_EXP (-44) -#endif -#define FLT_DIG 6 -#define FLT_MANT_DIG 24 -#define FLT_EXP_DIG 8 -#if defined(_SH2E)|defined(_SH3E)|(defined(_SH4)&!defined(_RON)) -#define FLT_POS_EPS 1.1920928955078125e-7f -#if defined(_DON) -#define FLT_NEG_EPS 1.4012984643248171e-45f -#else -#define FLT_NEG_EPS 1.1754943508222876e-38f -#endif -#else -#define FLT_POS_EPS 5.9604648328104311e-8f -#define FLT_NEG_EPS 2.9802324164052156e-8f -#endif -#define FLT_POS_EPS_EXP (-23) -#if defined(_SH2E)|defined(_SH3E)|defined(_SH4) -#define FLT_NEG_EPS_EXP (-126) -#else -#define FLT_NEG_EPS_EXP (-24) -#endif - -#endif - - -#if defined(_FLT)|defined(_FPS) - -#define DBL_RADIX FLT_RADIX -#define DBL_ROUNDS FLT_ROUNDS -#define DBL_GUARD FLT_GUARD -#define DBL_NORMALIZE FLT_NORMALIZE -#define DBL_MAX _FLT_MAX_VAL -#define DBL_MIN _FLT_MIN_VAL -#define DBL_MAX_EXP FLT_MAX_EXP -#define DBL_MIN_EXP FLT_MIN_EXP -#define DBL_MAX_10_EXP FLT_MAX_10_EXP -#define DBL_MIN_10_EXP FLT_MIN_10_EXP -#define DBL_DIG FLT_DIG -#define DBL_MANT_DIG FLT_MANT_DIG -#define DBL_EXP_DIG FLT_EXP_DIG -#define DBL_POS_EPS FLT_POS_EPS -#define DBL_NEG_EPS FLT_NEG_EPS -#define DBL_POS_EPS_EXP FLT_POS_EPS_EXP -#define DBL_NEG_EPS_EXP FLT_NEG_EPS_EXP - -#else - -#define DBL_RADIX 2 -#if defined(_SH4)&!defined(_RON) -#define DBL_ROUNDS 0 -#define DBL_GUARD 0 -#else -#define DBL_ROUNDS 1 -#define DBL_GUARD 1 -#endif -#define DBL_NORMALIZE 1 -#define DBL_MAX _DBL_MAX_VAL -#define DBL_MIN _DBL_MIN_VAL -#define DBL_MAX_EXP 1023 -#if defined(_SH4)&!defined(_DON) -#define DBL_MIN_EXP (-1022) -#else -#define DBL_MIN_EXP (-1074) -#endif -#define DBL_MAX_10_EXP 308 -#if defined(_SH4)&!defined(_DON) -#define DBL_MIN_10_EXP (-308) -#else -#define DBL_MIN_10_EXP (-323) -#endif -#define DBL_DIG 15 -#define DBL_MANT_DIG 53 -#define DBL_EXP_DIG 11 -#if defined(_SH4)&!defined(_RON) -#define DBL_POS_EPS 2.2204460492503131e-16 -#if defined(_DON) -#define DBL_NEG_EPS 4.9406564584124655e-324 -#else -#define DBL_NEG_EPS 2.2250738585072014e-308 -#endif -#else -#define DBL_POS_EPS 1.1102230246251567e-16 -#define DBL_NEG_EPS 5.5511151231257834e-17 -#endif -#define DBL_POS_EPS_EXP (-52) -#ifdef _SH4 -#ifdef _RON -#define DBL_NEG_EPS_EXP (-53) -#else -#ifdef _DON -#define DBL_NEG_EPS_EXP (-1023) -#else -#define DBL_NEG_EPS_EXP (-1022) -#endif -#endif -#else -#define DBL_NEG_EPS_EXP (-53) -#endif - -#ifdef _FPD -#define FLT_RADIX DBL_RADIX -#define FLT_ROUNDS DBL_ROUNDS -#define FLT_GUARD DBL_GUARD -#define FLT_NORMALIZE DBL_NORMALIZE -#define FLT_MAX _DBL_MAX_VAL -#define FLT_MIN _DBL_MIN_VAL -#define FLT_MAX_EXP DBL_MAX_EXP -#define FLT_MIN_EXP DBL_MIN_EXP -#define FLT_MAX_10_EXP DBL_MAX_10_EXP -#define FLT_MIN_10_EXP DBL_MIN_10_EXP -#define FLT_DIG DBL_DIG -#define FLT_MANT_DIG DBL_MANT_DIG -#define FLT_EXP_DIG DBL_EXP_DIG -#define FLT_POS_EPS DBL_POS_EPS -#define FLT_NEG_EPS DBL_NEG_EPS -#define FLT_POS_EPS_EXP DBL_POS_EPS_EXP -#define FLT_NEG_EPS_EXP DBL_NEG_EPS_EXP -#endif - -#endif - - -#ifdef _FLT -#define LDBL_RADIX 2 -#define LDBL_ROUNDS 1 -#define LDBL_GUARD 1 -#define LDBL_NORMALIZE 1 -#define LDBL_MAX _LDBL_MAX_VAL -#define LDBL_MIN _LDBL_MIN_VAL -#define LDBL_MAX_EXP 1023 -#define LDBL_MIN_EXP (-1074) -#define LDBL_MAX_10_EXP 308 -#define LDBL_MIN_10_EXP (-323) -#define LDBL_DIG 15 -#define LDBL_MANT_DIG 53 -#define LDBL_EXP_DIG 11 -#define LDBL_POS_EPS 1.1102230246251567e-16 -#define LDBL_NEG_EPS 5.5511151231257834e-17 -#define LDBL_POS_EPS_EXP (-52) -#define LDBL_NEG_EPS_EXP (-53) -#else -#define LDBL_RADIX DBL_RADIX -#define LDBL_ROUNDS DBL_ROUNDS -#define LDBL_GUARD DBL_GUARD -#define LDBL_NORMALIZE DBL_NORMALIZE -#define LDBL_MAX DBL_MAX -#define LDBL_MIN DBL_MIN -#define LDBL_MAX_EXP DBL_MAX_EXP -#define LDBL_MIN_EXP DBL_MIN_EXP -#define LDBL_MAX_10_EXP DBL_MAX_10_EXP -#define LDBL_MIN_10_EXP DBL_MIN_10_EXP -#define LDBL_DIG DBL_DIG -#define LDBL_MANT_DIG DBL_MANT_DIG -#define LDBL_EXP_DIG DBL_EXP_DIG -#define LDBL_POS_EPS DBL_POS_EPS -#define LDBL_NEG_EPS DBL_NEG_EPS -#define LDBL_POS_EPS_EXP DBL_POS_EPS_EXP -#define LDBL_NEG_EPS_EXP DBL_NEG_EPS_EXP -#endif - -#endif diff --git a/include/iomanip b/include/iomanip deleted file mode 100644 index 9dcdb71..0000000 --- a/include/iomanip +++ /dev/null @@ -1,60 +0,0 @@ -//Embedded C++ Library -//Copyright (c) Hitachi,Ltd. 1997 -//Licensed material of Hitachi,Ltd - -// -// Embeded C++ Library Header -// - -//==================================================================== -// File: iomanip -// Purpose: Definition of class iomanip -// Create: 1997.09.20 Rev. 1.0 -//==================================================================== - -#ifndef _IOMANIP_ -#define _IOMANIP_ - -#include -#include - -//Class -class smanip{ -private: - union{ - int val_i; - char val_c; - ios_base::fmtflags val_f; - }; - union{ - ios_base& (*pfi)(ios_base&,int); - ios_base& (*pfc)(ios_base&,char); - ios_base& (*pff)(ios_base&,ios_base::fmtflags); - }; - enum _ec2p_smanip_t{ - _ec2p_smanip_i,_ec2p_smanip_c ,_ec2p_smanip_f - }_ec2p_smanip_data; - -public: - smanip(ios_base& (*pf)(ios_base&,int),int arg) - :pfi(pf),val_i(arg),_ec2p_smanip_data(_ec2p_smanip_i){} - - smanip(ios_base& (*pf)(ios_base&,char),char arg) - :pfc(pf),val_c(arg),_ec2p_smanip_data(_ec2p_smanip_c){} - - smanip(ios_base& (*pf)(ios_base&,ios_base::fmtflags),ios_base::fmtflags arg) - :pff(pf),val_f(arg),_ec2p_smanip_data(_ec2p_smanip_f){} - - friend ostream& operator << (ostream&,smanip); - friend istream& operator >> (istream&,smanip); -}; - -//Manipulators -smanip resetiosflags(ios_base::fmtflags); -smanip setiosflags(ios_base::fmtflags); -smanip setbase(int); -smanip setfill(char); -smanip setprecision(int); -smanip setw(int); - -#endif diff --git a/include/ios b/include/ios deleted file mode 100644 index 54295ae..0000000 --- a/include/ios +++ /dev/null @@ -1,192 +0,0 @@ -//Embedded C++ Library -//Copyright (c) Hitachi,Ltd. 1997 -//Licensed material of Hitachi,Ltd -// -// Embeded C++ Class Library Header -// - -//==================================================================== -// File: ios -// Purpose: Definition of class ios -// Create: 1997.09.20 Rev. 1.0 -//==================================================================== - -#ifndef _IOS_ -#define _IOS_ - -class streambuf; -class ostream; - -typedef long POS_T; -typedef long INT_T; -typedef long SZ_T; -typedef long OFF_T; - -typedef OFF_T streamoff; -typedef SZ_T streamsize; -typedef INT_T int_type; -typedef POS_T pos_type; -typedef OFF_T off_type; - -class ios_base { -public: - typedef long fmtflags; - static const fmtflags boolalpha; - static const fmtflags dec; - static const fmtflags fixed; - static const fmtflags hex; - static const fmtflags internal; - static const fmtflags left; - static const fmtflags oct; - static const fmtflags right; - static const fmtflags scientific; - static const fmtflags showbase; - static const fmtflags showpoint; - static const fmtflags showpos; - static const fmtflags skipws; - static const fmtflags unitbuf; - static const fmtflags uppercase; - static const fmtflags adjustfield; - static const fmtflags basefield; - static const fmtflags floatfield; - typedef int iostate; - static const iostate badbit; - static const iostate eofbit; - static const iostate failbit; - static const iostate goodbit; - typedef int openmode; - static const openmode app; - static const openmode ate; - static const openmode binary; - static const openmode in; - static const openmode out; - static const openmode trunc; - typedef int seekdir; - static const seekdir beg; - static const seekdir cur; - static const seekdir end; - - class Init; - - fmtflags flags() const {return (fmtflags)fmtfl;} - fmtflags flags(fmtflags); - fmtflags setf(fmtflags) ; - fmtflags setf(fmtflags, fmtflags); - void unsetf(fmtflags); - char fill() const { - return (char)fillch; - } - char fill(char); - int precision() const { - return prec; - } - streamsize precision(streamsize); - streamsize width() const {return wide;} - streamsize width(streamsize); - -// static int xalloc() {return index++;} // Not implemented -// long & ipword(int); // Not implemented -// long * &pword(int); // Not implemented - - ~ios_base(){} // destructor - - // callbacks -- exposition only - enum event { - erase_event, - imbue_event, - copyfmt_event - }; - typedef void (*event_callback)(event, ios_base&, int index); - void register_callback(event_callback fn, int index); - static bool sync_with_stdio(bool sync = true){ return true; } - - class Init{ - public: - Init(){init_cnt++;} - ~Init(){init_cnt--;} - private: - static int init_cnt; - }; - -protected: - ios_base(){Init::Init();} - void _ec2p_init_base(); - void _ec2p_copy_base(ios_base &); - static const fmtflags _fmtmask; - static const iostate _statemask; -private: - fmtflags fmtfl; // format flag - streamsize prec; // number of after floating point - streamsize wide; // field width - char fillch; // fill charactor - -// static int index; // exposition only -// long *iarray; // exposition only -// void **parray; // exposition only -}; - -class ios : public ios_base { -public: -// Types: -// typedef INT_T int_type; -// typedef POS_T pos_type; -// typedef OFF_T off_type; - - operator void*() const { - return (void*)!fail(); - } - bool operator!() const{return (bool)fail();} - iostate rdstate () const{return (iostate)state;} - void clear(iostate = goodbit); - void setstate(iostate); - bool good() const {return (bool)(state==goodbit);} - bool eof() const {return (bool)(state&eofbit);} - bool fail() const {return (bool)(state&(badbit|failbit));} - bool bad() const {return (bool)(state&badbit);} - - iostate exceptions() const; // exposition only - void exceptions(iostate); // exposition only - - ios(streambuf *sbptr){ // Constructor - init(sbptr); - } - virtual ~ios(){}; // Destructor - ostream *tie() const {return tiestr;} - ostream *tie(ostream*); - streambuf *rdbuf() const{return sb;} - streambuf *rdbuf(streambuf*); - ios & copyfmt(const ios &); - ios(){init(0);} - void init(streambuf*); -private: - streambuf *sb; // pointer to streambuf object - ostream *tiestr; // pointer to ostream object - int state; // status -}; - -//Manipulators -ios_base & boolalpha(ios_base&); -ios_base & noboolalpha(ios_base&); -ios_base & showbase(ios_base&); -ios_base & noshowbase(ios_base&); -ios_base & showpoint(ios_base&); -ios_base & noshowpoint(ios_base&); -ios_base & showpos(ios_base&); -ios_base & noshowpos(ios_base&); -ios_base & skipws(ios_base&); -ios_base & noskipws(ios_base&); -ios_base & uppercase(ios_base&); -ios_base & nouppercase(ios_base&); -//Adjustfield -ios_base & internal(ios_base&); -ios_base & left(ios_base&); -ios_base & right(ios_base&); -//Basefield -ios_base & dec(ios_base&); -ios_base & hex(ios_base&); -ios_base & oct(ios_base&); -//floatfield -ios_base & fixed(ios_base&); -ios_base & scientific(ios_base&); - -#endif diff --git a/include/iostream b/include/iostream deleted file mode 100644 index b4a5120..0000000 --- a/include/iostream +++ /dev/null @@ -1,27 +0,0 @@ -//Embedded C++ Library -//Copyright (c) Hitachi,Ltd. 1997 -//Licensed material of Hitachi,Ltd - -// -// Standard iostream objects -// Embeded C++ Library Header -// - -//==================================================================== -// File: iostream -// Purpose: Definition of class iostream -// Create: 1997.09.20 Rev. 1.0 -//==================================================================== - -#ifndef _IOSTREAM_ -#define _IOSTREAM_ - -#include -#include -#include - -extern istream cin; -extern ostream cout; -// extern ostream cerr; // EC++, not implemented - -#endif diff --git a/include/istream b/include/istream deleted file mode 100644 index fdbd58b..0000000 --- a/include/istream +++ /dev/null @@ -1,112 +0,0 @@ -//Embedded C++ Library -//Copyright (c) Hitachi,Ltd. 1997 -//Licensed material of Hitachi,Ltd - -//==================================================================== -// File: istream -// Purpose: Definition of class istream -// Create: 1997.09.20 Rev. 1.0 -//==================================================================== - -#ifndef _ISTREAM_ -#define _ISTREAM_ - -#include - -class istream : public ios { -public: - // Types (inherited from ios): - // typedef INT_T int_type; - // typedef POS_T pos_type; - // typedef OFF_T off_type; - - istream(streambuf *sb) - :chcount(0),ios(sb){} // Constructor - virtual ~istream(){} // Destructor - class sentry; // Prefix/Suffix - - // Formatted input - istream& operator >>(istream& (*pf)(istream&)){ - return ((*pf)(*this)); } - istream& operator >>(ios& (*pf)(ios&)){ - (*pf)(* (ios *)this); return (*this); } - istream& operator>> (ios_base& (*pf)(ios_base&)){ - (*pf)(* (ios*)this); return (*this); } - istream & operator >>(bool &n); - istream & operator >>(short &n); - istream & operator >>(unsigned short &n); - istream & operator >>(int &n); - istream & operator >>(unsigned int &n); - istream & operator >>(long &n); - istream & operator >>(unsigned long &n); - istream & operator >>(float &f); - istream & operator >>(double &f); - istream & operator >>(long double &f); - istream & operator >>(void * &p); - istream & operator >>(streambuf *sb); - - // Unformatted input - streamsize gcount() const{return chcount;} - int_type get(); - istream & get( char& c ); - istream & get( signed char& c ); - istream & get( unsigned char& c ); - istream & get( char* s, streamsize n); - istream & get( char* s, streamsize n, char delim ); - istream & get( signed char* s, streamsize n); - istream & get( signed char* s, streamsize n, char delim ); - istream & get( unsigned char* s, streamsize n); - istream & get( unsigned char* s, streamsize n, char delim ); - istream & get( streambuf& sb); - istream & get( streambuf& sb, char delim ); - istream & getline( char* s, streamsize n); - istream & getline( char* s, streamsize n, char delim ); - istream & getline( signed char* s, streamsize n ); - istream & getline( signed char* s, streamsize n, char delim ); - istream & getline( unsigned char* s, streamsize n ); - istream & getline( unsigned char* s, streamsize n, char delim ); - istream & ignore( streamsize n=1, int_type delim=streambuf::eof ); - int_type peek(); - istream & read( char* s, streamsize n ); - istream & read( signed char* s, streamsize n ); - istream & read( unsigned char* s, streamsize n ); - streamsize readsome( char* s, streamsize n ); - streamsize readsome( signed char* s, streamsize n ); - streamsize readsome( unsigned char* s, streamsize n ); - istream & putback( char c ); - istream & unget(); - int sync(); - pos_type tellg(); - istream & seekg( pos_type pos ); - istream & seekg( off_type off, ios_base::seekdir dir ); - -private: - streamsize chcount; - streamsize _ec2p_gets( char* s, streamsize n, char delim, int mode ); - int _ec2p_getistr(char* str, unsigned int dig, int mode); - int _ec2p_getfstr(char* str, unsigned int dig); - unsigned long _ec2p_strtoul(char *nptr, char **endptr, int base); - long _ec2p_extlong(); - unsigned long _ec2p_extulong(); -}; - -class istream::sentry { -public: - sentry(istream& is, bool noskipws = false); - ~sentry(){} - operator bool() { return ok_; } -private: - bool ok_; -}; - -// character extraction templates: -istream& operator>>(istream&, char&); -istream& operator>>(istream&, unsigned char&); -istream& operator>>(istream&, signed char&); -istream& operator>>(istream&, char*); -istream& operator>>(istream&, unsigned char*); -istream& operator>>(istream&, signed char*); - -// Manipulator -istream& ws(istream& is ); -#endif diff --git a/include/limits.h b/include/limits.h deleted file mode 100644 index b4f00ea..0000000 --- a/include/limits.h +++ /dev/null @@ -1,35 +0,0 @@ -/*------------------------------------------------------*/ -/* SH SERIES C Compiler Ver. 1.0 */ -/* Copyright (c) 1992 Hitachi,Ltd. */ -/* Licensed material of Hitachi,Ltd. */ -/*------------------------------------------------------*/ -/***********************************************************************/ -/* SPEC; */ -/* NAME = limits.h : */ -/* */ -/* FUNC = this module do the following functions */ -/* */ -/* CLAS = UNIT; */ -/* */ -/* END; */ -/***********************************************************************/ -#ifndef _LIMITS -#define _LIMITS - -#define CHAR_BIT 8 -#define CHAR_MAX 127 -#define CHAR_MIN (-128) -#define SCHAR_MAX 127 -#define SCHAR_MIN (-128) -#define UCHAR_MAX 255 -#define SHRT_MAX 32767 -#define SHRT_MIN (-32768) -#define USHRT_MAX 65535 -#define INT_MAX 2147483647 -#define INT_MIN (-2147483647-1) -#define UINT_MAX 4294967295u -#define LONG_MAX 2147483647 -#define LONG_MIN (-2147483647L-1L) -#define ULONG_MAX 4294967295u - -#endif diff --git a/include/machine.h b/include/machine.h deleted file mode 100644 index d2386d3..0000000 --- a/include/machine.h +++ /dev/null @@ -1,23 +0,0 @@ -/*------------------------------------------------------*/ -/* SH C Compiler Ver. 1.0 */ -/* Copyright (c) 1992 Hitachi,Ltd. */ -/* Licensed material of Hitachi,Ltd. */ -/*------------------------------------------------------*/ -/*****************************************************************/ -/* SPEC ; */ -/* NAME = machine.h : */ -/* FUNC = */ -/* ; */ -/* */ -/* */ -/* */ -/* CLAS = UNIT ; */ -/* END ; */ -/*****************************************************************/ -#ifndef _MACHINE -#define _MACHINE - -#include -#include - -#endif diff --git a/include/math.h b/include/math.h deleted file mode 100644 index 17b43be..0000000 --- a/include/math.h +++ /dev/null @@ -1,111 +0,0 @@ -/*------------------------------------------------------*/ -/* SH SERIES C Compiler Ver. 1.0 */ -/* Copyright (c) 1992 Hitachi,Ltd. */ -/* Licensed material of Hitachi,Ltd. */ -/*------------------------------------------------------*/ -/*****************************************************************/ -/* SPEC ; */ -/* NAME = math : */ -/* FUNC = */ -/* ; */ -/* */ -/* */ -/* */ -/* CLAS = UNIT ; */ -/* END ; */ -/*****************************************************************/ -#ifndef _MATH -#define _MATH - -#ifdef __cplusplus -#include -#endif - -#ifndef ERANGE -#define ERANGE 1100 -#endif - -#ifndef EDOM -#define EDOM 1101 -#endif - -#ifndef ENUM -#define ENUM 1208 -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -extern volatile int _errno; -extern const double _HUGE_VAL; -#define HUGE_VAL _HUGE_VAL - -extern double frexp(double, int *); -extern double ldexp(double, int ); -extern double modf(double, double *); -extern double ceil(double); - -#ifdef _SH4 -#ifdef _FPS -#define fabs _builtin_fabsf -#else -#define fabs _builtin_fabs -#endif -#else -#if defined(_SH2E)|defined(_SH3E) -#ifdef _FLT -#define fabs _builtin_fabsf -#else -extern double fabs(double); -#endif -#else -extern double fabs(double); -#endif -#endif - -extern double floor(double); -extern double fmod(double, double); - -extern double acos(double); -extern double asin(double); -extern double atan(double); -extern double atan2(double,double); -extern double cos(double); -extern double sin(double); -extern double tan(double); -extern double cosh(double); -extern double tanh(double); -extern double sinh(double); -extern double exp(double); -extern double log(double); -extern double log10(double); -extern double pow(double,double); - -#ifdef _COMPLEX_ -extern double sqrt(double); -#else -#ifdef _SH4 -#ifdef _FPS -#define sqrt _builtin_sqrtf -#else -#define sqrt _builtin_sqrt -#endif -#else -#ifdef _SH3E -#ifdef _FLT -#define sqrt _builtin_sqrtf -#else -extern double sqrt(double); -#endif -#else -extern double sqrt(double); -#endif -#endif -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/include/mathf.h b/include/mathf.h deleted file mode 100644 index ba1505d..0000000 --- a/include/mathf.h +++ /dev/null @@ -1,66 +0,0 @@ -/*------------------------------------------------------*/ -/* SH SERIES C Compiler Ver. 1.1 */ -/* Copyright (c) 1992 Hitachi,Ltd. */ -/* Licensed material of Hitachi,Ltd. */ -/*------------------------------------------------------*/ -/*****************************************************************/ -/* SPEC ; */ -/* NAME = mathf */ -/* FUNC = */ -/* ; */ -/* */ -/* */ -/* */ -/* CLAS = UNIT ; */ -/* END ; */ -/*****************************************************************/ -#ifndef _MATHF -#define _MATHF - -#ifdef __cplusplus -extern "C" { -#include -#endif -extern float frexpf(float, int *); -extern float ldexpf(float, int); -extern float modff(float, float *); -extern float ceilf(float); -#if defined(_SH2E)|defined(_SH3E)|defined(_SH4) -#ifdef _FPD -#define fabsf _builtin_fabs -#else -#define fabsf _builtin_fabsf -#endif -#else -extern float fabsf(float); -#endif -extern float floorf(float); -extern float fmodf(float, float); -extern float acosf(float); -extern float asinf(float); -extern float atanf(float); -extern float atan2f(float,float); -extern float cosf(float); -extern float sinf(float); -extern float tanf(float); -extern float coshf(float); -extern float tanhf(float); -extern float sinhf(float); -extern float expf(float); -extern float logf(float); -extern float log10f(float); -extern float powf(float,float); -#if defined(_SH3E)|defined(_SH4) -#ifdef _FPD -#define sqrtf _builtin_sqrt -#else -#define sqrtf _builtin_sqrtf -#endif -#else -extern float sqrtf(float); -#endif -#ifdef __cplusplus -} -#endif - -#endif diff --git a/include/mystrbuf b/include/mystrbuf deleted file mode 100644 index f780d4b..0000000 --- a/include/mystrbuf +++ /dev/null @@ -1,53 +0,0 @@ -//Embedded C++ Library -//Copyright (c) Hitachi,Ltd. 1997 -//Licensed material of Hitachi,Ltd -// -// Embeded C++ Library -// - -//==================================================================== -// File: mystrbuf -// Purpose: Definition of class mystrbuf -// Create: 1997.09.20 Rev. 1.0 -//==================================================================== - -#ifndef _MYSTRBUF_ -#define _MYSTRBUF_ - -#ifdef _EC2P_GPP -#define _bufbase _base -#define _bufptr _ptr -#define _bufcnt _cnt -// #define _buflen _bufsiz -#define _ioflag1 _flag -#endif - -#include -struct _f_type; -class mystrbuf : public streambuf { -public: - mystrbuf(){_file_Ptr = 0;} - mystrbuf(void *_fp){_Init((_f_type*)_fp);} - virtual ~mystrbuf(){close();} - void *myfptr() const{return _file_Ptr;} - mystrbuf *open(const char *, int); - mystrbuf *close(); -protected: - virtual streambuf *setbuf(char *, streamsize); - virtual pos_type seekoff(off_type, ios_base::seekdir, - ios_base::openmode=(ios_base::openmode)(ios_base::in|ios_base::out)); - virtual pos_type seekpos(pos_type sp, - ios_base::openmode=(ios_base::openmode)(ios_base::in|ios_base::out)); - virtual int sync(); - virtual int showmanyc(){return 0;} - virtual int_type underflow(); - virtual int_type pbackfail(int_type=streambuf::eof); - virtual int_type overflow(int_type=streambuf::eof); -private: - void _Init(_f_type *); - _f_type *_file_Ptr; -#ifdef _EC2P_GPP - long _buflen_wk; -#endif -}; -#endif diff --git a/include/new b/include/new deleted file mode 100644 index 6e8c596..0000000 --- a/include/new +++ /dev/null @@ -1,31 +0,0 @@ -/*------------------------------------------------------*/ -/* SH SERIES C Compiler Ver. 6.0 */ -/* Copyright (c) 1992, 2000 Hitachi,Ltd. */ -/* Licensed material of Hitachi,Ltd. */ -/*------------------------------------------------------*/ - -/***********************************************************************/ -/* SPEC; */ -/* NAME = new : */ -/* */ -/* FUNC = Include file for C++ default operator new . */ -/* */ -/* CLAS = UNIT; */ -/* */ -/* END; */ -/***********************************************************************/ - -#ifndef __NEW__ -#define __NEW__ - -#ifdef __embedded_cplusplus - -#include // include Embeded C++ Library Header - -#else - -#include // include ANSI C++ Library Header - -#endif /* ifdef __embedded_cplusplus */ - -#endif /* ifndef __NEW__ */ diff --git a/include/new_ecpp.h b/include/new_ecpp.h deleted file mode 100644 index 77f33cb..0000000 --- a/include/new_ecpp.h +++ /dev/null @@ -1,41 +0,0 @@ -//Embedded C++ Library -//Copyright (c) Hitachi,Ltd. 1997 -//Licensed material of Hitachi,Ltd - -// -// Dynamic memory management -// Embeded C++ Library Header -// - -//==================================================================== -// File: new -// Purpose: Definition of class new -// Create: 1997.09.20 Rev. 1.0 -//==================================================================== - -#ifndef _NEW_ -#define _NEW_ - -#include - -// Storage allocation and deallocation -void *operator new(size_t); -void *operator new[] (size_t); -void *operator new(size_t,void *); -void *operator new[](size_t,void *); - -void operator delete(void *); -void operator delete[](void *); -// void operator delete(void *, void *); // Not implemented -// void operator delete[](void *, void *); // Not implemented - -// Type new_handler -typedef void (*new_handler)(); - -// set_new_handler -new_handler set_new_handler(new_handler new_P); - -// new_handler -extern new_handler _ec2p_new_handler; - -#endif diff --git a/include/new_edg.h b/include/new_edg.h deleted file mode 100644 index 4bf1a6d..0000000 --- a/include/new_edg.h +++ /dev/null @@ -1,122 +0,0 @@ -/*------------------------------------------------------*/ -/* SH SERIES C Compiler Ver. 6.0 */ -/* Copyright (c) 1992, 2000 Hitachi,Ltd. */ -/* Licensed material of Hitachi,Ltd. */ -/*------------------------------------------------------*/ -/***********************************************************************/ -/* SPEC; */ -/* NAME = new_edg.h : */ -/* */ -/* FUNC = Include file for C++ default operator new . */ -/* */ -/* CLAS = UNIT; */ -/* */ -/* END; */ -/***********************************************************************/ - -#ifndef __NEW_H -#define __NEW_H - -#ifndef _STDDEF -#include -#endif /* ifndef _STDDEF */ -#ifndef _EXCEPTION_H -#include -#endif /* _EXCEPTION_H */ - -#ifndef __EDG_STD_NAMESPACE -/* If not already defined, define a macro that expands to the namespace - containing the standard library. */ -#ifdef __EDG_RUNTIME_USES_NAMESPACES -#define __EDG_STD_NAMESPACE std -#else /* ifndef __EDG_RUNTIME_USES_NAMESPACES */ -#define __EDG_STD_NAMESPACE /* nothing */ -#endif /* ifdef __EDG_RUNTIME_USES_NAMESPACES */ -#endif /* ifdef __EDG_STD_NAMESPACE */ - - -#ifdef __EDG_RUNTIME_USES_NAMESPACES -namespace std { -#endif /* ifdef __EDG_RUNTIME_USES_NAMESPACES */ - -/* This lets users disable the EDG supplied exception classes. */ -#ifndef __NO_EDG_EXCEPTION_CLASSES - - class bad_alloc : public exception { - public: - bad_alloc() throw(); - bad_alloc(const bad_alloc&) throw(); - bad_alloc& operator=(const bad_alloc&) throw(); - virtual ~bad_alloc() throw(); - virtual const char* what() const throw(); - }; - -#endif /* ifndef __NO_EDG_EXCEPTION_CLASSES */ - - typedef void (*new_handler)(); - new_handler set_new_handler(new_handler); - struct nothrow_t { }; - // Declaration of object nothrow to permit the use of the placement new - // syntax: new (nothrow) T; - const nothrow_t nothrow = {}; - -#ifdef __EDG_RUNTIME_USES_NAMESPACES -} /* namespace std */ - -#ifdef __EDG_IMPLICIT_USING_STD -/* Implicitly include a using directive for the STD namespace when this - preprocessing flag is TRUE. */ -using namespace std; -#endif /* ifdef __EDG_IMPLICIT_USING_STD */ - -#endif /* ifdef __EDG_RUNTIME_USES_NAMESPACES */ - -/* Normal operator new. */ -void *operator new(size_t) throw(__EDG_STD_NAMESPACE::bad_alloc); - -/* Normal operator delete. */ -void operator delete(void*) throw (); - -/* Nothrow version of operator new. */ -void *operator new(size_t, const __EDG_STD_NAMESPACE::nothrow_t&) throw(); - -/* Nothrow version of operator delete. */ -void operator delete(void*, const __EDG_STD_NAMESPACE::nothrow_t&) throw(); - -/* Placement new. */ -void *operator new(size_t, void*) throw(); - -/* Placement delete. */ -#ifdef __PLACEMENT_DELETE -void operator delete(void*, void*) throw(); -#endif /* ifdef __PLACEMENT_DELETE */ - -#ifdef __ARRAY_OPERATORS - -/* Array new. */ -void *operator new[](size_t) throw(__EDG_STD_NAMESPACE::bad_alloc); - -/* Array delete. */ -void operator delete[](void*) throw (); - -/* Placement array new. */ -void *operator new[](size_t, void*) throw(); - -/* Placement array delete. */ -#ifdef __PLACEMENT_DELETE -void operator delete[](void*, void*) throw(); -#endif /* ifdef __PLACEMENT_DELETE */ - -/* Nothrow version of array new. */ -void *operator new[](size_t, - const __EDG_STD_NAMESPACE::nothrow_t&) throw(); - -/* Nothrow version of array delete. */ -void operator delete[](void*, - const __EDG_STD_NAMESPACE::nothrow_t&) throw(); -#endif /* __ARRAY_OPERATORS */ - -// EC++ use new_handler -extern __EDG_STD_NAMESPACE::new_handler _ec2p_new_handler; - -#endif /* ifndef __NEW_H */ diff --git a/include/ostream b/include/ostream deleted file mode 100644 index e81af01..0000000 --- a/include/ostream +++ /dev/null @@ -1,87 +0,0 @@ -//Embedded C++ Library -//Copyright (c) Hitachi,Ltd. 1997 -//Licensed material of Hitachi,Ltd - -//==================================================================== -// File: ostream -// Purpose: Definition of class ostream -// Create: 1997.09.20 Rev. 1.0 -//==================================================================== - -#ifndef _OSTREAM_ -#define _OSTREAM_ - -#include - -class ostream : public ios { -public: - // Types (inherited from ios): - // typedef INT_T int_type; - // typedef POS_T pos_type; - // typedef OFF_T off_type; - - ostream(streambuf *sbptr) : ios(sbptr){} - virtual ~ostream(){} - class sentry; // Prefix/Suffix - ostream& operator <<(ostream& (*pf)(ostream&)){ - return (*pf)(*this); } - ostream& operator <<(ios& (*pf)(ios&)){ - (*pf)(*(ios*)this); return *this; } - ostream& operator<< (ios_base& (*pf)(ios_base&)){ - (*pf)(*(ios*)this); return *this; } - ostream & operator <<(bool n){ - *this<<(int)n; return *this; } - ostream & operator <<(short); - ostream & operator <<(unsigned short); - ostream & operator <<(int); - ostream & operator <<(unsigned int); - ostream & operator <<(long); - ostream & operator <<(unsigned long); - ostream & operator <<(float); - ostream & operator <<(double); - ostream & operator <<(long double); - ostream & operator <<(void *); - ostream & operator <<(streambuf *); - ostream & put(char); - ostream & write(const char *, streamsize); - ostream & write(const signed char *, streamsize); - ostream & write(const unsigned char *, streamsize); - ostream & flush(); - pos_type tellp(); - ostream& seekp( pos_type ); - ostream& seekp( off_type , ios_base::seekdir ); - - int _ec2p_strput(const char*); -private: - void _ec2p_IntPrint(const char*, short); - void _ec2p_FloatPrint(const char*, short); - void _ec2p_DataPut(const char*, int, int, int, int); - void _ec2p_int_fmtparam(const char*, char*); - void _ec2p_flt_fmtparam(const char*, char*); -}; - -// Class ostream::sentry -class ostream::sentry { -public: - sentry(ostream& os); - ~sentry(); - operator bool() { return ok_; } -private: - bool ok_; - ostream* __ec2p_os; -}; - -// character inserters -ostream& operator<<(ostream&, char); -ostream& operator<<(ostream&, const char*); -// signed and unsigned -ostream& operator<<(ostream&, signed char); -ostream& operator<<(ostream&, unsigned char); -// signed and unsigned -ostream& operator<<(ostream&, const signed char*); -ostream& operator<<(ostream&, const unsigned char*); - -ostream & endl( ostream & ); -ostream & ends( ostream & ); -ostream & flush( ostream & ); -#endif diff --git a/include/setjmp.h b/include/setjmp.h deleted file mode 100644 index fa770db..0000000 --- a/include/setjmp.h +++ /dev/null @@ -1,48 +0,0 @@ -/*------------------------------------------------------*/ -/* SH SERIES C Compiler Ver. 1.0 */ -/* Copyright (c) 1992 Hitachi,Ltd. */ -/* Licensed material of Hitachi,Ltd. */ -/*------------------------------------------------------*/ -/***********************************************************************/ -/* SPEC; */ -/* NAME = setjmp.h : ; */ -/* */ -/* FUNC = this module do the following functions ; */ -/* */ -/* CLAS = UNIT; */ -/* */ -/* END; */ -/***********************************************************************/ -#ifndef _SETJMP -#define _SETJMP - -#if defined(_SH2E)|defined(_SH3E)||defined(_SH4) -typedef int jmp_buf[38]; -#else -typedef int jmp_buf[20]; -#endif -#ifdef _SH4 -typedef int jmp_buf_a[54]; -#endif - -#ifdef __cplusplus -extern "C" { -#endif -extern int setjmp(jmp_buf); -extern void longjmp(jmp_buf, int); -#ifdef _SH4 -extern int setjmp_a(jmp_buf); -extern void longjmp_a(jmp_buf, int); -#endif - -extern volatile int _errno; - -#ifdef __cplusplus -} -#endif - -#ifndef SEQERR -#define SEQERR 1108 -#endif - -#endif diff --git a/include/smachine.h b/include/smachine.h deleted file mode 100644 index 03c7ae2..0000000 --- a/include/smachine.h +++ /dev/null @@ -1,28 +0,0 @@ -/*------------------------------------------------------*/ -/* SH SERIES C Compiler Ver. 3.0 */ -/* Copyright (c) 1992,1995 Hitachi,Ltd. */ -/* Licensed material of Hitachi,Ltd. */ -/*------------------------------------------------------*/ -/*****************************************************************/ -/* SPEC ; */ -/* NAME = smachine.h : */ -/* FUNC = ; */ -/* CLAS = UNIT ; */ -/* END ; */ -/*****************************************************************/ -#ifndef _SMACHINE -#define _SMACHINE - -#ifdef __cplusplus -#include -#endif - -#define set_imask(mask) _builtin_set_imask(mask) -#define get_imask() _builtin_get_imask() -#define set_cr(cr) _builtin_set_cr(cr) -#define get_cr() _builtin_get_cr() -#define set_vbr(base) _builtin_set_vbr(base) -#define get_vbr() _builtin_get_vbr() -#define sleep() _builtin_sleep() - -#endif diff --git a/include/stdarg.h b/include/stdarg.h deleted file mode 100644 index 48dfd16..0000000 --- a/include/stdarg.h +++ /dev/null @@ -1,36 +0,0 @@ -/*------------------------------------------------------*/ -/* SH SERIES C Compiler Ver. 1.0 */ -/* Copyright (c) 1992 Hitachi,Ltd. */ -/* Licensed material of Hitachi,Ltd. */ -/*------------------------------------------------------*/ -/*****************************************************************/ -/* SPEC ; */ -/* NAME = stdarg : */ -/* FUNC = this module do the following finctions ; */ -/* */ -/* (1) initialize parameter pointer */ -/* (2) set parameter pointer to next parameter */ -/* */ -/* */ -/* END ; */ -/*****************************************************************/ -#ifndef _STDARG -#define _STDARG - -typedef char *va_list ; - -#define va_start(ap,param) (void)((ap)=(int)\ -((char *) &(param)+sizeof(param))%4u?\ -(char *) &(param)+sizeof(param)+(4u-(sizeof(param)%4u)):\ -(char *) &(param)+sizeof(param)) - -#define va_arg(ap,type) (*((ap)=((int)((ap)+sizeof(type))%4u?\ -(ap)+sizeof(type)+(4u-(sizeof(type)%4u)):\ -(ap)+sizeof(type)),\ -(type *)((int)((ap)-sizeof(type))%4u?\ -(ap)-sizeof(type)-(4u-(sizeof(type)%4u)):\ -(ap)-sizeof(type)))) - -#define va_end(ap) - -#endif diff --git a/include/stddef.h b/include/stddef.h deleted file mode 100644 index f453ce4..0000000 --- a/include/stddef.h +++ /dev/null @@ -1,46 +0,0 @@ -/*------------------------------------------------------*/ -/* SH SERIES C Compiler Ver. 1.0 */ -/* Copyright (c) 1992 Hitachi,Ltd. */ -/* Licensed material of Hitachi,Ltd. */ -/*------------------------------------------------------*/ -/***********************************************************************/ -/* SPEC; */ -/* NAME = stddef : */ -/* */ -/* FUNC = this module do the following functions */ -/* */ -/* CLAS = UNIT; */ -/* */ -/* END; */ -/***********************************************************************/ -#ifndef _STDDEF -#define _STDDEF - -#ifndef _PTRDIFF_T -#define _PTRDIFF_T -typedef int ptrdiff_t; -#endif - -#ifndef _SIZE_T -#define _SIZE_T -typedef unsigned long size_t; -#endif - -#ifndef NULL -#ifdef __cplusplus -#define NULL (0) -#else -#define NULL ((void *)0) -#endif -#endif - -#ifndef offsetof -#define offsetof(type,id) ((char *)(&(((type *)NULL)->id)) - \ - (char *)((type *)NULL)) -#endif - -#ifndef errno -#define errno _errno -#endif - -#endif diff --git a/include/stdexcept.h b/include/stdexcept.h deleted file mode 100644 index 6fe3879..0000000 --- a/include/stdexcept.h +++ /dev/null @@ -1,47 +0,0 @@ -/*------------------------------------------------------*/ -/* SH SERIES C Compiler Ver. 1.0 */ -/* Copyright (c) 1992 Hitachi,Ltd. */ -/* Licensed material of Hitachi,Ltd. */ -/*------------------------------------------------------*/ -/***********************************************************************/ -/* SPEC; */ -/* NAME = stdexcept.h : */ -/* */ -/* FUNC = Include file for exception handling (see 19.1.1) */ -/* */ -/* CLAS = UNIT; */ -/* */ -/* END; */ -/***********************************************************************/ - -#ifndef _STDEXCEPT_H -#define _STDEXCEPT_H - -/* This lets users disable the EDG supplied exception classes. */ -#ifndef __NO_EDG_EXCEPTION_CLASSES - -#ifdef __EDG_RUNTIME_USES_NAMESPACES -namespace std { -#endif /* ifdef __EDG_RUNTIME_USES_NAMESPACES */ - class exception { - public: - exception() throw(); - exception& operator=(const exception&) throw(); - virtual ~exception() throw(); - virtual const char* what() const throw(); - }; -#ifdef __EDG_RUNTIME_USES_NAMESPACES -} /* namespace std */ - -#ifdef __EDG_IMPLICIT_USING_STD -/* Implicitly include a using directive for the STD namespace when this - preprocessing flag is TRUE. */ -using namespace std; -#endif /* ifdef __EDG_IMPLICIT_USING_STD */ - -#endif /* ifdef __EDG_RUNTIME_USES_NAMESPACES */ - -#endif /* ifndef __NO_EDG_EXCEPTION_CLASSES */ - -#endif /* _STDEXCEPT_H */ - diff --git a/include/stdio.h b/include/stdio.h deleted file mode 100644 index 4c87959..0000000 --- a/include/stdio.h +++ /dev/null @@ -1,146 +0,0 @@ -/*------------------------------------------------------*/ -/* SH SERIES C Compiler Ver. 1.0 */ -/* Copyright (c) 1992 Hitachi,Ltd. */ -/* Licensed material of Hitachi,Ltd. */ -/*------------------------------------------------------*/ -/***********************************************************************/ -/* SPEC; */ -/* NAME = stdio : header file for standard I/O function ; */ -/* */ -/* FUNC = this header file do the following functions; */ -/* (1) file entry table define; */ -/* (2) I/O macro define; */ -/* (3) symbol define; */ -/* CLAS = UNIT; */ -/* */ -/* END; */ -/***********************************************************************/ -#ifndef _STDIO -#define _STDIO - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define _NFILE 20 -#define SYS_OPEN 20 -extern struct _iobuf { - unsigned char *_bufptr; /* buffer pointer */ - long _bufcnt; /* buffer count */ - unsigned char *_bufbase; /* buffer base pointer */ - long _buflen; /* buffer length */ - char _ioflag1; /* I/O control flag 1 */ - char _ioflag2; /* I/O control flag 2 */ - char _iofd; -} _iob[_NFILE]; - -extern volatile int _errno; - -typedef struct _iobuf FILE; /* define FILE of file-stream */ - - /* define function of prototype */ -extern int _fillbuf(FILE*); -extern int _flshbuf(int,FILE*); -extern void _putcsub(FILE*); -extern int fclose(FILE *); -extern int fflush(FILE *); -extern FILE *fopen(const char *, const char *); -extern FILE *freopen(const char *, const char *, FILE *); -extern void setbuf(FILE *, char *); -extern int setvbuf(FILE *, char *, int, size_t); -extern int fprintf(FILE *, const char *, ...); -extern int fscanf(FILE *, const char *, ...); -extern int printf(const char * ,...); -extern int scanf(const char * ,...); -extern int sprintf(char *, const char * ,...); -extern int sscanf(const char *, const char * ,...); -extern int vfprintf(FILE *, const char *, char *); -extern int vprintf(const char *, char *); -extern int vsprintf(char *, const char *, char *); -extern int fgetc(FILE *); -extern char *fgets(char *, int, FILE *); -extern int fputc(int , FILE *); -extern int fputs(const char *, FILE *); -extern int getc(FILE *); -extern int getchar(void); -extern char *gets(char *); -extern int putc(int, FILE *); -extern int putchar(int); -extern int puts(const char *); -extern int ungetc(int, FILE *); -extern size_t fread(void *, size_t, size_t, FILE *); -extern size_t fwrite(const void *, size_t, size_t, FILE *); -extern int fseek(FILE *, long int, int); -extern long ftell(FILE *); -extern void rewind(FILE *); -extern void clearerr(FILE *); -extern int feof(FILE *); -extern int ferror(FILE *); -extern void perror(const char *); -#ifdef __cplusplus -} -#endif - -#define _IOFBF 1 /* define _IOFBF of full buffering */ -#define _IOLBF 2 /* define _IOLBF of line buffering */ -#define _IONBF 3 /* define _IONBF of non buffering */ - -#define SEEK_SET 0 /* allocate top position */ -#define SEEK_CUR 1 /* allocate current position */ -#define SEEK_END 2 /* allocate bottom position */ - -#define BUFSIZ 512 /* default buffer size */ - - /* error number define */ -#ifndef EBADF -#define EBADF 1302 /* I/O operation error */ -#endif - -#ifndef PTRERR -#define PTRERR 1106 /* fp null */ -#endif - -#ifndef ECSPEC -#define ECSPEC 1304 /* format err */ -#endif - -#ifndef NOTOPN -#define NOTOPN 1300 /* file not open */ -#endif - - /* I/O flags for _ioflag1 */ -#define _IOREAD 1 /* only read or update read */ -#define _IOWRITE 2 /* only write or update write */ -#define _IORW 4 /* update file */ -#define _IOUNBUF 8 /* unbffering I/O */ -#define _IOBGBUF 16 /* automatic buffer allocate */ -#define _IOEOF 32 /* end of file */ -#define _IOERR 64 /* I/O error */ -#define _IOBIN 128 /* binaly file */ -#define _UNGTC 1 /* ungetc issued (_ioflag2) */ -#define _IOLINBUF 2 /* line buffering */ - -#define EOF (-1) -#define _EOL (0X0A) /* end of line */ - -#define stdin (&_iob[0]) /* standard input file */ -#define stdout (&_iob[1]) /* standard output file */ -#define stderr (&_iob[2]) /* standard error output file */ - -#define getc(fp) ((fp)->_ioflag2&=~_UNGTC,(((fp)->_ioflag1&(_IORW|_IOWRITE))==\ - (_IORW|_IOWRITE))&&(fp)->_bufcnt==(fp)->_buflen?(_fillbuf(fp)):\ - --(fp)->_bufcnt>=0 ?((int)*(fp)->_bufptr++):_fillbuf(fp)) -#define putc(x,fp) (((((fp)->_ioflag1&_IORW)!=0&&((fp)->_ioflag1&_IOWRITE)==0)\ - ?_putcsub(fp):(void)0),((((fp)->_bufcnt==0)||((((fp)->_ioflag2&_IOLINBUF)!=0)\ - && ((fp)->_bufbase!=(fp)->_bufptr)&&(*((fp)->_bufptr-1)==_EOL)))\ - ?_flshbuf((int)(x),(fp)):\ - (((fp)->_bufcnt--),((int)(*(fp)->_bufptr++=(unsigned char)(x)))))) -#define getchar() getc(stdin) -#define putchar(x) putc(x,stdout) -#define feof(fp) ((fp)->_ioflag1&_IOEOF) -#define ferror(fp) ((fp)->_ioflag1&_IOERR) -#define clearerr(fp) ((void)((fp)->_ioflag1&=~(_IOEOF|_IOERR))) - -#endif diff --git a/include/streambuf b/include/streambuf deleted file mode 100644 index 9c631bd..0000000 --- a/include/streambuf +++ /dev/null @@ -1,97 +0,0 @@ -//Embedded C++ Library -//Copyright (c) Hitachi,Ltd. 1997 -//Licensed material of Hitachi,Ltd -// -// Embeded C++ Library -// - -//==================================================================== -// File: streambuf -// Purpose: Definition of class streambuf -// Create: 1997.09.20 Rev. 1.0 -//==================================================================== - -#ifndef _STREAMBUF_ -#define _STREAMBUF_ - -#include -class streambuf { -public: - virtual ~streambuf(){} - streambuf *pubsetbuf(char *cptr, streamsize nnum){ - return setbuf(cptr, nnum); - } - pos_type pubseekoff(off_type off,ios_base::seekdir way, - ios_base::openmode which - =(ios_base::openmode) - (ios_base::in|ios_base::out)){ - return seekoff(off, way, which); - } - pos_type pubseekpos(pos_type sp, - ios_base::openmode which - =(ios_base::openmode) - (ios_base::in|ios_base::out)){ - return seekpos(sp, which); - } - int pubsync(){ - return sync(); - } - streamsize in_avail(){ - return ((gptr()!=0)&&(gptr() -// - -//==================================================================== -// File: string -// Purpose: Definition of class string -// Create: 1997.09.20 Rev. 1.0 -//==================================================================== - -#ifndef _STRING_ -#define _STRING_ - -#include -#include - - -#include -#include -#include - -class string; - -string operator + (const string &lhs,const string &rhs); -string operator + (const char *lhs,const string &rhs); -string operator + (char lhs,const string &rhs); -string operator + (const string &lhs,const char *rhs); -string operator + (const string &lhs,char rhs); - -bool operator == (const string &lhs,const string &rhs); -bool operator == (const char *lhs,const string &rhs); -bool operator == (const string &lhs,const char *rhs); -bool operator != (const string &lhs,const string &rhs); -bool operator != (const char *lhs,const string &rhs); -bool operator != (const string &lhs,const char *rhs); - -bool operator < (const string &lhs,const string &rhs); -bool operator < (const char *lhs,const string &rhs); -bool operator < (const string &lhs,const char *rhs); -bool operator > (const string &lhs,const string &rhs); -bool operator > (const char *lhs,const string &rhs); -bool operator > (const string &lhs,const char *rhs); - -bool operator <= (const string &lhs,const string &rhs); -bool operator <= (const char *lhs,const string &rhs); -bool operator <= (const string &lhs,const char *rhs); -bool operator >= (const string &lhs,const string &rhs); -bool operator >= (const char *lhs,const string &rhs); -bool operator >= (const string &lhs,const char *rhs); - -void swap(string &lhs, string &rhs); - -istream & operator >> (istream &is,string &str); -ostream & operator << (ostream &os,const string &str); -istream & getline (istream &is,string &str,char delim); -istream & getline (istream &is,string &str); - -class string { -public: - typedef char* iterator; - typedef const char* const_iterator; - - static const size_t npos; - - string(void) { - _ec2p_getmem(NULL, 0, NULL, false); - } - string(const string& str, size_t pos = 0, size_t n = npos) { - size_t wkpos = pos > str.size() ? str.size() : pos; - size_t rlen = (n > (str.size() - wkpos)) ? str.size() - wkpos : n; - _ec2p_getmem(&str.c_str()[wkpos], rlen, NULL, false); - } - string(const char* s, size_t n) { - _ec2p_getmem(s, n, NULL, false); - } - string(const char* s) { - _ec2p_getmem(s, strlen(s), NULL, false); - } - string(size_t n, char c) { - _ec2p_getmem(NULL, n, c, true); - } -#ifdef _EC2P_GPP - string(char c) { - _ec2p_getmem(NULL, 1, c, true); - } -#endif - ~string() { - if (s_ptr != NULL) { - delete [] s_ptr; - s_ptr = NULL; - } - } - string& operator=(const string& str); - string& operator=(const char* s); - string& operator=(char c); - - iterator begin() { return((iterator)s_ptr); } - const_iterator begin() const { return((const_iterator)s_ptr); } - iterator end() { return((iterator)&s_ptr[s_len]); } - const_iterator end() const { return((const_iterator)&s_ptr[s_len]);} - - size_t size() const { return(s_len); } - size_t length() const { return(s_len); } - size_t max_size() const { return(s_res); } - void resize(size_t n, char c); - void resize(size_t n); - size_t capacity() const { return(s_res); } - void reserve(size_t res_arg = 0); - void clear(); - bool empty() const { return( s_len == 0 ? true : false ); } - - const char & operator[](size_t pos) const; - char & operator[](size_t pos); - const char & at(size_t n) const; - char & at(size_t n); - - string& operator+=(const string& str); - string& operator+=(const char* s); - string& operator+=(char c); - string& append(const string& str); - string& append(const string& str, size_t pos, size_t n); - string& append(const char* s, size_t n); - string& append(const char* s); - string& append(size_t n, char c); - - string& assign(const string&); - string& assign(const string& str, size_t pos, size_t n); - string& assign(const char* s, size_t n); - string& assign(const char* s); - string& assign(size_t n, char c); - - string& insert(size_t pos1, const string& str); - string& insert(size_t pos1, const string& str, - size_t pos2, size_t n); - string& insert(size_t pos, const char* s, size_t n); - string& insert(size_t pos, const char* s); - string& insert(size_t pos, size_t n, char c); - iterator insert(iterator p, char c = char()); - void insert(iterator p, size_t n, char c); - - string& erase(size_t pos = 0, size_t n = npos); - iterator erase(iterator position); - iterator erase(iterator first, iterator last); - - string& replace(size_t pos1, size_t n1, const string& str); - string& replace(size_t pos1, size_t n1, const string& str, - size_t pos2, size_t n2); - string& replace(size_t pos, size_t n1, const char* s, size_t n2); - string& replace(size_t pos, size_t n1, const char* s); - string& replace(size_t pos, size_t n1, size_t n2, char c); - string& replace(iterator i1, iterator i2, const string& str); - string& replace(iterator i1, iterator i2, const char* s, size_t n); - string& replace(iterator i1, iterator i2, const char* s); - string& replace(iterator i1, iterator i2, size_t n, char c); - - size_t copy(char* s, size_t n, size_t pos = 0) const; - void swap(string&); - const char* c_str() const { return(s_ptr); } - const char* data() const { - if (s_len == 0) { - s_ptr[0] = '\0'; - } - return(s_ptr); - } - - size_t find (const string& str, size_t pos = 0) const; - size_t find (const char* s, size_t pos, size_t n) const; - size_t find (const char* s, size_t pos = 0) const; - size_t find (char c, size_t pos = 0) const; - size_t rfind(const string& str, size_t pos = npos) const; - size_t rfind(const char* s, size_t pos, size_t n) const; - size_t rfind(const char* s, size_t pos = npos) const; - size_t rfind(char c, size_t pos = npos) const; - - size_t find_first_of(const string& str, size_t pos = 0) const; - size_t find_first_of(const char* s, size_t pos, size_t n) const; - size_t find_first_of(const char* s, size_t pos = 0) const; - size_t find_first_of(char c, size_t pos = 0) const; - size_t find_last_of (const string& str, size_t pos = npos) const; - size_t find_last_of (const char* s, size_t pos, size_t n) const; - size_t find_last_of (const char* s, size_t pos = npos) const; - size_t find_last_of (char c, size_t pos = npos) const; - - size_t find_first_not_of(const string& str, size_t pos = 0) const; - size_t find_first_not_of(const char* s, size_t pos, size_t n) const; - size_t find_first_not_of(const char* s, size_t pos = 0) const; - size_t find_first_not_of(char c, size_t pos = 0) const; - size_t find_last_not_of (const string& str, size_t pos = npos) const; - size_t find_last_not_of (const char* s, size_t pos, size_t n) const; - size_t find_last_not_of (const char* s, size_t pos = npos) const; - size_t find_last_not_of (char c, size_t pos = npos) const; - - string substr(size_t pos = 0, size_t n = npos) const; - int compare(const string& str) const; - int compare(size_t pos1, size_t n1, const string& str) const; - int compare(size_t pos1, size_t n1, const string& str, - size_t pos2, size_t n2) const; - int compare(const char* s) const; - int compare(size_t pos1, size_t n1, - const char* s, size_t n2 = npos) const; -private: - char *s_ptr; - size_t s_len, s_res; - void _ec2p_getmem(const char *s, size_t n, char c, bool flg=false); - char *_ec2p_extmem(size_t n); - static const char _ec2p_at; - }; -#endif diff --git a/include/string.h b/include/string.h deleted file mode 100644 index 6ce197f..0000000 --- a/include/string.h +++ /dev/null @@ -1,57 +0,0 @@ -/*------------------------------------------------------*/ -/* SH SERIES C Compiler Ver. 1.0 */ -/* Copyright (c) 1992 Hitachi,Ltd. */ -/* Licensed material of Hitachi,Ltd. */ -/*------------------------------------------------------*/ -/*****************************************************************/ -/* SPEC ; */ -/* NAME = string : */ -/* FUNC = */ -/* ; */ -/* */ -/* */ -/* */ -/* CLAS = UNIT ; */ -/* LINK = */ -/* NOTE = */ -/* ; */ -/* */ -/* END ; */ -/*****************************************************************/ -#ifndef _STRING -#define _STRING - -#include - -#ifdef __cplusplus -extern "C" { -#include -#endif -extern void *memcpy(void *, const void *, size_t); -extern void *memmove(void *, const void *, size_t); -extern char *strcpy(char *, const char *); -extern char *strncpy(char *, const char *, size_t); -extern char *strcat(char *, const char *); -extern char *strncat(char *, const char *,size_t); -extern int memcmp(const void *, const void *,size_t); -extern int strcmp(const char *, const char *); -extern int strncmp(const char *, const char *, size_t); -extern void *memchr(const void *, int, size_t); -extern char *strchr(const char *, int); -extern size_t strcspn(const char *, const char *); -extern char *strpbrk(const char *, const char *); -extern char *strrchr(const char *, int); -extern size_t strspn(const char *, const char *); -extern char *strstr(const char *, const char *); -extern char *strtok(char *, const char *); -extern void *memset(void *, int, size_t); -extern char *strerror(int); -extern size_t strlen(const char *); -#ifdef __cplusplus -} -#endif - -#define strcpy(s1,s2) _builtin_strcpy(s1,s2) -#define strcmp(s1,s2) _builtin_strcmp(s1,s2) - -#endif diff --git a/syscall.h b/include/syscall.h similarity index 100% rename from syscall.h rename to include/syscall.h diff --git a/include/typeinfo.h b/include/typeinfo.h deleted file mode 100644 index adafb5b..0000000 --- a/include/typeinfo.h +++ /dev/null @@ -1,82 +0,0 @@ -/*------------------------------------------------------*/ -/* SH SERIES C Compiler Ver. 1.0 */ -/* Copyright (c) 1992 Hitachi,Ltd. */ -/* Licensed material of Hitachi,Ltd. */ -/*------------------------------------------------------*/ -/***********************************************************************/ -/* SPEC; */ -/* NAME = typeinfo.h : */ -/* */ -/* FUNC = Include file for type information (18.5.1) */ -/* */ -/* CLAS = UNIT; */ -/* */ -/* END; */ -/***********************************************************************/ - -#ifndef _TYPEINFO_H -#define _TYPEINFO_H - -#include - -#ifdef __EDG_RUNTIME_USES_NAMESPACES -namespace std { -#endif /* ifdef __EDG_RUNTIME_USES_NAMESPACES */ - - /* - If bool is not supported, use a typedef for bool. - */ - #ifdef _BOOL - typedef bool __bool; - #else /* ifndef _BOOL */ - typedef int __bool; - #endif /* ifdef _BOOL */ - -/* The following pragma is used so that the compiler knows that this definition - of type_info is the one that corresponds to the type returned by typeid. */ -#pragma define_type_info - class type_info { - public: - virtual ~type_info(); - __bool operator==(const type_info&) const; - __bool operator!=(const type_info&) const; - __bool before(const type_info&) const; - const char* name() const; - private: - type_info& operator=(const type_info&); // Not actually defined - protected: - // Protected instead of private to suppress the "no accessible - // constructor" warning - type_info(const type_info&); // Not actually defined - }; - - class bad_cast : public exception { - public: - bad_cast() throw(); - bad_cast(const bad_cast&) throw(); - bad_cast& operator=(const bad_cast&) throw(); - virtual ~bad_cast() throw(); - virtual const char* what() const throw(); - }; - - class bad_typeid : public exception { - public: - bad_typeid() throw(); - bad_typeid(const bad_typeid&) throw(); - bad_typeid& operator=(const bad_typeid&) throw(); - virtual ~bad_typeid() throw(); - virtual const char* what() const throw(); - }; - -#ifdef __EDG_RUNTIME_USES_NAMESPACES -} /* namespace std */ - -#ifdef __EDG_IMPLICIT_USING_STD -/* Implicitly include a using directive for the STD namespace when this - preprocessing flag is TRUE. */ -using namespace std; -#endif /* ifdef __EDG_IMPLICIT_USING_STD */ - -#endif /* ifdef __EDG_RUNTIME_USES_NAMESPACES */ - -#endif /* _TYPEINFO_H */ diff --git a/include/umachine.h b/include/umachine.h deleted file mode 100644 index 56b3be2..0000000 --- a/include/umachine.h +++ /dev/null @@ -1,55 +0,0 @@ -/*------------------------------------------------------*/ -/* SH SERIES C Compiler Ver. 3.0 */ -/* Copyright (c) 1992, 1995 Hitachi,Ltd. */ -/* Licensed material of Hitachi,Ltd. */ -/*------------------------------------------------------*/ -/*****************************************************************/ -/* SPEC ; */ -/* NAME = umachine.h : */ -/* FUNC = ; */ -/* CLAS = UNIT ; */ -/* END ; */ -/*****************************************************************/ -#ifndef _UMACHINE -#define _UMACHINE - -#ifdef __cplusplus -#include -#endif - -#define set_gbr(base) _builtin_set_gbr(base) -#define get_gbr() _builtin_get_gbr() -#define gbr_read_byte(offset) _builtin_gbr_read_byte(offset) -#define gbr_read_word(offset) _builtin_gbr_read_word(offset) -#define gbr_read_long(offset) _builtin_gbr_read_long(offset) -#define gbr_write_byte(offset,data) _builtin_gbr_write_byte(offset,data) -#define gbr_write_word(offset,data) _builtin_gbr_write_word(offset,data) -#define gbr_write_long(offset,data) _builtin_gbr_write_long(offset,data) -#define gbr_and_byte(offset,mask) _builtin_gbr_and_byte(offset,mask) -#define gbr_or_byte(offset,mask) _builtin_gbr_or_byte(offset,mask) -#define gbr_xor_byte(offset,mask) _builtin_gbr_xor_byte(offset,mask) -#define gbr_tst_byte(offset,mask) _builtin_gbr_tst_byte(offset,mask) -#define tas(addr) _builtin_tas(addr) -#define trapa(trap_no) _builtin_trapa(trap_no) -#define macw(ptr1, ptr2, count) _builtin_macw(ptr1, ptr2, count) -#define macwl(ptr1, ptr2, count, mask) _builtin_macwl(ptr1, ptr2, count, mask) -#define macl(ptr1, ptr2, count) _builtin_macl(ptr1, ptr2, count) -#define macll(ptr1, ptr2, count, mask) _builtin_macll(ptr1, ptr2, count, mask) -#define trapa_svc _builtin_trapa_svc -#define prefetch _builtin_prefetch -#define set_fpscr(cr) _builtin_set_fpscr(cr) -#define get_fpscr() _builtin_get_fpscr() -#define fipr(vec1, vec2) _builtin_fipr(vec1, vec2) -#define ftrv(vec1, vec2) _builtin_ftrv(vec1, vec2) -#define ftrvadd(vec1, vec2, vec3) _builtin_ftrvadd(vec1, vec2, vec3) -#define ftrvsub(vec1, vec2, vec3) _builtin_ftrvsub(vec1, vec2, vec3) -#define mtrx4mul(mx1, mx2) _builtin_mtrx4mul(mx1, mx2) -#define mtrx4muladd(mx1, mx2, mx3) _builtin_mtrx4muladd(mx1, mx2, mx3) -#define mtrx4mulsub(mx1, mx2, mx3) _builtin_mtrx4mulsub(mx1, mx2, mx3) -#define ld_ext(mx) _builtin_ld_ext(mx) -#define st_ext(mx) _builtin_st_ext(mx) -#define add4(vec1, vec2, vec3) _builtin_add4(vec1, vec2, vec3) -#define sub4(vec1, vec2, vec3) _builtin_sub4(vec1, vec2, vec3) -#define trace(tv) _builtin_trace(tv) - -#endif diff --git a/bin/addin.ld b/scripts/addin.ld similarity index 100% rename from bin/addin.ld rename to scripts/addin.ld diff --git a/Sound4Calc.c b/src/Sound4Calc.c similarity index 82% rename from Sound4Calc.c rename to src/Sound4Calc.c index 81ee45a..a222ebc 100644 --- a/Sound4Calc.c +++ b/src/Sound4Calc.c @@ -1,34 +1,16 @@ -#include "fxlib.h" +#include #include -#include "addresses.h" -#include "Sound4Calc.h" +#include +#include -#include "syscall.h" +#include //#define DEBUG #define PI 3.14159265358 -/*#define SH7305_PJDR ((volatile unsigned char*)0xA4050130) -#define SH7305_PJCR ((volatile unsigned short*)0xA4050110) -#define SH7305_PUCR ((volatile unsigned short*)0xA4050142) -#define SH7305_PUDR ((volatile unsigned char*)0xA4050162) -#define SH7305_MSTPCR0 ((volatile unsigned int*)0xA4150030) -#define SH7305_SCSCR ((volatile unsigned short*)0xA4410008) - -//SH3 addresses -#define SH7337_STBCR3 ((volatile unsigned int*)0xA40A0000) -#define SH7337_SCSCR2 ((volatile unsigned int*)0xA4410008) -#define SH7337_PGCR ((volatile unsigned int*)0xA400010C) -#define SH7337_PLCR ((volatile unsigned int*)0xA4000114) -#define SH7337_SCPCR ((volatile unsigned int*)0xA4000116) -#define SH7337_PGDR ((volatile unsigned int*)0xA400012C) -#define SH7337_SCPDR ((volatile unsigned int*)0xA4000136)*/ - -//typedef unsigned volatile; - char *itoa(int n, unsigned char* str, int base) { int i=1, j=0, x; diff --git a/crt0.s b/src/crt0.s similarity index 100% rename from crt0.s rename to src/crt0.s diff --git a/syscall.s b/src/syscall.s similarity index 100% rename from syscall.s rename to src/syscall.s