From 7b4b36e5d28359113e72d33960e2d5a3125a4d46 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Wed, 24 Mar 2004 09:48:28 +0000 Subject: [PATCH] and E cvs did givbe birth to an Embryo! :) SVN revision: 9445 --- legacy/embryo/AUTHORS | 2 + legacy/embryo/COPYING | 28 + legacy/embryo/COPYING-PLAIN | 33 + legacy/embryo/ChangeLog | 0 legacy/embryo/Doxyfile | 145 + legacy/embryo/INSTALL | 14 + legacy/embryo/Makefile.am | 24 + legacy/embryo/NEWS | 0 legacy/embryo/README | 1 + legacy/embryo/autogen.sh | 137 + legacy/embryo/configure.in | 85 + legacy/embryo/doc/embryo.css | 178 + legacy/embryo/doc/foot.html | 2 + legacy/embryo/doc/head.html | 19 + legacy/embryo/doc/img/embryo.png | Bin 0 -> 74944 bytes legacy/embryo/doc/img/embryo_big.png | Bin 0 -> 937116 bytes legacy/embryo/doc/img/embryo_mini.png | Bin 0 -> 753 bytes legacy/embryo/doc/img/embryo_small.png | Bin 0 -> 3755 bytes legacy/embryo/doc/img/hilite.png | Bin 0 -> 6127 bytes legacy/embryo/embryo-config.in | 59 + legacy/embryo/embryo.c.in | 30 + legacy/embryo/embryo.pc.in | 11 + legacy/embryo/embryo.spec | 80 + legacy/embryo/gendoc | 12 + legacy/embryo/make_cross_compile_arm.sh | 75 + legacy/embryo/src/Makefile.am | 3 + legacy/embryo/src/bin/Makefile.am | 34 + legacy/embryo/src/bin/embryo_cc_amx.h | 349 ++ legacy/embryo/src/bin/embryo_cc_osdefs.h | 84 + legacy/embryo/src/bin/embryo_cc_sc.h | 687 ++++ legacy/embryo/src/bin/embryo_cc_sc1.c | 3979 ++++++++++++++++++++ legacy/embryo/src/bin/embryo_cc_sc2.c | 2332 ++++++++++++ legacy/embryo/src/bin/embryo_cc_sc3.c | 2063 ++++++++++ legacy/embryo/src/bin/embryo_cc_sc4.c | 1195 ++++++ legacy/embryo/src/bin/embryo_cc_sc5.c | 165 + legacy/embryo/src/bin/embryo_cc_sc5.scp | 283 ++ legacy/embryo/src/bin/embryo_cc_sc6.c | 967 +++++ legacy/embryo/src/bin/embryo_cc_sc7.c | 606 +++ legacy/embryo/src/bin/embryo_cc_sc7.scp | 1561 ++++++++ legacy/embryo/src/bin/embryo_cc_scexpand.c | 67 + legacy/embryo/src/bin/embryo_cc_sclib.c | 218 ++ legacy/embryo/src/bin/embryo_cc_sclinux.h | 47 + legacy/embryo/src/bin/embryo_cc_sclist.c | 279 ++ legacy/embryo/src/bin/embryo_cc_scpack.c | 450 +++ legacy/embryo/src/bin/embryo_cc_scstub.c | 29 + legacy/embryo/src/bin/embryo_cc_scvars.c | 99 + legacy/embryo/src/bin/embryo_main.c | 235 ++ legacy/embryo/src/lib/Embryo.h | 98 + legacy/embryo/src/lib/Makefile.am | 24 + legacy/embryo/src/lib/embryo_amx.c | 1611 ++++++++ legacy/embryo/src/lib/embryo_float.c | 306 ++ legacy/embryo/src/lib/embryo_main.c | 23 + legacy/embryo/src/lib/embryo_private.h | 266 ++ 53 files changed, 18995 insertions(+) create mode 100644 legacy/embryo/AUTHORS create mode 100644 legacy/embryo/COPYING create mode 100644 legacy/embryo/COPYING-PLAIN create mode 100644 legacy/embryo/ChangeLog create mode 100644 legacy/embryo/Doxyfile create mode 100644 legacy/embryo/INSTALL create mode 100644 legacy/embryo/Makefile.am create mode 100644 legacy/embryo/NEWS create mode 100644 legacy/embryo/README create mode 100755 legacy/embryo/autogen.sh create mode 100644 legacy/embryo/configure.in create mode 100644 legacy/embryo/doc/embryo.css create mode 100644 legacy/embryo/doc/foot.html create mode 100644 legacy/embryo/doc/head.html create mode 100644 legacy/embryo/doc/img/embryo.png create mode 100644 legacy/embryo/doc/img/embryo_big.png create mode 100644 legacy/embryo/doc/img/embryo_mini.png create mode 100644 legacy/embryo/doc/img/embryo_small.png create mode 100644 legacy/embryo/doc/img/hilite.png create mode 100644 legacy/embryo/embryo-config.in create mode 100644 legacy/embryo/embryo.c.in create mode 100644 legacy/embryo/embryo.pc.in create mode 100644 legacy/embryo/embryo.spec create mode 100755 legacy/embryo/gendoc create mode 100755 legacy/embryo/make_cross_compile_arm.sh create mode 100644 legacy/embryo/src/Makefile.am create mode 100644 legacy/embryo/src/bin/Makefile.am create mode 100644 legacy/embryo/src/bin/embryo_cc_amx.h create mode 100644 legacy/embryo/src/bin/embryo_cc_osdefs.h create mode 100644 legacy/embryo/src/bin/embryo_cc_sc.h create mode 100644 legacy/embryo/src/bin/embryo_cc_sc1.c create mode 100644 legacy/embryo/src/bin/embryo_cc_sc2.c create mode 100644 legacy/embryo/src/bin/embryo_cc_sc3.c create mode 100644 legacy/embryo/src/bin/embryo_cc_sc4.c create mode 100644 legacy/embryo/src/bin/embryo_cc_sc5.c create mode 100644 legacy/embryo/src/bin/embryo_cc_sc5.scp create mode 100644 legacy/embryo/src/bin/embryo_cc_sc6.c create mode 100644 legacy/embryo/src/bin/embryo_cc_sc7.c create mode 100644 legacy/embryo/src/bin/embryo_cc_sc7.scp create mode 100644 legacy/embryo/src/bin/embryo_cc_scexpand.c create mode 100644 legacy/embryo/src/bin/embryo_cc_sclib.c create mode 100644 legacy/embryo/src/bin/embryo_cc_sclinux.h create mode 100644 legacy/embryo/src/bin/embryo_cc_sclist.c create mode 100644 legacy/embryo/src/bin/embryo_cc_scpack.c create mode 100644 legacy/embryo/src/bin/embryo_cc_scstub.c create mode 100644 legacy/embryo/src/bin/embryo_cc_scvars.c create mode 100644 legacy/embryo/src/bin/embryo_main.c create mode 100644 legacy/embryo/src/lib/Embryo.h create mode 100644 legacy/embryo/src/lib/Makefile.am create mode 100644 legacy/embryo/src/lib/embryo_amx.c create mode 100644 legacy/embryo/src/lib/embryo_float.c create mode 100644 legacy/embryo/src/lib/embryo_main.c create mode 100644 legacy/embryo/src/lib/embryo_private.h diff --git a/legacy/embryo/AUTHORS b/legacy/embryo/AUTHORS new file mode 100644 index 0000000000..7bf31c1234 --- /dev/null +++ b/legacy/embryo/AUTHORS @@ -0,0 +1,2 @@ +The Rasterman (Carsten Haitzler) + diff --git a/legacy/embryo/COPYING b/legacy/embryo/COPYING new file mode 100644 index 0000000000..474fcc5faa --- /dev/null +++ b/legacy/embryo/COPYING @@ -0,0 +1,28 @@ +Copyright (C) 2000 Carsten Haitzler and various contributors (see AUTHORS) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies of the Software and its Copyright notices. In addition publicly +documented acknowledgment must be given that this software has been used if no +source code of this software is made available publicly. This includes +acknowledgments in either Copyright notices, Manuals, Publicity and Marketing +documents or any documentation provided with any product containing this +software. This License does not apply to any software that links to the +libraries provided by this software (statically or dynamically), but only to +the software provided. + +Please see the COPYING.PLAIN for a plain-english explanation of this notice +and it's intent. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/legacy/embryo/COPYING-PLAIN b/legacy/embryo/COPYING-PLAIN new file mode 100644 index 0000000000..376875e868 --- /dev/null +++ b/legacy/embryo/COPYING-PLAIN @@ -0,0 +1,33 @@ +Plain English Copyright Notice + +This file is not intended to be the actual License. The reason this file +exists is that we here are programmers and engineers. We aren't lawyers. We +provide licenses that we THINK say the right things, but we have our own +intentions at heart. This is a plain-english explanation of what those +intentions are, and if you follow them you will be within the "spirit" of +the license. + +The intent is for us to enjoy writing software that is useful to us (the +AUTHORS) and allow others to use it freely and also benefit from the work we +put into making it. We don't want to restrict others using it. They should +not *HAVE* to make the source code of the applications they write that +simply link to these libraries (be that statically or dynamically), or for +them to be limited as to what license they choose to use (be it open, closed +or anything else). But we would like to know you are using these libraries. +We simply would like to know that it has been useful to someone. This is why +we ask for acknowledgement of some sort. + +You can do what you want with the source of this software - it doesn't +matter. We still have it here for ourselves and it is open and free to use +and download and play with. It can't be taken away. We don't really mind what +you do with the source to your software. We would simply like to know that +you are using it - especially if it makes it to a commerical product. If you +simply e-mail all the AUTHORS (see COPYING and AUTHORS files) telling us, and +then make sure you include a paragraph or page in the manual for the product +with the copyright notice and state that you used this software, we will be +very happy. If you want to contribute back modifications and fixes you may have +made we will welcome those too with open arms (generally). If you want help +with changes needed, ports needed or features to be added, arrangements can +be easily made with some dialogue. + +Carsten Haitzler diff --git a/legacy/embryo/ChangeLog b/legacy/embryo/ChangeLog new file mode 100644 index 0000000000..e69de29bb2 diff --git a/legacy/embryo/Doxyfile b/legacy/embryo/Doxyfile new file mode 100644 index 0000000000..ba040ec825 --- /dev/null +++ b/legacy/embryo/Doxyfile @@ -0,0 +1,145 @@ +PROJECT_NAME = Embryo +PROJECT_NUMBER = +OUTPUT_DIRECTORY = doc +INPUT = embryo.c +IMAGE_PATH = doc/img +OUTPUT_LANGUAGE = English +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = doc/head.html +HTML_FOOTER = doc/foot.html +HTML_STYLESHEET = doc/embryo.css +HTML_ALIGN_MEMBERS = YES +ENUM_VALUES_PER_LINE = 1 +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +EXTRACT_ALL = NO +EXTRACT_PRIVATE = NO +EXTRACT_STATIC = NO +EXTRACT_LOCAL_CLASSES = NO +HIDE_UNDOC_MEMBERS = YES +HIDE_UNDOC_CLASSES = YES +HIDE_FRIEND_COMPOUNDS = YES +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +INTERNAL_DOCS = NO +STRIP_CODE_COMMENTS = YES +CASE_SENSE_NAMES = YES +SHORT_NAMES = NO +HIDE_SCOPE_NAMES = NO +VERBATIM_HEADERS = NO +SHOW_INCLUDE_FILES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +DISTRIBUTE_GROUP_DOC = NO +TAB_SIZE = 2 +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ALIASES = +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +OPTIMIZE_OUTPUT_FOR_C = YES +OPTIMIZE_OUTPUT_JAVA = NO +SHOW_USED_FILES = NO +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +FILE_PATTERNS = +RECURSIVE = NO +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = +EXAMPLE_PATTERNS = +EXAMPLE_RECURSIVE = NO +INPUT_FILTER = +FILTER_SOURCE_FILES = NO +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES +ALPHABETICAL_INDEX = YES +COLS_IN_ALPHA_INDEX = 2 +IGNORE_PREFIX = +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +GENERATE_LATEX = YES +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = YES +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +GENERATE_MAN = YES +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = YES +GENERATE_XML = NO +XML_SCHEMA = +XML_DTD = +GENERATE_AUTOGEN_DEF = NO +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = NO +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +CLASS_DIAGRAMS = NO +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = NO +COLLABORATION_GRAPH = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = NO +INCLUDED_BY_GRAPH = NO +GRAPHICAL_HIERARCHY = NO +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 512 +MAX_DOT_GRAPH_HEIGHT = 512 +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +SEARCHENGINE = NO +CGI_NAME = search.cgi +CGI_URL = +DOC_URL = +DOC_ABSPATH = +BIN_ABSPATH = /usr/bin/ +EXT_DOC_PATHS = diff --git a/legacy/embryo/INSTALL b/legacy/embryo/INSTALL new file mode 100644 index 0000000000..348d00976c --- /dev/null +++ b/legacy/embryo/INSTALL @@ -0,0 +1,14 @@ +COMPILING and INSTALLING: + +If you got a official release tar archive do: + ./configure + +( otherwise if you got this from enlightenment cvs do: ./autogen.sh ) + +Then to compile: + make + +To install (run this as root, or the user who handles installs): + make install + +NOTE: You MUST make install Embryo for it to run properly. diff --git a/legacy/embryo/Makefile.am b/legacy/embryo/Makefile.am new file mode 100644 index 0000000000..5d1b062c46 --- /dev/null +++ b/legacy/embryo/Makefile.am @@ -0,0 +1,24 @@ +## Process this file with automake to produce Makefile.in + +SUBDIRS = src + +MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.guess \ + config.h.in config.sub configure install-sh \ + ltconfig ltmain.sh missing mkinstalldirs \ + stamp-h.in embryo_docs.tar embryo_docs.tar.gz embryo.c + +dist-hook: + ./gendoc; \ + tar cvf embryo_docs.tar doc/html doc/latex doc/man; \ + rm -f embryo_docs.tar.gz; \ + gzip -9 embryo_docs.tar; + +bin_SCRIPTS = embryo-config + +EXTRA_DIST = README AUTHORS COPYING COPYING-PLAIN embryo.spec embryo.c.in \ + gendoc Doxyfile embryo_docs.tar.gz embryo.pc.in \ + make_cross_compile_arm.sh + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = embryo.pc + diff --git a/legacy/embryo/NEWS b/legacy/embryo/NEWS new file mode 100644 index 0000000000..e69de29bb2 diff --git a/legacy/embryo/README b/legacy/embryo/README new file mode 100644 index 0000000000..b212e2e1a7 --- /dev/null +++ b/legacy/embryo/README @@ -0,0 +1 @@ +Embryo 0.0.1 diff --git a/legacy/embryo/autogen.sh b/legacy/embryo/autogen.sh new file mode 100755 index 0000000000..9226176c74 --- /dev/null +++ b/legacy/embryo/autogen.sh @@ -0,0 +1,137 @@ +#!/bin/sh +# Run this to generate all the initial makefiles, etc. + +srcdir=`dirname $0` +PKG_NAME="the package." + +DIE=0 + +(autoconf --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`autoconf' installed to." + echo "Download the appropriate package for your distribution," + echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/" + DIE=1 +} + +(grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && { + (libtool --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`libtool' installed." + echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2d.tar.gz" + echo "(or a newer version if it is available)" + DIE=1 + } +} + +grep "^AM_GNU_GETTEXT" $srcdir/configure.in >/dev/null && { + grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \ + (gettext --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`gettext' installed." + echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz" + echo "(or a newer version if it is available)" + DIE=1 + } +} + +(automake --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: You must have \`automake' installed." + echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" + echo "(or a newer version if it is available)" + DIE=1 + NO_AUTOMAKE=yes +} + + +# if no automake, don't bother testing for aclocal +test -n "$NO_AUTOMAKE" || (aclocal --version) < /dev/null > /dev/null 2>&1 || { + echo + echo "**Error**: Missing \`aclocal'. The version of \`automake'" + echo "installed doesn't appear recent enough." + echo "Get ftp://ftp.gnu.org/pub/gnu/automake-1.3.tar.gz" + echo "(or a newer version if it is available)" + DIE=1 +} + +if test "$DIE" -eq 1; then + exit 1 +fi + +if test -z "$*"; then + echo "**Warning**: I am going to run \`configure' with no arguments." + echo "If you wish to pass any to it, please specify them on the" + echo \`$0\'" command line." + echo +fi + +case $CC in +xlc ) + am_opt=--include-deps;; +esac + +for coin in `find $srcdir -name configure.in -print` +do + dr=`dirname $coin` + if test -f $dr/NO-AUTO-GEN; then + echo skipping $dr -- flagged as no auto-gen + else + echo processing $dr + macrodirs=`sed -n -e 's,AM_ACLOCAL_INCLUDE(\(.*\)),\1,gp' < $coin` + ( cd $dr + aclocalinclude="$ACLOCAL_FLAGS" + for k in $macrodirs; do + if test -d $k; then + aclocalinclude="$aclocalinclude -I $k" + ##else + ## echo "**Warning**: No such directory \`$k'. Ignored." + fi + done + if grep "^AM_GNU_GETTEXT" configure.in >/dev/null; then + if grep "sed.*POTFILES" configure.in >/dev/null; then + : do nothing -- we still have an old unmodified configure.in + else + echo "Creating $dr/aclocal.m4 ..." + test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 + echo "Running gettextize... Ignore non-fatal messages." + echo "no" | gettextize --force --copy + echo "Making $dr/aclocal.m4 writable ..." + test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 + fi + fi + if grep "^AM_GNOME_GETTEXT" configure.in >/dev/null; then + echo "Creating $dr/aclocal.m4 ..." + test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 + echo "Running gettextize... Ignore non-fatal messages." + echo "no" | gettextize --force --copy + echo "Making $dr/aclocal.m4 writable ..." + test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 + fi + if grep "^AM_PROG_LIBTOOL" configure.in >/dev/null; then + echo "Running libtoolize..." + libtoolize --force --copy + fi + echo "Running aclocal $aclocalinclude ..." + aclocal $aclocalinclude + if grep "^AM_CONFIG_HEADER" configure.in >/dev/null; then + echo "Running autoheader..." + autoheader + fi + echo "Running automake --gnu $am_opt ..." + automake --add-missing --gnu $am_opt + echo "Running autoconf ..." + autoconf + ) + fi +done + +#conf_flags="--enable-maintainer-mode --enable-compile-warnings" #--enable-iso-c + +if test x$NOCONFIGURE = x; then + echo Running $srcdir/configure $conf_flags "$@" ... + $srcdir/configure $conf_flags "$@" \ + && echo Now type \`make\' to compile $PKG_NAME +else + echo Skipping configure process. +fi diff --git a/legacy/embryo/configure.in b/legacy/embryo/configure.in new file mode 100644 index 0000000000..b7559471c4 --- /dev/null +++ b/legacy/embryo/configure.in @@ -0,0 +1,85 @@ +dnl Process this file with autoconf to produce a configure script. + +# get rid of that stupid cache mechanism +rm -f config.cache + +AC_INIT(configure.in) +AC_CANONICAL_BUILD +AC_CANONICAL_HOST +AC_CANONICAL_TARGET +AC_ISC_POSIX +AM_INIT_AUTOMAKE(embryo, 0.0.1) +AM_CONFIG_HEADER(config.h) + +AC_PROG_CC +AM_PROG_CC_STDC +AC_HEADER_STDC +AC_C_CONST +AM_ENABLE_SHARED +AM_PROG_LIBTOOL + +if test "x${exec_prefix}" = "xNONE"; then + if test "x${prefix}" = "xNONE"; then + bindir="${ac_default_prefix}/bin"; + else + bindir="${prefix}/bin"; + fi +else + if test "x${prefix}" = "xNONE"; then + bindir="${ac_default_prefix}/bin"; + else + bindir="${prefix}/bin"; + fi +fi + +if test "x${exec_prefix}" = "xNONE"; then + if test "x${prefix}" = "xNONE"; then + libdir="${ac_default_prefix}/lib"; + else + libdir="${prefix}/lib"; + fi +else + if test "x${prefix}" = "xNONE"; then + libdir="${ac_default_prefix}/lib"; + else + libdir="${prefix}/lib"; + fi +fi + +dnl Set PACKAGE_BIN_DIR in config.h. +if test "x${bindir}" = 'xNONE'; then + if test "x${prefix}" = "xNONE"; then + AC_DEFINE_UNQUOTED(PACKAGE_BIN_DIR, "${ac_default_prefix}/bin", [Installation directory for user executables]) + else + AC_DEFINE_UNQUOTED(PACKAGE_BIN_DIR, "${prefix}/bin", [Installation directory for user executables]) + fi +else + AC_DEFINE_UNQUOTED(PACKAGE_BIN_DIR, "${bindir}", [Installation directory for user executables]) +fi + +dnl Set PACKAGE_LIB_DIR in config.h. +if test "x${libdir}" = 'xNONE'; then + if test "x${prefix}" = "xNONE"; then + AC_DEFINE_UNQUOTED(PACKAGE_LIB_DIR, "${ac_default_prefix}/lib", [Installation directory for libraries] ) + else + AC_DEFINE_UNQUOTED(PACKAGE_LIB_DIR, "${prefix}/lib", [Installation directory for libraries]) + fi +else + AC_DEFINE_UNQUOTED(PACKAGE_LIB_DIR, "${libdir}", [Installation directory for libraries]) +fi + +dnl Set PACKAGE_SOURCE_DIR in config.h. +packagesrcdir=`cd $srcdir && pwd` +AC_DEFINE_UNQUOTED(PACKAGE_SOURCE_DIR, "${packagesrcdir}", [Source code directory]) + +AC_OUTPUT([ +Makefile +embryo.pc +src/Makefile +src/lib/Makefile +src/bin/Makefile +embryo-config +],[ +chmod +x embryo-config +touch embryo_docs.tar.gz +]) diff --git a/legacy/embryo/doc/embryo.css b/legacy/embryo/doc/embryo.css new file mode 100644 index 0000000000..6117b397ba --- /dev/null +++ b/legacy/embryo/doc/embryo.css @@ -0,0 +1,178 @@ +td.md { + background-color: #ffffff; + font-family: monospace; + text-align: left; + vertical-align: center; + font-size: 10; + padding-right : 1px; + padding-top : 1px; + padding-left : 1px; + padding-bottom : 1px; + margin-left : 1px; + margin-right : 1px; + margin-top : 1px; + margin-bottom : 1px +} +td.mdname { + font-family: monospace; + text-align: left; + vertical-align: center; + font-size: 10; + padding-right : 1px; + padding-top : 1px; + padding-left : 1px; + padding-bottom : 1px; + margin-left : 1px; + margin-right : 1px; + margin-top : 1px; + margin-bottom : 1px +} +h1 +{ + text-align: center; + color: #333333 +} +h2 +{ + text-align: left; + color: #333333 +} +h3 +{ + text-align: left; + color: #333333 +} +a:link +{ + text-decoration: none; + color: #444444; + font-weight: bold; +} +a:visited +{ + text-decoration: none; + color: #666666; + font-weight: bold; +} +a:hover +{ + text-decoration: none; + color: #000000; + font-weight: bold; +} +a.nav:link +{ + text-decoration: none; + color: #444444; + font-weight: normal; +} +a.nav:visited +{ + text-decoration: none; + color: #666666; + font-weight: normal; +} +a.nav:hover +{ + text-decoration: none; + color: #000000; + font-weight: normal; +} +a.qindex:link +{ + text-decoration: none; + color: #444444; + font-weight: normal; +} +a.qindex:visited +{ + text-decoration: none; + color: #666666; + font-weight: normal; +} +a.qindex:hover +{ + text-decoration: none; + color: #000000; + font-weight: normal; +} +p +{ + color: #000000; + font-family: sans-serif; + font-size: 10; +} +body { + background-image: url("hilite.png"); + background-repeat: no-repeat; + background-position: left top; + background-color: #dddddd; + color: #000000; + font-family: sans-serif; + padding: 8px; + margin: 0; +} +div.fragment +{ + background-image: url("hilite.png"); + background-repeat: no-repeat; + background-position: left top; + border: thin solid #888888; + background-color: #eeeeee; + padding: 4px; + text-align: left; + vertical-align: center; + font-size: 12; +} +hr +{ + border: 0; + background-color: #000000; + width: 80%; + height: 1; +} +dl +{ + background-image: url("hilite.png"); + background-repeat: no-repeat; + background-position: left top; + border: thin solid #aaaaaa; + background-color: #eeeeee; + padding: 4px; + text-align: left; + vertical-align: center; + font-size: 12; +} +em +{ + color: #334466; + font-family: courier; + font-size: 10; + font-style: normal; +} + +div.nav +{ + border: thin solid #000000; + background-color: #ffffff; + padding: 1px; + text-align: center; + vertical-align: center; + font-size: 12; +} +div.body +{ + border: thin solid #000000; + background-color: #ffffff; + padding: 4px; + text-align: left; + font-size: 10; +} +div.diag +{ + border: thin solid #888888; + background-color: #eeeeee; + padding: 4px; + text-align: center; + font-size: 8; +} diff --git a/legacy/embryo/doc/foot.html b/legacy/embryo/doc/foot.html new file mode 100644 index 0000000000..308b1d01b6 --- /dev/null +++ b/legacy/embryo/doc/foot.html @@ -0,0 +1,2 @@ + + diff --git a/legacy/embryo/doc/head.html b/legacy/embryo/doc/head.html new file mode 100644 index 0000000000..cb873ae9d2 --- /dev/null +++ b/legacy/embryo/doc/head.html @@ -0,0 +1,19 @@ + + + + +$title + + + + + + diff --git a/legacy/embryo/doc/img/embryo.png b/legacy/embryo/doc/img/embryo.png new file mode 100644 index 0000000000000000000000000000000000000000..47597a8d4439b4999a1c1f6d5f4ae1427e4f1097 GIT binary patch literal 74944 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

Ge~ohFmh4^uFmPVot&RG=&7r7IY8UkJ5G*f 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

    _*~<6{7!bbm5Xn5?q%&Jo*u-pmZ2>&)4$h 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 WwX}bvINF z%%*P+#tsF#ttPsKDEuMkD1d$P1iqIlZMm3o0W;Oa{(9x^h#0&}oI~>hn7vkj36UBv zxMuCgv~!e#4Qgq)Q$Xh%6wIXltUX??=)6Xs*w0;l)7{cetU#cD;f|GrZG^;zH~cFFA{BD6VmVMTO`l`EwHJ9=QcfM}(`OhHerX^?F*a(U7PiYuxWY`WAVOqHJY`I*D&1Ma~dtLNp= zQReCd339vv)h0XwdDx7Hq*!~VtGO{`jzP27D;*Tq6ZhAe!XMq8nddSV#Xup~I^7DO z24wR2KO*|q;*p1Q^y@B&=reNi8g{5za#?ZCzNs(0s6DvLh{ zV`jP(=LAr#{`Q1~(~DyH>G$=Ull6zZv|v=LtOq3WPY`p*8&E4KFigH|Q54_JAqag{ zRfqB(GnBCDGj{3v78REVD0cQ|OQGd@kfMKCL;#0T(?XpV^G1*bEY;hAo5&}M#5;h>UzE6g$=j}qjX*E!7GWwaX=-$GLG`sE;G}*cg@V6 z!W5Xc)U6ey^TBGI&OL5uY)V{r$e!s)WSU?1)~_NCgAyQS^+S`Wpi-G}bF?gCbRg@t z%EE(p3bKaSX+rs+WkLfU)x&Z){KK{lM%@hGwf!n^|PaLswOQo6>b+ zQLJa#`spEXrpSA_>d9X!*97EPwH-*3$Rddhs2S~7i_PiU4O-hSRHIgYmHUCn#mygNF2*^Ihptsz>4=6uc)W)O;6npyv+tjGA& z@))rm2c2g;(&gDrsmw)NPPJ0uDb)H}JZ>|_$RIc;ty2dd6!b~Q&pTu6n@q(T>G_6t zg?{%9@q76=j`5Oj*`)t9dJvN|I6lWdm3KyYk)eFEhm6XuN*3vG-5MkgCd<3$??6|) ze!k%c>9kOx#Y0&u;=i_;)OjHR-KXV_^*`Ul-CBSmRkGzt@Po~MW?Ur}78k?dtj9qC z%&vYg19>WJU7k)qHD}o+#rJi*?9cr;SvFBIhz_kfYs7`a{uRs%l!VLa#a=kk$H%w_ zuRlD6UVfgZKUctP^?A4(vo0-nnNBRdb6~`V{g}BsL!N^Tihfl=C)=^EVt67yIiVdp z6#D%eKZmDr0(JCNQ9ahBZZybkG$P-fEI#k+y;E2*=g=1~qt6P&D{;N34KMu!dv7C1 ze@aWT{#B1J`pz4Rmgv|ZLy$qOWmnn%QfaN=s)cvx7bl+zr9WP$4^A$Nzr$5A*+OPi zb32{%Dn3+(yCnEeC?3kQ7S{3JsFH{liZjWcYajh7w}GVP2%;K6=V~$LjFV>IaszGk zKSj78B+5MR-Jr!=TGhYsG_H~HMn1akA}^xVgNf8Q^$?n8WPZ&i{^a)S0|ItbC#9wxszq6in2;#nKTm+UX1dN z8c7wDH2ICmPw^-T1Ue-@f+hU|YDixC@uF+Pp~_NJ#cc06T=k|9zE?C|>$}8V%x(R! zzLiF>`iB;us(jw?-~rCx9rNM?VndnIScOqC*ortDfarmPS|r(DFPSpuN*!HG5p{H; zE{e&bz+13>Zb@gu6rE0l-0)93tTF<&=D40JU| z(_ofct=;*%nB#BT7B{tj_UhESvQGUJl;qv)cS*oul=iEBG|;AKJ&!j`0V5}=(b?IA z4DJ!@ikSjj9Rjxg^Yw_xNf$9H`u()>oquF?H<1(NZ; z5ZlBa#zGKMd~0>d73Pl9a$VHl{jJ9bGz^Wr#Om^C-UFk8vd$9vx3CCmQV^{AZtTml zIXJvEI6ppW#!L>9f`E067-n{(ddd_v)X58e}F>v`BxcY$J z@I4e8*N=G51zw1%aBZ$a^vmIwDNV=g<^k#Nk1UT3#PY@SkFg@v%&Tfed$ksEE>Q&* z5rj4W>`-*xNv+%3tdlr(rD8C`%UO*1-53Hlfl8ma8jqr>-`v=Xaq&⩔KKJ!;*JE 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
  1. KsiwQGKpr$-BPUIsAKQ;X74K-#Y=?mVF1-qNSh+z$FpM_q}kX{X8$tg zF!m){5NT!`%#0K^B?1RUI~B@p>p7uF@X+Bf_8ewi6D_%%G_Uj8Ufx6q3b+1l+oamKjD=4|`8eqMxkKrMH$@E{?Eo@Mkdyu+RIq!zlyQ<}o%7X|iF-Vi zoxAJ0p>(X=>w{+{gXR|Fr$*q>hzv zck1VfVeTs6H~(mkL??n;jp~KZC^K)gMMI>;6eGXNIo0CpJum&{Xrn(Lcg7w+MAG9| zbL2*|S78j}p};};h#t@I*76IclOy@bZNKbObqy=u?n(OLNpFn+%$ii?JHXrJWXrE7 zRXA6`zOzHx%`871hT{fn3(?%wdMBd{GzO zU+o%A0DC!XnZ||gNx=tSpdoDwie|ZH${+NrEDQg6Py^v&DE}Or`iC)m_vQe#VVrHr z)b_FcK*DOiFmz9n?kCK+8L;In7iT<^v4dA2S_z+a!B5^oe9H?XP1mP_- zM`auo?btv%k0^$D^pODgxY5D}zB6o9@#klq$2w?yAH!#gkUl6CcmxU@_}W6ww9%t& z+L+sKzTwPT6s*s|(Vxx|RX3!& zK{a6jb|MDw8d3do(`Rnq{pjgYxqkxfcVjKpPsM9}%r8*&0 zsBgQ3D^KH+q1Z>uOjq}L6`jWcCyA?iGbWg=&WBSXliQ8VwOus~vPR4HX?n_q*k4$W+1 zX8}SB)J?5oxPIfupKr-|HK6PRBszdtzGH1AKcnTIq5c9s4Sv3A6qPXIBk$h7SdD$& z#-*Rnad5DA)-0b~sM0~CeykS@+B{tIuHuhTMZ;Nx7_i^NemWVFL@X;HLGyCSsF)B@ znjq?J_?;gTiph3_0y-|MLU}@iT50z-d7{UdolVf)92L5gB2A#F)faRM+k~DJzERA+ z@X|Eksv9-^Oy-)dY0i8?)6TfIyH8p4>rM6AucKnD;^Puxmq&3}R93?@QvM9{uqj9J>MZJKC!AtsER~w?tv;YR}0(&XaVs@j6kvQX`@5 zco^=&GtAOR!Oh&DUaBQ%xnvX z4mV4Ou(fN&U732I%f0(fg&{tQ)l?GfL)W~`^)Aw^oW>BNXMx0`3;GIsj#ifFc{gGMc8oAIVrngIwkx!-h+Mp6QZ>F_tz#lCsoJ3NjfbzI#f2#im)Zyihg7Q2>}@ocOu#?NkDQyxrTwL>ff

    gaQ3`g5N(Oz?2AKIAV$y(tayTv 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 z

    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
    6%{An(qUKm3|% zL?HIh+6e<(*g`jBNr?9FB1VSn%Hv$K5C0!cUlkQsxHLO6xVyW%2MNI~IAMajJApuO z8{BPhC%8MoVIa6ef(8p7++8l`zvn!CYwhP=wY#dTyIwFz%#}yIogJ1DsqS)HZi$1T zH%N81Pb&n}bb8~%Z~y|SpESW#y26PB>dJ4c+elz)IieiLK3OeQ4T@xz_ve$kpT)0? z{g3bjHFLzC1Yb<4&K~}V-*-Q#ocJW!Aj*2DgiWiV-=qgG`vlQF8WF5+X_FG85$Ko~ zP<8+SLn*6(>=W?$7N;75Xd^3P;%J)&wa+K0Fhq_Q1Ll9`6*f8V64>Y~wlOaK2->6> zrI5EFP+IOn(;p$<8~Ns*6&!YicVsBvOpHMCqhs{RPQ}}V$qD5RY}iq^Sgx{$=H=w& zo4HOL?t7Hd1Ji8QI=}(EOx`V_k`lZ@%(Li7Qmjl#36T#NQhz zPp{l&k^Af<;Hcs(IXOLS{tz~oume5+?xdafSO19&hntNM^GMy*dS7+k9%*x2r-UyT z>v>0x{R69->&)Bo`TIj3GMwu~nu?z!V%F1_t}~^oJS$5GoiKmf1iY#wfz%N!UEv)Q zp_>(NVS+CfVfox;dKO$uNxGQQQ|n;5;=f0p8*tYtZV4Xu#Imq#h4XmjVY|tan?L5* z-*lt}uv1gpo}fUz4+jX$#{A>0AA7*LEN`7^4cIwKPaoAX1y zZKVa#%vFSELNaq3PNpv4-ka3;PqUck%aZhKE>B^lhS9RMZEOnI_}`aK<-sD9k))sF z?@VSefT&6i)|UDGiWeXM(6jI!8~a0T%voJLX%BG2U-0CzP3F;M7_btUZw$>m_6R)_d9XxhF4M>r_*jTb9&1}msAnnygpb}%emqpRLe za9QLgOGtKM&kSUsy-X-LFpw}~E>;xY9e9TwQv@B>Wc5hOgEY1bGmztXruKecBb&%b zESXH*j`BhVWx`%gP)N<3$B@ZgfJL`4>5a)WA3%;0PNqe+s{W4yNjyv{hfS;joB)GV z<%yV@C@sQPfY$empR`A*}+0guGL)-l>5d_ zSa9FC+UQvti|d+b*m`lYKucyt?+7zX;fx#Xe>Fn?{^?Mbth|M>d_ zJ)gYQ9G_F4>rDPPq}j_|t?s&Awy)*yx%M-jcGxYY0BFa-=Ly4OPUaw7+G+3n#9Ls> zd7F`hb8QUy6PR3|gG0fV)bRK49)O@;!=%3vAHxI_pJfn3$?Gf{*wqF-RHgVHq`I5RYi-$9s5EKtr-!F5IM)|SiM-}zG0 zyuDIf?`Eg`a^qxVt(W9Ip$zTI#&sJolIcL zA4w$g6cx$Cqq2;}7L6bHO|0LQ->wZ09&oI`;&p93?_>Es!xa|Vu_s6)w2ghmNb8{-|kD9HxKN{bqY2ZR;Ki}gA*dU8)nH$>S{7Xv%yCG@> zLg38k6*%E`!WDPohAj}J2T}{XvpRc<@>Q=r8v@HBQ$?e*S6KHP zkfkEz+ca{zzBkKU#hEf{Cr+~$1LM~J=lGzAkp>M;32Ce2g`n(+(3`5wiG=S!f( zh9iJV)^FiYA>ra0u<9{^lLp0k3c=CivQFt!4z&J&09Ur-2{2$in=> z04riE&(Fb?!2YJbbX)En$rRa!apczJm?u@_63Q+?%U!;n)l-Vg@W~9B;ra|0z-T%Q z>HeuUviT6;zkv~OFaE4Ae*Y^SNz%RDl@H?%n;bMBECOrN_zRW!OI~SjN8a9alH4NqUlGrpgR2I`}IKo_jQ7`6H6#$Ees z&tD$FduID>ZAVDQ^rkgYATdZh(2cQ$Pk8vrsdK+S*H&tfR)}fT?N27fuDKtg?uByk zbGoJ~qSmfd2Ph7gRgI0~+5RMeMwrE4!C`?TBTXB3gE=zR7l90}qaW9u2Tp&76hB|$ z9Z$OGXaz}60VK38NN1dpEbYqR!e3{}+K7-VK+)y%u!a9G*v~^pQJ6h)NDUQNH2Rbp z>lE|oh$7PWl?DoI_>SZ9fu36K$9oax z_?Mlkmh*Uz{eA~OqO;>P(t+o8XV{|;Yr8bZqyQyioUlDx*|5}tOTi62TO-eoH7z%p z(8;MVF9G!RhS8hCgC*Gn3o$29QF}a1abquI$LbP1lo>@5Vt&X5zK+87=^0(Ry5E(6 z((qZgt}WjF6$^vRlTxvnh)4GMbv4a}=N`8(O(t zv-$rB5WbbLhvz#;rR;x78KBm6JFn8a2IAp#5D+4Q#2e%IE*k=IdW*!$7R>Wv4KH&{ zN6kU$di#N64_U1pF^t*<7$rNdGe>Rc=q=u`xL`wGcbH*M0SkU5k~apIljXSBmGWpL zh-Eh9r@hYOo%1IuPL2E|`Vn@P5hH00m+1=qk|CnLLFlF-)QlR_(n|)|y_s_RJ$jHG zT9m^LH$zT*F4IL8TS=dk&f@ho-wcr!x^q$fy z8&{#kIvV$(1hth=rZQLAce{83bMnHT*}!U)>C6Z78`3ly+KvSTVa5-o)imEYyM`Gj zmdyQ0`tWEAirSj%3cFun*b% zsmXUwjgC^)_H~i(FWn z=fcpd9A#|sQpF2x_@3up`@4(B(@}I6CTIsz$|(meNVsp@AJ$o2o%H^jx~q$ZE;OwkpQh%h+l` zlaZWAF$!Za8)Na=TpsT+WKb@;gLri52l0j-@bFu zBGj>CaaK^7@74T~FZLli@-E4~V=@oTcqIhULN;dYK<42n1!L`+Rk=1XyaH3aM-RL! z$#7#%5BlQgxqqFU9(!whwo&dgc_MOKG(-{iIvF*OM9Tlp10ni86<4=~>(<9zpT?9j zvkC2-e*jEqXJBN@T_k2ZDHqectnPTq7gN1dccqYYUj0$Yx$KC-gNj6Bq)7(OHr=$# zv7+IqQ;R9zYi>S(dk^-+l_eIr6p(BLcc|iI2o;_Tpqy%Bb*Z{7VdW@`YyrX1xQS$D z!6wuxx9caV7IHf!7a%!kk*6 zBlTdJlL{??1iqYT0t;t4V{-PopQLVr^}u2f0lZ+VKCkAC2Iw&p zVfC>U0ReS1fvoynVC?+Ej2Nx;BD}>Qiv4G; zQ_iBz<0R!{b~#{@#h?;V@tJ$sneXsh&J58BW=Biv+_4FfdIGu)o_TEIW7byl`sJ_F zHchhj7T?znZ_9u`>ps62sy~z)M|OrO90|%HN^n;#O+)49*O$!@7j*mVMA*rzjGX^Z^O>#!XYiq@Zs!tp+r#)KFe(0{O0%bi``f zYtdD56Fe7V!O3F}M3PH!Nll#(D6d(S{~kVVXWMS8$jDhW$XE}$9PNHz4&a`4_z7_O zr1J^JIsC4w<)^P+PV}3r=8$|{r{?ROM_&z-&cx!f$%3at%sQ~owA*@yqsNvF9yDER#LXrxc;Iu|}!r`Wf0uUt8NdIV0o#*td;3NuPYG$M8D z3;(@)q&dKF;7sYhD-hiZv*mB!CuPeI3LzHHytS_uu51eH~w*FV-K2#2pE+*uhG z@VKtNjbhRVk(&E)q4(ay_@L4x*5s7O?B!Qm@mpYp>cIqm^NE6Z>EQ3jy4Kz9Q`gtq z>rFd=##`-b$^I9dC(+s`AN9A6y2HBoOFiB_9sfS!00^1n_yrJsG)RGreFQD#Pq~v0 z`vN*Rw?2F*ec79goPR77J8NQHmGpU1-h%uwXd7*KNv+?szY>3(b#}85k5c@=Kvuml z>y2kZbb$v;fa`QQ+W0blVu}^8w4Bx~J+My&Yf!9Q5k%)iX7&A^t zLaK}0VJU~td~~eKaaxOm)L_Hofan;?i?FXdf{_dxE)_7LOUi~UA&HqZy9<%JNmnDd z%*r7cheyV@tmb?X`?Pf!qX%F_9X%-(r#8>Abzh%1@v&FX2>SQ#PeX3=tycNa=LKo* zlqW8iaLqxQ>sPC{12Dcv{v8s(1sf0R2P4o$pcNR2=)`Rw@!_Zyw5ZBA*fXk&n!{SH zBGpq5r5T)tO)iVl*p-%VMUzI=rXUtR?yYug$lsYFhl`-0M-sSXC7*$Mf%3Z6Rk)df z$XT!-E2B#L3W14%KSa(Z1C{W#-c!&DjPP{rDyOWcem+bN(vm2nAY9d-p`8_2z@ z6Y_QGXZ^G5;l!%@InG8TlVl)-4k_)4V{kB=aOFA032>$Zg!n)JXKbfF}eEiF^Mi_ai7Gg!TAey-(C0rH4M2`oq zHF1`l5qQP@=h08Ilf|b#Z_|+$Sp$Sw{*60iY$+mw{@?zF@OW&_DN#jE$wf!TX|f*f zoMd#uDTLr*68#jzLXWbp0F&HudYs7j+GF&%}yp6k?P1(_4!ZG?pxRF=~|7@I0>ByjeJ%!_%{*KEzT`9}m~CTwkKTy7|H#jwMX1z{b;GZ`x4^Bl?ggTQ+J#O)MY&2wInCn? z#7wxTlhPOzdpg-eh&99Fk0mBGE_^|*Jk4sUkOKv>OfGFPHYIN+oX#6pqXZID|JWpe zK3^>@c7fNo-;Fco8u_DBbah;OryMnw#B=cx<7s0Vn%%Xzry2D_$$yJC@+z}JVbsWG ziijpDx_gtDN>U`u*nfdGJftpcEon~oFCJHbTB^sl+75!#&Ap=01GJRXqH1a=^>I!Q z{Iss`lP*&uCAPpUyFI$j?a8E;;dvae6z8JYoOQ|ECi z-B_D}|9JuIb?)t6R;JO|h~9$X=92sMFg`gRyP|KCJ~*fZYPiCmKn!bZ2A$ffx9-FN zX|?}+Qc#4n$|dWOK4;6uR?mOHyorylDr=bok&`>rzh49qP5!(2_)$nqcrf%5X6WHZ zD)urmbe3(s9vUy|5)ttH*Z!_xN~ny~ct%WmijSWp=}&sDhR!>gmBXCu4<4Tux8G48 zrHfQyQ?t;ZsJ(Ce(aInVAO|ie7bIvHeMXldFn9XQu+C91-iHiCqf^(M3Q1TA;893j zx%ME*O13)r-0@U6ATm8h1X28=PKaa&%Bx+ zHlaX|me$#!I=Z_YevXh$krgd>GL-#$12@{<&REIs?Ee=vUp%67v&~GwKn{T*oR59g zme`G-qB}MluZ2$lB5n2u6L>}uUwY&$$fdsd=PQ9SKoU)>22ZoMlv2_-2Wb!UyY8Cd zkuOJ>gULrW>L7S`L~HknxN*)WK1mm5_?QtzTXt4UZzM#-dV#jo}g zL0N+fxS0q7T8n(>JvBgAKt-1^bMchcWs?G6rf9<0dGbPJd(p=U)d1L(Et>Kt$+q0O zDDvNDPrK#TewG-|u#ox!Fgn=}Ta~U7+WcJ+jlf=rz8eVPY$)l0X(1Yu>5~A014CegLjpRHc8`L9a=96Mjg?930ck^w#l1v zV`MgFChk*{Sl-K8%aKIT>xD;-{uJG@~QFpLGLj{&6dXihWm!#hN~iDxuAujcP+gjn;{ zlEtRoVZ+JNYEj*3eMV_P3^S)l>W|QVql-Wu{?;7K35fb^6&b z{-P28s?Dm85x&?sV&f?cGC?RL1c-}w_Wk|0W$l$ks0<$E^e97h}15yJI+ zc}pwT+ZL=cQUYE*y|n&ZtnsUEoi+%|e{&k(#uC*cW1_ubC zM+3w&dgtQ`_i3}B23-_)cGS5kG?pT1qjB`@O>IT3?R zi-CjeA+^mLi+TWuf37H3pc2VSej|hH^VAbIt)s&xw<`X!H-XM{22k^+ZZx&J1%H`- zvHk1$*w9h}sp22%6ndleo4n~+NXYG2K%4U;m;>Z z&|gDUa$1jaw{@%h<<(k~R%7rP8qMBi$R%hrwyqpjWJ8h9U~ERor_%F$<>~sPYXv#> zOR_2K=;+_n>rk>=D%p}o(Nm9C`@$)T%;9j~7^6Zj#AIg;K7}uaf5WQV*#8-tLg5x? zgnCpy8*a@jm#m-fn9Z>z=>PiR5wfrz@T<7HXcv%9A(ls1Z1$-Zg9grcg=Hdek{v_G zvI2F3!OvUbMsw^$og~Rr3AAvBmPjnew-KtYNm-s}LYf^P<>FYTV~CKz!=ijL4Oj+u zN1^PvWesb*FfUxgMrkdQ@V`M4X~JY@AUO7)vLYDK6vnYLr4e;p+5saa953qxS= z4iU~8ZkLB5mKY+~nkxkgT$~ve4!tnK<@#5Wo;TykwBr@xa6|UrH3A!Es#efZ-v;?u z9xs?D>>|`}n0gF#o{q;lcY7=A-w!f3xTTMF(&#_k@vmGEKj(|+8{lCvzNSG`rbB`r z$+>~GUiWAO#1*Q6w%nvm@a?sw;NWbaaF1`6#J(AC5E4O~1k0_C-#`K$8F+4hQZSgo z$E$t>?+YAkcV>>{gQK~>zTOEfKM{z8J59M_MgoM~z1%vCu1uXCc2(!r1k_;b+g3Bzi=1L2h^4>(>&p*Nn zM%NSwuA;EWE!_*4`C@EDV&5epoO$Oci6Bl%~&W;x%j0s36|vlmV&uk%Cr^`gUjfQCqsC@iu?$=H_`SfDlS0I(o)mOhBrrw^XX`1efovG1r+dKf&&UgZKkqC^vLc;aEpi6Nscq9q*sjND~ zYpW`Q+H<4FSNs1O=Qk-MTtYEoGri{)8ZlS(+HCXxyG#w_^@Gy##Aa zDJGUZqh#Sg;WsdX&4bjohsW(*M5D@o`G>; z)}g(8oRV;!j>45!KzZ>CvbMPt3~{KOK0`e=hCQI3?pg3^o;9X=b#pp`i74?XW~zj| z!SkQhglEV-z?}*)-6;#mRGzMLJwbejr_fx34&XY9@!gfIedo?+$?a0G8Bb98?AVGv zZ%E3G!m1^|q^3N{tj;1XeyUXK`JJI19{6m~ta2kjB4Ke89c)%1mWcHQxxrJ<~s-4FKI32XP_{?EnW@b^>8?$ps3!?d@{w4lb8_ZqNoERK?@ zX|oaQR4Md!ri!#m_wS?GU>FUGkDDWYS0+ zMLoV&$wQ9<3*0Re4t63?zc|NLf}3fF7gEamsXnbq+N#IPR7SZ#0WcysvLVRX5Qb3P zn61zdD=mvP;UDy(3uh4aZOGM*i&M>VX(eK--KR<~+h*cHCWxA^!IF-AM2^lM@WB_T#jy-%8u*dI89%TF z&P*zX!VLeZ?^Glx9Wv#0zUny=or`E7;)G!e_zFQj3))+YO@`l_${V_$*z%kORCi1{ zHLT?K{5tKf8&J1S(qy)KPO0eP@iK;-oe#xJm}cq!-MnadEIB_;QJK_KdK*2)j{)K! zKau;BAHmRX7ZH!$QP*$-7VwQS-)3J5+CI`UNI{X2iOOyBnQ=5u1>H%0%7j5=vg%A5 zB6u>DYlBRSr;MimJPB6ZF8#|oVnJLWf3(I-CxIJ0U;-Z{k9S0Z0`+dk3T_Mn2tqK?P*T{3FDt(*4< zb#dK=cq{#a!wN}g4tSR8_`oSI=ao1!i_EPak)gbQX*Bn^z$fMv-9tryDaPdfF5^NZ zqZg_E?S{8w&7(%f;Prq}+=$7bQ6n^J2Z0b`B^rt=T9pk(^Wf)NRX zsb{?Gww*Qo@1PZvhA-{Lw-_vsW4xILPFoGJ9uC>~fF!58+O;|JuIKI7t3f2bcfBQF ztRYbS5m-+lV87o_mknXKZ0NuRmUFllQb$)hT85`HjO*7m_^G4@0yh_2n#4>sB-3)x zwh{KM^Bf9NbNli(P6T0xBostKNWl6MoTL7x+f(=$JLXDWCVN>G?!$+I(@rfpESigD z&^#1pH=LqW>ZWxwR%WkvS8b)*N~l)%w-Z`UH;ntIoikGux_w|yKj-k}X7hU*%FdUt z_f41s(rg%EL4WK5P&#IV-`$bJbsnrgx0bV_O+Pj19Su?evBV1+S#fEKEl#bf1u-uU zJBD{q;sdwno{!>Y+$h@dzdD?rbZ{8~Cf6}UwkS<}03r`8lsT&>U_VwD_!|F{bR?>zn|Dac_F5u z<>RJ6ls)YHO|~GGSMOyt$Lwf_EW)E4zoHaq3Me8%GSI(Ac+6|O@H6DJ(ktX4jWn!2 zyto=qCO@+g@SyeYSE;c8gcavW^+kWU<%~1nR_DQlwtQc4u^Y7FoG}+OK@O@vmzTp8 z_}!}f7IZ=Ns-XFtkb%%hA9uR96Q>z^f~45?Z#b-i|6d&bK({Y^>ZCGg=cr{r8E!x6 zYH#~E;@I=dk>-z*oDlLA8#xQPUuMb0vJ~=8gl5^)>3Rrhr`9`Q3xV|EkBN0BkA+(f za@lf6fjqw+%RZ`R>9-UihHx5+Wn09!U z$KC5^ey96DqnZp?~L=*uCWndO(G8$ zlH59q>=bm#FD$eMp)=_Ttgx|r3n)oG4$#0W_Wlw?KX0Ipo8t_iNwGHr)?eA^^TP)6 zqvqzO2pm}zw5`pr(~aDD?5IEajTX^zp36rY{u9$$_`uicVwQlfP0M3qZ!X;G;H~MP zlcXIox))s;o)qo^F}K)$Xf8j$FR6W*v;-`#7}x0X!$P?Zm~9Y$x^$E5r@(r5aDC{Yn; z_Qv4~{>S02gWfpY0zldI59hsIbs`n{iGAMn4L2joBI4{)lN7Rv3;-$BgDw*%fRxzy zIH4m9A*EreK01&xf{y@hL-}FWSH~+!RqxnanH8z5f*zB%F@*Qg+FIs=$(NbMGgk}x z9pfUieDwjvrR%+AiuZ|@J7aEqKae`;^S|7+KN>G8;lZI=)Z2|%s8OeB!Qp>0t3=7X zgBl=P+aXvt-LpF-QJ{;E&nV?qABIk$bEQ|s9*=2`9vQHhtFC;5z+}!`H5;B{i&EN^`y&7~>BoO6}vA z3q)$bcrg~gFV)+()PW?fB2b{#=}Z-X!YVb^ok+ZTju->_>m=5UTDpt@&0L&T{K6}J zf)oQ>>QF_aM3wnzO3f43_ah_tbDWAOoW6s7MU2ke{v7|{H|}5R&q>kD;Kk*>A+oRRA#a+Df60x2~o}&v3*M+pYZycfA>-Kn{NVe-@qWc(;P3?`>cWmBM6oTRVo%u8 zeNO_p{&xKSataZj0f(H4<4}thS4m9mhr$`>W%}@W$xH2N+=Yu1K&@G#FoA<@NCy@j?x`6#b^`Q~;*f z&GgT^Y;g}N|4ZXn6te|MOaW9%8L6Nk4D1c<^;de#A4n05NyGQH*q@*)^NIWoFLzYg ze`p7eLTnP!)Wooz!Nkf;zs|};T%+~*YXGgN)Rs8Y=9qJe`=~{mY+OzF#t9R8kn=sw<=3H$l6~>w+T_WT-f&6#q z(WG;LUvuwgyL>~M;23AwtW|O*!(M{{#7C75Bw73t*7YK`+3*ua3T%=KAnS0JX*`^n zaG0ci#{JbVB<1kKZ9;&|=+i&1Y4n(-(y*VwG#Pv)-nZ81R~5dE_K(pE-A}S4*!z#4 zNIIe){N zxt?yii~jaJ{S_2TAGUhdc8n&Qs5I8^UP6Ep@!aH6qY#Y14C13Zt$uW!C+i?eg>Q5- zH&!Ul&#epj1YPA}sol8GEG000M*$UzTqb^V_famm$jq?S#B~~%fE@qq9Ak#Z#uK;! z%w1DO4)*`5tHZ%MD%dFQD#Kjfk-UFatV zhDFEW&!82t*TR{5At2S*QIF~i8t+Oh1U~;+?$JBp)|jia8V$)<5LVf~J8-26GQwE2 zQy7Y6Q3b1f$QdIrAs$3Qii8o+b*sRgw^BSscMA>xK| z{?=(6-EI_51^QsW6jBjlAyW+>8G>wnjP`GFVC{Hl6V$8q5zkaQgboLSfO{>t3yDP* zR$xrB#j}ctjpQI!rjX9_^4UBuI-1GLJPeq)|0YVnUej!3@J;S8dob7@BR@3skk3uc za;p0}`#(8P?}s)sE1XKJYyTtu$`$|(-d>xp_6RwDZ(Cm-DM3Zg!0^(*(f^nQHt(37x*i{_8P&ZR% zYf&NeA0AV3CkwA`Y5AHJS^4>`J#oCDVFGH+!d$&@wVw5i#rfTcCyqP80k@-NuLP%6 z4Yf8BIQ6{hQq)ECi>+!I3qnfW9WpdoLx~`JFvHI>q^9DdM}%)PDhFsf45{&D@*KN6 z1n5P4pNcLBT{8wrf3sl^9oV@RR_y7vDA{kLEw-H zqInVJ27D>|MN^@?&8(&DQi;s0^4bV-<=Z&YmakC!01hI+Hx>!JQ>jGOloh!s8`)R| zYGv%CXZ$1tbFj0JxN+UOVH`HRfJAF>urZ@Op<7Oz#*Z1t4!aw&#vC{_sEmUYK>k_o zisl=3m9jT;wjxNqOl16t#!VpWFkxOoYiDM_KRB!*03J=VykWfBbwUq!UsTUc^HFzT z0+=0KKx50hCK?!VwmsEF;PF}<06=Ktgu69DsG$t1rP$2>fLIR#dl)VP_9j#2c__Dp z|@(40=oS zJoYjHIUO>V?UN-vccQs=OX)RlT%i!{fYT59nyrqTJRAE88_WC~WuHe(&8^BofM9Uq z83Ip8zb}mnBA@!rIIeGd`#Tvy5HH{8=2zlYn>^Go50?*Ei8 zn%sXa6*rjwu~dwLXDBnO%2i)Y%fII?0ZY$ZAjvL_hHFeB9-%x-6}Z+o1HA+mIBCo%FL?dkvBqA@J*bmdTtVC*}sqlTBq9zr&A@;mt8Est>7hr309Ya^gP)~-n3cmX+DY26~Vzp z-)0M%3JZgkkpN<&t*Ph&M?{hO5my?xj<|)s%%+E^Q7rz<`ll zy1YP6g&j1%)#R?9O`&Gy8tyEC>Al(Bj>Ocvx0W1YVq~r{=-sA*^3sSNA@1d! zW}yTm5EBHO`9T>}vT<7~4Z3*)00-?eI%4wmqV~(wn5K4h2*~&A^`FFNGG15^1{KBA zGJ5KzvRE9CczDS`4p9I|vQESi&Q#b1r4FK29U)R=#vXyV=&P6 zlg@X7NCfZnp*sGpR%Q`s@9#Gj(Yy>a(2 zF%t|XH63svGT+uPw^8_m#C@8iH&pWWSc{D>_wqct>#TGBGFbP;*na&L0`P?Qyg=Eg z3+^xaRUV;vkybFFekRs5_l;3rgOe|*p-N&|4d2`m4>c=K2i9+Lc@{;ldzB#XfSat~ z301&Fv!~)xFMeNjx@}WaFN@lA@FgPKGN}tbr0Td-r9LiKk#IpTKZ~Ll+MbFIYgUKEsBv@Zj#r6R3iy~0 z_XTRb594nEwZ_li1x3pcuk`}V1roR9muew=ip@#ZxX!aF5r&mIv zZ5%@1=C#sVD;*KSVQDP4cCt)D&PGn@<>&Nw#iUOZ{R4e)1oNJ;;7Z^el$%E{<)ZrK z+sCk!zoW~7XJJ5STin5P95BrsomvNSUuv<8jBoeR&U=o}4qK~wu;#Fm6 zy=i8gzusA^>t3vH4Ilmvfl!{- zQr5LDgA9IyWSG6C)DV%=7_o+ObER3D+!med1p7I)$B{%#q z=*Q*BNa=mm0D8cFx5F8}__YCqc$59u4hW|I=fUEanmOdZ z{%eXxiz{0Ole?u=bkp?N2=7R0vAq{c1`in0EA=SYdB}=7@w~ z<^Y2bSw@dvXJcI*rZ(4F(lB8SLJGuEt)||xq0ZsRXzKnO2T<2_Os&E3KfcVZ|M`I4 z*VC)Dy8mfh94g?L8@`x>5Tph+8uAjN5ThsvAQGmJujD(4wEygd_bcc-BfXr;9ICU? zrgR3ugd3xHq~`v`OMDyI>%Q{33&!&McGcOCorWG>$P4z*6v3VD+4aLJH`H35wUnnz zgRh?EiR{}N+3f^)ZN zcazymx3n(bQZn0iQ)eiLN<{rj@p6sVPUf7B`8wAgvDU8ggEeKu{$zPid8Q&v5UWTX zV+*C`m3_rp3zqkBq{ zF+hu8Mbnmoi4Nfm3R5-gjm&6PemGF^WGNA~a3%9P!8nw|vi^z1pg&$g55$nZF zP%fFqh7LC!jUiiTN5Og#*>TT3*g5OO(R#pMv#e_2P!mymI8@#B!(g`#u_J7}I)qVu z5p?%?;~Wc+mIuhaCEsA+LKwhAjybMpvPk%0) zRZNM5NAF=ZQAF>&Z}a>Ty~TXTW_+VeU4BF+AzzMM2UY6Cp{e`v@sG;1)~}2@fj}7v z?9C^s+tS^+^-H`rwL;(=88Q_3vl3Rn_{b#Xz#Gh4=}_?5%p8OC!gQP{XNAePz$=9);t-N!*v`?(ezUDM{uD_)k zew90%?!Pt!!BR!qN=|-}CfKk0-(4dXk#5Wt3^-E$S04T&xQ}?`grRSbQ74NwHk6uk zwSL0G0c8^_E>a#d-=i;p@bx?d=$jr2FGiMX6 zU1p@qH_K4hV+ff^gClP!FX0T2*xEF3lofN15go&;J*3&HG#Yx{wG&_4ml-#2HP6?N z{=nx?bk{EpW9x>45delHgbT)km(>RJ}^nugf^l3 zQNCfS>W2S%Ck%+rA&+{*F@n0<@J__jGbd7#x@8_puExyK5 z;OQ_4wl?LxnJE`9eJ#Ep6&4D`@a@iD885Jsv0umET2|(ih_6f3zu|A<|L~XeTw@fk z#?pUc1dp@6VOMy&>C=2tu0BqDK?pst7dI@%=0&f*w9%;I~R5lKJ#4K<#hRe>mD zclCk$hq1D&Upq3*al6snK!Iwkj3+mtgYTm_`YwIGt6Sh;ee;%RRfJZ3W-x=`E>&Ec9OHV4ge3~pW%dW~v7F}-Sw@iq1TkwQC`ME2M z7N+f#h16sJW>cd>>STT#ZSADO$#T+|^H%S1Hk-02pVyFnJNEJac=`taxWnb^*lElr zX>8lvaAVtQjK)rrG`8Kav8|08qp@wX@w@%qd*A&FzMq}vndi)zIdjZ-`CE(i>a~Pb zQvs=f@d&}aj8mkz+MDPBy&3Y7BV#Shx*HcuUrC<_z;15a81BD@cPHc1N7em9zO!%rxB&?oXfu!Fw|=wuc(Pax0HzFmBy_c!1MJgi1ZgX zoiS+`ab;$DvM~~yO~7innAyzzIg}bqP1&t~nx|X%fVg;7M^RM?JD*c;%Wk&#>3mKbb4|^5@2ReAzc|@l zkX)#FD5@$~(b(Od1k>jru=qGLeW znod~7s7)_7+ARuD(~V>0-#mz0T0X(7+0{uht69&68uR*VBz`6&qeXv!b@V%&s_MkC z^%p37{T(sd;QmG@YOC;>+l~0Zl3eNBhpE*~7i4So2H(?w=Gk@l#eetvevSGb@+tY* zlIyP)>4)Fq`)yQyGDd*%4Vik=@}9n}vRrEAkiS{dVe|_iBv+A~&w%!iUWN zqwCASA$*_G+gVSakO#c)-y|*P$Ix5P$1lRMiyzWTe-NpaEnTH0tCy(Oe=iq6AwU(S z{zzK?3TzkNl~mdkH{M8(Pc`j2-!Xy6gJL# zH~hv@JpcY6xRI>1IAVdw)cvnVtSE2AaES4hXl?~L|L3*6g?P22Dw27_3RR?{WRcketAVM>zs8DR_+qQ&O0F`2v$a%9YmdTN ztCupvkgM^7yXde80GTaDgLD*mJ(X?q4>_;$`+fdKKU?J;z7gyd*E|}?u4=rkrq=i3 z%jatkw6vbb9~-_SSl^QUtc_(2%LOk^PCk313G8puHMAmtAjxR%2KEqnD&6?vwb#>5 zGMvFV@;qu(gl;S;9z7vso*`-kkfjVkPL3Xma`WOUAvCf;uF6YQb9fm~Ig)PS&4@92 zsMm;H*2oj9It(*lmLCOTV*ueS?IE2fovDqlBJ1DD(l|P2dRi18ct$ST3Qu@(d{i6B$w?;VR$H!fg=K)X{Mch14d={xoz)b`acXm}_|i=QMU?g*{26pTl$CU`VR^t z>>CF;0v>_MD8A^SQ>{qcn;3wt!v~ull-2y|s4Ow57X;|Cke8->Y!R>e23p+^uXO1zS6C<1 znTUT_K2NJXnw2?rJp2XLN6=KY{NrsS3jf2~&g@vGfj2ju@Q?7_KPco%1j)5Q-hz;0 z7?X4J#+-DTm{?-|;D%W=SR{@pSYNAZL^oyZM#oB(qSRz_hkSLdq(fuU#lN2$t}Gt# zt$6nDJa|vT4#PsNZpJ>4o`^mfbMz|cxS2s$LPK~q^-o6KcNJePHcLFFKY9LsFx9}-b!V~j5q0_qt+#ZrAF~}3hGo%VbvGYk-1l7qhxvSLs7NiNq z9CAFQFbINOEEwV9UnWruz2&V3xt8D?6S117TrIjW0@ENs(2j3)9*biEPXT_nRArxM zH(Zs46z2OU;KCU?RO*T6!w^^Vr}R~0l$?|w$dX3ChS`(^KCj}VQ^C?A6FJqA+3`f5 zQ*Ryd?zH}aapUBM6WcHR_Ta4!F%BXuf0x*{q^p%u?-KkKXd%mfB@gF>p`Z@Wj5y?L zVc-&P(-g@J>OqM-Z**#u7+DrO+k*Y9W>x+8GnqA zvqzHQQ<1~3GITpld43o@?=;eXX?h-5H(txFtY1tS3G+}?Te4xG^IX4(70Z0gj)^Gf z@FtdfDXck6+v9=fB}w3`^(Pd5k(RGD)XKqor=i2J_q0%=fCO6-6~~Wg$u%mgnd+Y8 zsPCn5)?32!vDT#s^d{l{Jfb%!wnDLC%06rdD=XFO2gt#Brto+aoG!@ag$*`YB5ft- zEiU0Z$JlModS!=nad8O?Be(T6?Ps4dOa>X&7YJIxGH*ve{s9j!uKrJp$rCV5;1JL- zf@NA_CJZY#Vb23!8xw3%#7}NKvsXZw31`Q89w*7^=MCuSdTRr6xcTbl3(Oc#ajL{N zAn3Tdz6nxOl6-ZVRHcfH^iDrp<0VKHGgl7mqxD&TW2tkq_%QYG@!~zg3~FMbbtAm2Zdh`lQ>lOO1S)edWnX6V46HSmUc+T&v2`eY z?r!Xc0NK7r32)t3eEj{)@`U1M<&K2&D?A*9w%kH6rxw5)Ac_!V+^oYtmNOvAtU{Xh zMoCborbJZVycXBC&ffgF>e$1;906fiW!eoX*9{|ni>BcDMbH3|n6ki~iv3k&cMDW#cQNM7GI7*B8|T6u;Qj9V;%>#oVolF&P|Nm(YxI=2 zqNuUBvAtP3;@oiurvv`LG9 zp|o+$L7>Bo1#F_uEcLSSEe(=psbCj&2Yf>j_u5g1FoPC@Ki@~ z4p1Ya00uLc^;^`BX3}cR9`9?^XsqEc_dyIYviXL+u`L(&ur~=Y-8H3ZOM@C|7QYG) z$GUZOwv;R+sDW*^Rv7E{z)KpK?w!*D$NxYW(kwSa+JVs_)c*+5w;jy{nzgiRE`5I+ zFL4O$L2b_Iv+qme{z$tVc0Pto6u?snc}R_5uUZ@T<=IUolWr$=13HRAoN~e5a#SBu zgNJCsWtMv(Pr-h32LV#@&WHCj&5A$FqhK*WeFFWmnZvmZp$qEFPs>=7s~6_2!IMKV zNu-&e>StaU*fRE7Du|9oGNRw&lYT!$hmK}Xsk`Heuf(~r@qq0xQjlY`i>q8Hl}Qjf zrT0htWf)K0=c}_%6G29tu2m(XESYUXG_aiul(3UfXQQW`&jS9hLice!5B-j9*kQc& zIhYdlgL7fYCivP;v5+e;S>LvnVr9|ln|eNx5 zutyFA9R_~(acnMS@~TQsdq%gDD86o8l6AzC)uuMqm| zG8-PikWpHb5H5j*>&&NW%Wp9nIJrxytU__-t=Yq?pmCy#WfL#~ay>U_^zp^N?eWp0 z`}&qX!>Bi#3r8>hcr*VKzzi zu%H8F$Xj^JJ93{A>Y95BeaWE4>z4cPt^EGKw-QP_^8RwaN99^~up`SzKr_88z&V$P_!NdWKR){$N5f6UA#^Z}YtYtL1M| zWp%^Vsjh2fk_==u8O3ZQ$(zYfB1_ie8_hS5h5ROBL}tdr{)L+PHR}0@5f#1rRs?UL>89A)sTC@xc zI)C!?2t}suZ6DjZZPUFL8%V0!Hvb(U)c-ZfU5D>eX^Kug&)RmCf)vei>~v{ggl|GR zR+VLyexWENWD!1$o(AQf{oc{=`c1|gmQ>die+cym^jk^ZA_{D3ShETpbwF~hPW&x; z>EJY52(hF)9Tm1#wK5D0gg3mN%}G2NKizg`cNt`Wu*04&v{5UMbPP2O! z_cZPSq9))r;4K9hgzUqB9t8O!K=;rO!Hds}EiV<%xqT>WE-OPhwCA#dS6fKSAUQcL z_7h^(YBBN0bB9o+yx*^eifZwtWDSO5s=_`X{3baxy?U2Y*#z)QLL~1k{wd8Zsz_<2+g#W%L!>hKF`L{9h?qhyVYTAN(2VN6AX|5sJ0aw zm$G|^G>_7%aDkCJt-iSDv6=J`KUopn<3y86IbhvK%8_f8ej_w6253?P*=17Vg0zLw zndZZDvAvSYvc?5z)5hPcMhd;Af$}SMXS&@N`z*vg)pKbSM7c%dDPIps{(NGkE5s9L z6x%wrZu<5hjT#G?D!_wQ)egtI$}(0fwjZA@Emj0d3-_jB<>3AG0lz%%OnvKF`+Sj3 zm_?~qKj01f;~d$#3btZ$G|$!{fCjc&@dkfXoZZ;Yn3+b~<7~}(uqn^hXiP09KS9%^%Ls2MR1) zW_(~2F!2*JivO{==uUUeTM=WTY3zTRqom^pjFVO#A{1qteqxwGVM$OPAZl0BgN$Kj z5#@AJm7`1LC#ektm8 z_8u%!kRPB$7JeULq!Jj}rcDJYyRJf=f*30W7j#CLV((!csln&t<(rTTIjXts%no(z zfAz-aINyky4NR4)*bdWA&T8%t_^ZbIP$;4k0CNq4fmM{nQwlivjT}XUpTEYKE2B;> zE%)k-n|-OT3lmki&MYU;QKOakqP;Q$MYh#o^dR^;123X!;cTv{Z;ybhlJi$G0nq#V z@W|a?n0a3nG7_!x^$$D+Ez>51Dno;b)y3%@tn?SRhJgp>Ev|zswU;TB3Nt1Vy6*zI zOSEiX$xX31M=-`YDmY3sjYm;fzW=EtLGMfDEbDVShsOj6%^;d-?J_Ru)0nvA3{BZ? zHk&cJ_E3g4G=8)#H>jOr4vCd<1un{33DQ}}igHWNevUzVLJxokWZ$Z=uD`Girk)M-v=u3CkL zogtpJUZWk)*4U?kr032xNyWDZiMUa`mf0!Q+O?eq;H zPY62>R^~HNY4u$jmY5_oVmM+Df(k07m}x$a?1iuN?Qx{4cZ}*|QUytMu=>bze>Bur zvYs*3QYQP#jdsWqe9-fx8EXhRDSeBwZ-_~%{LwnjIu8|^Y4e2-Jn*``N^`s z951uv>|a1ybKAFaKUkQJFotVfdbCrjz8GqRmJqjEpT%{vNQR|{dv9rUe_bB71VCY4 z7=;4d>;5+jzy{?VSAY#&uzuR+T0n6tSloUkNoDs11hg#g`flj` zPA?|mHDr$o+ql+2hHmx8<$fD;ECCBM&@+1+(7BRJnPgf%(;%3_4VB*iICeLZLApY~ zbBCpcy===Q%li{@7ww_hPm~n&Hpt>oMA$rumMI%sIm-@ilm{|PnV6i**W?@M%NR)& z>u<2~y(Q|uPe*-q3Gn*R>A^WA&;{|9@N2f#Ns}s^Ew+?(brvuoANhDH1X+O(K<0H% z&s*N(`}=aw3zrkQP1GurFv^x0s5BR*UD2@~!Bq8<2~gMFrjUtlwE#~!02R_6P(DG4 z715TG>}?7MAzL8at1K2u34?hKjj09((>6G64Q?Tx0d*%n;7x?uWh?uq+!ulo>g=p& z@n>V~1)<%4gzc)R_&{Z@LRIqHvuxHTfzFu!UW_Ol3tR?j5LZ_{R-e(5w{$tR^ET4+`S3b z(FHuT<0lE7AWAKu|31M$w=_jCy>D1&aGm8exOjfPi({aWn8I+1Mo6?{HK=R13AFz7 z_h#3~`)O>n*E$Fv%>F+_JS>*70=BY0Sx#fS*Jf zC)9I99kcxsw%F|w23$1BE9%em0BxKxL$vyUt|EK>R;7vRbFnpNVC9Ax26E1%CtyEd z8-p;kK$=Xw(z|PWGXmPs#t+jD!E7zjT{!e3gSwOGWtS6@s!N83%(1$Y%8+)2^9yt~ zpJ-7PI$ij2{P=nUbFs~Ydw&iuES*=p>2YJVr0FTu4B8WaEN?z#xMMi1{^i)ZmJaNf zD3n5MH#_GcX)~|HkKaFI3?EU{1ExpLiq<-cwLWjm2yKeJTk`pS9!3GpID7@rh%VJ!8_Zi;%N^zO!ui{28k>XGOVK$<>We#9A~`GmLiIb+tthwjZ{;)p8hUQL+ykEJdI z_Eu7M8JUhXLq9D+uebKJo+6YRvMwJQPIkre-o84dv>`}(_MY-ikv#h-Io)Zi<%7;^ zQFrIsp1K!dx4K`ZadV<+KJHYqQcxKHC4Y|D>PAS{U%Y#t`h(>o z0dnhpk(r7eT?=N<9z&s%-rHYWJxFD~@qsYEoC?uHj^Ef>g=sr;^z84Eq0R$~?8o29 zIVb`riwbf1jp+rnU#~+$`L>80Q9w z)+Qo=XUt>vOn%p>>nN(U;{GF|+tfZ0s3aOMW%UN8( zx0&m#q}Wx24xby=^Bnm(Cg%fF&9ptFV+44|W{Qs{`F`@HiUT79!&hy#t|l@r=lV>sX&SmSYt>LXv%#gm3J zpz0Uu$E3b;QqVa)w$TZeZr6q76YRSj63;;Bf39tG$0wNgnmaZ0egbYsSp4jLI*8Ie zmH9+q#oj6ntt0FFrQ$tK9a2Xy?tvLGO}C`8TNQV2SZ#?kl}Z-F&=pWYAFC`2j%n_S>UMxB)envRg6gAHdZ;)hg~TbTkvMgYVZ zlk!Uj4n~T*4d}|I8L09bJTfkg;#~rS%GX4%w}|hix-KX8ut4ID!2}ot6=!$Xd9OSo zZ$O4;DbV}7@=GwOZMt+nUdH%Yz!w5gF?%Is!@;EU*PJpJCO>9K9bj}-(?6XolWw-o z|MnG(dzQbpJm{n;s-)^{R&9Ha`p@blCBuY^Vsi&n^Oel1bNkDw)}XMHY3Qm9Me&A2 zn2Y&4MoMsVW#UVcm_J?kE&%i50$zIKVlUj(BORj|z*V;|5!r}}+jW?*j?wiKONC_x zE^8J1-Sw7mIEt6C4lyImPxwdGlMa5E&J)-N>GQ5s9gFW+^kZ~~9m5YiR8zdTlS?<3 zqF?S#){{<3_vEb4#%qb8!>E)`y?xx7syZ4ch3m^+Cb@~T=%ORcd+#9{A9REdZ`~+5 zI~-`iaQ~?HqYB*Ae5^`)&G;-t{K2tw+HciuRVKbP?k;}aDQ*-T-)5IZpyRfCkQn@v zMVhu*o<861@Z?YjF05M1;<&CVj6I}thh6%G#QqI6Qr(0}nwQ#98(K%=DjIIg7I#_O z&HkTgK1=8w;A*>?#J~9NhF#}{b<9W>?gtU$m(Ew3 zK&QW|rN_|GGN8|oEK=39nx`r3bp8g)U3{g?r>;8E+W7sv{O?l){|m}^tX@CPx@@PJ z#&k#?I)zSGt@2#IeG`L9C;*$1gziH`h`Cc8954lqiH7c_si;R(V2obJ4If1O?t>&C33 z(hCyE#YRRQULT%Gn~UbRP95v(kjo5hP$AX#wpV8XewyV42xIjRC)3kPyodw{70U=9 z(UG;(tNHSg$A#^Sfp`M;!Od(e*zdfKgUIbE6n6Q-FT7! zRT6K+WGaeW^+>3MZMVBG)RfcSe?wAx7~c)W6X_(4abK4&{V!RDT1XGDbhUb$Ya1CS zXgRn*tlY}%R&SW%wsv3*K)|A3%>@)h`~4q@zOj}$fuCC*YajP^FeU+aNV&REfjLmt zi-&XUhRPeluYPKdTr#PFsvC3&s88e`HoAdBsbn9CZGA{T&ybH&RLjQBJ_g(x$EODO zl~yc^n9%(&?M}XQ@^k%y(UO!Lya#bW2t%*=2(a3|05~yd^tjU4Xkb1CQnkRy$;&zi8`DbI=~$#iMR0ZS&gkOT^FWFf zq_M{M;C!j;>EK3FD}Tl14lQe~m=iKT!yg_W#z~_iLj~SC?yq=6Ze@}0t42sH#@nVe zmjCh;RY9zd{P(Mi?VGEgy(uORN;I1&3y8QU<3w&upO3@_S4YB;N=<0R1V?|WNgGLF zygzs4%d>a4NP}Hs%+dJtnJF}|3C~2fluA%`618FvHnlTMtP$Il=VBOMV76NP=kds8 zoF!A&$m6cSL#53p)yy@icQ(9GRER7_Jw-B9h&At=zC!8dYIpG-J7w86fTsiOi02^p zT5{@^oy)RS(K7!l|8%^{RlDf?%nk>|j5YsKhbJ@P7rD-t7SbjcX#O&*3`Tt(?!OI^ z7u93x9y7uB5`Cv0@4GzT28rqR?T`fAQr{8;vP9?cRV$n$8DUQ$BSq`KN|6<&CcU%t z|5bprgcFKtVs1p^RrTu{m~u?7|A6+cr{j90C_WjD$W=qC#1=bXXnQ^9bJoY1XZiS4 z`RmuOR^7h{SA9vKWk__?+ByVmrma*aAxWuUKq%ZGORRv%9GOMhAZzv-Y)$L7^8+^8 zT{`=4di&hBaj1D63~uTgyy%>KI0=AT4SqAE^XYFUjPPbdq*PW8K>EbK#jf}~h9Qy{ z*~iJ>lX^R(;e|AGe%t3fGv_Jwx3uzZ7na91EX`rlCe^|9RK8kePy53SJli+}6%}V# z<^Kfq1^Qcv{a13QysUtVA}puzSH0h9D&U>RB{^Or)cfo%&5B)B(n~Lh^Zbd;VaRik zbJC-U%@Wz>(2*VAlX0OW`F_&6rdZe7N$AlLY^E9QJHC~(+?7u!3BK3bELy?Jak!PJZJI-m~0b? z^)!qc&Q*1c`ledEZjtp@I($~RN7!Gv?tKd)dIJ;PuAfrNd*qV!u7#`H+ig=)Oj@q) z0|Y2L-H9|I3bCSD^RAG z;cMuWIv28lX+dtv%ZrenLI%}S7i5;P&9V5M_XMN)c(wjg9^}epwTk?5bpAkDzd^zN9qyg)SpsTr9S2JM&#!7? z`2xqJKlv1|E+JZb=f66|zDj!z9#%jD`{S*@ZSMNmC12gF&VH7kTGn}fBuGdT8K*(` zu~S0?*#ziq;@Z||_rKug+-;+#m`X{6%vcj0)m5#Sn`CYI)cP@Jpf)^q5!Zb)ydko5 z{pG#X5rV-?mUclm{+E^-0i568dQv1=)*kxq%(1uh4nNtv%`w5+@%Eu9i~Uuop%!S0 zS`(B?n9m_kwXgQRiNKiG#xX`8gz>Y?3x$k z7OpXBm}m>sI=lO*l>6wuE!Sl*G&JLAqNbGdzA4AV_Nh_BH^C%V=OY2)wInlh#^$Cm z5cCi(<+9d}Xqzr_IIA!nU?^o`dYC8aiJ7bR zEX8>%hd0-{)7c05CWOr$Z5$jNGzj`$4HfXEymunLbxcWRP~jxSkeM2p;nJuH()bP~ zmJjM{U1r4>Ao{lXl>&mXUr<%J4i*qblE~{TohwsfWGzg47wdi75#!%o9Fa(Yy`}%a zk+K?L{YyN*?tJIYV7;|e=enxqqc8TA;sYN6k>!@Jh?x;duysWe66et__7K~BDy4#Js-f4QC2rwdC6eDMO!a*n_JxsjZx8m7jB!}a%a&O zwpw3eGPKF`N|@S79D!7?J;$!&YEp<**DZXNBet>$bFP*@21!2Dv9iarS?=InwNO`rmAkj)kVzj|0mQE(e-{W?$Fe#SU(7^xY4$k%p z<=+{7n?I6e#(9fj=}iWf0ak}jDu-TtgL8l1;23s4SCq{dgWpV?J`#|0pj9s9B-b=j z>-@AmH11GL&PdLYUUCbe_3|<{lIReofzExZ>oo3*3=Nrey03va3{xO3_jh+gd3gsY zz+N9I6l+EVMl1{#+rnveyl0zBp5HY}jrSQDgyk%rfqsaFxIQD5!jMdLS-R^-}mshKc-??gmQ>-@w4pG%aKRBw_5Cxd};2`7Rl#$k%>l{C~t;XsQmb_0a zJJ$Q2z8(*vG&PZvrcOFc;u*U&kWt(evFzAWBp*AYR3VZf#7bjekRvmHp0Fm?{dV2i zsX4;7+AX0#Fx3@wGd6{~kHP-2q2;GChs7lU&1cFa=_$5@>uv@M)qrMaF8fporm5|P3niR$YI%nXG!1axz--Z^`doQL!0OX7 zSDT3U`sN)XOQOj8X-hD*`)E})ER}B=Xsl2&fph7NO53Nu#AqSGwDuwF0wT7N&?tD>gogWxe|hGl_+@Rq=UlFt;4! zZ!~E1v7Hoc8=b@WVZ=@@-yv|YSnt=CBt zFO{|^2eZ@yWe+e+H7CD~8+e~LR*>p~wWraDaCRh3m-R4=Uxc!TL1!z{H@1x&ba&r)rvq1lBnn-}&S+|a z-CKCn1}6)@KshH3b#-;YC2jIGGWm+ic*Im-T3kvFp*BecP4U9VxX5ct&+D7x(~waJ zdo_g(jWNQcZXZxd&^}J>K*m&%n~aldY5Fg|eWi;S%5w}!tZ(>|_SlD4NYzU6 zp1m)YXP^)Sxw1(<`F5CXsQGo6w~c3)I`963ZzRX_P126hOM2L0JeixhZ5JQvH$SZ* zrGYKv9S2MJL#J$Pt!zz`ED{U>B*0uppt@f1cl2a}^pW#jZLcnudjZRfYO{(CIe+0l zA&Y76GBTcidp{gu*Hp9P#@^o7eZmIgjpd5x4bDbw%^a7OQJzmK^j*sa%F2E{nd0El zC~ng9sGBmzcJ-i0xN~iAv(XK0bZ1xnEXU9T|D9CZ5}=$Zh?Yx8c+^HhT@LN6PQ90| zjDW2(1TwnLu zV9@u#TJQ#t+qPNj#my1yxyiXB9_<`9mh#dn&%v38BHGkuQ1tAKk+Nki#&{rYT;bI8 z8bYIH=zj&|9>q}BBAxLcH{JdIJSLrRSrQJh{ zTPZC)Em?%3&r6j~yMl4*K>0}{a-=%l^X42i=Tal772xl{K&T;;fQDO zN$W@8y@X8Bb>wtD7)_co3ER!-y>N)O1VTKE@-AastXYI#!^3cx)ac#LxfG=!gg4fa zo3nEUSP@(Qrm_5NP@gfkFGKf;V2R0DK+64zvw3-Yk3H>kYB;EG`;Qtz(YPSO<2(M6 zL)W^H^wrs4eY_*F5#GtX66(!)(fKn&wTek zc!d97c+@2N*+EIGa)YzMu-L1)1lvOLykC4;oZBbjn_N{sjX1*ZsJUw5^R3lB3m@Fv zzTuRl1c%?DpU!1Veg>1-K&tRo7@kGXX;(=>sFR~#L4Z zbn^FN%ce=>cP#t%jhW#?_t`2#|B)_$L<|exIB~U(XkmK7i$XabB-!4d)JfQ^#K<_< zL|F&9L0`he??h80)&R7cR{h3vCmI;mbmvoEj%9ie&4d#~;MGBsCToiTJs!i`_2WoW)8tx4#jb<}o&5WsFh#Arq$J|Fwe{ zL!uS&1uYnq#m|TJ1Gd2WR{lr8G5p8Oi)FXR;*h27tFjzKmRZ2w2_zHauQr^AZr zzaeSLBH?6;p}53ksxNG;)-U2D&~E-Vh<4U2Ff;v=5>20&N0eSbK!Q;R|? z)eEZ(-2g@xTe|HO-R4x7&#%cU^9F4!@?^CiEq6!BO+G4iZq>iw36(GGvlYy+g z014#6zhs#t)~CSIY~-N%0lp1860mhTQcjZE@F0w zW3@GiuCg|%1mdQLOf10C(~^WXvd>h=m1T_I94DpV;K@?EYl~Z=#wPKiV@SdncA5bP zDKVoEQ3V!_KK5(wAJX!|Y02F?lLS0iROjeAe=oOuyD$>k-oJzFk{iP`#B>o1B6qAD zq$_$5PsxMvAyp-jO{ebcD@4f5=b{}sQ}(qTs|{(8D7rSv$@{?|Z5V^0t+$K^Wl>&T zcV4^Q00a9S)^(&xzpW}&Awe6&Sx1F+=%R8`&GlVpQ5D?8zZ>-k3t2?|*k!uh4>p{U zjrieh_a$9b3jBN_nN%~Cj=Q`lXIvMurKF2z9zmhB?Z<9o>(Z!n?Y!zG{!#+}A%kpJ zKS0N&fvX-tx47s-{wzxvPM6WW;-r|?xYi(TR3tY=xIPriTcWd@CnP=0u|##&)vWBs z)FM+eGa2^&4M zo}q=I31N*~YmR6P)W+9*5O1sov!-7$$amk{xBst*i2CmO3duS4~v+@b!N$eC-da! zTR1v$0Ba-FH+f8ptYr$X0X>o>-UA$$!gcn=5f;);(ILWGj=Ng~mJi($Nd~hEZ%%8T zo6FCLT&A3~t4XCf7BO8kyyTs)_RG{baoH4wx~Ks*%%O2bDF(%q3xqFyW*7!-ZuL7} z?ICNCEQ>3Gx>SILxdw0f5w788CuFxp{0u6J)1c0F1}h6*H=$Cv&V$J!xP!6|xrgN* zZ^MUJG#G}9_W>rB<-!jq2trv-GKxToP2c~`0;rqSd3YL;?T6E}bjj%(mJZw`=pNL3 zZs3h}_2i2h9AeP=S5aduLH~sY8(#!AxQZg*wS|#~{&BTcKnSwTZ%Pf=5=LXFjEwrF zwXKH*g-#b<>$j7kMULSCzzeq{fQ%Sh1!MlQ_P^5;&eP4=PnErAznRPej&=aJ4Na>p z;(73zLw%GP{we-{I-tO{-`?Pgpgz#W0C5&(j!j*-7_hk1UTjmt6y8_nH!&jNp71!B z=n7^8Tc!SU(+0ms6&KB}yeTZB$DS7s=#p7Iad~HZe7v%Jz>8ch^!!C8?Jc9Fg|)U^ z6TlO^iI+Qze*W~+e0)u4fmGUkFlu-YEy-^pnV&({viLEcx?xt~0xiw|*w!#coi8{Y9CA4T)wF*_&;h3|F0D&Di7{r zt*Nc$6FOugE>U`woSfTrH-xgO9ZU{;p0OQFhCF9g=ud#yYPKHpA`1qoyMGXEDGU~^ z09!>1h2&yHkn)7YQ-Qe}=-MbmRuehz_MZAdS@cc~c8Jjjjk?@2ZDhX{bm|Mm3#yN9f zCXf4-N!m#{zct&0C%LE>92PYRNp?JslVI327+ZvSJZTYqMaU}6&YSTPaU?F**2V|_ zb*C+{L1rRBsm=ZnQ_EJiu4>+(Ob`VGX4v&J>RhNEK^98{P`B7-WZO+I)$vz}AN!i` z?#T78I*msolvbaQR&kye!n)6YQZ!^*cLlWZIwR9w^6n8+%$0+=U5d7~9yxb#5oH%+ z1?h|6d4jmL!6zE5Y0IhH>SNt&S2-bOmuE9HwYCh6Nk~g;&58iE-v%9yx)M4lY-sPm zn8iJ_j7#V;zJ#6Fq=0w4D~rpvZ%=e&w}4h4k1!f`Zi>MQDaY6bn_rhYPriBuw|Q3` zaQ9B&*Hq=gk}~kE_$gKH#%F>obm)1txH-73)n@WR?LIF{tx|oznG${xH#H#zq2iZk z;Q#s;W1wUqldo`3Y-0ne``RrIHL!>9y)jbXouDv6Z*e{E!h{CYe+!aT5IW(3MdQ3W zgcl2i5JcBv#ALxUyhfrCx+TfF>^h4qUgw896nUO2t7EO3rky9J-LFlBg_BW^EXSw7 z{0nv@h+11UL~O&A@^;d|dVsn|lB^vIK4#t?mJW7IS=_fA0oUQ*2?=lKfGsOoQXEXf z@{Sh4C?cfO?Dk1S`jootC3>aso=Q}AKhiYbUSGQrTANJJ$piwCuPDtFRGRK4Zv_1YE4GBN!w?*dn^ zFqQJM7Q3bxnT@JnhT4NkZF5NP5L<_?drm28hoL#U zud=)aoMD=WzCfQ#2OZ`?D{|F3ip6Z*HIH;q74_QXy6K*oQ^V=9u?ZjtNqW=~Cuxsq zvsjfoeF>2J^5{nITc9|ypEW_x{?u&Or-=YLP^$=QdT(0mT8@H9!%h2*t#S-iQ_jIa z+{hhuxsmFpijAwbcuDf!x~|VVXW_f+N~F|I((Ib$u)1E=$c%e5ku5kfX(9iC^ZHf! z@9pzeKn8Js)vhSl<3{jGw&epWOu+%9@sI}1UCTd39-?GHII1-MeArZ96?I>q0Ekb% z;gqxDFQeJl)DxMcs==+YwH((l^DJHy71s%IA_S=k&OQLlt*L-z+u(X~Nc%s|&;gRSB zMV%B?_dy$`fE=atCx!imHZ%TJiO1!6X@eQoa_|9u-hK?4@+I`VW)_7Hx6IDr&`nJhE07B>SPVvx1}2KI1WA)DR+6vF#4O)bF;W{gDTRph-4-2c?bBe zLvRcPIAv@LDZxtM=b*|`m~`gR(6#(XpS$TP7Dj9S^2R+*oZ3J^r)bDIYjK@*T=5aJ z=t=Ab>)ad6`WoF1Bk&q2p8WfaZutzWg@qxSH$! zsM7jSMedh$>eeARj93dvPeyThc8iix$YCuH`-~3T<2M(aIfJN2*}F^Wkj0OKWy0sZ zL?wqO`l>l49kQJFaic>cB%|Yf$3k>W!}nsfUzGn^>@KgLoDR)Et}IZ8@S+&$FuKr{ z>wjY8-_=a8oY@F=ewUX3h}tZ&aay@vSmSt;8vY+m=NKOcw6yWqX_Ad?t8voUX>9Gr zwi-278{4*R+in`$X{^S2xA(nwzwFoj?Kx-8bDsIn%tUB6%&KBIdvI!&H}(CK^m`#K zTq0B*$|!w8!~|?MQP*2(j-m8B=KZQ5?NaHt!{ikCD@nha{kmmvMi&h5ijj#j#Z>_4h7o(_ z++^<5YLN$3C7_DAjItrAtM7cKdFcA1?|?PWO&fzplF{eZE55HJQN>9i)3-W43 z$Q|nBzXY3J@1Bfgt?3Fp=>Qo{Rf&0x7Us#ME$hz|cRox!ON;lxT5%B2} z9mN+ZZ5)+H>cP8^Yw+P zG_|URcG)gW$Id@rNeI<1Ek%#izedwxWHU9CWyRMjtI7|~4{ zZOqYKNeA27ASab0k4PIQ>{EU4>mcNRs(`xhAoD=YEak%CQ-Fr8n#XLQ594yfHd(RS zcd-r@X?2SN_-|YA`^x)TbQpXZ1ZnW|zsL$_7%Nrxr?(5s2D?A2f9gBMlg5eRMyyoUm|D2R{q>vuyTQrX+phDw)^W9u z5{oPM5AM7aB@b5)bN+=Cs+vNS6I7+411};1EfVtc#rWO5?9tfJ|JPkc#2a zN&u`D;uvfqhC!-!cE^rfN|KO8a%oF`1i?n;lbOvKV#}+(E_|+lyVkC`LD9wdTc+wD zfurlZUJ;J?@0!T#n+*El(05}A51(xunoXHw>7PAosr%00t`pB}OC$8|lmA=_wpX01 zd0PJ?1DI9lT-cHa&PE7b1Oi37B8AF97-nuwEGXcqs8Pn=xKK_bPAtXehGS^-UT%0? zWXMTFGh-#31)wD+#Lfj91DRzrRk}y>k60EpErEl|j8_SA@*jIEnEKzcE2&55$I`f( z-cl+2P!YMb#+r(&T9k+MOi8LLB!a>61SI<3H23o^d!oj-!uBL|Wp!;gdNwKlG3mm# z0H{4UuGX)?9L%#-{+UU@!gcnnDU>)YQ%kW%J?o%6z3q7`R_aDm)2~YR!8$`kc?afU zZq#L`0c*h!VLll+a1gI+H81(K@VEyg1%dpb?7_G$%YE*$6}7x(x-8R{#hoe}JGuUk zOLNq(%@bf}ut}@t>c)H(N~n$#4>9F&u^B8SE+-~P56#~IV^{FxdCpS{TrQWx^(L|;E#5l4sIdarE>%7Ca+rxvGmLKZa1NROt#K3EGS`1gAiX+e_ z8dr2uT@+-j_V9NxSnH9q2#B$Bcba^qnkI)^(UJJD>_nBKX6Lk9|5@xHnX0?voN)}C zX=DqDfqIqh{XGM10l#e2pb*^{B^SYw1>$XLElD$ql2{n&`w$c<6gcu+KO9FX%6>uE$D*R|{)iR(4u z_tee3CW}GTm#al)hv?KUNg$KcD z1Oj+rQ4c2MGvM!~3-@t6#pGx@ckdcC=Dkrt*8|2dk2e zhHvWJ4aVB}E;j(i6%s=NcPs|Ka|)79Es}7b{Om(&3?e(*U24p!#@p%@)SJhG5&!)i z^sgq{*ITecx53xgwrIRQDkfX(pLBbf&{fclY9ZuziBLMcLClbY<1n&J=!Y!t*pSOQ zSoLp}MH3AR7{;H=nevH4VawS}wJVtOhHVj9;E+XgMW7n*wROK6DK?Y~se57)i^IO58zZQ`GWjYFdRww#byuBGGf?jD{n|*}sI& zBi+lwB;g0XHPm=1I12e}CKw8 zhDO#RP;|82!(WBk0 z+TxsUD#Fmkf!g_oa6R7YYW%PVK3?erRp1w{#AA>Dkr0Z&TVx#!RaCf1xr;XAj2!Q)JEoQDOHhUx-3Atn17%)toJf?POTQ3$r-=Ed!bh@gw-6 zY2fh4q$}$@4=f>cz4mb=G1I?5MKNp`*sFQO`RsGK1s2IxS0wt`*y)w;f?W^_k^j05 znIb~CroZE&T~*eSb!l-fI~Ks6-*zUKJzak^!jZ0sE}3;H#|g7&KV?+gx}2!1_VDDb zfOT1K=PxZwR4G$A1m?$JH5u!>{m5@C)$dh)=L?U1!uKl|H}c;N!lZ56?$v%RH!e-@ zyV`|5FVf$@Bz*hAk)p-eq#)z{t9P-cfk2+OxKLnv9T%HRjOWH7j73>kCa+R5-*mX) zXTiC7E)P|wt(VR&3dzpGhS`7ss9Tls!4nmd`-s0b%gpGxgzqwqt!Nvc(rouYZeH1@ zhY>{VnqoRGp9EceYgaY35fXS;_Nsq2Q6fCj&h{!fs;i0%mEI9qBC>K zl#Mj%VKYJjLzFE6Uh?!cR^@g^l9C|37NT(Ta0DO*hO=NNQWC! zixdK}Ggy088Dhmlc3C$Sm?7%4pAdGp4A;=_&j$ltNQQEjC_*~vZa2X$|B1D>o`Izy z>xasT4RhtBTEy ztKG__u+&S;f{Ny11HcIUqDA=s-D zjmCu(!ys0G2QU3qqA;22d$`yhywZVCeE#(WMu&)lunwYle}0V2TvWWWb(@mxQ^9oC z?x@{|hQX`n<3^0o3fJiA$GlAhOS#NrUz{}Yn1l~M#@E~nK%%E#6hME24V|tlo`+E- z<%)j+&85NPZSVV+4#TXiX44`+Q+PI+v@AYXq7}$UwtmKUrtaZMVbT~fEY>u>xqFJX z88y>I5dXmZLz$V#rkg3tucp5`n$`hYV(*2?RZrQvw5`GmV8<5^aO!+go%!9y+NT<& zmU&0xi+{80do?PSz5xk_zTY>S)Rc+0Nj3Y?amJFa-}f1Mk~tONbsGvog}egx(h5PY zccW(J>^as_VIk`>&#unupom2LaK_ApAya*m;8Y>Qpkp^p{DzUWoCzEVQ$Y{-3|X%A zv+wZG_>{nKl)eDcrL7AjKMs{aIvESJEi~ljz8qr)aAe4`?=SkS&LlFn*R+{M7de-E z)>j|CX{xByK_zX2(LS&tTi&;eV}|3<;t=pV*>MxfT{kL4Si-}1YdcQwd${kCL6N1N zM0P03$O^n19F8|zS(4hfJHNg2pPr5R1+vzK%QJ5ajEzKn08Cx;9yT)*IC_JRlJ44? zDQ!h|0v7rB(As^~CGBbwqaY3(bp5c?WSdK@ug7Q#BZDciJ)}st_Ft9OQR@qwlqlSS zaWNBBeP{?y_^8JAS8h^di^)O9!mle1FL|t9r(S+Ax0Ogo;5IQ|aw8vQ^~&jQY$A^4 zHK<#$%G)c{H$viWsK;3i30<|0-`WPJ(U(&*`!NtW^I4-1YGO8#Zrz`RJwG`4Ts&P` zB&TLHRIayom;6gUV6WyIdY?#U{e=*M1A?0EL$c_bq)cwj*f0~N?ZXg6pa5pJ5JQ7{ zOx!dkkeHsV0DgMe??C%HS(ar)wOyt`SVQ)3Z;ZV@LmG`V!8%6PAC0tg<`judLR9=V zVRgi9T;g4>mG3(m6qqc!)SOG@SLIE=>#8lN)BgFW{{i1robvk4H4lzQU&yPt6wy!> zn}#RMEX*C6p}t^n$j$XDrgG+BI5PVb3L0~zMh*|{7f{sv=ChDZ}>wU9Go{83n8sx-g&IJ1YkE;AD31hHl{9Gc)J|?2u38P z(P(9cs(TR$t;zn1Ydr@{w3vsFlZ1z$FXM;Ht^4UbXdGArNNLl-D+a?TASG|SWk2-C zGfaOWXoCKgHW5)r3p50vmuM(%7?)*Qo(T6Pb_SOO1TrV*@^EfH%_p0oSre+wK}wsk zbF61{s5(J7pq`N0g9o5)F{Bwsu+BV)&S`=(GvdqIn6bI){4_uhcR9%G^K+vdLI$Ad zPBPxiX2x^uNx$h-YpgCj`~~K}2ZPtmv6GutYg+%bRIfJYwe6wjF3aI@pC7*O z0&eGkHW(A(;<4G`tn#Mx)bR)DoM+8kQ%o31%shdb_6qDcWs}6Hn$}%*m|z&-yr3db zM8{bHR^uj7H}2Wy`(M@K8Lkx~&h|;#2xIn05p;Kje79Vbou*{2Bv4rNRlMzGxq%I$ z`0_8Qcnqidv!Xp zb`E@==@Xt#f-bkzcBGFM$GE-Z5544en@W_=)fe$`HdGubN>$KvE|{u8j1LW2J2Wp; z&svoIr)t??)xrGN)721!qP+m-_R!!ipdR(MuSWuI)kHAvXR?i?1J^A4o54xZVFq*x zbUI7!ybv6bfV`rdD;f$KcpM07h_y%^v97JAu^h7j8h)d(qRse=G9|JFOfBwQc#fdl zz!Y&(z_Xk>r&%C|nU@~87`;zU!=dWDMiXG-*^!vI=4|j!EjIk`aXNuiS|e~@wVfHD z3H_qEL(}Bp<`aUf-Yn)W;4i;yVn<4Kl&4i_GA@uu5n zW%Qw^R=S+-(#gwf7RS9``P{gOhy%YeEG0Im9r*y?qjaS&J%Vwg_AmQKHGqB-UX2D+ z=9t%);K9><9mxSujP(`YBuba#(58&XSmcs*`sENKixlT)uzJd&Uf*ZBj~!k!9DHWb zOfuIA)LfXGn3y!&qL`r%%i4xnT*5jI*bu7uxP3)<%X_%+!L_kr6PoT(O>*}9hWLn@ z^#a|)BaIx9zGcWHB74w^BlR2t<3eHG+t35mCF1BlGiy8fS_-Lahpn97n=kKOOelg!09DTslG>!hIt)+-kuaZ7 z;*)DTPn1^;MjW++YOu5+Yw;xUF+BOK=#l0Dw?k(Il@Y#@;WSAaR9hL&U>rW^yFyow z*}${9*gq>zH}}5)CpP|P#GeqlOG(>2vkfd~^WvV3UsM?B|5Y>>XyY+sYw)bSOMt&hqIQgsGc+h4} z=G$N%{HZQNUVx?#pd*GPzX@;9b(9nFc+wMlr7H1b|7=vL!(c{sgu^qFqNTVJMeRQ1 z`p85Vrc=P>a@f+r${T}$m_5$65w*EwRwa?+d8kExxU!|Z}p$Sc^OlEBJ zVv$dQV|U|N7x)WFEB;x(Jr z9(A9Axw2-!F4+{&P;@0rEyr*|0bm|V&R^ETNtH1hG3bz^v%jeN(ywZ^q&m?*e-p-- zJXQ1ALPxRd;6r||FPIBviKxCb5vAg!`pTDX>X)mnEAHo+Y4osjSrVlbGmF+F<4GZ8 zVIGRk>?WidV)<&8q$f{xa87ggy;lvw7tQ1Kx4#gqeNKTOf+E)5H2qF642-y8lQH(+ zN$#cUv4(}!Fqv^dN(oWX+(7}!Pb|N!Qb^_8H3P+khNm zer4CQ5H-+FCUr2tq@+7dnygSvKk2tCRA;H3!XErV=nMQG3qX}B&(y=jFRtt8pyc!d zT*FTm0Pv`}r&$~wNr2IhmdUCWQx*d?==|_-o2U;$kJp0UW8&>uV?U+bUXN=m%U*xV z7VTMfof0^<6M9sl-ee|rx03L&^0vv~JZR))AvbNp@Nhe4<^q@k#a~03u0>6ri=ouL z5*b2$ijWipRdkljmZ8rCNCC`s)MS?2;of_KcJHCCLFi`!YbOVf$?h6=i_oDF>J=LC z;K!UX*MC)y3R_?hP9`zJ!?y^+pM<=)!$$&Q9{UnIL*m9k9(e50yMjf@lzFQBS4p~k zZiqvg(evyF;xB^ZcjVk;E&Xwe%Z9&1h^KoyGMeSHiDlyqOiWYgft$iN6L5uTJ&H`U zGUT)(Vcn?`5eT;#d^rPE4(qv_eOZaCb6LSN_XwS!!)!g19(+ErNUwfmt6eL`elUsA zx>%2{t@!PL;9ImKo3thqb!+jst%BoJ9cyL*OosRmy~Zx1v3mLl@!a)k$H-ZN21f7{ zVeR~jc>I_ulV$wm*Xd|^k1i&PPWvr(J+qVwxq^7`ExLr=11s>s>Ti()9a`si0YMQJ zU8ZJ73`W$&3xs1rF+b(3gh2|H8db9o6PByUH&(>0iB|;Q zqf4LuD`!ga`jkFiU)~EYy>5A4{|>+#_FxLE)15&G_|yzVVZIPdrDaf`!H>vPRlD!d zHz6Rth#^HK5S1-3f=kc6(oYI(3)kb%wCxVRxwJz$KSB4qQshN#5x8n8XG!SPZ^q0$ zJwGj=okLY!jZOG9*?x1ctfF3#>bf(u{K|VEK%*}xt~ovVcs?`6pT@@DXR?fIZ={1z z_?1Mb1+Z5s&QBh~a_>)kYSV z1JzM>q*k4`s04D66|4uA(Q-grcBbm!jNEU%ia&&Wm#bd(tsZy!C*&^(|KFnp?{6r0 z)JziphM$}y7~5lN+eJJ|S67OT-*au1*iy7A8bS)l>kcpt_vvlhU1JsNit-P9b4o*% zSAv)GSNPSQQQF(^8M0Le+5-MgFrO@F2ptztG&3r@f0fvm&t^39N~NFsnh!gD__@6Q z%zTFW{yK&@kvhg(E>lh`^rlcN7hUb`?IlC_u9)=6z57VekJ#!CyEghNoucRUpqKL) zHnFVD*?lcO0G8pA$Y7eUJg=(9K+<)|?C^qsF$jO{0HJdJP62)d|p z6jm7{>a*7DeAUYms*|=L2t+WN8#b~M!4#~(qV{7W2ZGA>wuhkt!sQf345b!o^vtFP zu`2aD8?+dVIV|()GAYueGq(g0f@SC|9;zE6Bf8Fz(IIUgQ0+h-9J1n zN#cK@o#yJo@2X$)e^e{HMEzHd`uY&9BIla-bkt6NOk{r-1St5QQKl z877<=Wi%3BTi%}eOZt)n`x@6X%Bn6lTvr!}-Ik<=pH@Trf>p9GDbkILdZ=?nSjQ|i z*v(JRp0z`-rn+D##nPEmQ#CUB+XEGo5knBMs^8vs#`U)GS|q-Rev>s^`@BP_;jrrU zZSiBnN36C3E{|U~r!tO7hs&zc^Q#M8T zqAZ$DZB+=XroW(qP>u&{n}ccWk)TnojfL6zP%uTHFibqF`j*=SK=}}I=3x+%FhAhL zA#I&~*dD?(2s<2pXv^8bhU%i<7!a})#IsDSnp)wPEj5BK&-VW*z!dDr-;+1gYm*xe zW4pxCE%@Da35QxO%(LCNCZPjOa6+h?L!N+^n?-qX z>?S8w9&c>S$V=!Tuu?2KVd)z}*Olv0Y7#WJbb=1yv-?HNP@kPNd&5uXj#NyLS#^U0PQ6 z>@=<|;_i!Tgl#Mx%M#<6#gBM6^c22`7hI+|3)kg}vm|z;x*u4H)GhM};GMhm*RZ1H z@S9`xYTZG4)_>s2|0%yAjZ2ZiAPc$Cx&_ELK8|Tu=qj#@3qk?sgsWPBK&MG(tvh$% z-eB?!=OYY!*vcYpOQx=ztLYL_6V5PCzG;wyq_yP84L~ES@o4#ygrG`aAfGVh9AM?O zWzv*vs-z7-{p{prh6R$~T#nTFp&9V&&=$Bpvn7c?1-jtWp7a4k@+uYn#JL2m-?Mxq z`=v*Jr#wceVZ+vv^}(*_V3C`GjbvWDSr;qW9qkOFUBy;&Civ<`b`k#*4GHp6X; zylaF&5!3)n*iex$@@QRdry?gb&TxA3gp`QE{Uzg6yU5h>Wi$Z96cl3 zva#@-ODFD%_F_AvBW?~`@F-U9@Sma+B|`FKBTxo|MHI#nquwlC+b$R7nLSB=@q0Ay zqvoD!ODPrlZ;ohrewJ6RNFV$Bs^?0SSDKpe#Ia3i6wEYYOO@$AK;R=tOfc&65LR`2 zGdmHAJ-CDSuX*1z@Sy$9&OlSL+jD)yj8GH54r;sXWzV-c=g5-s9p=2r+>B3ES^n{= z${3x;&HK(aR?B>b3I-EB!QtZaxa=UcuG-Y+xJwW_V-mYcRWz;2nE6Y;(B6X_bteNu zbRZhk!zR4CqX;{8!{gSvN+OO4h8}b4rV#DL(Bi`SJF+Y=-b&zYwL1nmyvA0 zLSz#AXLR7WgQr+%@0de({*~Ap3L+S6Q@q@b@RI2y(uJWzNE9xBFdZitzcSG6HLwEcYm;kVLS8$SYu0GY?dYx6cZ(HKolI$| z8ml5pJ7u@+N+mnRQgz#=u;v10LnUS4zy47Ii6}Ez7l>KBRmLj}JCM7R%rALGbM0uS znUuDvW?AG${z)gWrI$SR7cyF}cSJOD#z^*0sk#UctDn1V54|)oi(RQ!AJaHT`Pq|W zlh!jKq*T!lmT)fKP`wUNF~Xk&-URMT2r6Mwbu;VwBT5L?hvMcA+UJ}h8Ukxw8G>mrh1nP8@%XrS1{4M&-c{SC*MX)qBQ>WHy$LQ^yKqt}hu7WYuhuneYCYa^tKCQc>i zD&Ai3I`VT(R8{Zuu{7!((}>Cx_Ct?q51u1hwHWv`RGf1D7x%U5g4lnyt{Rg{nr*$^ zUV5!P_>J(q4pPzvXHf_^L#_YzUpL{T_0di5)UEhfN0DL9f#EjI(53QgX@18z3;G4WjKyQOP0l) z)2~i|w02HuUreCLh!!}#>Zq5a*;6?9L)cW)J(oPgvA~F+tc#1n)H_pJRYv)5?XH$T z5K3>}DRj;(;iWp_j%;8=7fi~JV@#joSyuxN^v3F&+X41@ z7!vvk%dn%NQU_>(e1*G;i-Bs%k@mWTFz-{eTIZ+jbS&?yK`V`zm0>fC_1UEly zGdn0EW@t^;Z^%~1ATE;Lx9e=aBA|y#W=rwK94?~%sRafm04GHadH7u!L4MdcR#4my zN)*(EfQ~N|KjphyW|hHPUo+K3O_)S4m~88|J5teLtFCD7+cW9Hx9Hkh`KASSLZSax z-7aGPgX^|KF%S|akoU@o#Jg5AEr=s*M&|kuq?W_;as`Tu*xA{vv(&1>CK41v?s3?i&gLWszzX2JN)--Csr7 zXNxsee|MY{sxtJaGpMXOwAF^V+KS>T+3tvCss?mK^IgYWCH||9+{U(=QtJ^%Tk*|7XZ_{4% zENe$srj-2?LP3nj8Y*!^F99(==&dgTe_g!Lkri{V`}MXj0`i);dxW@=7yzP-#DN|7}|2U;dRT8NmD|iFy!LieFs+*0fFDb*&U$) zQH#T;RS;3Jb+RzC2nE;~6LRuLd0q&}c5`vSul9OByRX=mO2#L!D}dC2|5QIvJ;3Fk z2)*;6nHlRlV5Quzs&5|cgDt$Zdx9=)TL+2=9WBmp)d>JI4tKwgWNba|6LkJ14>^?ZjG_!MW-MBy$iHxK50Hrmiy0m$YA;RCDNO7;KfszNPH=QwJ}4(l zb**?o9%4s*gUA-AqC$N*hr0OO+oo%myYPDK#igBd);*0E6Q#Z&X@fkk zoXL7VZaCN0=dG&y-fQdDhi;;)X>h{tQ(sa&L+0Lw@Znm|f`702bUt5rHS>*=o|JDj zJ;1Kw6=W@$!L;FaYNy;vtepKDnIjpR%Wr9p_x#UON9TjezY7Hdf)pbA5p}zaHdpus ziePS=qtB&;`Jx%hekE3+aI%mBvQZfq(h_1)%E}cTGK^gUi$g?&@okXq$B+89b{T?# zO$u>sHbOb^;!X3|DzS*c!VTx<-{FzO#^NwTf1JNrL4IOdRxwdGk+7_UinKd(%OA~% zg|%^NCE-Ab9koR*MMVfsSN*J4UB%o?>7 zr<2ky)rRM*NQ5S@q??fTaJIfB3SKtqT!#PP>G;!d`-o{&{XKdf}zSz*F`!WD_x)u)CeiOPA_jb7o6J)99_6 zPaV!{qZs#To(CGhfpDblC4Z%lFIW9)y_hY(LjBPQX0ol<7yKJhP!o>EbzY7&MG?@O zlY^A~Ki{+XWB&M@)*C2@Enp>rsSAM~q9{&{VvhNSyi6nw5hbK(YTuimr=Ih(LKND% zN#!S^(F{tgm^dnDp$qiYSk=Y?SxfT?|6%r$bD;^d4)@{#0j25Uyqzt$t^QGeP|moY1S(pC-P*c7b2(jpN0J7I8k9T>>%x$;7VY4)6-$T!Pb zhHXz~j6nJDAiqIG!pzpWN@^}ED)nTSaK!vXiW`DdH#b4CQXz@_{Ql=Qi26QOGar>O zmgb_VkI&6F(mbffXN|QJ_0-%axwLh0e_s~E)M;=Td8>`U>xa!FAsRWG+-4 zLD5_5xU$?8gg@aj!l1|VUY}k9#@eG&29<2|vl^Y>ir?c z%Mmu*e68A@VXFGw%&{sz5D8)tQorF=b1!NtL(j@vhWskcBA*W?54S}*9A)mWuJb{1 ztJ~rp@I)S~YC@{6LzGZUC~$Vt3v+cXQ|kp;1eWz^X|!noT4tP#wXIo&a2jU9_Kt>c zG{DJ9uqOELiHQz~Q2wS+RyRD3Q_=Mj5|%(i2}vkYeF0BlhI5mAEg;a z)<~6@hi+w;qo!>B8$P&DbM^Zyr4+k(uzd!-@kE?XpVOGFPtc5GvHg#N3idh1FuOY{ z7A7_x6N~*%W4%~T)Of3mbCVNnxtZP}E4BDt0TGd3bGsb0BNr5U(%YL!Er;m}2PS(z zxt0%9(+|~%Q+>UKbHdroEP85}P1FOm&dixi;Rox0hgUM{3%gT@S+C&ShX6|}7E3!= zGPYG)zgt(Ay(KcV4Ufwn>Vpa{poVV)6}w7G=E3%0+q~RO_r%sg*9=&Z?FtQ(YCE4M zfE$lOw}uFP&hA*-ZNw(hMMV$=-#udy2gWod5$Z|u!sF!@o5 zz{@Y`&Nfx)R*Xe+>pn=$S=*dPc&RE&@#khir<8=u1};6LahLy)vlobeivvbFyK=_l z%=uY09ET=~&9_T#><-jHE{Q-FEWM%d%6`{?n^R&3-+_-SPge5MjZdszGFN}ZX+6%& zgHpDrEaUnn$3>yN1~sGo81{AmGUuvHcS2f?sCf|KLw}vWz-ShEd+?64@~YtLSk{<=U%?y*G$%_M_Fd^TUvhw zx!kxX?eDEJ_$_6c*%-`gfTfyBFdF2;JL1)f5>$>ij(7V{^Wj@}U}iG`JacTaC}8yk zk*Lq?94RDs2t&_}B2h!x3O!eEaB%jFg4RS_#`e}jg|ww!p`O~Z(@?6t6R6iYN#iSk z(Ay7jF7MNdrn@q1-|=I1IfsuUs1#fxpoI={87le!Ij&LgXde3} zldz@)F>0Alx0|ND<@IF=URe&bR=F=XMUG^ihe=}`gi>M{U?2}w%dnQ5>uS|$nt|^v2hFyQ`^5|?& zMeec7_9Wnra7cuwBa^!&>3^T;n>TNROly0>)OiR0B)%{KFfA3Qq6LCuSO4Jh7W?a7(g-8ufNm=l(FzweBMvx#DjHm<`f^Q$CLN z@742y2I)CA)`HZ&F}QI(jM;h0H~cJ~n(857n~>sFF82-MYQH34Bqu;<&BSlE)n&TX z-LlRB))2BTR}vbBt*yBdCoQ-g9ID~uHSd)C7g3-@gL4NDw*hs{KWJjf2nEv3=0ouM zX-ZO5`Y?0lNm$9v7Lfx+WA#wed@}y(p^hGIIs?83sMye-z|Lz$uImz_**P)wJq{MO zvC&Ey_s*qa<7xd{u3{Q(g}6}X{bu1s?Ey)9aFwJJY5xC*wCV>APdV6>7k&$LW*$o6 zqQ#qun1jvqiuHDN>Lvco*WsSKlN5mN>dpZVY)xm|z!V`;&G$sd*=}p|(!l&c#-4ct zKl!SI8~?kXB*&yrgPMW!3~gM{yR@pd2i}wlI%`k3eQE7!ooywrO!1V}5@htRkTiZ8 z1BJR2s;TgdYqBfs>@UY`aY1&umV}E9FV}OAJL_40xg5M^9t^XOJ~CfHz$u)e$jdfS zv@|a(O@R(M^%gmVsH$!Uy?X}w)_K^*vCPX}r*jlGl~1W9&*Mp~VWO&NMSz3FxmP{v z1G$zBhU_&4MbN@hO|aI`!axbcD{1eDFqHSM)gLblUSZ31L5s`_F2x6e+Wn+v%xNqL z976T*FkoatF8eqOAcJ;dSfElwDl{Z{aDTw~R!@8dy%qNCeds$5177{OZDp_25iB=T zvPv{PW*P&bAdy7xx`++{RoT#pvK_a-TE(*0FvZ1&5-4WK)z-xQv8WEx$X`rWY%?Rry>}dnP(-JHie(~S|ZNmFm(Pc9?tR!%1}V23u(BA8OMP2`CexE$I3Dy zB_e%f5ZE^gLad_}H{qwaB&05a$^@n$kWt)S{m} zd*cUV3#*lC+{7})QOx0L{HCqI#Y*OhcRh=P`c@)UvboQ)AAd?eet8aN`LT|S*Bg9< zIlPpC)q+~oY6=kGn?lW)bqt zFllNvIth&@_os|sN^#lRx>8^1jejs<4oQ*2!6El*21rUwyP)?Q>lKtWU^q9k zwS3$m)GyhL+i4k-`ZS9>w0;*_9|!JJLcl}Jsg4R2?wt81TEQ{8ljI@Gc z2e|Q*-_O_5IcTOSd;;YTvXZm_pIl!;RjkY&{*r1T{9Q)NkG^YDil4d{;iKCXa-l-C z$%TnG5m4;t*-7T%S6})Y%)+nI#lI=U0bMjez)$Uo%UID>{Ke^V=E(+PuZaLzTuH|% z@(Y+X3{9kwx=fhr?5v%|VBF6N9#c&mncoMK~w3=Yi5Pv1$ZvZLu zG}4-}#DgJ!l-hrQxV;TxKSWVV< z>ra)zfe=PLq91(3!cX5o*(MDQAq=_SlpVwLc2ezjKoR})r~O|~`@&pQ+p4GnmOI(P07Gkk6mWqMuqm3fKFTSJOs@_I9r$8u) zJ^3eOi^b?{jo*t`59VpSLkiXPw9XjBZGx_xW8cKBi`~N4;{HqAIPkQ-=*%{hih+n) zQIMLO0^!utCn7MCKu6noxQbJJ;iG%iL8l{(jhxgSf3%7}t<%h{DUhsS{4S^u_NWWC zN&G*EAOFG!#P}jTZ}MH7qqVw!$~*_Iui04IRl(cgk>!60;S1xvPIQGMpfEv(hBhsefNnZ8|CncyI+ZZQ9$4p%&8KD~&fui`~pKH6!B0u{%ICJ7o zvXE@h5EY%^%+2^5W$5rq*IH%yCmmrNP!3B{MCZMN-b>7IHNJM=And^Pt9(1v;sUJM zkuHFxj%?D7UxNg%g#lzjs{g%f#Q2u_K3LB9i8r!?^nWaXY%DliM6M1CHoL)aX%HLs z!ea6dxd*NMWd@Z9W)0u5z*|fR=Vsh>6%iNly%3IVIO1HAZb(h2g?+?qqT>bP-iF^1 zEiR`f#uKDPNax7Z9Ff@IR`Y{szq9~x4jg~Vsv%57mzkB&+52Yw@g{^Nh4REj#~JHs zACUOAJ%x^KnAy)ZlzUt^Q_8heP`@%D-MALnqq=mnm*0#hXky^g-h>4f95>|3xY=Vs7mO!T;lSWb3c+TS!aK5i{X8IJtP&7}Rii*US+(iDEd7;u9XX zZuMCbz9ALsxAZWiGP_0ZoC;G_!jvu<*d@T)aMgmo*3h&vU`^JX6r2un!3LSQg_tm~ zeI+uf?q}5UJ$vX0>Hn8mlWV!&vI7grIyPO14;YVK@m_GBDj)Y4ub+Y!nV9!pQC>$- zQ-`#JdaYvI+@^HsoE)NH?<@u0Mua3pedazhMTVa-~cq<-@I50&;opd$xk zB}NTM$omh<2DzHtdexCPBA}a#a4kO1>e9Q3{)l=5>}y(J)r!7XQN{sBHd%0?6<1_Z z=JTkAL4aF@6==l;EBXN55+&dqDa$dd!@;-Okhux~IEjz;`TvoL>uqDEBW&VpUYF<$ z$^%&@G&3nd*(EdRqn@{itq)r{;3v-?*jzR9-amb^=sQlivxn(TDftq{sIYm9FUU*^uh9m-Br|S!R+1 zA?p$Q!~9ctyablAQKC^`&9{B>HQnuwXc4>%K6J{_QiFzV!|y9HU5+FKcHCH zMRa(D+|TZAdLmb0FH5oQhcchgnpjPt6L!>V(mW(Z=_ypR)Jfoq+dw8nIl%Zg4$H=3 z!9-E_Z-+Hw5wH#7B>3l{jxBIc<94dWq|NF=%Fjx0qv7hPMxHSQSo)XtDIzA~9@&Z7 z>(#wmSami^PHLC$(vzn|h- zBwl{to!pE~Btk~{9*CVWqrzm1VSR+A`i2U}$8We1O!7-+=s`q{>+b-j%{LRw8Pc_>zQb^6nVVy!-OSKWF zztoaNshDPl72F(r8R{S29y8vLc)H&Nx8gcBG~GJ2~em6ue=IMRdUKQ)-d>e#q+Ada7-1PF+_Vt}nFq}n>|5cBu@krRLX znTZLC&cbal&X`-?$q?>{+sg`_^Q^axnFF~cG<4noeUXi^s_E!Z<1~ACM4m4~G25@t zt_2kVmyp-pNMq^b=I7tcmV}d$AeRXh!JKC1Y~4i03H6y1FBp@&k^2+ouUVAOb>u6p z0mf!B>_#Gx{ZO1p{V+6yPJDN%u_~4r;y@d5ia^z2gkJ~Hr(!KhdB1r+W00a_OT@fEGN! z(wl`k$goYcb#5K_UJuf*=6Y&d&`YHZofgGMLra*;Unwii(rPDc;MNbqWqjb_({}&2|mqlAaSU z2bQ>hAKGbFzn%d>LHK995!b!u(|Sp0L%VxdGnp`w)7b~M7fbLl==HykWX# zo^fBdAZRLiPAhvij);dPap%X?KdU-Rnzj&;Jz1nrh)PIrrKYqp&RHb`H{ss(PEU?HkF_q%EQ)WM5M?8DJ7|dyTJPtK@E);^ z2_ykhWfT=j6So8v3`w1VA+Vml+@!M=A3YIT?6@CgnO#qw81Deex`=SG)1B)G7x=|C z8_2jJqwZ`Im!F}XtS=E(Wd_wWmvr1mb&*g} zhTyLR+2W1S`lf&N3>RJLu=j|A?l9wM3pB>TRb4|#`&=`ZVsBo?N|j2kw%8%xMV?0W zJ5VD1LzaQhRIRL^N>~%6RwVODk=+R;-!}Cycm_6^jGT-*fHzRRs7WWVpip16c!VM# z6|*N9Mw~)n8kQ^^0Xq3OLN$NsvtG=0@>tKc+1)qDR*-Xr8)Pe$&xBKr02uE0CoJw3|KnQr9kefk^8qT#}?;Uhb>=GE&iM0&U#MJZ-;xlklg0IB7bgy8Ui+1{A-5+YGGEmyMjf-d zv&z9r)ViC6t0kGC3SO|bXp{kprB@SYTSiE!V6Ro_VuD}uD_tD(ZC<*3F2hLap@`#Y zv_@<>qDP2AA>7$%Vu9 zftVj75nwVLbIs_vzK#90|X}h6LgpIoa2X1XP>(^G+h># ztTwCSZ&MWr*mXoLIZARqU-VwRG`&FTmL&VlDnjV( z=HHovLPn|ncjngKOd2K#N80Zc>V@>6fc-ZcTGg{Oz~vt+3%Y^m(I~YM`o4e8;WZJB zKlh$M@LFjYvJ>q((PEm%S4A?H_G*&+p@%@dQ|k~$O2b@;;9>Lr)({XMYzS*RR(PVW z%vhn8fMV1&P$q(z#?MSXlP!6|<}%i0TH|GoX?J8{oj&ELf@UAj!&#eKn#F$r?cGLN z!l0$IPj)LBxt5(!9irs7aljhXAt9>;ml6Y#y+c(cZNmbR<=cokq_AyB>sFyAApbEa zM_+WvZK-3vDOX4_dMAiBR(7jm?&WMnBkvoM#c${Ouu=v{q zWW2+APi!o2uJ*@)=lCj`*g8N1Il`)RP$=SLFp9f#Lm}zulHTO@;U$OD0sqI-SBEtn zw%>1KbTR zvBRoZj{%9)41#T4maiVdKlAAla{%kp*uHtDYcg*psNVP$faAA+tpi+Zfo6^^2~jjP z#7%{bFMAlOE<%O30EnG3xiumvgGr0~hX9R`CVrmtAH4N{KiJDV5WBkd_^}&Rm^TSV z+!Mt9wxzf@?txr^x4~MAm|U_!`$WN=jJOh)FC{Tq?7)b?UBj0_vu_m`qB%-q7|3TI z15_vj&$)uFBqqN{N&DslOjM5z6NL4twx0&$p~u|3&|^h<@K4F@;;!Mz@1vM|iu)IP zz$9w0XKX-w%j_F(+-5qW*_^gWkUp?`TUefa*By8cFbUB7S)xd3=sF--v?tDZN*H#f zO24-bfeN>7q~F;yauIbU)_5#p3>Gh%{8Jv!GfCbR^_9CH{yL??JQ{J&WX%U2%zW@B zhC9Gr=Hb(I`|XaBT{uj$=nQdWAr(_KgKqleJMpzowhDB-*Zk>n4Uq{IMZS2?+P@@< ze~4j-=W46&6o`4PY9+xpMyU-aGFcf`QA=x^ZzUl5;Z%(fz?yAhbG&6gJ72(7Roh_?1NxjgqYncz3zK zwe~w$p1Z)*P6MP)KC@#^zdkW_mLpS1&U=U`Oyz*yjo_{EH{Rfm`+Rd&HucqYq8 zg~mO1C3(+;2YD%0&&L_8?rGG2B}sKleBwCXBR8?(9RF}m-&+EUn2!UgXBS(DGiP;~ z7o#hslhd3fkT%hFS?8t9yzgq2GYaifE^Obu&87$)hnR3A-~SAdSf10Si7yrzh-Rd^ zq+_2}(cu`%&X~?@46?s`A8Za+CA*&C|l_j0*(g^Jwc9{s3l_L9m zBa(PP0-V7ryYvz2N1^Igy7}yC`=PdpAGRh22CS6EM8Cc8F^y8t3COe$6#B7|kfV&( zOOY&YJmGHYw)RuM52eFW%xudC7s{M}Wb(-KkNU94@{2x{`%}8R3}@jj7OzbW#IpDIsxwJ< z%y;j-;qv3}W!$==JsBc(|4O4$5>9f{;=vo2_bktQ`;snTT+cS!${Q$Mi_8oY$lny zE$I~S2PuavgJ!l=Z#cm0g5Pa_#kGH0cDIN}*F2rtZGAxTBHIxP|x zsa~E?JzZkRP2NxiWVFFw1vtL$XVytqF2V-v@8#Fih^0RTr;9+z9NmD9+=~1fT!KP> zUw4qsJu(rhPWfD2P$L#mMD{!1YguQOUi{ICN6|C0Qf1zvM5eOuRCc(pETPl|F6@Rc zRZ0JTO?e+ZCRr3>E&awgtE9z-R!89`;F{l|y|Z5&w~my0K#6D8mE$?XfHE6g`ejQzJUYnha%q3H|vkb4S%hIRQ0psi%7! zd<>`}^S0A3|9|5iHfXR2k2BpsLt@&Gnj;(Xou_PBgoE!}d)~~HXB|F$%_Yi0%xnZC z)5J4kq-eS03XU;OZ_~$?*Jz*4zWzS+RhfIfLb}BZ{oLw=#HXdRqKc-60KCoVH#?FQ72ke- z@0t^YiQ|j}-mJBP>trASTajul^E-2Wy|}uQ#j&!x_{+2@EcSuM<1X`A{^W z((e>Cx(Od}TlSmvf`A}UVoBVI^@BCAti}W(SRs;0i3Uhzo~Y(rQSY0Y^=&XnD{E7+ zlY%7Pocqk6F71lBO-Ogm-}(+>o#oVkgap;~wXS^wjoRJ{(Hl(39J_d(lz2H2oELHZ znElQx|8#Ych;9dr{NL_0FQ^O5T);!FsU27(Of$UxJuWRKGi@le^_D*=PMh&cMGRRO z?WM>z(+$93p67_hgH>?y?=A+YwF+RO(w4bx> zqJzV>gj33+6T4HRz4n8u%2v3|I^E-Fy8^e7b?s?WKhc;nXu6R`a;v}zCw7q$r;M0| zR-6_$36`IC50ECaiAchQas9A z5XjN{aNmBAN|0JUnVVaUhI*M+Rp%C|)xNCW63P%#C1d(}SzcY?*|S$+3}O+952FYR zqfvtFYofU8W0}JJ{>`0J_mra_42hb+P39ekF)8J&Rn)LYYo+!_ZIC0=Y5&LGGO+^N zizz_^`OM>P0r?G3#Ov8>6DLM^z`8myogkW}>VFH}EFpK6{&9etcYx#Am2xf}g8f2? z`#O>XTF+?yeE$Zvvr&ad=?_Z$z{~hyD(mOP#ouP-WiDXr zkieh*1EiE!o{EcJmKg^U(M0}W3*d7s+X*spF6A*VVK&eVVe)Z_dsL=5KhNPD!Zdw6 zY=d(?`Bx`^+Hc@~Yf)wYSY7gjMuDlWLxxC)#fb0C+J<>x12`iMa@^a~mGUKA!?n|^ zYHuL#Pa=Kqhpw^kM=M0m^)fz};Lg)~vjaY}u->WKh-+xe0OacZ_^H-aO@p=*d6+PX zh?%!xrdv_e9TS6T)37CA3g~kq>)NsFd+_JAqn0gN)!4+OveVNq1t7;^;Uc>`5k!U& zIBz;@p;jh*8ii8*j8DD6u`UJ7l{&OH?&hn&?Gz6#v&3VQaCvND2^$NiUB#q#vQ;60k4@QYgo3n)9(sgQyFoUHKAN27`rw>W zM5O(QD>gK%)Q%d&k$Q`Wz7dC{CNGwEbu(2B{_dXBX|UtoR#<-*Oh?W2!s)m+I6er= zf+-Y8|DmY4pQZmEH3rnEM%r+@i4qRBX?V6c!b9P(q%f5^EdO`5BSMs!%+;JWEt+G8 z6&NQEi%9=X&0kEyfjCF!9ah)s1bkX$wTtEaf{!eY=G8&?-cA6~{Te#Q&(^BKllRv9 z(8~o)?6#?HWIF*a4n_`;fOqY5JN%W?H7BL3PX$by4A(94n$)~L|3HciW~#;%L%uUA zPq2JUmK=o~zge94ErZ*z&aR8*DqrR>M$=*32^Z=$5wq)SM+vmsOb15^fer)bZ#)qQ zfU8isr**0mree^5g#sXwTls^05h;?}FvXw>Xm&iM_^0bY<2E0+Mp=>H?^u7>?dcG% z#aAJnl-5-p_O(ll3umMr69@FiNt*}H1<<>0%%dCc0-2@VnIA7a(#T$7kid)hzRErj zDL<$g&o;O$1x(V}Ra{>U78#qX9E|)foX#GpKoOBH*4umD2_SSOfm6ph0YbRadl{${ z)z#4!5ufR66JMuthbn_ZIu$6u++H4>!i}>aw29L(e?u?z4EkkD>ufJI$XRD9ppQBO z{zGzhP`6+dcgMrdidC)szp_s)Ze;sEt-$1^gTPSX>|$LhqR073O9`00Lpb~G)o@8MmVPtcf{(Yr3YXM*U3#DFJ_?x0DQ}o#8UZc1jeq?Fpq*A=XL()sJH(zLcY5#*NvgtSO4372b6o4OYGg zQSEf+SGXqtH;3w%{CJ#TN*eXZ$L(bO;RP^!8i0gnI&eSVth-6iNJ+R~xNj z{+5N>al9dM9pa>8hY)w*iG1jep8U8rK{p3Vp&oq`mi2WX30-B_0LFSXco#Tf+yq&r zUm^u#$o zJuEAAIf`df&5&s#;Wz{*l@5)jc2RLB0UbmWFA!o_gNL35n>gd{HRErqOt~#42o2iI z`kuEKbJ#ryUJ~r)AqR9ujp&7`$L#0yG;kI@sAD7&kVQZQwy3L;g;WQ9DC z@6wCbtX>ky%{l*m4;R{KAvWBmSE3D7tXO``&Gg{J+Tck-e+t!tE-9W@bu@(hWl1l-RKmmYU3kxOq)5O%<&@^TvzIYW)pbR{xknY$~ljHrSl!q9=F9y z68fKqU8s&>EvD1&_3QI@_s7#U6@&;~2aVE8c?1Pg&?z8FO3R#JHa2cf4qyS7nZdJe zst7d>oGLtUub>(I0}H4au#=6CGE(uDDE>1^q+Sb!UPC4>9;FhTTJ2d?v&IU&kJ+n* zvUgQ=n%HiQRPhT-gdm~-cKn%lr~S7(%%k=s8GDy9RFA?_=K~bh3cayklpBzpqyDE7 zerOy2cLES2=dAv|+*qP=O%ilW`bd0$Uju<7ctlG^yw?07M8)t})s6N+A%#i4(q}uX`rTQYqYhL2r7>F`3 zWdr&+lLE@nRxDq{C)I*D6TJ-d3eF?TW;c@mFAK1M7rhlTm~m|;sSfv2Sbjroz|`Ol zCAra=mj8Ef8~%CX<^pQU;MqbX9T%+qaXZ?j_CHOKJ|=C~B_E-mf*~*|1CoBEm?PYr zPS92>$b&l>JNyyQU6*=9#c8IysNp{kFVxdq@jdO6xYknLAG`paST?hd8 zNY+)###BDawD71+CEC))mUI z$X~ao0?r8mK8m+Nccj=WG#)WaHwNQRamTuJp)-J)x{j6Z#Zsv zDLs}0;x&)Ff~8<~l;8)cPr#9#cS(Jcom9#kxUFCtHx4U;-p)AcB66)rd1)#_Q9MRz znc?XMd|`q)_d}J-&%6&Ww2_NEfP6mI&)O`A?0DYaKv)3W&gmMKij=q*D%e-d5yb+s z2Bpk@k$K?hi~U+`O(9<2Sb=OTl>nK#$lOKOC7Nr#0A2NjEk(G_sE4WSvYKPyK4=9x zKblV-@7ha$topSPjR8$GC&U{#aw9%@-d|fxpMQ!Js7PLe_J$B`Qfkab*qbC%4vv}ijQ+)gYh8Ip?vhk;PF z5*JM~f*!m3$Tie3&=h*)(;%ac<-gj~w!v3-Eaw~hm|ISjN@;BJ*TmA{X}1B1V-J-M z4?u?`($@6A8?cBs=>l}V6FwjIJDB%lX+Mn7y1t3g{dtY6jdSx`0GNfRDIZ<3;KiMD zBca`{R(Kzk%z91{tA#6BNL9^15t2w>q>5=QXYHAmZwX(`t^|g~M}RAkF5G=Z$?HoX z7#l6G8D9b}Jx9o@6GeEuAiMbVTdrAgN=v?@9$7`M>ge|4PE}DO(Fc3vm>EUafr-a% zu(Boq1L6Xy$2#1V>j7+pw6SL1ZC);?I0%Jq@+3U_KCM)mV`wofIgLGV}g9&QSG9u5x;Ba9-*lus`{tkpgWj zTC%?wl}I+H2G^)T)2EfMejN#vyO}tVdpomWo4qYX0Vu!!sc6R(>$5=8$MbF^8ludRfchB^;lA{;S5<#IBhs++pLI45b|Hz^UIqg#WKojACQCdYA=uqpoj}SSk z5khmkX)&*Yg$g55tYU>|(K=@W8tnGgpb`LO@`iHpr!qu6Xc~mENB6_LIeT z6eE}NrXU%qE)(JROa|Rb{!1y0IVYVrd>#()k@=brMd0DvN_`4KlII*+1ePS&FhtNv z{znBil8;#1FY9XDp-8(&L6ai%H|r_^Tp5g~0i;w@wSg0gkIP6-P~;oY z6UV9e99!M&n3?gr4!|<8VC{IDMl7*NJ8Eq3t{rjfW+J`MgR0Pu-2e9uT#iAJc9bRj)(-wz~|v;PU8(@b=eIXctaNKh+CuEd5cwVXdrn~jo3N=DrmVX)&D@6{%(X` zZ;zKrp*>uCK5)V>jl?R=`RT0W+XvMH;Kq?isYjZ(eWJIz9a4^dFXKC&@`H=H|}P1Gv*!^ z+4(s?=Y6>%9yl7B`@SqFOq)QW%N}P*@gWsoJBXcX{2V=pC z`#owe1p&{*v9FLr@Fpp$&gH|;V^jaLz3)bg=yrL3TWa|`3HdPHVHskSF5C}+!oNNL zexAP}PZ|fkqr3g9<9=4|C9(|zJIcu>lV2o6I%GLsMg5#TE#O;SD&N!L7M@ zCC#LyIrv}9us4u&j za8UCL!ON(jMb(f2h+{lD7P5Gri*g6ALJN>MEMa zsqXClKuF%w+)fh8DYxVAcHMFd{^JU z(q_$UAxIFx0Xd7&ijQzzkBb$f!66}tpbU->qX=UFvECkusoId>asFH_oT3Vf0IPzY zakZ$V#BJlc+%f<#jRV8DK&i%CiZpz4RaFWw@9@Ltgx{X4T2p;j^vF@Lp32Cdv z!5Gl9=EcZ-CCsY2kz7-$6>D(Z$!n1hum(5vQV%~h6#Cwz{55KkL}hWhCc7y2bV&vO z6;`2K2 zU+9I4Ok9z~F)@CW6g}Q?0(r$rH84EV_^JFc8}62z%${q&LHO&(z=C1z+{~E zVO*UfrbynMKj-iDcyKK%?%o9m;lIdxsH^QOrP_IZZrg&T8Pn}8eGFy|y33pLQou-p zpsOKLA}E07?0_}~qV{N9xuZ3&PC+q-*u%uaJ^WC1BL#JHQFBphaq0by z){F1?)lGY29u9_o{&a_f94VDMBcx7R9TLMPKGw3LYLy1dTHIZLfk$D8i~0-zb#7|1 zW{a5#s)Y35cWRi$)X&-gEP$L33bzKcX)_2KiKlST8-L|M(8rVS4q(P8|dOHBv^kH zA`TBGNA;n*o5KVkXrf4dHyQ0{2jRMkJJ{b|P7 zo$S4&4LQ|dRb=FP93UCIh`e!Bv`S?wagyJ9=fB5swVaVQPvi6a)mMT*PKN)!EGyR#X1++FHCWAXx;g(!*W+na<>E zVuv#Pk0BAjYH<-(2692g3>~q86+N)lLW>y<|GnTIX_5c1xY1v zU$^PvM`{mJrUgG(=FsNzAe{rjLsKE9P0#Ro1f(j&+h+QS$TYhn6eyUD+l0(abX-gJ ztI$h<74!SZD(HH4Kp)MMk&7qJ4kcEz4il*|>}R7vDeMcB*uw*A9o$CyADP#q^fckU zFS5q8_R~wmnVu`qUi*svG6{)>r4xQyr+HGO63eHufd#1 z^qCz_0o!YkeNm|pe_?)qAvdIH6p2t>SB;V_`T#`p8(fJZt3cB8y4kkeynF&b%f6BH zYn!PLbGm>P++QbJcZWlY?x(#!El!(uFzQvTd1&4NaiYTsjUoyCuo+fws{JS^vkYlJ zDW-F3=$Cyv8YUrfiJJan_N;)ME_Hvl2#JXj@~zMv$wlf|MVb2mZ#7eesXqF>#`4f= zb-_PUPlxbuE@A#BwS$wX(A4jRUQWnLrzvkp$V%naQS;T&reEBYr>(CO;QSukBv|B5 zmgVQoOBr8B>TyOZ2gwdko+NtvH~#|1T90O!1Co$7C!P;v6!VcYxh=jp6i13dSpo2Sz} zVm$X@_bUQriZ7}FurgSc!+%v{JD!9joHOg{_l=#iAdrtSG@^~dJjHj(<=Sh7(adL4 zIyN=5vbJ`|#=T_fS1>sj$2 z|5yLVUVb)&Hn{Zz9*F#)P72IwlGMIL2xAEFHD97`xZ%xA%AG1rK+)Wiv0swT<_y(? zuTiu+&nnvg@*8d??Z4|YGXXWUSeay zPUuhY*^7Tw=pf$zKqRd@lCx*G3NB~}swpL$EMA+5ZA%HTkP5f^rZ->yh8*!blPR{$ zq$kB|)gMz=%qGA;BE;Q9H6iP9T@ZaCPS>oV_20%ZM9Ftk+`1 zxX3rpZJ1vIg?l$8j`_f(QNpc(WIbrF2pgqY{#V8Z#5Vn9ZVf;*X`8tk;|-jgG-!{CE;JxGV^}*$Xa98nDNxDl(S6laK3w?0B7G!H{XVjC zqOMwBQCN0h8!KPnA2?xxo8VXbJ-_hlL}z2glETWQ@Cbpi+!0_fJS{jk@Z!GFCM6|qEtqNu*w>j|#CIlqy=c);Ro{wdf0n!lSfIOvR1fbAZ}#RZL} zaWdPHRwU2EA_$%VbciAzB)H#}h{%E26H{ZB8Q9WQy+d)W`M0k_7Ox%3C7<{n($?=) zd1U!97sgIn%LofoNk|r$bO(4-%xx{3Rjj<9mxSiaK-VrCd-0F~#=W$8?qwR8$2;G1 z8s9$>TA`alipYC2_Wvtr$&AhaC5{Er3lDQV-pzew5x%$i*7dK`Rc%1iFf3$Aw@}z+ zMGWwBBM5SQl^8t4XW_x`<}cAL+r!;*f+D%XQzLnS@3=-u{-};h50Bn~^A({I|EwXs zWwCBz)scQmT*j1|Y#%>D5tCJ^4|9O&_qu=BENs^Yc8P2Mpy2pye!o7sx|BhpFJkh2`K+*3_n3VD_P5(U_xD0;amn(8 zd`YdBm7nFUYz6LgJzNrwct6WqzEpfAe3#6`b|=vI(hX|KN9rQ^xQjapdD#gQxnQc_ zK#K=RR@Rvt7dGuW4mi!e>Je+)becmd-lH!tGzmAP*7zO?#H+`aGlIfXGEgn)W(eaW zM6?JsPA_ke-qhmLzV3{#Oi2#m^KG9z>^ux5&F3oR)jwXfao=SVmyCTV+mzr@tr?*H z^EAhck=|(yIbRSLP-Sf6hQ?V3pSeY`qvPQL-(x=ERhkt3#aQBCc~vI zc~wqF^R7~RFS``~Sro*AqV@lX>`tdB>#5#&3zYXIPj}+hj=>`Hq|kS~kJEprJ7+is zkP59kLQ*;O!dI+QKaal|vb-N(N2&t82@%FCD9@g^;V3aj!TMkGKX!F$$zGT0$Gw&^ zgY<7C@0Ws%NuT&JR_McAlX1A$z73SJjP>ATF_@@TC#;VZeTmdNtRz9JZx5?3h#KI~ z8Mg?*i7U@*NQ#)l`HgyfMR5U+T~;u@O%J=u#5rbo23gr$xOG-t3bJp@u)$eR+GaOI zp(jJ2|3ODcqr(>@em`L|39NXcSE1RRO!&imH?BssfY(iD{zl-nbSmVQnTst|PtFNr zfP|jN>7{P(X}L3NI0*{h7fJkL+ojVX=fr!4=$qG!7G?@XeOy{=9}|^T>9uN(ynx+% zqBZc9(b5ZcCF<)rFymM~-uk?!s*`MY)-bSKE)KuO>h$YcRe{`a%9_*O)6}a5J5A9_ zIVgjvWNwN~x5l{GrKM%9g~L$f(#dD>j%|rn|5q>T*jGAnXqkarlmqp?>7U@7XDnTO zg|dL1CMJ|s{OZyhUfowq&JXPPFnTIFt|WVX7ZH zJ|p4Cy6q$kr?jA;RDJPRS8`QcEpzK+!$vL#*;O*H(q`28=zfCQ9Et0&1| z*phF=E~D$-_$jZ*oGRQH#Bs@7IBrv12JWm0ZI&Ghh4Y@pcA{rnd1rPVh3?kVv^h zadjR%Y;z3n|8-O}P2wLH7s*U98#Ov*ENo3xHfL-p+?VqrtBKuQ>loeYUl_ytxng9g z4tmHLcq3i#}^C4Xs|;D|wXtv+S{_oFV}$;b!A^g=j=i6e?Nk-O8K%&5_&;N%a3 zYcJW;2g+}$_>Yo?)+SOI6{?N4gv4MXI~y#gXHHsTS*{?xRsa&DW_ zx$lR$4YPh(FpqlG6#RrdIgO1}!#t5jCQsQO6vv4}wx5#*hfD4V&)0%77|k6Ux+lCQ z8fVagPVVn7#N93jhbC-t-+|Ny2wXQ2OFw~1gG*14(C*lP#f@9{p~bbPz-dO)V@pdR z(vEGl*6TJZg5zZQi;GaRi}lxzT`Gr>LG{EY)gmEo(t%fZw;o)Yh#rvV(}Rf2${_d0 zlPi2Jw`C^S$ty93y}H`%$7XIkEeHAKJhU`n+bxx`OK-vJjNzf|-w5I<7%EU^0q^dI z=-dhWNKu(-!`na+588Pl@JAncz>{57p`Oo8ITb!R6{lA(kC&9iA0JH0$n=Y@Q zgPGLa+wM(o5>bn80EI=jm?d70>k&ndO(m7$w|nEZ_2d&ov!U26*ii(AWyFGoOCn$(FclRKM*jNGI5_7&-s8f{>$q-7^oj9PO&4&uGHk z%`h<#k?!zS=^5xvBfu_$bf@~2_{}TeLt!CqXp>^l?n!xD=Jv^<#>mBAW87ZcxRI^q z4FUbP#D5-QGt=F}JPJhu*d`2An#TMk-cN6x;n5nIUdBCAxI_9(uNSMi9Nf?=T>xFu zWazmjNOfR;&o-l*n|`WSGDSoJGcl{-CVyKT_gf*Yu4Nt5RtGs3?^JQ_NMa45k}RNV zegBJC^qz8>0%p=LZmBQL@*y+m7r?C5<5Qn6ZXy8)oS5#?ZXT;_F#7ZVvH%JkugNGl zw3yUsm;PksjQB2@T;l&jgI~1ur&aWsH@v$~pTnlt=cXinuI6PB`3k}3*N(5J$`&K% zOpxNU>-Nq#qC?cZ?nQ;tmbDTIQ{x<89Hu=t5&$j-6k;yL}4l^cW zVkwCx0N6-4yx8l>cA@~8g^vd942WFLrRFG6w%VTy1%VMcjfgDTX6-k!+1AUT5>X4_ z`bLO~`7J!vL4Hc8ZeB&}%xmgItEI9$kNrfH1sNbSqBQ1;sQf11xXMd@J8+*W4w8+9 zV9G!#mTF|o(23t+N?i-f{(1A6mDj`0x1y**7qr5|h=VNN{T@+uQ}4)dP$I6J_f2Kz zND}Jp!}f=Grbjga@regfvKmy9#)PZImjli61}F6;yqMaEITJY@PlS2g@QAqD`m{9> zboJ7o3%5y?`1BpKS>JOMv|yB8GwCg!2z0FxdYL`!vbRi(|F6qNmifVdW$PxFIp?I~ zPTt&SQs~z0R~G048;o+aU&BQv0k8Kw z)W-G~MNj_JWbXo!;>G+m$a62JP*#MMc;)J-CImCEQo4*rXI7{D3w=qi?dpHeAjVknlU5Oyk;2DIxi-SHYq9JG=|wrWdx_9ag} zk~t3GUUoc!!{v1g37Hd8_9a~lV)m!P^(T1a*NDvfxDUMo(7uw3QK+R1eB9!+0Qmq~*To?2)dNadlDm%~3eS~OGUvR1#xrH(y zo}}9!CZdnj!1s;E*6kk;>JRrorD#8_p^3&ED!C}Sps zFV0$_J}*2wVtcn?>fbf;wb?&vzy#%FZ2}4GusYhm=l|xfa?bnrrqlgcBWE}GQ%hS( z_HFYHAT_7#1obpXB#8Kfj=2VIqw>*tIS8tMHBo1FEcq8l?{aS{{|*$qv?lJIGYX%& z5P3h@#>fSR@6upCS+zIFH_IP}<)K8b*Huz2tGsvphQ;J91+a0l5IuVbLtyzj;>TXl zpTrVG?K$8$kteK>JP)VIA4N|eo+uJk5*4<@VNF0U)Hk2pjH}W*wLXP+YEWU$uKM4H z{Ssa|Ya6nAN#|!M&H0~DhJG;1m#3%+y687=$%N-Owy`a?-`tcLV!=F0-821w!d)f| zB|cmw8XukUn#`GdP$>Q74}C@@t)2&6)4f}_y7`%}bVW+ls3ZrC)gAdf5M@U0Vw@5c zNUr`;-t-lL5mi<$x40S|LCkRPyE0bysL_0%-I4{j zp?&E|dZBW8<|~8Q7H5+M&$xzCkCS8^Os#Tdfk4nzX($(`D&W(D*r$3rM? zy^37fhP-i=*p79mHuZNuw6f6*cXdlCV{|psGnq#(Kt$@&R8p-SJ0`TTs%WN{Vwf0X zZ%_T@iWusIs2tkB1)=^q5!s$k{^M(*b)pvos_P-4j>2vC&HA3@W5A|xy>cZj%f!!X z%H0~>JT}=&jR_lnbeH`TLdxvWW?M)0wMAp$`V@!-M4!5SF|WjM%W84ZN9T)r$T4+& z2xLr*0{n5L07G4u)_V-fG5q~Ci_I3THB9k`e$ai|<}nZwpux8eJCt?t(-w1m3V*ZZ zPC>!FsHH&vbgrTNea|D8{mq$n4|!IzG4ByUEERh`Trq@x*S@}QxgI+3#G+}v%7dik zA(PARt%5L{$tTt8ueH6(f4;A$S$#v}H^5_vUZtPD=BJPE#�yt`M=DB>OoqqD|f| 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 WcwY_6_fR7JvzCUQI#%`3>;D4@Mn6UX literal 0 HcmV?d00001 diff --git a/legacy/embryo/doc/img/embryo_mini.png b/legacy/embryo/doc/img/embryo_mini.png new file mode 100644 index 0000000000000000000000000000000000000000..f4f99f0fa3224a7319ef0d51e1f2235c5a4b7bf5 GIT binary patch literal 753 zcmV~${x~c#G0&Yn}K~#9!rIK4nlVKdjf8V!*n`dqFG;=|Cgi14(B}SSJqq49I z@kUajq@>V`8YG2~K?e~+2s5mUE+p!%3&kKRA`cm*mR_t@j3T!@yMwy#TUQ&)G>D$7 z_y4@l|KZ_zUkJs-*pvC-ptx%({r=H5od-ZmT~X5c(}(@QRuQ1*^{4#OP0}K;mo;&% zvCP|Y);tv?!Zpf{#aV|xNIbY$vUK%S;Tu3utlAcCUpTNm!w@ms|6$SxAOvpet9Er2 z=BC!9Zj3{hmOj6&*iy2*A`J%}!WDAvj*JbP6BM4-_U>VYfSCNvG21JI+5?Ax0>BD9 z0v7lu+-flEJ1yodq1nX1;Zj|3_fMbNVRwg(T&Xqn1w_h#&=9Yw)axTj%TD+DyppM@ zYw$M*O;(bY$35=`^Uaqv#+1w`Ko=@lb}g+)M~jS2wx{*B(J!t!zy%QK!Ea26I3BK6 zREr+3w!FUm#)?m#1e~EgBm>oe3U~?(0Dk@#!dhfo!~PVn#0jM+RCy#ZSs$embm4xx zV`{$ROxue)z|tQ*24+jm?q*r3wnu0b&8XB_KE&v^)@ipYHYT%gbUGJ^4_#2MHb{(% zIA)0SiEdfxG3DsA*=73#IV>+}eBdRW#RqF`N6tClTb<2-XRQQk$?IB9h>zyk(AUPC z%KN2aZ1v5Wlh=pj*n;`~zFyCW)fodst(U+p%F@HB1$Um=WN59}W0a${Vx&sFfami) zr)_fPxmKf`aC?2ydL;@#3Q)c?JFy}?H7Z%7RCvbibJka5KkUE^FbMPqK7#O<*HHs8 jfEJJeH!uhILWREo3h>l;^}Oio00000NkvXXu0mjfuFYE5 literal 0 HcmV?d00001 diff --git a/legacy/embryo/doc/img/embryo_small.png b/legacy/embryo/doc/img/embryo_small.png new file mode 100644 index 0000000000000000000000000000000000000000..8bea36784e16f39bd41b17e8bd6808964340a9d9 GIT binary patch literal 3755 zcmV;c4pi}pP)1$4k$@PK~#9!?OAzrR8^k-?pvx}?Ukx56|yIUgb>5tECLO(h=Oba z(>U5P-7VVgD~+w_5rsipT(D_5Hq6k90`U!cse13-`GXrz zPMRgLY0u0Y?>Tkq)UEgKZ~yN1yBFxpxPL@OA^;HpNZaI+S0AJyS;c^KBgW48;)i)0 zUp}4E<`tAuN&)DFwm)2fFbX$sucaAO2O!v9#8a6Gmc0Nz0HEoVQe56g)33Ju5CCAo z6TiGW%5FOR;g-@m0DS?R0sy=|d&n}qB;-*_=~Gj3O4=`zvg^Z1lor2Cb637m*ZvQ^ zz>{2~PFxD$Vf>guI!?@<+;@1dWLtgs&ZGe10nC#mX%CA*9su({NT3uutej8&Z0_hQ z9>4$e!1SnrkKUWL5y1BVk^vNv8`vcR=m#JRKnOrFfC~Ux@skYxMw1&BP5bk>fk~;~ z9xf?mxkYal2mXyYBfk}m*82l8U_c1Jh)2!Xx!W@UcshECEPi&>c>!uVv^?A%kDQia z7bd>?^(O#)KjdP2ui9+Z^vLK)^h=iT&b$YNhMGoHo?fyDfa69laFId~^Ox@0E0IvE zCiQ9b9ykzIVqm|Nf~I$m6{62R4t5-_rVT(%N!#me0C84a#La6tdKz~;RLO92eH zSqQRqT7K2q`Sdy=cNW%QvZ0=Wh74BkJEu0RC-!PX8D)FKH2-x= zV$^F0FG2Q|)CL2CGNPmbv)3%sIqNJh{5gL=fH14z5X&T`Gj*T?kPaZ5;YAdiQvi6G zrq=*eGKgqq{->QTw01bk1F*1fJpexdm0^Et#{&C#{O=ij7f@H6G%UT_yU&a%uXhK& zdGpu57&CKJihg5$X*~<}j}kxtXqL~Pyf4;ai<@|N+QtT-YDi0QJZ&}b!!jJk7lB z0VwI1uG}pI82eVrYU`bFx&4qdJhIcRqidmIZIO95KVSSS^`Pn5M|*pYCwF%#@vEU3;r}aYiM?o?eO8V7t3qiZD7|a z0rchB!Q2_Tq~#o(F)6J?~&&!L=H;N2r|@;D7#;!%H=sicmO=Rc}mK2B3`bo|RuOo9;WE zzwr_wWc$twy4tjaNCVq!oSh|J8UPa)K0b6=pB_;Tjss*xy=*h^7o$z$#FSVI{EjHB zTYve8v%V%nO1Zar%i0y&_I!VJ5rC%7Z2IAT>GrbBIHSWK1SE|@wIZKRRip>PDmEP| zMWn+Ghgr#b8hQ*+^J;S@104~4qnmZv{-{)GrmrIT@$7FZY zi-`_%_v9F(eZ#@hBBw7L_-xy`J*CwyuB^r_0w@J=5rDfh0sw$k)Oi~(Ty=)OJ6GrO z1QoLDMCH{%J!8zjeg9DI`3h%A!KH=<*34dIReTOWOJ`XHVf|cBcGQr_Dpg_Jrxid0 zfO-IhOh9wTF8Ow}g<}*Y89)qxIF?}?<3Ei|dlwT%yWD`Z%Qg+;MF1c%U#sni*3Z1? z=kb57`6jGbxDAV@Wiw8rS@qg|4wmym7i#3kclljdhyUvBDRVy0E!ympVSHk0-(rNr zhYBlw#eLIk&v8nq@IphdVN|+#tjinB-+Q)k(<8&Xy;oW9esSvj-Rl|M2{0IOnRfys~HUSEuq= zuX>Tu3)h`CfPD1Ixb6#A9QJzrq4>9-9CbwGi74odPzgc6<3T78fKJ0fR)G-ZQSSjf z{xD>PKqrYvi#H){Nm`xY(KAL4gPIwf&UTdW44$L2|d%}M{rbzHq-*nXoo83 zVAAo3H1ZGy0=<@lS6huVG$Jp_p;majA(#{=(&Hkq@XLZ?qtzshADWsd2t=dOR#npY;SDAL7|G@&=%wvQPl(9aajZOxoeg;yvkTn`19$)igFvHg z65v(|qzEH=bc=vYfdhrt3OxR>cg^-Q5&(;V~by5)ZfAAY2&Tnl);lz^MobsXSy^3B0@d*tA21mB&~S8rk!) z?AjupdDRZUq|s=k#~ynu_UZqam{f6MwLt>|efHgrCyUFQnivY51n?bzE4MbVDdjgl!4Qm)%aK+x)di%hf+ zl60l$4iI??jw2w10)#*$*AYq5aL{WA3|awJy#{^)>^pf4-mr*= zUYbD-*6!r*tG>YMZ%=IfbW2eQAtXF@Kq5VKx@t!tq_p*T@|}WF3PAqvSMQnW4ANQU z^&XlUt%XM5h%ZRhqi1Ss_k3Sj-r@?j_(Mv##V6|;ovqxJ8b3;^{nYJONsGIcP8idj zBq!Q&e*Y=*#IwuZbD3jurwvYcFz62+KU3Q1x>D^@WQFROer^4wdPk@POQTc({fB17 zjDBu<_P^JALewh38)r9}${T{nOg5v%D?^r5Bt}bcx@GW$B0E8+lr^gSk>c8`YY&v2 zTk`aXQ3p;`6u-LS=w^mAB8#%0p-(-d6g4ao;jY|i-7I1z0NvPeRtoFJWB)L#@9>=N zQ7LQpUcN9m(`M}3BRc-@nVM^=BD<%LNb9-3u)1Xas)ED0i|?OORqv~Nbn(88ZO6xK zZG|c5WJO%c?kRoj9HO=TP18TaMtKHtMusqntlM`m{I;^DTwu@2On6%=w55a6j{66h zvQ_Np!OJ|}#0*gX75xCu6xFwbOb07+GyCY-bA%ZbX3EOUpeB|oZM30*ef%8^{FirR zJZl+sOi`&_B+zb7VT!h)N`QH~?P^J8Myfw`OL?Pp+j?Hg3R7r9u?`A$sfFw~{s+b6 Vol#~xH(US!002ovPDHLkV1j2X19AWW literal 0 HcmV?d00001 diff --git a/legacy/embryo/doc/img/hilite.png b/legacy/embryo/doc/img/hilite.png new file mode 100644 index 0000000000000000000000000000000000000000..88a43816ea0718f59d609b5301e22a140f4cfdcb GIT binary patch literal 6127 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 + exit 1 +fi + +while test $# -gt 0; do + case "$1" in + -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + case $1 in + --prefix=*) + prefix=$optarg + if test $exec_prefix_set = no ; then + exec_prefix=$optarg + fi + ;; + --prefix) + echo $prefix + ;; + --exec-prefix=*) + exec_prefix=$optarg + exec_prefix_set=yes + ;; + --exec-prefix) + echo $exec_prefix + ;; + --version) + echo @VERSION@ + ;; + --cflags) + if test @includedir@ != /usr/include ; then + includes=-I@includedir@ + fi + echo $includes + ;; + --libs) + libdirs=-L@libdir@ + echo $libdirs -lembryo -lm + ;; + *) + echo "${usage}" 1>&2 + exit 1 + ;; + esac + shift +done + +exit 0 diff --git a/legacy/embryo/embryo.c.in b/legacy/embryo/embryo.c.in new file mode 100644 index 0000000000..75457078cc --- /dev/null +++ b/legacy/embryo/embryo.c.in @@ -0,0 +1,30 @@ +/** +@file +@brief Embryo virtual machine library & compiler + +These routines are used for Embryo library interaction +*/ + +/** + +@mainpage Embryo Library Documentation +@image html embryo.png +@version 0.0.1 +@author Carsten Haitzler +@date 2004 + + + + + +@section intro What is Embryo? + +It is a tiny library designed interpret limited small programs compiled by the +included scmall compiler. This is mostly cleaning up and reduction in size of +the original small abstract machine. the compiler itself has been left alone +almost completely. + +@todo Document it all +@todo Clean up compiler code. + +*/ diff --git a/legacy/embryo/embryo.pc.in b/legacy/embryo/embryo.pc.in new file mode 100644 index 0000000000..57a0ec8840 --- /dev/null +++ b/legacy/embryo/embryo.pc.in @@ -0,0 +1,11 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: embryo +Description: embryo +Version: @VERSION@ +Libs: -L${libdir} -lembryo -lm +Cflags: -I${includedir} + diff --git a/legacy/embryo/embryo.spec b/legacy/embryo/embryo.spec new file mode 100644 index 0000000000..fb1e82bd1c --- /dev/null +++ b/legacy/embryo/embryo.spec @@ -0,0 +1,80 @@ +# Note that this is NOT a relocatable package +%define ver 0.0.1 +%define rel 1 +%define prefix /usr + +Summary: embryo +Name: embryo +Version: %ver +Release: %rel +Copyright: BSD +Group: System Environment/Libraries +Source: ftp://ftp.enlightenment.org/pub/embryo/embryo-%{ver}.tar.gz +BuildRoot: /var/tmp/embryo-root +Packager: The Rasterman +URL: http://www.enlightenment.org/ + +Docdir: %{prefix}/doc + +%description + +Embryo is a tiny library designed as a virtual machine to interpret a limited +set of small compiled programs. + +%package devel +Summary: Embryo headers, static libraries, documentation and test programs +Group: System Environment/Libraries +Requires: %{name} = %{version} + +%description devel +Headers, static libraries, test programs and documentation for Embryo + +%prep +rm -rf $RPM_BUILD_ROOT + +%setup -q + +%build +./configure --prefix=%prefix + +if [ "$SMP" != "" ]; then + (make "MAKE=make -k -j $SMP"; exit 0) + make +else + make +fi +########################################################################### + +%install +make DESTDIR=$RPM_BUILD_ROOT install + +%clean +rm -rf $RPM_BUILD_ROOT + +%post +/sbin/ldconfig + +%postun +/sbin/ldconfig + +%files +%defattr(-,root,root) +%attr(755,root,root) %{prefix}/lib/libembryo.so.* +%{prefix}/lib/libembryo.la +%attr(755,root,root) %{prefix}/bin/embryo_cc +%attr(755,root,root) %{prefix}/bin/embryo + +%files devel +%attr(755,root,root) %{prefix}/lib/libembryo.so +%attr(755,root,root) %{prefix}/lib/libembryo.a +%attr(755,root,root) %{prefix}/bin/embryo-config +%{prefix}/lib/pkgconfig/embryo.pc +%{prefix}/include/Embryo* +%doc AUTHORS +%doc COPYING +%doc README +%doc embryo_docs.tar.gz + +%changelog +* Sat Jun 23 2001 The Rasterman +- Created spec file diff --git a/legacy/embryo/gendoc b/legacy/embryo/gendoc new file mode 100755 index 0000000000..d1bef2dbe4 --- /dev/null +++ b/legacy/embryo/gendoc @@ -0,0 +1,12 @@ +#!/bin/sh +cp ./embryo.c.in ./embryo.c +for I in `find ./src/lib -name "*.c" -print`; do + cat $I >> ./embryo.c +done +rm -rf ./doc/html ./doc/latex ./doc/man +doxygen +cp doc/img/*.png doc/html/ +rm -f embryo_docs.tar embryo_docs.tar.gz +tar -cvf embryo_docs.tar doc/html doc/man doc/latex +gzip -9 embryo_docs.tar +exit 0 diff --git a/legacy/embryo/make_cross_compile_arm.sh b/legacy/embryo/make_cross_compile_arm.sh new file mode 100755 index 0000000000..e7dbfe961e --- /dev/null +++ b/legacy/embryo/make_cross_compile_arm.sh @@ -0,0 +1,75 @@ +#!/bin/sh + +PROJ="embryo" + +SKIFF="/skiff/local" +HOSTARCH="i686-pc-linux-gnu" +TARGETCPU="arm" +TARGETARCH=$TARGETCPU"-pc-linux-gnu" + +make clean distclean +export CC=$SKIFF"/bin/"$TARGETCPU"-linux-gcc" +export CFLAGS=-O9 +./configure \ +--host=$HOSTARCH \ +--build=$TARGETARCH \ +--target=$TARGETARCH + +INST="/tmp/"$PROJ"-instroot" +sudo rm -rf $INST + +make + +for I in find . -name "*.la" -print; do + sed s:"/usr/local":$INST:g < $I > "/tmp/.sed.tmp" + sudo cp "/tmp/.sed.tmp" $I + rm -f "/tmp/.sed.tmp" +done + +sudo \ +make \ +prefix=$INST \ +exec_prefix=$INST \ +bindir=$INST"/bin" \ +sbindir=$INST"/sbin" \ +sysconfdir=$INST"/etc" \ +datadir=$INST"/share" \ +includedir=$INST"/include" \ +libdir=$INST"/lib" \ +libexecdir=$INST"/libexec" \ +localstatedir=$INST"/var/run" \ +mandir=$INST"/share/man" \ +infodir=$INST"/share/info" \ +install + +## FIXUPS +for I in $INST"/bin/"* $INST"/sbin/"* $INST"/libexec/"*; do + J=`echo $I | sed s:$TARGETARCH"-"::g` + sudo mv $I $J +done + +CF=$INST"/bin/"$PROJ"-config" +sed s:"/usr/local":$SKIFF"/"$TARGETCPU"-linux":g < $CF > "/tmp/.sed.tmp" +sudo cp "/tmp/.sed.tmp" $CF +rm -f "/tmp/.sed.tmp" + +for I in $INST"/lib/"*.la; do + sed s:"/usr/local":$SKIFF"/"$TARGETCPU"-linux":g < $I > "/tmp/.sed.tmp" + sudo cp "/tmp/.sed.tmp" $I + rm -f "/tmp/.sed.tmp" +done + +## package it all up +PACK=$PROJ"-"$TARGETCPU"-inst.tar.gz" + +DIR=$PWD +cd $INST +sudo tar zcvf $DIR"/"$PACK * +sudo chown $USER $DIR"/"$PACK +cd $DIR +sudo rm -rf $INST + +## install it in our skiff tree +cd $SKIFF"/"$TARGETCPU"-linux" +sudo tar zxvf $DIR"/"$PACK + diff --git a/legacy/embryo/src/Makefile.am b/legacy/embryo/src/Makefile.am new file mode 100644 index 0000000000..7b45af65b2 --- /dev/null +++ b/legacy/embryo/src/Makefile.am @@ -0,0 +1,3 @@ +## Process this file with automake to produce Makefile.in + +SUBDIRS = lib bin diff --git a/legacy/embryo/src/bin/Makefile.am b/legacy/embryo/src/bin/Makefile.am new file mode 100644 index 0000000000..0112254d76 --- /dev/null +++ b/legacy/embryo/src/bin/Makefile.am @@ -0,0 +1,34 @@ +## Process this file with automake to produce Makefile.in + +INCLUDES = -DLINUX -I$(top_srcdir)/src/lib + +bin_PROGRAMS = embryo embryo_cc + +embryo_SOURCES = \ +embryo_main.c + +embryo_LDADD = $(top_builddir)/src/lib/libembryo.la +embryo_DEPENDENCIES = $(top_builddir)/src/lib/libembryo.la + +embryo_cc_SOURCES = \ +embryo_cc_amx.h \ +embryo_cc_osdefs.h \ +embryo_cc_sc.h \ +embryo_cc_sc1.c \ +embryo_cc_sc2.c \ +embryo_cc_sc3.c \ +embryo_cc_sc4.c \ +embryo_cc_sc5.c \ +embryo_cc_sc6.c \ +embryo_cc_sc7.c \ +embryo_cc_scexpand.c \ +embryo_cc_sclinux.h \ +embryo_cc_sclist.c \ +embryo_cc_scvars.c + +embryo_cc_LDADD = +embryo_cc_DEPENDENCIES = + +EXTRA_DIST = \ +embryo_cc_sc5.scp \ +embryo_cc_sc7.scp diff --git a/legacy/embryo/src/bin/embryo_cc_amx.h b/legacy/embryo/src/bin/embryo_cc_amx.h new file mode 100644 index 0000000000..37b2ace394 --- /dev/null +++ b/legacy/embryo/src/bin/embryo_cc_amx.h @@ -0,0 +1,349 @@ +/* Abstract Machine for the Small compiler + * + * Copyright (c) ITB CompuPhase, 1997-2003 + * + * This software is provided "as-is", without any express or implied warranty. + * In no event will the authors be held liable for any damages arising from + * the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software in + * a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + * Version: $Id$ + */ + +#if defined LINUX + #include +#endif + +#ifndef __AMX_H +#define __AMX_H + +#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L + /* The ISO C99 defines the int16_t and int_32t types. If the compiler got + * here, these types are probably undefined. + */ + #if defined __LCC__ || defined LINUX + #include + #else + typedef short int int16_t; + typedef unsigned short int uint16_t; + #if defined SN_TARGET_PS2 + typedef int int32_t; + typedef unsigned int uint32_t; + #else + typedef long int int32_t; + typedef unsigned long int uint32_t; + #endif + #endif +#endif + +#if defined __WIN32__ || defined _WIN32 || defined WIN32 || defined __MSDOS__ + #if !defined alloca + #define alloca(n) _alloca(n) + #endif +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* calling convention for native functions */ +#if !defined AMX_NATIVE_CALL + #define AMX_NATIVE_CALL +#endif +/* calling convention for all interface functions and callback functions */ +#if !defined AMXAPI + #if defined STDECL + #define AMXAPI __stdcall + #elif defined CDECL + #define AMXAPI __cdecl + #else + #define AMXAPI + #endif +#endif +#if !defined AMXEXPORT + #define AMXEXPORT +#endif + +/* File format version Required AMX version + * 0 (original version) 0 + * 1 (opcodes JUMP.pri, SWITCH and CASETBL) 1 + * 2 (compressed files) 2 + * 3 (public variables) 2 + * 4 (opcodes SWAP.pri/alt and PUSHADDR) 4 + * 5 (tagnames table) 4 + * 6 (reformatted header) 6 + * 7 (name table, opcodes SYMTAG & SYSREQ.D) 7 + */ +#define CUR_FILE_VERSION 7 /* current file version; also the current AMX version */ +#define MIN_FILE_VERSION 6 /* lowest supported file format version for the current AMX version */ +#define MIN_AMX_VERSION 7 /* minimum AMX version needed to support the current file format */ + +#if !defined CELL_TYPE + #define CELL_TYPE + #if defined(BIT16) + typedef uint16_t ucell; /* only for type casting */ + typedef int16_t cell; + #else + typedef uint32_t ucell; + typedef int32_t cell; + #endif +#endif + +struct tagAMX; +typedef cell (AMX_NATIVE_CALL *AMX_NATIVE)(struct tagAMX *amx, cell *params); +typedef int (AMXAPI *AMX_CALLBACK)(struct tagAMX *amx, cell index, + cell *result, cell *params); +typedef int (AMXAPI *AMX_DEBUG)(struct tagAMX *amx); +#if !defined _FAR + #define _FAR +#endif + +#if defined _MSC_VER + #pragma warning(disable:4103) /* disable warning message 4103 that complains + * about pragma pack in a header file */ + #pragma warning(disable:4100) /* "'%$S' : unreferenced formal parameter" */ +#endif + +/* Some compilers do not support the #pragma align, which should be fine. Some + * compilers give a warning on unknown #pragmas, which is not so fine... + */ +#if defined SN_TARGET_PS2 || defined __GNUC__ + #define AMX_NO_ALIGN +#endif + +#if defined __GNUC__ + #define PACKED __attribute__((packed)) +#else + #define PACKED +#endif + +#if !defined AMX_NO_ALIGN + #if defined LINUX + #pragma pack(1) /* structures must be packed (byte-aligned) */ + #else + #pragma pack(push) + #pragma pack(1) /* structures must be packed (byte-aligned) */ + #if defined __TURBOC__ + #pragma option -a- /* "pack" pragma for older Borland compilers */ + #endif + #endif +#endif + +typedef struct { + char _FAR *name PACKED; + AMX_NATIVE func PACKED; +} AMX_NATIVE_INFO PACKED; + +#define AMX_USERNUM 4 +#define sEXPMAX 19 /* maximum name length for file version <= 6 */ +#define sNAMEMAX 31 /* maximum name length of symbol name */ + +typedef struct tagAMX_FUNCSTUB { + uint32_t address PACKED; + char name[sEXPMAX+1] PACKED; +} AMX_FUNCSTUB PACKED; + +/* The AMX structure is the internal structure for many functions. Not all + * fields are valid at all times; many fields are cached in local variables. + */ +typedef struct tagAMX { + unsigned char _FAR *base PACKED; /* points to the AMX header ("amxhdr") plus the code, optionally also the data */ + unsigned char _FAR *data PACKED; /* points to separate data+stack+heap, may be NULL */ + AMX_CALLBACK callback PACKED; + AMX_DEBUG debug PACKED; /* debug callback */ + /* for external functions a few registers must be accessible from the outside */ + cell cip PACKED; /* instruction pointer: relative to base + amxhdr->cod */ + cell frm PACKED; /* stack frame base: relative to base + amxhdr->dat */ + cell hea PACKED; /* top of the heap: relative to base + amxhdr->dat */ + cell hlw PACKED; /* bottom of the heap: relative to base + amxhdr->dat */ + cell stk PACKED; /* stack pointer: relative to base + amxhdr->dat */ + cell stp PACKED; /* top of the stack: relative to base + amxhdr->dat */ + int flags PACKED; /* current status, see amx_Flags() */ + /* for assertions and debug hook */ + cell curline PACKED; + cell curfile PACKED; + int dbgcode PACKED; + cell dbgaddr PACKED; + cell dbgparam PACKED; + char _FAR *dbgname PACKED; + /* user data */ + long usertags[AMX_USERNUM] PACKED; + void _FAR *userdata[AMX_USERNUM] PACKED; + /* native functions can raise an error */ + int error PACKED; + /* the sleep opcode needs to store the full AMX status */ + cell pri PACKED; + cell alt PACKED; + cell reset_stk PACKED; + cell reset_hea PACKED; + cell _FAR *syscall_d PACKED; /* relocated value/address for the SYSCALL.D opcode */ + #if defined JIT + /* support variables for the JIT */ + int reloc_size PACKED; /* required temporary buffer for relocations */ + long code_size PACKED; /* estimated memory footprint of the native code */ + #endif +} AMX PACKED; + +/* The AMX_HEADER structure is both the memory format as the file format. The + * structure is used internaly. + */ +typedef struct tagAMX_HEADER { + int32_t size PACKED; /* size of the "file" */ + uint16_t magic PACKED; /* signature */ + char file_version PACKED; /* file format version */ + char amx_version PACKED; /* required version of the AMX */ + int16_t flags PACKED; + int16_t defsize PACKED; /* size of a definition record */ + int32_t cod PACKED; /* initial value of COD - code block */ + int32_t dat PACKED; /* initial value of DAT - data block */ + int32_t hea PACKED; /* initial value of HEA - start of the heap */ + int32_t stp PACKED; /* initial value of STP - stack top */ + int32_t cip PACKED; /* initial value of CIP - the instruction pointer */ + int32_t publics PACKED; /* offset to the "public functions" table */ + int32_t natives PACKED; /* offset to the "native functions" table */ + int32_t libraries PACKED; /* offset to the table of libraries */ + int32_t pubvars PACKED; /* the "public variables" table */ + int32_t tags PACKED; /* the "public tagnames" table */ + int32_t nametable PACKED; /* name table, file version 7 only */ +} AMX_HEADER PACKED; +#define AMX_MAGIC 0xf1e0 + +enum { + AMX_ERR_NONE, + /* reserve the first 15 error codes for exit codes of the abstract machine */ + AMX_ERR_EXIT, /* forced exit */ + AMX_ERR_ASSERT, /* assertion failed */ + AMX_ERR_STACKERR, /* stack/heap collision */ + AMX_ERR_BOUNDS, /* index out of bounds */ + AMX_ERR_MEMACCESS, /* invalid memory access */ + AMX_ERR_INVINSTR, /* invalid instruction */ + AMX_ERR_STACKLOW, /* stack underflow */ + AMX_ERR_HEAPLOW, /* heap underflow */ + AMX_ERR_CALLBACK, /* no callback, or invalid callback */ + AMX_ERR_NATIVE, /* native function failed */ + AMX_ERR_DIVIDE, /* divide by zero */ + AMX_ERR_SLEEP, /* go into sleepmode - code can be restarted */ + + AMX_ERR_MEMORY = 16, /* out of memory */ + AMX_ERR_FORMAT, /* invalid file format */ + AMX_ERR_VERSION, /* file is for a newer version of the AMX */ + AMX_ERR_NOTFOUND, /* function not found */ + AMX_ERR_INDEX, /* invalid index parameter (bad entry point) */ + AMX_ERR_DEBUG, /* debugger cannot run */ + AMX_ERR_INIT, /* AMX not initialized (or doubly initialized) */ + AMX_ERR_USERDATA, /* unable to set user data field (table full) */ + AMX_ERR_INIT_JIT, /* cannot initialize the JIT */ + AMX_ERR_PARAMS, /* parameter error */ + AMX_ERR_DOMAIN, /* domain error, expression result does not fit in range */ +}; + +enum { + DBG_INIT, /* query/initialize */ + DBG_FILE, /* file number in curfile, filename in name */ + DBG_LINE, /* line number in curline, file number in curfile */ + DBG_SYMBOL, /* address in dbgaddr, class/type in dbgparam */ + DBG_CLRSYM, /* stack address below which locals should be removed. stack address in stk */ + DBG_CALL, /* function call, address jumped to in dbgaddr */ + DBG_RETURN, /* function returns */ + DBG_TERMINATE, /* program ends, code address in dbgaddr, reason in dbgparam */ + DBG_SRANGE, /* symbol size and dimensions (arrays); level in dbgaddr (!); length in dbgparam */ + DBG_SYMTAG, /* tag of the most recent symbol (if non-zero), tag in dbgparam */ +}; + +#define AMX_FLAG_CHAR16 0x01 /* characters are 16-bit */ +#define AMX_FLAG_DEBUG 0x02 /* symbolic info. available */ +#define AMX_FLAG_COMPACT 0x04 /* compact encoding */ +#define AMX_FLAG_BIGENDIAN 0x08 /* big endian encoding */ +#define AMX_FLAG_NOCHECKS 0x10 /* no array bounds checking */ +#define AMX_FLAG_BROWSE 0x4000 /* browsing/relocating or executing */ +#define AMX_FLAG_RELOC 0x8000 /* jump/call addresses relocated */ + +#define AMX_EXEC_MAIN -1 /* start at program entry point */ +#define AMX_EXEC_CONT -2 /* continue from last address */ + +#define AMX_USERTAG(a,b,c,d) ((a) | ((b)<<8) | ((long)(c)<<16) | ((long)(d)<<24)) + +#define AMX_EXPANDMARGIN 64 + +/* for native functions that use floating point parameters, the following + * two macros are convenient for casting a "cell" into a "float" type _without_ + * changing the bit pattern + */ +#define amx_ftoc(f) ( * ((cell*)&f) ) /* float to cell */ +#define amx_ctof(c) ( * ((float*)&c) ) /* cell to float */ + +#define amx_StrParam(amx,param,result) { \ + cell *amx_cstr_; int amx_length_; \ + amx_GetAddr((amx), (param), &amx_cstr_); \ + amx_StrLen(amx_cstr_, &amx_length_); \ + if (amx_length_ > 0 && \ + ((result) = (char*)alloca(amx_length_ + 1)) != NULL) \ + amx_GetString((result), amx_cstr_); \ + else (result) = NULL; \ +} + +uint16_t * AMXAPI amx_Align16(uint16_t *v); +uint32_t * AMXAPI amx_Align32(uint32_t *v); +int AMXAPI amx_Allot(AMX *amx, int cells, cell *amx_addr, cell **phys_addr); +int AMXAPI amx_Callback(AMX *amx, cell index, cell *result, cell *params); +int AMXAPI amx_Cleanup(AMX *amx); +int AMXAPI amx_Clone(AMX *amxClone, AMX *amxSource, void *data); +int AMXAPI amx_Debug(AMX *amx); /* default debug procedure, does nothing */ +int AMXAPI amx_Exec(AMX *amx, cell *retval, int index, int numparams, ...); +int AMXAPI amx_Execv(AMX *amx, cell *retval, int index, int numparams, cell params[]); +int AMXAPI amx_FindNative(AMX *amx, char *name, int *index); +int AMXAPI amx_FindPublic(AMX *amx, char *funcname, int *index); +int AMXAPI amx_FindPubVar(AMX *amx, char *varname, cell *amx_addr); +int AMXAPI amx_FindTagId(AMX *amx, cell tag_id, char *tagname); +int AMXAPI amx_Flags(AMX *amx,uint16_t *flags); +int AMXAPI amx_GetAddr(AMX *amx,cell amx_addr,cell **phys_addr); +int AMXAPI amx_GetNative(AMX *amx, int index, char *funcname); +int AMXAPI amx_GetPublic(AMX *amx, int index, char *funcname); +int AMXAPI amx_GetPubVar(AMX *amx, int index, char *varname, cell *amx_addr); +int AMXAPI amx_GetString(char *dest,cell *source); +int AMXAPI amx_GetTag(AMX *amx, int index, char *tagname, cell *tag_id); +int AMXAPI amx_GetUserData(AMX *amx, long tag, void **ptr); +int AMXAPI amx_Init(AMX *amx, void *program); +int AMXAPI amx_InitJIT(AMX *amx, void *reloc_table, void *native_code); +int AMXAPI amx_MemInfo(AMX *amx, long *codesize, long *datasize, long *stackheap); +int AMXAPI amx_NameLength(AMX *amx, int *length); +AMX_NATIVE_INFO * AMXAPI amx_NativeInfo(char *name,AMX_NATIVE func); +int AMXAPI amx_NumNatives(AMX *amx, int *number); +int AMXAPI amx_NumPublics(AMX *amx, int *number); +int AMXAPI amx_NumPubVars(AMX *amx, int *number); +int AMXAPI amx_NumTags(AMX *amx, int *number); +int AMXAPI amx_RaiseError(AMX *amx, int error); +int AMXAPI amx_Register(AMX *amx, AMX_NATIVE_INFO *nativelist, int number); +int AMXAPI amx_Release(AMX *amx, cell amx_addr); +int AMXAPI amx_SetCallback(AMX *amx, AMX_CALLBACK callback); +int AMXAPI amx_SetDebugHook(AMX *amx, AMX_DEBUG debug); +int AMXAPI amx_SetString(cell *dest, char *source, int pack); +int AMXAPI amx_SetUserData(AMX *amx, long tag, void *ptr); +char * AMXAPI amx_StrError(int errnum); +int AMXAPI amx_StrLen(cell *cstring, int *length); + + +#if !defined AMX_NO_ALIGN + #if defined LINUX + #pragma pack() /* reset default packing */ + #else + #pragma pack(pop) /* reset previous packing */ + #endif +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __AMX_H */ diff --git a/legacy/embryo/src/bin/embryo_cc_osdefs.h b/legacy/embryo/src/bin/embryo_cc_osdefs.h new file mode 100644 index 0000000000..8eb99f8cac --- /dev/null +++ b/legacy/embryo/src/bin/embryo_cc_osdefs.h @@ -0,0 +1,84 @@ +/* __MSDOS__ set when compiling for DOS (not Windows) + * _Windows set when compiling for any version of Microsoft Windows + * __WIN32__ set when compiling for Windows95 or WindowsNT (32 bit mode) + * __32BIT__ set when compiling in 32-bit "flat" mode (DOS or Windows) + * + * Copyright 1998-2003, ITB CompuPhase, The Netherlands. + * info@compuphase.com. + */ + +#ifndef _OSDEFS_H +#define _OSDEFS_H + +/* Every compiler uses different "default" macros to indicate the mode + * it is in. Throughout the source, we use the Borland C++ macros, so + * the macros of Watcom C/C++ and Microsoft Visual C/C++ are mapped to + * those of Borland C++. + */ +#if defined(__WATCOMC__) +# if defined(__WINDOWS__) || defined(__NT__) +# define _Windows 1 +# endif +# ifdef __386__ +# define __32BIT__ 1 +# endif +# if defined(_Windows) && defined(__32BIT__) +# define __WIN32__ 1 +# endif +#elif defined(_MSC_VER) +# if defined(_WINDOWS) || defined(_WIN32) +# define _Windows 1 +# endif +# ifdef _WIN32 +# define __WIN32__ 1 +# define __32BIT__ 1 +# endif +#endif + +#if defined LINUX + #include +#endif + +/* Linux NOW has these */ +#if !defined BIG_ENDIAN + #define BIG_ENDIAN 4321 +#endif +#if !defined LITTLE_ENDIAN + #define LITTLE_ENDIAN 1234 +#endif + +/* educated guess, BYTE_ORDER is undefined, i386 is common => little endian */ +#if !defined BYTE_ORDER + #if defined UCLINUX + #define BYTE_ORDER BIG_ENDIAN + #else + #define BYTE_ORDER LITTLE_ENDIAN + #endif +#endif + +/* _MAX_PATH is sometimes called differently and it may be in limits.h instead + * stdio.h. + */ +#if !defined _MAX_PATH + /* not defined, perhaps stdio.h was not included */ + #include + #if !defined _MAX_PATH + /* still undefined, try a common alternative name */ + #if defined MAX_PATH + #define _MAX_PATH MAX_PATH + #else + /* no _MAX_PATH and no MAX_PATH, perhaps it is in limits.h */ + #include + #if defined PATH_MAX + #define _MAX_PATH PATH_MAX + #elif defined _POSIX_PATH_MAX + #define _MAX_PATH _POSIX_PATH_MAX + #else + /* everything failed, actually we have a problem here... */ + #define _MAX_PATH 1024 + #endif + #endif + #endif +#endif + +#endif /* _OSDEFS_H */ diff --git a/legacy/embryo/src/bin/embryo_cc_sc.h b/legacy/embryo/src/bin/embryo_cc_sc.h new file mode 100644 index 0000000000..492df261d7 --- /dev/null +++ b/legacy/embryo/src/bin/embryo_cc_sc.h @@ -0,0 +1,687 @@ +/* Small compiler + * + * Drafted after the Small-C compiler Version 2.01, originally created + * by Ron Cain, july 1980, and enhanced by James E. Hendrix. + * + * This version comes close to a complete rewrite. + * + * Copyright R. Cain, 1980 + * Copyright J.E. Hendrix, 1982, 1983 + * Copyright T. Riemersma, 1997-2003 + * + * Version: $Id$ + * + * This software is provided "as-is", without any express or implied warranty. + * In no event will the authors be held liable for any damages arising from + * the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software in + * a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + */ +#ifndef __SC_H +#define __SC_H +#include +#include +#include +#if defined __BORLANDC__ && defined _Windows && !(defined __32BIT__ || defined __WIN32__) + /* setjmp() and longjmp() not well supported in 16-bit windows */ + #include + typedef int jmp_buf[9]; + #define setjmp(b) Catch(b) + #define longjmp(b,e) Throw(b,e) +#else + #include +#endif +#include "embryo_cc_osdefs.h" +#include "embryo_cc_amx.h" + +/* Note: the "cell" and "ucell" types are defined in AMX.H */ + +#define PUBLIC_CHAR '@' /* character that defines a function "public" */ +#define CTRL_CHAR '\\' /* default control character */ + +#if defined __MSDOS__ || defined __WIN32__ || defined _Windows + #define DIRSEP_CHAR '\\' +#elif defined macintosh + #define DIRSEP_CHAR ':' +#else + #define DIRSEP_CHAR '/' /* directory separator character */ +#endif + +#define sDIMEN_MAX 2 /* maximum number of array dimensions */ +#define sDEF_LITMAX 500 /* initial size of the literal pool, in "cells" */ +#define sLINEMAX 511 /* input line length (in characters) */ +#define sDEF_AMXSTACK 4096 /* default stack size for AMX files */ +#define sSTKMAX 80 /* stack for nested #includes and other uses */ +#define PREPROC_TERM '\x7f'/* termination character for preprocessor expressions (the "DEL" code) */ +#define sDEF_PREFIX "default.inc" /* default prefix filename */ + +typedef void *stkitem; /* type of items stored on the stack */ + +typedef struct __s_arginfo { /* function argument info */ + char name[sNAMEMAX+1]; + char ident; /* iVARIABLE, iREFERENCE, iREFARRAY or iVARARGS */ + char usage; /* uCONST */ + int *tags; /* argument tag id. list */ + int numtags; /* number of tags in the tag list */ + int dim[sDIMEN_MAX]; + int numdim; /* number of dimensions */ + unsigned char hasdefault; /* bit0: is there a default value? bit6: "tagof"; bit7: "sizeof" */ + union { + cell val; /* default value */ + struct { + char *symname; /* name of another symbol */ + short level; /* indirection level for that symbol */ + } size; /* used for "sizeof" default value */ + struct { + cell *data; /* values of default array */ + int size; /* complete length of default array */ + int arraysize; /* size to reserve on the heap */ + cell addr; /* address of the default array in the data segment */ + } array; + } defvalue; /* default value, or pointer to default array */ + int defvalue_tag; /* tag of the default value */ +} arginfo; + +/* Equate table, tagname table, library table */ +typedef struct __s_constvalue { + struct __s_constvalue *next; + char name[sNAMEMAX+1]; + cell value; + short index; +} constvalue; + +/* Symbol table format + * + * The symbol name read from the input file is stored in "name", the + * value of "addr" is written to the output file. The address in "addr" + * depends on the class of the symbol: + * global offset into the data segment + * local offset relative to the stack frame + * label generated hexadecimal number + * function offset into code segment + */ +typedef struct __s_symbol { + struct __s_symbol *next; + struct __s_symbol *parent; /* hierarchical types (multi-dimensional arrays) */ + char name[sNAMEMAX+1]; + uint32_t hash; /* value derived from name, for quicker searching */ + cell addr; /* address or offset (or value for constant, index for native function) */ + char vclass; /* sLOCAL if "addr" refers to a local symbol */ + char ident; /* see below for possible values */ + char usage; /* see below for possible values */ + int compound; /* compound level (braces nesting level) */ + int tag; /* tagname id */ + union { + int declared; /* label: how many local variables are declared */ + int idxtag; /* array: tag of array indices */ + constvalue *lib; /* native function: library it is part of */ //??? use "stringlist" + } x; /* 'x' for 'extra' */ + union { + arginfo *arglist; /* types of all parameters for functions */ + struct { + cell length; /* arrays: length (size) */ + short level; /* number of dimensions below this level */ + } array; + } dim; /* for 'dimension', both functions and arrays */ + int fnumber; /* static global variables: file number in which the declaration is visible */ + struct __s_symbol **refer; /* referrer list, functions that "use" this symbol */ + int numrefers; /* number of entries in the referrer list */ +} symbol; + + +/* Possible entries for "ident". These are used in the "symbol", "value" + * and arginfo structures. Not every constant is valid for every use. + * In an argument list, the list is terminated with a "zero" ident; labels + * cannot be passed as function arguments, so the value 0 is overloaded. + */ +#define iLABEL 0 +#define iVARIABLE 1 /* cell that has an address and that can be fetched directly (lvalue) */ +#define iREFERENCE 2 /* iVARIABLE, but must be dereferenced */ +#define iARRAY 3 +#define iREFARRAY 4 /* an array passed by reference (i.e. a pointer) */ +#define iARRAYCELL 5 /* array element, cell that must be fetched indirectly */ +#define iARRAYCHAR 6 /* array element, character from cell from array */ +#define iEXPRESSION 7 /* expression result, has no address (rvalue) */ +#define iCONSTEXPR 8 /* constant expression (or constant symbol) */ +#define iFUNCTN 9 +#define iREFFUNC 10 /* function passed as a parameter */ +#define iVARARGS 11 /* function specified ... as argument(s) */ + +/* Possible entries for "usage" + * + * This byte is used as a serie of bits, the syntax is different for + * functions and other symbols: + * + * VARIABLE + * bits: 0 (uDEFINE) the variable is defined in the source file + * 1 (uREAD) the variable is "read" (accessed) in the source file + * 2 (uWRITTEN) the variable is altered (assigned a value) + * 3 (uCONST) the variable is constant (may not be assigned to) + * 4 (uPUBLIC) the variable is public + * 6 (uSTOCK) the variable is discardable (without warning) + * + * FUNCTION + * bits: 0 (uDEFINE) the function is defined ("implemented") in the source file + * 1 (uREAD) the function is invoked in the source file + * 2 (uRETVALUE) the function returns a value (or should return a value) + * 3 (uPROTOTYPED) the function was prototyped + * 4 (uPUBLIC) the function is public + * 5 (uNATIVE) the function is native + * 6 (uSTOCK) the function is discardable (without warning) + * 7 (uMISSING) the function is not implemented in this source file + * + * CONSTANT + * bits: 0 (uDEFINE) the symbol is defined in the source file + * 1 (uREAD) the constant is "read" (accessed) in the source file + * 3 (uPREDEF) the constant is pre-defined and should be kept between passes + */ +#define uDEFINE 0x01 +#define uREAD 0x02 +#define uWRITTEN 0x04 +#define uRETVALUE 0x04 /* function returns (or should return) a value */ +#define uCONST 0x08 +#define uPROTOTYPED 0x08 +#define uPREDEF 0x08 /* constant is pre-defined */ +#define uPUBLIC 0x10 +#define uNATIVE 0x20 +#define uSTOCK 0x40 +#define uMISSING 0x80 +/* uRETNONE is not stored in the "usage" field of a symbol. It is + * used during parsing a function, to detect a mix of "return;" and + * "return value;" in a few special cases. + */ +#define uRETNONE 0x10 + +#define uTAGOF 0x40 /* set in the "hasdefault" field of the arginfo struct */ +#define uSIZEOF 0x80 /* set in the "hasdefault" field of the arginfo struct */ + +#define uMAINFUNC "main" + +#define sGLOBAL 0 /* global/local variable/constant class */ +#define sLOCAL 1 +#define sSTATIC 2 /* global life, local scope */ + +typedef struct { + symbol *sym; /* symbol in symbol table, NULL for (constant) expression */ + cell constval; /* value of the constant expression (if ident==iCONSTEXPR) + * also used for the size of a literal array */ + int tag; /* tagname id (of the expression) */ + char ident; /* iCONSTEXPR, iVARIABLE, iARRAY, iARRAYCELL, + * iEXPRESSION or iREFERENCE */ + char boolresult; /* boolean result for relational operators */ + cell *arrayidx; /* last used array indices, for checking self assignment */ +} value; + +/* "while" statement queue (also used for "for" and "do - while" loops) */ +enum { + wqBRK, /* used to restore stack for "break" */ + wqCONT, /* used to restore stack for "continue" */ + wqLOOP, /* loop start label number */ + wqEXIT, /* loop exit label number (jump if false) */ + /* --- */ + wqSIZE /* "while queue" size */ +}; +#define wqTABSZ (24*wqSIZE) /* 24 nested loop statements */ + +enum { + statIDLE, /* not compiling yet */ + statFIRST, /* first pass */ + statWRITE, /* writing output */ + statSKIP, /* skipping output */ +}; + +typedef struct __s_stringlist { + struct __s_stringlist *next; + char *line; +} stringlist; + +typedef struct __s_stringpair { + struct __s_stringpair *next; + char *first; + char *second; + int matchlength; +} stringpair; + +/* macros for code generation */ +#define opcodes(n) ((n)*sizeof(cell)) /* opcode size */ +#define opargs(n) ((n)*sizeof(cell)) /* size of typical argument */ + +/* Tokens recognized by lex() + * Some of these constants are assigned as well to the variable "lastst" + */ +#define tFIRST 256 /* value of first multi-character operator */ +#define tMIDDLE 279 /* value of last multi-character operator */ +#define tLAST 320 /* value of last multi-character match-able token */ +/* multi-character operators */ +#define taMULT 256 /* *= */ +#define taDIV 257 /* /= */ +#define taMOD 258 /* %= */ +#define taADD 259 /* += */ +#define taSUB 260 /* -= */ +#define taSHL 261 /* <<= */ +#define taSHRU 262 /* >>>= */ +#define taSHR 263 /* >>= */ +#define taAND 264 /* &= */ +#define taXOR 265 /* ^= */ +#define taOR 266 /* |= */ +#define tlOR 267 /* || */ +#define tlAND 268 /* && */ +#define tlEQ 269 /* == */ +#define tlNE 270 /* != */ +#define tlLE 271 /* <= */ +#define tlGE 272 /* >= */ +#define tSHL 273 /* << */ +#define tSHRU 274 /* >>> */ +#define tSHR 275 /* >> */ +#define tINC 276 /* ++ */ +#define tDEC 277 /* -- */ +#define tELLIPS 278 /* ... */ +#define tDBLDOT 279 /* .. */ +/* reserved words (statements) */ +#define tASSERT 280 +#define tBREAK 281 +#define tCASE 282 +#define tCHAR 283 +#define tCONST 284 +#define tCONTINUE 285 +#define tDEFAULT 286 +#define tDEFINED 287 +#define tDO 288 +#define tELSE 289 +#define tENUM 290 +#define tEXIT 291 +#define tFOR 292 +#define tFORWARD 293 +#define tGOTO 294 +#define tIF 295 +#define tNATIVE 296 +#define tNEW 297 +#define tOPERATOR 298 +#define tPUBLIC 299 +#define tRETURN 300 +#define tSIZEOF 301 +#define tSLEEP 302 +#define tSTATIC 303 +#define tSTOCK 304 +#define tSWITCH 305 +#define tTAGOF 306 +#define tWHILE 307 +/* compiler directives */ +#define tpASSERT 308 /* #assert */ +#define tpDEFINE 309 +#define tpELSE 310 /* #else */ +#define tpEMIT 311 +#define tpENDIF 312 +#define tpENDINPUT 313 +#define tpENDSCRPT 314 +#define tpFILE 315 +#define tpIF 316 /* #if */ +#define tINCLUDE 317 +#define tpLINE 318 +#define tpPRAGMA 319 +#define tpUNDEF 320 +/* semicolon is a special case, because it can be optional */ +#define tTERM 321 /* semicolon or newline */ +#define tENDEXPR 322 /* forced end of expression */ +/* other recognized tokens */ +#define tNUMBER 323 /* integer number */ +#define tRATIONAL 324 /* rational number */ +#define tSYMBOL 325 +#define tLABEL 326 +#define tSTRING 327 +#define tEXPR 328 /* for assigment to "lastst" only */ + +/* (reversed) evaluation of staging buffer */ +#define sSTARTREORDER 1 +#define sENDREORDER 2 +#define sEXPRSTART 0xc0 /* top 2 bits set, rest is free */ +#define sMAXARGS 64 /* relates to the bit pattern of sEXPRSTART */ + +/* codes for ffabort() */ +#define xEXIT 1 /* exit code in PRI */ +#define xASSERTION 2 /* abort caused by failing assertion */ +#define xSTACKERROR 3 /* stack/heap overflow */ +#define xBOUNDSERROR 4 /* array index out of bounds */ +#define xMEMACCESS 5 /* data access error */ +#define xINVINSTR 6 /* invalid instruction */ +#define xSTACKUNDERFLOW 7 /* stack underflow */ +#define xHEAPUNDERFLOW 8 /* heap underflow */ +#define xCALLBACKERR 9 /* no, or invalid, callback */ +#define xSLEEP 12 /* sleep, exit code in PRI, tag in ALT */ + +/* Miscellaneous */ +#if !defined TRUE + #define FALSE 0 + #define TRUE 1 +#endif +#define sIN_CSEG 1 /* if parsing CODE */ +#define sIN_DSEG 2 /* if parsing DATA */ +#define sCHKBOUNDS 1 /* bit position in "debug" variable: check bounds */ +#define sSYMBOLIC 2 /* bit position in "debug" variable: symbolic info */ +#define sNOOPTIMIZE 4 /* bit position in "debug" variable: no optimization */ +#define sRESET 0 /* reset error flag */ +#define sFORCESET 1 /* force error flag on */ +#define sEXPRMARK 2 /* mark start of expression */ +#define sEXPRRELEASE 3 /* mark end of expression */ + +#if INT_MAX<0x8000u + #define PUBLICTAG 0x8000u + #define FIXEDTAG 0x4000u +#else + #define PUBLICTAG 0x80000000Lu + #define FIXEDTAG 0x40000000Lu +#endif +#define TAGMASK (~PUBLICTAG) + + +/* interface functions */ +#if defined __cplusplus + extern "C" { +#endif + +/* + * Functions you call from the "driver" program + */ +int sc_compile(int argc, char **argv); +int sc_addconstant(char *name,cell value,int tag); +int sc_addtag(char *name); + +/* + * Functions called from the compiler (to be implemented by you) + */ + +/* general console output */ +int sc_printf(const char *message,...); + +/* error report function */ +int sc_error(int number,char *message,char *filename,int firstline,int lastline,va_list argptr); + +/* input from source file */ +void *sc_opensrc(char *filename); /* reading only */ +void sc_closesrc(void *handle); /* never delete */ +void sc_resetsrc(void *handle,void *position); /* reset to a position marked earlier */ +char *sc_readsrc(void *handle,char *target,int maxchars); +void *sc_getpossrc(void *handle); /* mark the current position */ +int sc_eofsrc(void *handle); + +/* output to intermediate (.ASM) file */ +void *sc_openasm(char *filename); /* read/write */ +void sc_closeasm(void *handle,int deletefile); +void sc_resetasm(void *handle); +int sc_writeasm(void *handle,char *str); +char *sc_readasm(void *handle,char *target,int maxchars); + +/* output to binary (.AMX) file */ +void *sc_openbin(char *filename); +void sc_closebin(void *handle,int deletefile); +void sc_resetbin(void *handle); +int sc_writebin(void *handle,void *buffer,int size); +long sc_lengthbin(void *handle); /* return the length of the file */ + +#if defined __cplusplus + } +#endif + + +/* by default, functions and variables used in throughout the compiler + * files are "external" + */ +#if !defined SC_FUNC + #define SC_FUNC +#endif +#if !defined SC_VDECL + #define SC_VDECL extern +#endif +#if !defined SC_VDEFINE + #define SC_VDEFINE +#endif + +/* function prototypes in SC1.C */ +SC_FUNC void set_extension(char *filename,char *extension,int force); +SC_FUNC symbol *fetchfunc(char *name,int tag); +SC_FUNC char *operator_symname(char *symname,char *opername,int tag1,int tag2,int numtags,int resulttag); +SC_FUNC char *funcdisplayname(char *dest,char *funcname); +SC_FUNC int constexpr(cell *val,int *tag); +SC_FUNC constvalue *append_constval(constvalue *table,char *name,cell val,short index); +SC_FUNC constvalue *find_constval(constvalue *table,char *name,short index); +SC_FUNC void delete_consttable(constvalue *table); +SC_FUNC void add_constant(char *name,cell val,int vclass,int tag); +SC_FUNC void exporttag(int tag); + +/* function prototypes in SC2.C */ +SC_FUNC void pushstk(stkitem val); +SC_FUNC stkitem popstk(void); +SC_FUNC int plungequalifiedfile(char *name); /* explicit path included */ +SC_FUNC int plungefile(char *name,int try_currentpath,int try_includepaths); /* search through "include" paths */ +SC_FUNC void preprocess(void); +SC_FUNC void lexinit(void); +SC_FUNC int lex(cell *lexvalue,char **lexsym); +SC_FUNC void lexpush(void); +SC_FUNC void lexclr(int clreol); +SC_FUNC int matchtoken(int token); +SC_FUNC int tokeninfo(cell *val,char **str); +SC_FUNC int needtoken(int token); +SC_FUNC void stowlit(cell value); +SC_FUNC int alphanum(char c); +SC_FUNC int ishex(char c); +SC_FUNC void delete_symbol(symbol *root,symbol *sym); +SC_FUNC void delete_symbols(symbol *root,int level,int del_labels,int delete_functions); +SC_FUNC int refer_symbol(symbol *entry,symbol *bywhom); +SC_FUNC void markusage(symbol *sym,int usage); +SC_FUNC uint32_t namehash(char *name); +SC_FUNC symbol *findglb(char *name); +SC_FUNC symbol *findloc(char *name); +SC_FUNC symbol *findconst(char *name); +SC_FUNC symbol *finddepend(symbol *parent); +SC_FUNC symbol *addsym(char *name,cell addr,int ident,int vclass,int tag, + int usage); +SC_FUNC symbol *addvariable(char *name,cell addr,int ident,int vclass,int tag, + int dim[],int numdim,int idxtag[]); +SC_FUNC int getlabel(void); +SC_FUNC char *itoh(ucell val); + +/* function prototypes in SC3.C */ +SC_FUNC int check_userop(void (*oper)(void),int tag1,int tag2,int numparam, + value *lval,int *resulttag); +SC_FUNC int matchtag(int formaltag,int actualtag,int allowcoerce); +SC_FUNC int expression(int *constant,cell *val,int *tag,int chkfuncresult); +SC_FUNC int hier14(value *lval1); /* the highest expression level */ + +/* function prototypes in SC4.C */ +SC_FUNC void writeleader(void); +SC_FUNC void writetrailer(void); +SC_FUNC void begcseg(void); +SC_FUNC void begdseg(void); +SC_FUNC void setactivefile(int fnumber); +SC_FUNC cell nameincells(char *name); +SC_FUNC void setfile(char *name,int fileno); +SC_FUNC void setline(int line,int fileno); +SC_FUNC void setfiledirect(char *name); +SC_FUNC void setlinedirect(int line); +SC_FUNC void setlabel(int index); +SC_FUNC void endexpr(int fullexpr); +SC_FUNC void startfunc(char *fname); +SC_FUNC void endfunc(void); +SC_FUNC void alignframe(int numbytes); +SC_FUNC void defsymbol(char *name,int ident,int vclass,cell offset,int tag); +SC_FUNC void symbolrange(int level,cell size); +SC_FUNC void rvalue(value *lval); +SC_FUNC void address(symbol *ptr); +SC_FUNC void store(value *lval); +SC_FUNC void memcopy(cell size); +SC_FUNC void copyarray(symbol *sym,cell size); +SC_FUNC void fillarray(symbol *sym,cell size,cell value); +SC_FUNC void const1(cell val); +SC_FUNC void const2(cell val); +SC_FUNC void moveto1(void); +SC_FUNC void push1(void); +SC_FUNC void push2(void); +SC_FUNC void pushval(cell val); +SC_FUNC void pop1(void); +SC_FUNC void pop2(void); +SC_FUNC void swap1(void); +SC_FUNC void ffswitch(int label); +SC_FUNC void ffcase(cell value,char *labelname,int newtable); +SC_FUNC void ffcall(symbol *sym,int numargs); +SC_FUNC void ffret(void); +SC_FUNC void ffabort(int reason); +SC_FUNC void ffbounds(cell size); +SC_FUNC void jumplabel(int number); +SC_FUNC void defstorage(void); +SC_FUNC void modstk(int delta); +SC_FUNC void setstk(cell value); +SC_FUNC void modheap(int delta); +SC_FUNC void setheap_pri(void); +SC_FUNC void setheap(cell value); +SC_FUNC void cell2addr(void); +SC_FUNC void cell2addr_alt(void); +SC_FUNC void addr2cell(void); +SC_FUNC void char2addr(void); +SC_FUNC void charalign(void); +SC_FUNC void addconst(cell value); + +/* Code generation functions for arithmetic operators. + * + * Syntax: o[u|s|b]_name + * | | | +--- name of operator + * | | +----- underscore + * | +--------- "u"nsigned operator, "s"igned operator or "b"oth + * +------------- "o"perator + */ +SC_FUNC void os_mult(void); /* multiplication (signed) */ +SC_FUNC void os_div(void); /* division (signed) */ +SC_FUNC void os_mod(void); /* modulus (signed) */ +SC_FUNC void ob_add(void); /* addition */ +SC_FUNC void ob_sub(void); /* subtraction */ +SC_FUNC void ob_sal(void); /* shift left (arithmetic) */ +SC_FUNC void os_sar(void); /* shift right (arithmetic, signed) */ +SC_FUNC void ou_sar(void); /* shift right (logical, unsigned) */ +SC_FUNC void ob_or(void); /* bitwise or */ +SC_FUNC void ob_xor(void); /* bitwise xor */ +SC_FUNC void ob_and(void); /* bitwise and */ +SC_FUNC void ob_eq(void); /* equality */ +SC_FUNC void ob_ne(void); /* inequality */ +SC_FUNC void relop_prefix(void); +SC_FUNC void relop_suffix(void); +SC_FUNC void os_le(void); /* less or equal (signed) */ +SC_FUNC void os_ge(void); /* greater or equal (signed) */ +SC_FUNC void os_lt(void); /* less (signed) */ +SC_FUNC void os_gt(void); /* greater (signed) */ + +SC_FUNC void lneg(void); +SC_FUNC void neg(void); +SC_FUNC void invert(void); +SC_FUNC void nooperation(void); +SC_FUNC void inc(value *lval); +SC_FUNC void dec(value *lval); +SC_FUNC void jmp_ne0(int number); +SC_FUNC void jmp_eq0(int number); +SC_FUNC void outval(cell val,int newline); + +/* function prototypes in SC5.C */ +SC_FUNC int error(int number,...); +SC_FUNC void errorset(int code); + +/* function prototypes in SC6.C */ +SC_FUNC void assemble(FILE *fout,FILE *fin); + +/* function prototypes in SC7.C */ +SC_FUNC void stgbuffer_cleanup(void); +SC_FUNC void stgmark(char mark); +SC_FUNC void stgwrite(char *st); +SC_FUNC void stgout(int index); +SC_FUNC void stgdel(int index,cell code_index); +SC_FUNC int stgget(int *index,cell *code_index); +SC_FUNC void stgset(int onoff); +SC_FUNC int phopt_init(void); +SC_FUNC int phopt_cleanup(void); + +/* function prototypes in SCLIST.C */ +SC_FUNC char* duplicatestring(const char* sourcestring); +SC_FUNC stringpair *insert_alias(char *name,char *alias); +SC_FUNC stringpair *find_alias(char *name); +SC_FUNC int lookup_alias(char *target,char *name); +SC_FUNC void delete_aliastable(void); +SC_FUNC stringlist *insert_path(char *path); +SC_FUNC char *get_path(int index); +SC_FUNC void delete_pathtable(void); +SC_FUNC stringpair *insert_subst(char *pattern,char *substitution,int prefixlen); +SC_FUNC int get_subst(int index,char **pattern,char **substitution); +SC_FUNC stringpair *find_subst(char *name,int length); +SC_FUNC int delete_subst(char *name,int length); +SC_FUNC void delete_substtable(void); + +/* external variables (defined in scvars.c) */ +#if !defined SC_SKIP_VDECL +SC_VDECL symbol loctab; /* local symbol table */ +SC_VDECL symbol glbtab; /* global symbol table */ +SC_VDECL cell *litq; /* the literal queue */ +SC_VDECL char pline[]; /* the line read from the input file */ +SC_VDECL char *lptr; /* points to the current position in "pline" */ +SC_VDECL constvalue tagname_tab;/* tagname table */ +SC_VDECL constvalue libname_tab;/* library table (#pragma library "..." syntax) */ //??? use "stringlist" type +SC_VDECL constvalue *curlibrary;/* current library */ +SC_VDECL symbol *curfunc; /* pointer to current function */ +SC_VDECL char *inpfname; /* name of the file currently read from */ +SC_VDECL char outfname[]; /* output file name */ +SC_VDECL char errfname[]; /* error file name */ +SC_VDECL char sc_ctrlchar; /* the control character (or escape character) */ +SC_VDECL int litidx; /* index to literal table */ +SC_VDECL int litmax; /* current size of the literal table */ +SC_VDECL int stgidx; /* index to the staging buffer */ +SC_VDECL int labnum; /* number of (internal) labels */ +SC_VDECL int staging; /* true if staging output */ +SC_VDECL cell declared; /* number of local cells declared */ +SC_VDECL cell glb_declared; /* number of global cells declared */ +SC_VDECL cell code_idx; /* number of bytes with generated code */ +SC_VDECL int ntv_funcid; /* incremental number of native function */ +SC_VDECL int errnum; /* number of errors */ +SC_VDECL int warnnum; /* number of warnings */ +SC_VDECL int sc_debug; /* debug/optimization options (bit field) */ +SC_VDECL int charbits; /* number of bits for a character */ +SC_VDECL int sc_packstr; /* strings are packed by default? */ +SC_VDECL int sc_asmfile; /* create .ASM file? */ +SC_VDECL int sc_listing; /* create .LST file? */ +SC_VDECL int sc_compress; /* compress bytecode? */ +SC_VDECL int sc_needsemicolon;/* semicolon required to terminate expressions? */ +SC_VDECL int sc_dataalign; /* data alignment value */ +SC_VDECL int sc_alignnext; /* must frame of the next function be aligned? */ +SC_VDECL int curseg; /* 1 if currently parsing CODE, 2 if parsing DATA */ +SC_VDECL cell sc_stksize; /* stack size */ +SC_VDECL int freading; /* is there an input file ready for reading? */ +SC_VDECL int fline; /* the line number in the current file */ +SC_VDECL int fnumber; /* number of files in the file table (debugging) */ +SC_VDECL int fcurrent; /* current file being processed (debugging) */ +SC_VDECL int intest; /* true if inside a test */ +SC_VDECL int sideeffect; /* true if an expression causes a side-effect */ +SC_VDECL int stmtindent; /* current indent of the statement */ +SC_VDECL int indent_nowarn; /* skip warning "217 loose indentation" */ +SC_VDECL int sc_tabsize; /* number of spaces that a TAB represents */ +SC_VDECL int sc_allowtags; /* allow/detect tagnames in lex() */ +SC_VDECL int sc_status; /* read/write status */ +SC_VDECL int sc_rationaltag; /* tag for rational numbers */ +SC_VDECL int rational_digits; /* number of fractional digits */ + +SC_VDECL FILE *inpf; /* file read from (source or include) */ +SC_VDECL FILE *inpf_org; /* main source file */ +SC_VDECL FILE *outf; /* file written to */ + +SC_VDECL jmp_buf errbuf; /* target of longjmp() on a fatal error */ + +#if !defined SC_LIGHT + SC_VDECL int sc_makereport; /* generate a cross-reference report */ +#endif + +#endif /* SC_SKIP_VDECL */ + +#endif /* __SC_H */ diff --git a/legacy/embryo/src/bin/embryo_cc_sc1.c b/legacy/embryo/src/bin/embryo_cc_sc1.c new file mode 100644 index 0000000000..a1838f1048 --- /dev/null +++ b/legacy/embryo/src/bin/embryo_cc_sc1.c @@ -0,0 +1,3979 @@ +/* Small compiler + * + * Function and variable definition and declaration, statement parser. + * + * Copyright (c) ITB CompuPhase, 1997-2003 + * + * This software is provided "as-is", without any express or implied warranty. + * In no event will the authors be held liable for any damages arising from + * the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software in + * a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + * Version: $Id$ + */ +#include +#include +#include +#include +#include +#include +#include + +#if defined __WIN32__ || defined _WIN32 || defined __MSDOS__ + #include + #include +#endif + +#if defined LINUX + #include + #include +#endif + +#if defined FORTIFY + #include "fortify.h" +#endif + +#if defined __BORLANDC__ || defined __WATCOMC__ + #include + static unsigned total_drives; /* dummy variable */ + #define dos_setdrive(i) _dos_setdrive(i,&total_drives) +#elif defined _MSC_VER && defined _WIN32 + #include /* for _chdrive() */ + #define dos_setdrive(i) _chdrive(i) +#endif +#if defined __BORLANDC__ + #include /* for chdir() */ +#elif defined __WATCOMC__ + #include /* for chdir() */ +#endif +#if defined __WIN32__ || defined _WIN32 || defined _Windows + #include +#endif + +#include "embryo_cc_sc.h" +#define VERSION_STR "2.4" +#define VERSION_INT 240 + +static void resetglobals(void); +static void initglobals(void); +static void setopt(int argc,char **argv,char *iname,char *oname, + char *ename,char *pname,char *rname); +static void setconfig(char *root); +static void setcaption(void); +static void about(void); +static void setconstants(void); +static void parse(void); +static void dumplits(void); +static void dumpzero(int count); +static void declfuncvar(int tok,char *symname,int tag,int fpublic,int fstatic,int fstock,int fconst); +static void declglb(char *firstname,int firsttag,int fpublic,int fstatic,int stock,int fconst); +static int declloc(int fstatic); +static void decl_const(int table); +static void decl_enum(int table); +static cell needsub(int *tag); +static void initials(int ident,int tag,cell *size,int dim[],int numdim); +static cell initvector(int ident,int tag,cell size,int fillzero); +static cell init(int ident,int *tag); +static void funcstub(int native); +static int newfunc(char *firstname,int firsttag,int fpublic,int fstatic,int stock); +static int declargs(symbol *sym); +static void doarg(char *name,int ident,int offset,int tags[],int numtags, + int fpublic,int fconst,arginfo *arg); +static void dump_referrers(symbol *root,FILE *log,char *sourcefile); +static void reduce_referrers(symbol *root); +static int testsymbols(symbol *root,int level,int testlabs,int testconst); +static void destructsymbols(symbol *root,int level); +static constvalue *find_constval_byval(constvalue *table,cell val); +static void statement(int *lastindent,int allow_decl); +static void compound(void); +static void doexpr(int comma,int chkeffect,int allowarray,int mark_endexpr, + int *tag,int chkfuncresult); +static void doassert(void); +static void doexit(void); +static void test(int label,int parens,int invert); +static void doif(void); +static void dowhile(void); +static void dodo(void); +static void dofor(void); +static void doswitch(void); +static void dogoto(void); +static void dolabel(void); +static symbol *fetchlab(char *name); +static void doreturn(void); +static void dobreak(void); +static void docont(void); +static void dosleep(void); +static void addwhile(int *ptr); +static void delwhile(void); +static int *readwhile(void); + +static int lastst = 0; /* last executed statement type */ +static int nestlevel = 0; /* number of active (open) compound statements */ +static int rettype = 0; /* the type that a "return" expression should have */ +static int skipinput = 0; /* number of lines to skip from the first input file */ +static int wq[wqTABSZ]; /* "while queue", internal stack for nested loops */ +static int *wqptr; /* pointer to next entry */ +static char binfname[_MAX_PATH];/* binary file name */ +#if defined __WIN32__ || defined _WIN32 || defined _Windows + static HWND hwndFinish = 0; +#endif + +#if !defined NO_MAIN + +#if defined __TURBOC__ && !defined __32BIT__ + extern unsigned int _stklen = 0x2000; +#endif + +#if defined __BORLANDC__ || defined __WATCOMC__ + #pragma argsused +#endif + +int main(int argc, char *argv[], char *env[]) +{ + #if defined LINUX + char argv0[_MAX_PATH]; + int i; + + strcpy(argv0,argv[0]); + /* Linux stores the name of the program in argv[0], but not the path. + * To adjust this, I store a string with the path in argv[0]. To do + * so, I try to get the current path with getcwd(), and if that fails + * I search for the PWD= setting in the environment. + */ + if ( NULL != getcwd(argv0, _MAX_PATH) ) { + i=strlen(argv0); + snprintf(argv0+i,_MAX_PATH-i,"/%s",argv[0]); + } else { + char *pwd = getenv("PWD"); + if (pwd!=NULL) + snprintf(argv0,_MAX_PATH,"%s/%s",pwd,argv[0]); + } /* if */ + argv[0]=argv0; /* set location to new first parameter */ + #endif + + return sc_compile(argc,argv); +} + +int sc_printf(const char *message,...) +{ + int ret; + va_list argptr; + + va_start(argptr,message); + ret=vprintf(message,argptr); + va_end(argptr); + + return ret; +} + +int sc_error(int number,char *message,char *filename,int firstline,int lastline,va_list argptr) +{ +static char *prefix[3]={ "error", "fatal error", "warning" }; + + if (number!=0) { + char *pre; + + pre=prefix[number/100]; + if (firstline>=0) + fprintf(stderr,"%s(%d -- %d) : %s %03d: ",filename,firstline,lastline,pre,number); + else + fprintf(stderr,"%s(%d) : %s %03d: ",filename,lastline,pre,number); + } /* if */ + vfprintf(stderr,message,argptr); + fflush(stderr); + return 0; +} + +void *sc_opensrc(char *filename) +{ + return fopen(filename,"rt"); +} + +void sc_closesrc(void *handle) +{ + assert(handle!=NULL); + fclose((FILE*)handle); +} + +void sc_resetsrc(void *handle,void *position) +{ + assert(handle!=NULL); + fsetpos((FILE*)handle,(fpos_t *)position); +} + +char *sc_readsrc(void *handle,char *target,int maxchars) +{ + return fgets(target,maxchars,(FILE*)handle); +} + +void *sc_getpossrc(void *handle) +{ + static fpos_t lastpos; /* may need to have a LIFO stack of such positions */ + + fgetpos((FILE*)handle,&lastpos); + return &lastpos; +} + +int sc_eofsrc(void *handle) +{ + return feof((FILE*)handle); +} + +void *sc_openasm(char *filename) +{ + return fopen(filename,"w+t"); +} + +void sc_closeasm(void *handle, int deletefile) +{ + if (handle!=NULL) + fclose((FILE*)handle); + if (deletefile) + unlink(outfname); +} + +void sc_resetasm(void *handle) +{ + fflush((FILE*)handle); + fseek((FILE*)handle,0,SEEK_SET); +} + +int sc_writeasm(void *handle,char *st) +{ + return fputs(st,(FILE*)handle) >= 0; +} + +char *sc_readasm(void *handle, char *target, int maxchars) +{ + return fgets(target,maxchars,(FILE*)handle); +} + +void *sc_openbin(char *filename) +{ + return fopen(filename,"wb"); +} + +void sc_closebin(void *handle,int deletefile) +{ + fclose((FILE*)handle); + if (deletefile) + unlink(binfname); +} + +void sc_resetbin(void *handle) +{ + fflush((FILE*)handle); + fseek((FILE*)handle,0,SEEK_SET); +} + +int sc_writebin(void *handle,void *buffer,int size) +{ + return (int)fwrite(buffer,1,size,(FILE*)handle) == size; +} + +long sc_lengthbin(void *handle) +{ + return ftell((FILE*)handle); +} + +#endif /* !defined NO_MAIN */ + + +/* "main" of the compiler + */ +#if defined __cplusplus + extern "C" +#endif +int sc_compile(int argc, char *argv[]) +{ + int entry,i,jmpcode; + int retcode; + char incfname[_MAX_PATH]; + char reportname[_MAX_PATH]; + FILE *binf; + void *inpfmark; + char lcl_ctrlchar; + int lcl_packstr,lcl_needsemicolon,lcl_tabsize; + + /* set global variables to their initial value */ + binf=NULL; + initglobals(); + errorset(sRESET); + errorset(sEXPRRELEASE); + lexinit(); + + /* make sure that we clean up on a fatal error; do this before the first + * call to error(). */ + if ((jmpcode=setjmp(errbuf))!=0) + goto cleanup; + + /* allocate memory for fixed tables */ + inpfname=(char *)malloc(_MAX_PATH); + litq=(cell *)malloc(litmax*sizeof(cell)); + if (litq==NULL) + error(103); /* insufficient memory */ + if (!phopt_init()) + error(103); /* insufficient memory */ + + setopt(argc,argv,inpfname,outfname,errfname,incfname,reportname); + /* set output names that depend on the input name */ + if (sc_listing) + set_extension(outfname,".lst",TRUE); + else + set_extension(outfname,".asm",TRUE); + strcpy(binfname,outfname); + set_extension(binfname,".amx",TRUE); + if (strlen(errfname)!=0) + unlink(errfname); /* delete file on startup */ + else + setcaption(); + setconfig(argv[0]); /* the path to the include files */ + lcl_ctrlchar=sc_ctrlchar; + lcl_packstr=sc_packstr; + lcl_needsemicolon=sc_needsemicolon; + lcl_tabsize=sc_tabsize; + inpf=inpf_org=(FILE*)sc_opensrc(inpfname); + if (inpf==NULL) + error(100,inpfname); + freading=TRUE; + outf=(FILE*)sc_openasm(outfname); /* first write to assembler file (may be temporary) */ + if (outf==NULL) + error(101,outfname); + /* immediately open the binary file, for other programs to check */ + if (sc_asmfile || sc_listing) { + binf=NULL; + } else { + binf=(FILE*)sc_openbin(binfname); + if (binf==NULL) + error(101,binfname); + } /* if */ + setconstants(); /* set predefined constants and tagnames */ + for (i=0; i0) { + if (strcmp(incfname,sDEF_PREFIX)==0) { + plungefile(incfname,FALSE,TRUE); /* parse "default.inc" */ + } else { + if (!plungequalifiedfile(incfname)) /* parse "prefix" include file */ + error(100,incfname); /* cannot read from ... (fatal error) */ + } /* if */ + } /* if */ + preprocess(); /* fetch first line */ + parse(); /* process all input */ + + /* second pass */ + sc_status=statWRITE; /* set, to enable warnings */ + /* write a report, if requested */ + #if !defined SC_LIGHT + if (sc_makereport) { + FILE *frep=stdout; + if (strlen(reportname)>0) + frep=fopen(reportname,"wb"); /* avoid translation of \n to \r\n in DOS/Windows */ + if (frep!=NULL) { + dump_referrers(&glbtab,frep,inpfname); + if (strlen(reportname)>0) + fclose(frep); + } /* if */ + } /* if */ + #endif + if (sc_listing) + goto cleanup; + + /* ??? for re-parsing the listing file instead of the original source + * file (and doing preprocessing twice): + * - close input file, close listing file + * - re-open listing file for reading (inpf) + * - open assembler file (outf) + */ + + /* reset "defined" flag of all functions and global variables */ + reduce_referrers(&glbtab); + delete_symbols(&glbtab,0,TRUE,FALSE); + #if !defined NO_DEFINE + delete_substtable(); + #endif + resetglobals(); + sc_ctrlchar=lcl_ctrlchar; + sc_packstr=lcl_packstr; + sc_needsemicolon=lcl_needsemicolon; + sc_tabsize=lcl_tabsize; + errorset(sRESET); + /* reset the source file */ + inpf=inpf_org; + freading=TRUE; + sc_resetsrc(inpf,inpfmark); /* reset file position */ + fline=skipinput; /* reset line number */ + lexinit(); /* clear internal flags of lex() */ + sc_status=statWRITE; /* allow to write --this variable was reset by resetglobals() */ + writeleader(); + setfile(inpfname,fnumber); + if (strlen(incfname)>0) { + if (strcmp(incfname,sDEF_PREFIX)==0) + plungefile(incfname,FALSE,TRUE); /* parse "default.inc" (again) */ + else + plungequalifiedfile(incfname); /* parse implicit include file (again) */ + } /* if */ + preprocess(); /* fetch first line */ + parse(); /* process all input */ + /* inpf is already closed when readline() attempts to pop of a file */ + writetrailer(); /* write remaining stuff */ + + entry=testsymbols(&glbtab,0,TRUE,FALSE); /* test for unused or undefined + * functions and variables */ + if (!entry) + error(13); /* no entry point (no public functions) */ + +cleanup: + if (inpf!=NULL) /* main source file is not closed, do it now */ + sc_closesrc(inpf); + /* write the binary file (the file is already open) */ + if (!(sc_asmfile || sc_listing) && errnum==0 && jmpcode==0) { + assert(binf!=NULL); + sc_resetasm(outf); /* flush and loop back, for reading */ + assemble(binf,outf); /* assembler file is now input */ + } /* if */ + if (outf!=NULL) + sc_closeasm(outf,!(sc_asmfile || sc_listing)); + if (binf!=NULL) + sc_closebin(binf,errnum!=0); + + if (inpfname!=NULL) + free(inpfname); + if (litq!=NULL) + free(litq); + phopt_cleanup(); + stgbuffer_cleanup(); + assert(jmpcode!=0 || loctab.next==NULL);/* on normal flow, local symbols + * should already have been deleted */ + delete_symbols(&loctab,0,TRUE,TRUE); /* delete local variables if not yet + * done (i.e. on a fatal error) */ + delete_symbols(&glbtab,0,TRUE,TRUE); + delete_consttable(&tagname_tab); + delete_consttable(&libname_tab); + delete_aliastable(); + delete_pathtable(); + #if !defined NO_DEFINE + delete_substtable(); + #endif + if (errnum!=0){ + if (strlen(errfname)==0) + sc_printf("\n%d Error%s.\n",errnum,(errnum>1) ? "s" : ""); + retcode=2; + } else if (warnnum!=0){ + if (strlen(errfname)==0) + sc_printf("\n%d Warning%s.\n",warnnum,(warnnum>1) ? "s" : ""); + retcode=1; + } else { + retcode=jmpcode; + } /* if */ + #if defined __WIN32__ || defined _WIN32 || defined _Windows + if (IsWindow(hwndFinish)) + PostMessage(hwndFinish,RegisterWindowMessage("SCNotify"),retcode,0L); + #endif + #if defined FORTIFY + Fortify_ListAllMemory(); + #endif + return retcode; +} + +#if defined __cplusplus + extern "C" +#endif +int sc_addconstant(char *name,cell value,int tag) +{ + errorset(sFORCESET); /* make sure error engine is silenced */ + sc_status=statIDLE; + add_constant(name,value,sGLOBAL,tag); + return 1; +} + +#if defined __cplusplus + extern "C" +#endif +int sc_addtag(char *name) +{ + cell val; + constvalue *ptr; + int last,tag; + + if (name==NULL) { + /* no tagname was given, check for one */ + if (lex(&val,&name)!=tLABEL) { + lexpush(); + return 0; /* untagged */ + } /* if */ + } /* if */ + + assert(strchr(name,':')==NULL); /* colon should already have been stripped */ + last=0; + ptr=tagname_tab.next; + while (ptr!=NULL) { + tag=(int)(ptr->value & TAGMASK); + if (strcmp(name,ptr->name)==0) + return tag; /* tagname is known, return its sequence number */ + tag &= (int)~FIXEDTAG; + if (tag>last) + last=tag; + ptr=ptr->next; + } /* while */ + + /* tagname currently unknown, add it */ + tag=last+1; /* guaranteed not to exist already */ + if (isupper(*name)) + tag |= (int)FIXEDTAG; + append_constval(&tagname_tab,name,(cell)tag,0); + return tag; +} + +static void resetglobals(void) +{ + /* reset the subset of global variables that is modified by the first pass */ + curfunc=NULL; /* pointer to current function */ + lastst=0; /* last executed statement type */ + nestlevel=0; /* number of active (open) compound statements */ + rettype=0; /* the type that a "return" expression should have */ + litidx=0; /* index to literal table */ + stgidx=0; /* index to the staging buffer */ + labnum=0; /* number of (internal) labels */ + staging=0; /* true if staging output */ + declared=0; /* number of local cells declared */ + glb_declared=0; /* number of global cells declared */ + code_idx=0; /* number of bytes with generated code */ + ntv_funcid=0; /* incremental number of native function */ + curseg=0; /* 1 if currently parsing CODE, 2 if parsing DATA */ + freading=FALSE; /* no input file ready yet */ + fline=0; /* the line number in the current file */ + fnumber=0; /* the file number in the file table (debugging) */ + fcurrent=0; /* current file being processed (debugging) */ + intest=0; /* true if inside a test */ + sideeffect=0; /* true if an expression causes a side-effect */ + stmtindent=0; /* current indent of the statement */ + indent_nowarn=FALSE; /* do not skip warning "217 loose indentation" */ + sc_allowtags=TRUE; /* allow/detect tagnames */ + sc_status=statIDLE; +} + +static void initglobals(void) +{ + resetglobals(); + + sc_asmfile=FALSE; /* do not create .ASM file */ + sc_listing=FALSE; /* do not create .LST file */ + skipinput=0; /* number of lines to skip from the first input file */ + sc_ctrlchar=CTRL_CHAR;/* the escape character */ + litmax=sDEF_LITMAX; /* current size of the literal table */ + errnum=0; /* number of errors */ + warnnum=0; /* number of warnings */ + sc_debug=sCHKBOUNDS; /* by default: bounds checking+assertions */ + charbits=8; /* a "char" is 8 bits */ + sc_packstr=FALSE; /* strings are unpacked by default */ + sc_compress=TRUE; /* compress output bytecodes */ + sc_needsemicolon=FALSE;/* semicolon required to terminate expressions? */ + sc_dataalign=sizeof(cell); + sc_stksize=sDEF_AMXSTACK;/* default stack size */ + sc_tabsize=8; /* assume a TAB is 8 spaces */ + sc_rationaltag=0; /* assume no support for rational numbers */ + rational_digits=0; /* number of fractional digits */ + + outfname[0]='\0'; /* output file name */ + errfname[0]='\0'; /* error file name */ + inpf=NULL; /* file read from */ + inpfname=NULL; /* pointer to name of the file currently read from */ + outf=NULL; /* file written to */ + litq=NULL; /* the literal queue */ + glbtab.next=NULL; /* clear global variables/constants table */ + loctab.next=NULL; /* " local " / " " */ + tagname_tab.next=NULL;/* tagname table */ + libname_tab.next=NULL;/* library table (#pragma library "..." syntax) */ + + pline[0]='\0'; /* the line read from the input file */ + lptr=NULL; /* points to the current position in "pline" */ + curlibrary=NULL; /* current library */ + inpf_org=NULL; /* main source file */ + + wqptr=wq; /* initialize while queue pointer */ + +#if !defined SC_LIGHT + sc_makereport=FALSE; /* do not generate a cross-reference report */ +#endif +} + +/* set_extension + * Set the default extension, or force an extension. To erase the + * extension of a filename, set "extension" to an empty string. + */ +SC_FUNC void set_extension(char *filename,char *extension,int force) +{ + char *ptr; + + assert(extension!=NULL && (*extension=='\0' || *extension=='.')); + assert(filename!=NULL); + ptr=strrchr(filename,'.'); + if (ptr!=NULL) { + /* ignore extension on a directory or at the start of the filename */ + if (strchr(ptr,DIRSEP_CHAR)!=NULL || ptr==filename || *(ptr-1)==DIRSEP_CHAR) + ptr=NULL; + } /* if */ + if (force && ptr!=NULL) + *ptr='\0'; /* set zero terminator at the position of the period */ + if (force || ptr==NULL) + strcat(filename,extension); +} + +static int toggle_option(char *optptr, int option) +{ + switch (*(optptr+1)) { + case '\0': + option=!option; + break; + case '-': + option=FALSE; + break; + case '+': + option=TRUE; + break; + default: + about(); + } /* switch */ + return option; +} + +/* Parsing command line options is indirectly recursive: parseoptions() + * calls parserespf() to handle options in a a response file and + * parserespf() calls parseoptions() at its turn after having created + * an "option list" from the contents of the file. + */ +static void parserespf(char *filename,char *iname,char *oname, + char *ename,char *pname,char *rname); + +static void parseoptions(int argc,char **argv,char *iname,char *oname, + char *ename,char *pname,char *rname) +{ + char str[_MAX_PATH],*ptr; + int arg,i,isoption; + + for (arg=1; arg0) { + if (str[i-1]!=DIRSEP_CHAR) { + str[i]=DIRSEP_CHAR; + str[i+1]='\0'; + } /* if */ + insert_path(str); + } /* if */ + break; + case 'l': + if (*(ptr+1)!='\0') + about(); + sc_listing=TRUE; /* skip second pass & code generation */ + break; + case 'o': + strcpy(oname,ptr+1); /* set name of (binary) output file */ + break; + case 'P': + sc_packstr=toggle_option(ptr,sc_packstr); + break; + case 'p': + strcpy(pname,ptr+1); /* set name of implicit include file */ + break; +#if !defined SC_LIGHT + case 'r': + strcpy(rname,ptr+1); /* set name of report file */ + sc_makereport=TRUE; + if (strlen(rname)>0) { + set_extension(rname,".xml",FALSE); + } else if (strlen(iname)>0) { + assert(strlen(rname)==0); + if ((ptr=strrchr(iname,DIRSEP_CHAR))!=NULL) + ptr++; /* strip path */ + else + ptr=iname; + strcpy(rname,ptr); + set_extension(rname,".xml",TRUE); + } /* if */ + break; +#endif + case 'S': + i=atoi(ptr+1); + if (i>64) + sc_stksize=(cell)i; /* stack size has minimum size */ + else + about(); + break; + case 's': + skipinput=atoi(ptr+1); + break; + case 't': + sc_tabsize=atoi(ptr+1); + break; + case '\\': /* use \ instead for escape characters */ + sc_ctrlchar='\\'; + break; + case '^': /* use ^ instead for escape characters */ + sc_ctrlchar='^'; + break; + case ';': + sc_needsemicolon=toggle_option(ptr,sc_needsemicolon); + break; + default: /* wrong option */ + about(); + } /* switch */ + } else if (argv[arg][0]=='@') { + #if !defined SC_LIGHT + parserespf(&argv[arg][1],iname,oname,ename,pname,rname); + #endif + } else if ((ptr=strchr(argv[arg],'='))!=NULL) { + i=(int)(ptr-argv[arg]); + if (i>sNAMEMAX) { + i=sNAMEMAX; + error(200,argv[arg],sNAMEMAX); /* symbol too long, truncated to sNAMEMAX chars */ + } /* if */ + strncpy(str,argv[arg],i); + str[i]='\0'; /* str holds symbol name */ + i=atoi(ptr+1); + add_constant(str,i,sGLOBAL,0); + } else if (strlen(iname)>0) { + about(); + } else { + strcpy(iname,argv[arg]); + set_extension(iname,".sma",FALSE); + /* The output name is the input name with a different extension, + * but it is stored in a different directory + */ + if (strlen(oname)==0) { + if ((ptr=strrchr(iname,DIRSEP_CHAR))!=NULL) + ptr++; /* strip path */ + else + ptr=iname; + strcpy(oname,ptr); + } /* if */ + set_extension(oname,".asm",TRUE); +#if !defined SC_LIGHT + if (sc_makereport && strlen(rname)==0) { + if ((ptr=strrchr(iname,DIRSEP_CHAR))!=NULL) + ptr++; /* strip path */ + else + ptr=iname; + strcpy(rname,ptr); + set_extension(rname,".xml",TRUE); + } /* if */ +#endif + } /* if */ + } /* for */ +} + +#if !defined SC_LIGHT +static void parserespf(char *filename,char *iname,char *oname, + char *ename,char *pname,char *rname) +{ +#define MAX_OPTIONS 100 + FILE *fp; + char *string, *ptr, **argv; + int argc; + long size; + + if ((fp=fopen(filename,"rt"))==NULL) + error(100,filename); /* error reading input file */ + /* load the complete file into memory */ + fseek(fp,0L,SEEK_END); + size=ftell(fp); + fseek(fp,0L,SEEK_SET); + assert(size0 && ch!=' ' && ch!='\x1b'); + sc_printf("\n\n"); + return ch==' '; + #else + return TRUE; + #endif +} + +static void setcaption(void) +{ + sc_printf("Small compiler " VERSION_STR "\t\tCopyright (c) 1997-2003, ITB CompuPhase\n\n"); +} + +static void about(void) +{ + if (strlen(errfname)==0) { + setcaption(); + sc_printf("Usage: sc [options]\n\n"); + sc_printf("Options:\n"); + sc_printf(" -A alignment in bytes of the data segment and the stack\n"); + sc_printf(" -a output assembler code (skip code generation pass)\n"); + sc_printf(" -C[+/-] compact encoding for output file (default=%c)\n", sc_compress ? '+' : '-'); + sc_printf(" -c8 [default] a character is 8-bits (ASCII/ISO Latin-1)\n"); + sc_printf(" -c16 a character is 16-bits (Unicode)\n"); +#if defined dos_setdrive + sc_printf(" -Dpath active directory path\n"); +#endif + sc_printf(" -d0 no symbolic information, no run-time checks\n"); + sc_printf(" -d1 [default] run-time checks, no symbolic information\n"); + sc_printf(" -d2 full debug information and dynamic checking\n"); + sc_printf(" -d3 full debug information, dynamic checking, no optimization\n"); + sc_printf(" -e set name of error file (quiet compile)\n"); +#if defined __WIN32__ || defined _WIN32 || defined _Windows + sc_printf(" -H window handle to send a notification message on finish\n"); +#endif + sc_printf(" -i path for include files\n"); + sc_printf(" -l create list file (preprocess only)\n"); + sc_printf(" -o set base name of output file\n"); + sc_printf(" -P[+/-] strings are \"packed\" by default (default=%c)\n", sc_packstr ? '+' : '-'); + sc_printf(" -p set name of \"prefix\" file\n"); + if (!waitkey()) + longjmp(errbuf,3); +#if !defined SC_LIGHT + sc_printf(" -r[name] write cross reference report to console or to specified file\n"); +#endif + sc_printf(" -S stack/heap size in cells (default=%d)\n",(int)sc_stksize); + sc_printf(" -s skip lines from the input file\n"); + sc_printf(" -t TAB indent size (in character positions)\n"); + sc_printf(" -\\ use '\\' for escape characters\n"); + sc_printf(" -^ use '^' for escape characters\n"); + sc_printf(" -;[+/-] require a semicolon to end each statement (default=%c)\n", sc_needsemicolon ? '+' : '-'); + sc_printf(" sym=val define constant \"sym\" with value \"val\"\n"); + sc_printf(" sym= define constant \"sym\" with value 0\n"); + } /* if */ + longjmp(errbuf,3); /* user abort */ +} + +static void setconstants(void) +{ + int debug; + + assert(sc_status==statIDLE); + append_constval(&tagname_tab,"_",0,0);/* "untagged" */ + append_constval(&tagname_tab,"bool",1,0); + + add_constant("true",1,sGLOBAL,1); /* boolean flags */ + add_constant("false",0,sGLOBAL,1); + add_constant("EOS",0,sGLOBAL,0); /* End Of String, or '\0' */ + #if defined(BIT16) + add_constant("cellbits",16,sGLOBAL,0); + add_constant("cellmax",SHRT_MAX,sGLOBAL,0); + add_constant("cellmin",SHRT_MIN,sGLOBAL,0); + #else + add_constant("cellbits",32,sGLOBAL,0); + add_constant("cellmax",LONG_MAX,sGLOBAL,0); + add_constant("cellmin",LONG_MIN,sGLOBAL,0); + #endif + add_constant("charbits",charbits,sGLOBAL,0); + add_constant("charmin",0,sGLOBAL,0); + add_constant("charmax",(charbits==16) ? 0xffff : 0xff,sGLOBAL,0); + + add_constant("__Small",VERSION_INT,sGLOBAL,0); + + debug=0; + if ((sc_debug & (sCHKBOUNDS | sSYMBOLIC))==(sCHKBOUNDS | sSYMBOLIC)) + debug=2; + else if ((sc_debug & sCHKBOUNDS)==sCHKBOUNDS) + debug=1; + add_constant("debug",debug,sGLOBAL,0); +} + +/* parse - process all input text + * + * At this level, only static declarations and function definitions are legal. + */ +static void parse(void) +{ + int tok,tag,fconst,fstock,fstatic; + cell val; + char *str; + + while (freading){ + /* first try whether a declaration possibly is native or public */ + tok=lex(&val,&str); /* read in (new) token */ + switch (tok) { + case 0: + /* ignore zero's */ + break; + case tNEW: + fconst=matchtoken(tCONST); + declglb(NULL,0,FALSE,FALSE,FALSE,fconst); + break; + case tSTATIC: + /* This can be a static function or a static global variable; we know + * which of the two as soon as we have parsed up to the point where an + * opening paranthesis of a function would be expected. To back out after + * deciding it was a declaration of a static variable after all, we have + * to store the symbol name and tag. + */ + fstock=matchtoken(tSTOCK); + fconst=matchtoken(tCONST); + tag=sc_addtag(NULL); + tok=lex(&val,&str); + if (tok==tNATIVE || tok==tPUBLIC) { + error(42); /* invalid combination of class specifiers */ + break; + } /* if */ + declfuncvar(tok,str,tag,FALSE,TRUE,fstock,fconst); + break; + case tCONST: + decl_const(sGLOBAL); + break; + case tENUM: + decl_enum(sGLOBAL); + break; + case tPUBLIC: + /* This can be a public function or a public variable; see the comment + * above (for static functions/variables) for details. + */ + fconst=matchtoken(tCONST); + tag=sc_addtag(NULL); + tok=lex(&val,&str); + if (tok==tNATIVE || tok==tSTOCK || tok==tSTATIC) { + error(42); /* invalid combination of class specifiers */ + break; + } /* if */ + declfuncvar(tok,str,tag,TRUE,FALSE,FALSE,fconst); + break; + case tSTOCK: + /* This can be a stock function or a stock *global) variable; see the + * comment above (for static functions/variables) for details. + */ + fstatic=matchtoken(tSTATIC); + fconst=matchtoken(tCONST); + tag=sc_addtag(NULL); + tok=lex(&val,&str); + if (tok==tNATIVE || tok==tPUBLIC) { + error(42); /* invalid combination of class specifiers */ + break; + } /* if */ + declfuncvar(tok,str,tag,FALSE,fstatic,TRUE,fconst); + break; + case tLABEL: + case tSYMBOL: + case tOPERATOR: + lexpush(); + if (!newfunc(NULL,-1,FALSE,FALSE,FALSE)) { + error(10); /* illegal function or declaration */ + lexclr(TRUE); /* drop the rest of the line */ + } /* if */ + break; + case tNATIVE: + funcstub(TRUE); /* create a dummy function */ + break; + case tFORWARD: + funcstub(FALSE); + break; + case '}': + error(54); /* unmatched closing brace */ + break; + case '{': + error(55); /* start of function body without function header */ + break; + default: + if (freading) { + error(10); /* illegal function or declaration */ + lexclr(TRUE); /* drop the rest of the line */ + } /* if */ + } /* switch */ + } /* while */ +} + +/* dumplits + * + * Dump the literal pool (strings etc.) + * + * Global references: litidx (referred to only) + */ +static void dumplits(void) +{ + int j,k; + + k=0; + while (k=litidx) + stgwrite("\n"); /* force a newline after 10 dumps */ + /* Note: stgwrite() buffers a line until it is complete. It recognizes + * the end of line as a sequence of "\n\0", so something like "\n\t" + * so should not be passed to stgwrite(). + */ + } /* while */ + } /* while */ +} + +/* dumpzero + * + * Dump zero's for default initial values + */ +static void dumpzero(int count) +{ + int i; + + if (count<=0) + return; + assert(curseg==2); + defstorage(); + i=0; + while (count-- > 0) { + outval(0, FALSE); + i=(i+1) % 16; + stgwrite((i==0 || count==0) ? "\n" : " "); + if (i==0 && count>0) + defstorage(); + } /* while */ +} + +static void aligndata(int numbytes) +{ + assert(numbytes % sizeof(cell) == 0); /* alignment must be a multiple of + * the cell size */ + assert(numbytes!=0); + + if ((((glb_declared+litidx)*sizeof(cell)) % numbytes)!=0) { + while ((((glb_declared+litidx)*sizeof(cell)) % numbytes)!=0) + stowlit(0); + } /* if */ + +} + +static void declfuncvar(int tok,char *symname,int tag,int fpublic,int fstatic,int fstock,int fconst) +{ + char name[sNAMEMAX+1]; + + if (tok!=tSYMBOL && tok!=tOPERATOR) { + if (freading) + error(20,symname); /* invalid symbol name */ + return; + } /* if */ + if (tok==tOPERATOR) { + lexpush(); + if (!newfunc(NULL,tag,fpublic,fstatic,fstock)) + error(10); /* illegal function or declaration */ + } else { + assert(strlen(symname)<=sNAMEMAX); + strcpy(name,symname); + if (fconst || !newfunc(name,tag,fpublic,fstatic,fstock)) + declglb(name,tag,fpublic,fstatic,fstock,fconst); /* if not a static function, + * try a static variable */ + } /* if */ +} + +/* declglb - declare global symbols + * + * Declare a static (global) variable. Global variables are stored in + * the DATA segment. + * + * global references: glb_declared (altered) + */ +static void declglb(char *firstname,int firsttag,int fpublic,int fstatic,int stock,int fconst) +{ + int ident,tag,ispublic; + int idxtag[sDIMEN_MAX]; + char name[sNAMEMAX+1]; + cell val,size,cidx; + char *str; + int dim[sDIMEN_MAX]; + int numdim,level; + int filenum; + symbol *sym; + #if !defined NDEBUG + cell glbdecl=0; + #endif + + assert(!fpublic || !stock); /* may not both be set */ + filenum=fcurrent; /* save file number at the start of the declaration */ + do { + size=1; /* single size (no array) */ + numdim=0; /* no dimensions */ + ident=iVARIABLE; + if (firstname!=NULL) { + assert(strlen(firstname)<=sNAMEMAX); + strcpy(name,firstname); /* save symbol name */ + tag=firsttag; + firstname=NULL; + } else { + tag=sc_addtag(NULL); + if (lex(&val,&str)!=tSYMBOL) /* read in (new) token */ + error(20,str); /* invalid symbol name */ + assert(strlen(str)<=sNAMEMAX); + strcpy(name,str); /* save symbol name */ + } /* if */ + sym=findglb(name); + if (sym==NULL) + sym=findconst(name); + if (sym!=NULL && (sym->usage & uDEFINE)!=0) + error(21,name); /* symbol already defined */ + ispublic=fpublic; + if (name[0]==PUBLIC_CHAR) { + ispublic=TRUE; /* implicitly public variable */ + if (stock || fstatic) + error(42); /* invalid combination of class specifiers */ + } /* if */ + while (matchtoken('[')) { + ident=iARRAY; + if (numdim == sDIMEN_MAX) { + error(53); /* exceeding maximum number of dimensions */ + return; + } /* if */ + if (numdim>0 && dim[numdim-1]==0) + error(52); /* only last dimension may be variable length */ + size=needsub(&idxtag[numdim]); /* get size; size==0 for "var[]" */ + #if INT_MAX < LONG_MAX + if (size > INT_MAX) + error(105); /* overflow, exceeding capacity */ + #endif + if (ispublic) + error(56,name); /* arrays cannot be public */ + dim[numdim++]=(int)size; + } /* while */ + /* if this variable is never used (which can be detected only in the + * second stage), shut off code generation; make an exception for public + * variables + */ + cidx=0; /* only to avoid a compiler warning */ + if (sc_status==statWRITE && sym!=NULL && (sym->usage & (uREAD | uWRITTEN | uPUBLIC))==0) { + sc_status=statSKIP; + cidx=code_idx; + #if !defined NDEBUG + glbdecl=glb_declared; + #endif + } /* if */ + defsymbol(name,ident,sGLOBAL,sizeof(cell)*glb_declared,tag); + begdseg(); /* real (initialized) data in data segment */ + assert(litidx==0); /* literal queue should be empty */ + if (sc_alignnext) { + litidx=0; + aligndata(sc_dataalign); + dumplits(); /* dump the literal queue */ + sc_alignnext=FALSE; + litidx=0; /* global initial data is dumped, so restart at zero */ + } /* if */ + assert(litidx==0); /* literal queue should be empty (again) */ + initials(ident,tag,&size,dim,numdim);/* stores values in the literal queue */ + assert(size>=litidx); + if (numdim==1) + dim[0]=(int)size; + dumplits(); /* dump the literal queue */ + dumpzero((int)size-litidx); + litidx=0; + if (sym==NULL) { /* define only if not yet defined */ + sym=addvariable(name,sizeof(cell)*glb_declared,ident,sGLOBAL,tag, + dim,numdim,idxtag); + } else { /* if declared but not yet defined, adjust the variable's address */ + sym->addr=sizeof(cell)*glb_declared; + sym->usage|=uDEFINE; + } /* if */ + if (ispublic) + sym->usage|=uPUBLIC; + if (fconst) + sym->usage|=uCONST; + if (stock) + sym->usage|=uSTOCK; + if (fstatic) + sym->fnumber=filenum; + if (ident==iARRAY) + for (level=0; levelcompound==nestlevel) + error(21,name); /* symbol already defined */ + /* Although valid, a local variable whose name is equal to that + * of a global variable or to that of a local variable at a lower + * level might indicate a bug. + */ + if ((sym=findloc(name))!=NULL && sym->compound!=nestlevel || findglb(name)!=NULL) + error(219,name); /* variable shadows another symbol */ + while (matchtoken('[')){ + ident=iARRAY; + if (numdim == sDIMEN_MAX) { + error(53); /* exceeding maximum number of dimensions */ + return ident; + } /* if */ + if (numdim>0 && dim[numdim-1]==0) + error(52); /* only last dimension may be variable length */ + size=needsub(&idxtag[numdim]); /* get size; size==0 for "var[]" */ + #if INT_MAX < LONG_MAX + if (size > INT_MAX) + error(105); /* overflow, exceeding capacity */ + #endif + dim[numdim++]=(int)size; + } /* while */ + if (ident==iARRAY || fstatic) { + if (sc_alignnext) { + aligndata(sc_dataalign); + sc_alignnext=FALSE; + } /* if */ + cur_lit=litidx; /* save current index in the literal table */ + initials(ident,tag,&size,dim,numdim); + if (size==0) + return ident; /* error message already given */ + if (numdim==1) + dim[0]=(int)size; + } /* if */ + /* reserve memory (on the stack) for the variable */ + if (fstatic) { + /* write zeros for uninitialized fields */ + while (litidxcompound=nestlevel; /* for multiple declaration/shadowing check */ + if (fconst) + sym->usage|=uCONST; + if (ident==iARRAY) + for (level=0; level0) { + while ((litidx-curlit)<(int)size) + stowlit(0); + } /* if */ + if (size==0) { + size=litidx-curlit; /* number of elements defined */ + } else if (litidx-curlit>(int)size) { /* e.g. "myvar[3]={1,2,3,4};" */ + error(18); /* initialisation data exceeds declared size */ + litidx=(int)size+curlit; /* avoid overflow in memory moves */ + } /* if */ + return size; +} + +/* init + * + * Evaluate one initializer. + */ +static cell init(int ident,int *tag) +{ + cell i = 0; + + if (matchtoken(tSTRING)){ + /* lex() automatically stores strings in the literal table (and + * increases "litidx") */ + if (ident==iVARIABLE) { + error(6); /* must be assigned to an array */ + litidx=1; /* reset literal queue */ + } /* if */ + *tag=0; + } else if (constexpr(&i,tag)){ + stowlit(i); /* store expression result in literal table */ + } /* if */ + return i; +} + +/* needsub + * + * Get required array size + */ +static cell needsub(int *tag) +{ + cell val; + + *tag=0; + if (matchtoken(']')) /* we've already seen "[" */ + return 0; /* null size (like "char msg[]") */ + constexpr(&val,tag); /* get value (must be constant expression) */ + if (val<0) { + error(9); /* negative array size is invalid; assumed zero */ + val=0; + } /* if */ + needtoken(']'); + return val; /* return array size */ +} + +/* decl_const - declare a single constant + * + */ +static void decl_const(int vclass) +{ + char constname[sNAMEMAX+1]; + cell val; + char *str; + int tag,exprtag; + int symbolline; + + tag=sc_addtag(NULL); + if (lex(&val,&str)!=tSYMBOL) /* read in (new) token */ + error(20,str); /* invalid symbol name */ + symbolline=fline; /* save line where symbol was found */ + strcpy(constname,str); /* save symbol name */ + needtoken('='); + constexpr(&val,&exprtag); /* get value */ + needtoken(tTERM); + /* add_constant() checks for duplicate definitions */ + if (!matchtag(tag,exprtag,FALSE)) { + /* temporarily reset the line number to where the symbol was defined */ + int orgfline=fline; + fline=symbolline; + error(213); /* tagname mismatch */ + fline=orgfline; + } /* if */ + add_constant(constname,val,vclass,tag); +} + +/* decl_enum - declare enumerated constants + * + */ +static void decl_enum(int vclass) +{ + char enumname[sNAMEMAX+1],constname[sNAMEMAX+1]; + cell val,value,size; + char *str; + int tok,tag,explicittag; + cell increment,multiplier; + + /* get an explicit tag, if any (we need to remember whether an explicit + * tag was passed, even if that explicit tag was "_:", so we cannot call + * sc_addtag() here + */ + if (lex(&val,&str)==tLABEL) { + tag=sc_addtag(str); + explicittag=TRUE; + } else { + lexpush(); + tag=0; + explicittag=FALSE; + } /* if */ + + /* get optional enum name (also serves as a tag if no explicit tag was set) */ + if (lex(&val,&str)==tSYMBOL) { /* read in (new) token */ + strcpy(enumname,str); /* save enum name (last constant) */ + if (!explicittag) + tag=sc_addtag(enumname); + } else { + lexpush(); /* analyze again */ + enumname[0]='\0'; + } /* if */ + + /* get increment and multiplier */ + increment=1; + multiplier=1; + if (matchtoken('(')) { + if (matchtoken(taADD)) { + constexpr(&increment,NULL); + } else if (matchtoken(taMULT)) { + constexpr(&multiplier,NULL); + } else if (matchtoken(taSHL)) { + constexpr(&val,NULL); + while (val-->0) + multiplier*=2; + } /* if */ + needtoken(')'); + } /* if */ + + needtoken('{'); + /* go through all constants */ + value=0; /* default starting value */ + do { + if (matchtoken('}')) { /* quick exit if '}' follows ',' */ + lexpush(); + break; + } /* if */ + tok=lex(&val,&str); /* read in (new) token */ + if (tok!=tSYMBOL && tok!=tLABEL) + error(20,str); /* invalid symbol name */ + strcpy(constname,str); /* save symbol name */ + size=increment; /* default increment of 'val' */ + if (tok==tLABEL || matchtoken(':')) + constexpr(&size,NULL); /* get size */ + if (matchtoken('=')) + constexpr(&value,NULL); /* get value */ + /* add_constant() checks whether a variable (global or local) or + * a constant with the same name already exists */ + add_constant(constname,value,vclass,tag); + if (multiplier==1) + value+=size; + else + value*=size*multiplier; + } while (matchtoken(',')); + needtoken('}'); /* terminates the constant list */ + matchtoken(';'); /* eat an optional ; */ + + /* set the enum name to the last value plus one */ + if (strlen(enumname)>0) + add_constant(enumname,value,vclass,tag); +} + +/* + * Finds a function in the global symbol table or creates a new entry. + * It does some basic processing and error checking. + */ +SC_FUNC symbol *fetchfunc(char *name,int tag) +{ + symbol *sym; + cell offset; + + offset=code_idx; + if ((sc_debug & sSYMBOLIC)!=0) { + offset+=opcodes(1)+opargs(3)+nameincells(name); + /* ^^^ The address for the symbol is the code address. But the "symbol" + * instruction itself generates code. Therefore the offset is + * pre-adjusted to the value it will have after the symbol instruction. + */ + } /* if */ + if ((sym=findglb(name))!=0) { /* already in symbol table? */ + if (sym->ident!=iFUNCTN) { + error(21,name); /* yes, but not as a function */ + return NULL; /* make sure the old symbol is not damaged */ + } else if ((sym->usage & uDEFINE)!=0) { + error(21,name); /* yes, and it's already defined */ + } else if ((sym->usage & uNATIVE)!=0) { + error(21,name); /* yes, and it is an native */ + } /* if */ + assert(sym->vclass==sGLOBAL); + if ((sym->usage & uDEFINE)==0) { + /* as long as the function stays undefined, update the address and the tag */ + sym->addr=offset; + sym->tag=tag; + } /* if */ + } else { + /* don't set the "uDEFINE" flag; it may be a prototype */ + sym=addsym(name,offset,iFUNCTN,sGLOBAL,tag,0); + assert(sym!=NULL); /* fatal error 103 must be given on error */ + /* assume no arguments */ + sym->dim.arglist=(arginfo*)malloc(1*sizeof(arginfo)); + sym->dim.arglist[0].ident=0; + /* set library ID to NULL (only for native functions) */ + sym->x.lib=NULL; + } /* if */ + return sym; +} + +/* This routine adds symbolic information for each argument. + */ +static void define_args(void) +{ + symbol *sym; + + /* At this point, no local variables have been declared. All + * local symbols are function arguments. + */ + sym=loctab.next; + while (sym!=NULL) { + assert(sym->ident!=iLABEL); + assert(sym->vclass==sLOCAL); + defsymbol(sym->name,sym->ident,sLOCAL,sym->addr,sym->tag); + if (sym->ident==iREFARRAY) { + symbol *sub=sym; + while (sub!=NULL) { + symbolrange(sub->dim.array.level,sub->dim.array.length); + sub=finddepend(sub); + } /* while */ + } /* if */ + sym=sym->next; + } /* while */ +} + +static int operatorname(char *name) +{ + int opertok; + char *str; + cell val; + + assert(name!=NULL); + + /* check the operator */ + opertok=lex(&val,&str); + switch (opertok) { + case '+': + case '-': + case '*': + case '/': + case '%': + case '>': + case '<': + case '!': + case '~': + case '=': + name[0]=(char)opertok; + name[1]='\0'; + break; + case tINC: + strcpy(name,"++"); + break; + case tDEC: + strcpy(name,"--"); + break; + case tlEQ: + strcpy(name,"=="); + break; + case tlNE: + strcpy(name,"!="); + break; + case tlLE: + strcpy(name,"<="); + break; + case tlGE: + strcpy(name,">="); + break; + default: + name[0]='\0'; + error(61); /* operator cannot be redefined (or bad operator name) */ + return 0; + } /* switch */ + + return opertok; +} + +static int operatoradjust(int opertok,symbol *sym,char *opername,int resulttag) +{ + int tags[2]={0,0}; + int count=0; + arginfo *arg; + char tmpname[sNAMEMAX+1]; + symbol *oldsym; + + if (opertok==0) + return TRUE; + + assert(sym!=NULL && sym->ident==iFUNCTN && sym->dim.arglist!=NULL); + /* count arguments and save (first two) tags */ + while (arg=&sym->dim.arglist[count], arg->ident!=0) { + if (count<2) { + if (arg->numtags>1) + error(65,count+1); /* function argument may only have a single tag */ + else if (arg->numtags==1) + tags[count]=arg->tags[0]; + } /* if */ + if (opertok=='~' && count==0) { + if (arg->ident!=iREFARRAY) + error(73,arg->name);/* must be an array argument */ + } else { + if (arg->ident!=iVARIABLE) + error(66,arg->name);/* must be non-reference argument */ + } /* if */ + if (arg->hasdefault) + error(59,arg->name); /* arguments of an operator may not have a default value */ + count++; + } /* while */ + + /* for '!', '++' and '--', count must be 1 + * for '-', count may be 1 or 2 + * for '=', count must be 1, and the resulttag is also important + * for all other (binary) operators and the special '~' operator, count must be 2 + */ + switch (opertok) { + case '!': + case '=': + case tINC: + case tDEC: + if (count!=1) + error(62); /* number or placement of the operands does not fit the operator */ + break; + case '-': + if (count!=1 && count!=2) + error(62); /* number or placement of the operands does not fit the operator */ + break; + default: + if (count!=2) + error(62); /* number or placement of the operands does not fit the operator */ + } /* switch */ + + if (tags[0]==0 && (opertok!='=' && tags[1]==0 || opertok=='=' && resulttag==0)) + error(64); /* cannot change predefined operators */ + + /* change the operator name */ + assert(strlen(opername)>0); + operator_symname(tmpname,opername,tags[0],tags[1],count,resulttag); + if ((oldsym=findglb(tmpname))!=NULL) { + int i; + if ((oldsym->usage & uDEFINE)!=0) { + char errname[2*sNAMEMAX+16]; + funcdisplayname(errname,tmpname); + error(21,errname); /* symbol already defined */ + } /* if */ + sym->usage|=oldsym->usage; /* copy flags from the previous definition */ + for (i=0; inumrefers; i++) + if (oldsym->refer[i]!=NULL) + refer_symbol(sym,oldsym->refer[i]); + delete_symbol(&glbtab,oldsym); + } /* if */ + if ((sc_debug & sSYMBOLIC)!=0) + sym->addr += nameincells(tmpname) - nameincells(sym->name); + strcpy(sym->name,tmpname); + sym->hash=namehash(sym->name);/* calculate new hash */ + + /* operators should return a value, except the '~' operator */ + if (opertok!='~') + sym->usage |= uRETVALUE; + + return TRUE; +} + +static int check_operatortag(int opertok,int resulttag,char *opername) +{ + assert(opername!=NULL && strlen(opername)>0); + switch (opertok) { + case '!': + case '<': + case '>': + case tlEQ: + case tlNE: + case tlLE: + case tlGE: + if (resulttag!=sc_addtag("bool")) { + error(63,opername,"bool:"); /* operator X requires a "bool:" result tag */ + return FALSE; + } /* if */ + break; + case '~': + if (resulttag!=0) { + error(63,opername,"_:"); /* operator "~" requires a "_:" result tag */ + return FALSE; + } /* if */ + break; + } /* switch */ + return TRUE; +} + +static char *tag2str(char *dest,int tag) +{ + tag &= TAGMASK; + assert(tag>=0); + sprintf(dest,"0%x",tag); + return isdigit(dest[1]) ? &dest[1] : dest; +} + +SC_FUNC char *operator_symname(char *symname,char *opername,int tag1,int tag2,int numtags,int resulttag) +{ + char tagstr1[10], tagstr2[10]; + int opertok; + + assert(numtags>=1 && numtags<=2); + opertok= (opername[1]=='\0') ? opername[0] : 0; + if (opertok=='=') + sprintf(symname,"%s%s%s",tag2str(tagstr1,resulttag),opername,tag2str(tagstr2,tag1)); + else if (numtags==1 || opertok=='~') + sprintf(symname,"%s%s",opername,tag2str(tagstr1,tag1)); + else + sprintf(symname,"%s%s%s",tag2str(tagstr1,tag1),opername,tag2str(tagstr2,tag2)); + return symname; +} + +static int parse_funcname(char *fname,int *tag1,int *tag2,char *opname) +{ + char *ptr,*name; + int unary; + + /* tags are only positive, so if the function name starts with a '-', + * the operator is an unary '-' or '--' operator. + */ + if (*fname=='-') { + *tag1=0; + unary=TRUE; + ptr=fname; + } else { + *tag1=(int)strtol(fname,&ptr,16); + unary= ptr==fname; /* unary operator if it doesn't start with a tag name */ + } /* if */ + assert(!unary || *tag1==0); + assert(*ptr!='\0'); + for (name=opname; !isdigit(*ptr); ) + *name++ = *ptr++; + *name='\0'; + *tag2=(int)strtol(ptr,NULL,16); + return unary; +} + +SC_FUNC char *funcdisplayname(char *dest,char *funcname) +{ + int tags[2]; + char opname[10]; + constvalue *tagsym[2]; + int unary; + + if (isalpha(*funcname) || *funcname=='_' || *funcname==PUBLIC_CHAR || *funcname=='\0') { + if (dest!=funcname) + strcpy(dest,funcname); + return dest; + } /* if */ + + unary=parse_funcname(funcname,&tags[0],&tags[1],opname); + tagsym[1]=find_constval_byval(&tagname_tab,tags[1]); + assert(tagsym[1]!=NULL); + if (unary) { + sprintf(dest,"operator%s(%s:)",opname,tagsym[1]->name); + } else { + tagsym[0]=find_constval_byval(&tagname_tab,tags[0]); + assert(tagsym[0]!=NULL); + /* special case: the assignment operator has the return value as the 2nd tag */ + if (opname[0]=='=' && opname[1]=='\0') + sprintf(dest,"%s:operator%s(%s:)",tagsym[0]->name,opname,tagsym[1]->name); + else + sprintf(dest,"operator%s(%s:,%s:)",opname,tagsym[0]->name,tagsym[1]->name); + } /* if */ + return dest; +} + +static void funcstub(int native) +{ + int tok,tag; + char *str; + cell val; + char symbolname[sNAMEMAX+1]; + symbol *sym; + int opertok; + + opertok=0; + lastst=0; + litidx=0; /* clear the literal pool */ + assert(loctab.next==NULL); /* local symbol table should be empty */ + + tag=sc_addtag(NULL); + tok=lex(&val,&str); + if (native) { + if (tok==tPUBLIC || tok==tSTOCK || tok==tSTATIC || tok==tSYMBOL && *str==PUBLIC_CHAR) + error(42); /* invalid combination of class specifiers */ + } else { + if (tok==tPUBLIC || tok==tSTATIC) + tok=lex(&val,&str); + } /* if */ + if (tok==tOPERATOR) { + opertok=operatorname(symbolname); + if (opertok==0) + return; /* error message already given */ + check_operatortag(opertok,tag,symbolname); + } else { + if (tok!=tSYMBOL && freading) { + error(10); /* illegal function or declaration */ + return; + } /* if */ + strcpy(symbolname,str); + } /* if */ + needtoken('('); /* only functions may be native/forward */ + + sym=fetchfunc(symbolname,tag);/* get a pointer to the function entry */ + if (sym==NULL) + return; + if (native) { + sym->usage=uNATIVE | uRETVALUE | uDEFINE; + sym->x.lib=curlibrary; + } /* if */ + + declargs(sym); + /* "declargs()" found the ")" */ + if (!operatoradjust(opertok,sym,symbolname,tag)) + sym->usage &= ~uDEFINE; + /* for a native operator, also need to specify an "exported" function name; + * for a native function, this is optional + */ + if (native) { + if (opertok!=0) { + needtoken('='); + lexpush(); /* push back, for matchtoken() to retrieve again */ + } /* if */ + if (matchtoken('=')) { + /* allow number or symbol */ + if (matchtoken(tSYMBOL)) { + tokeninfo(&val,&str); + if (strlen(str)>sEXPMAX) { + error(220,str,sEXPMAX); + str[sEXPMAX]='\0'; + } /* if */ + insert_alias(sym->name,str); + } else { + constexpr(&val,NULL); + sym->addr=val; + // ??? Must mark this address, so that it won't be generated again + // and it won't be written to the output file. At the moment, + // I have assumed that this syntax is only valid if val < 0. + // To properly mix "normal" native functions and indexed native + // functions, one should use negative indices anyway. + // Special code for a negative index in sym->addr exists in + // SC4.C (ffcall()) and in SC6.C (the loops for counting the + // number of native variables and for writing them). + } /* if */ + } /* if */ + } /* if */ + needtoken(tTERM); + + litidx=0; /* clear the literal pool */ + delete_symbols(&loctab,0,TRUE,TRUE);/* clear local variables queue */ +} + +/* newfunc - begin a function + * + * This routine is called from "parse" and tries to make a function + * out of the following text + * + * Global references: funcstatus,lastst,litidx + * rettype (altered) + * curfunc (altered) + * declared (altered) + * glb_declared (altered) + * sc_alignnext (altered) + */ +static int newfunc(char *firstname,int firsttag,int fpublic,int fstatic,int stock) +{ + symbol *sym; + int argcnt,tok,tag,funcline; + int opertok,opererror; + char symbolname[sNAMEMAX+1]; + char *str; + cell val,cidx,glbdecl; + int filenum; + + assert(litidx==0); /* literal queue should be empty */ + litidx=0; /* clear the literal pool ??? */ + opertok=0; + lastst=0; /* no statement yet */ + cidx=0; /* just to avoid compiler warnings */ + glbdecl=0; + assert(loctab.next==NULL); /* local symbol table should be empty */ + filenum=fcurrent; /* save file number at the start of the declaration */ + + if (firstname!=NULL) { + assert(strlen(firstname)<=sNAMEMAX); + strcpy(symbolname,firstname); /* save symbol name */ + tag=firsttag; + } else { + tag= (firsttag>=0) ? firsttag : sc_addtag(NULL); + tok=lex(&val,&str); + assert(!fpublic); + if (tok==tNATIVE || tok==tPUBLIC && stock) + error(42); /* invalid combination of class specifiers */ + if (tok==tOPERATOR) { + opertok=operatorname(symbolname); + if (opertok==0) + return TRUE; /* error message already given */ + check_operatortag(opertok,tag,symbolname); + } else { + if (tok!=tSYMBOL && freading) { + error(20,str); /* invalid symbol name */ + return FALSE; + } /* if */ + assert(strlen(str)<=sNAMEMAX); + strcpy(symbolname,str); + } /* if */ + } /* if */ + /* check whether this is a function or a variable declaration */ + if (!matchtoken('(')) + return FALSE; + /* so it is a function, proceed */ + funcline=fline; /* save line at which the function is defined */ + if (symbolname[0]==PUBLIC_CHAR) { + fpublic=TRUE; /* implicitly public function */ + if (stock) + error(42); /* invalid combination of class specifiers */ + } /* if */ + sym=fetchfunc(symbolname,tag);/* get a pointer to the function entry */ + if (sym==NULL) + return TRUE; + if (fpublic) + sym->usage|=uPUBLIC; + if (fstatic) + sym->fnumber=filenum; + /* declare all arguments */ + argcnt=declargs(sym); + opererror=!operatoradjust(opertok,sym,symbolname,tag); + if (strcmp(symbolname,uMAINFUNC)==0) { + if (argcnt>0) + error(5); /* "main()" function may not have any arguments */ + sym->usage|=uREAD; /* "main()" is the program's entry point: always used */ + } /* if */ + /* "declargs()" found the ")"; if a ";" appears after this, it was a + * prototype */ + if (matchtoken(';')) { + if (!sc_needsemicolon) + error(218); /* old style prototypes used with optional semicolumns */ + delete_symbols(&loctab,0,TRUE,TRUE); /* prototype is done; forget everything */ + return TRUE; + } /* if */ + /* so it is not a prototype, proceed */ + /* if this is a function that is not referred to (this can only be detected + * in the second stage), shut code generation off */ + if (sc_status==statWRITE && (sym->usage & uREAD)==0) { + sc_status=statSKIP; + cidx=code_idx; + glbdecl=glb_declared; + } /* if */ + begcseg(); + sym->usage|=uDEFINE; /* set the definition flag */ + if (fpublic) + sym->usage|=uREAD; /* public functions are always "used" */ + if (stock) + sym->usage|=uSTOCK; + if (opertok!=0 && opererror) + sym->usage &= ~uDEFINE; + defsymbol(sym->name,iFUNCTN,sGLOBAL, + code_idx+opcodes(1)+opargs(3)+nameincells(sym->name),tag); + /* ^^^ The address for the symbol is the code address. But the + * "symbol" instruction itself generates code. Therefore the + * offset is pre-adjusted to the value it will have after the + * symbol instruction. + */ + startfunc(sym->name); /* creates stack frame */ + if ((sc_debug & sSYMBOLIC)!=0) + setline(funcline,fcurrent); + if (sc_alignnext) { + alignframe(sc_dataalign); + sc_alignnext=FALSE; + } /* if */ + declared=0; /* number of local cells */ + rettype=(sym->usage & uRETVALUE); /* set "return type" variable */ + curfunc=sym; + define_args(); /* add the symbolic info for the function arguments */ + statement(NULL,FALSE); + if ((rettype & uRETVALUE)!=0) + sym->usage|=uRETVALUE; + if (declared!=0) { + /* This happens only in a very special (and useless) case, where a function + * has only a single statement in its body (no compound block) and that + * statement declares a new variable + */ + modstk((int)declared*sizeof(cell)); /* remove all local variables */ + declared=0; + } /* if */ + if ((lastst!=tRETURN) && (lastst!=tGOTO)){ + const1(0); + ffret(); + if ((sym->usage & uRETVALUE)!=0) { + char symname[2*sNAMEMAX+16]; /* allow space for user defined operators */ + funcdisplayname(symname,sym->name); + error(209,symname); /* function should return a value */ + } /* if */ + } /* if */ + endfunc(); + if (litidx) { /* if there are literals defined */ + glb_declared+=litidx; + begdseg(); /* flip to DATA segment */ + dumplits(); /* dump literal strings */ + litidx=0; + } /* if */ + testsymbols(&loctab,0,TRUE,TRUE); /* test for unused arguments and labels */ + delete_symbols(&loctab,0,TRUE,TRUE); /* clear local variables queue */ + assert(loctab.next==NULL); + curfunc=NULL; + if (sc_status==statSKIP) { + sc_status=statWRITE; + code_idx=cidx; + glb_declared=glbdecl; + } /* if */ + return TRUE; +} + +static int argcompare(arginfo *a1,arginfo *a2) +{ + int result,level; + + result= strcmp(a1->name,a2->name)==0; + if (result) + result= a1->ident==a2->ident; + if (result) + result= a1->usage==a2->usage; + if (result) + result= a1->numtags==a2->numtags; + if (result) { + int i; + for (i=0; inumtags && result; i++) + result= a1->tags[i]==a2->tags[i]; + } /* if */ + if (result) + result= a1->hasdefault==a2->hasdefault; + if (a1->hasdefault) { + if (a1->ident==iREFARRAY) { + if (result) + result= a1->defvalue.array.size==a2->defvalue.array.size; + if (result) + result= a1->defvalue.array.arraysize==a2->defvalue.array.arraysize; + /* also check the dimensions of both arrays */ + if (result) + result= a1->numdim==a2->numdim; + for (level=0; result && levelnumdim; level++) + result= a1->dim[level]==a2->dim[level]; + /* ??? should also check contents of the default array (these troubles + * go away in a 2-pass compiler that forbids double declarations, but + * Small currently does not forbid them) */ + } else { + if (result) { + if ((a1->hasdefault & uSIZEOF)!=0 || (a1->hasdefault & uTAGOF)!=0) + result= a1->hasdefault==a2->hasdefault + && strcmp(a1->defvalue.size.symname,a2->defvalue.size.symname)==0 + && a1->defvalue.size.level==a2->defvalue.size.level; + else + result= a1->defvalue.val==a2->defvalue.val; + } /* if */ + } /* if */ + if (result) + result= a1->defvalue_tag==a2->defvalue_tag; + } /* if */ + return result; +} + +/* declargs() + * + * This routine adds an entry in the local symbol table for each argument + * found in the argument list. It returns the number of arguments. + */ +static int declargs(symbol *sym) +{ + #define MAXTAGS 16 + char *ptr; + int argcnt,oldargcnt,tok,tags[MAXTAGS],numtags; + cell val; + arginfo arg, *arglist; + char name[sNAMEMAX+1]; + int ident,fpublic,fconst; + int idx; + + /* if the function is already defined earlier, get the number of arguments + * of the existing definition + */ + oldargcnt=0; + if ((sym->usage & uPROTOTYPED)!=0) + while (sym->dim.arglist[oldargcnt].ident!=0) + oldargcnt++; + argcnt=0; /* zero aruments up to now */ + ident=iVARIABLE; + numtags=0; + fconst=FALSE; + fpublic= (sym->usage & uPUBLIC)!=0; + /* the '(' parantheses has already been parsed */ + if (!matchtoken(')')){ + do { /* there are arguments; process them */ + /* any legal name increases argument count (and stack offset) */ + tok=lex(&val,&ptr); + switch (tok) { + case 0: + /* nothing */ + break; + case '&': + if (ident!=iVARIABLE || numtags>0) + error(1,"-identifier-","&"); + ident=iREFERENCE; + break; + case tCONST: + if (ident!=iVARIABLE || numtags>0) + error(1,"-identifier-","const"); + fconst=TRUE; + break; + case tLABEL: + if (numtags>0) + error(1,"-identifier-","-tagname-"); + tags[0]=sc_addtag(ptr); + numtags=1; + break; + case '{': + if (numtags>0) + error(1,"-identifier-","-tagname-"); + numtags=0; + while (numtags=sMAXARGS) + error(45); /* too many function arguments */ + strcpy(name,ptr); /* save symbol name */ + if (name[0]==PUBLIC_CHAR) + error(56,name); /* function arguments cannot be public */ + if (numtags==0) + tags[numtags++]=0; /* default tag */ + /* Stack layout: + * base + 0*sizeof(cell) == previous "base" + * base + 1*sizeof(cell) == function return address + * base + 2*sizeof(cell) == number of arguments + * base + 3*sizeof(cell) == first argument of the function + * So the offset of each argument is "(argcnt+3) * sizeof(cell)". + */ + doarg(name,ident,(argcnt+3)*sizeof(cell),tags,numtags,fpublic,fconst,&arg); + if (fpublic && arg.hasdefault) + error(59,name); /* arguments of a public function may not have a default value */ + if ((sym->usage & uPROTOTYPED)==0) { + /* redimension the argument list, add the entry */ + sym->dim.arglist=(arginfo*)realloc(sym->dim.arglist,(argcnt+2)*sizeof(arginfo)); + if (sym->dim.arglist==0) + error(103); /* insufficient memory */ + sym->dim.arglist[argcnt]=arg; + sym->dim.arglist[argcnt+1].ident=0; /* keep the list terminated */ + } else { + /* check the argument with the earlier definition */ + if (argcnt>oldargcnt || !argcompare(&sym->dim.arglist[argcnt],&arg)) + error(25); /* function definition does not match prototype */ + /* may need to free default array argument and the tag list */ + if (arg.ident==iREFARRAY && arg.hasdefault) + free(arg.defvalue.array.data); + else if (arg.ident==iVARIABLE + && ((arg.hasdefault & uSIZEOF)!=0 || (arg.hasdefault & uTAGOF)!=0)) + free(arg.defvalue.size.symname); + free(arg.tags); + } /* if */ + argcnt++; + ident=iVARIABLE; + numtags=0; + fconst=FALSE; + break; + case tELLIPS: + if (ident!=iVARIABLE) + error(10); /* illegal function or declaration */ + if (numtags==0) + tags[numtags++]=0; /* default tag */ + if ((sym->usage & uPROTOTYPED)==0) { + /* redimension the argument list, add the entry iVARARGS */ + sym->dim.arglist=(arginfo*)realloc(sym->dim.arglist,(argcnt+2)*sizeof(arginfo)); + if (sym->dim.arglist==0) + error(103); /* insufficient memory */ + sym->dim.arglist[argcnt+1].ident=0; /* keep the list terminated */ + sym->dim.arglist[argcnt].ident=iVARARGS; + sym->dim.arglist[argcnt].hasdefault=FALSE; + sym->dim.arglist[argcnt].defvalue.val=0; + sym->dim.arglist[argcnt].defvalue_tag=0; + sym->dim.arglist[argcnt].numtags=numtags; + sym->dim.arglist[argcnt].tags=(int*)malloc(numtags*sizeof tags[0]); + if (sym->dim.arglist[argcnt].tags==NULL) + error(103); /* insufficient memory */ + memcpy(sym->dim.arglist[argcnt].tags,tags,numtags*sizeof tags[0]); + } else { + if (argcnt>oldargcnt || sym->dim.arglist[argcnt].ident!=iVARARGS) + error(25); /* function definition does not match prototype */ + } /* if */ + argcnt++; + break; + default: + error(10); /* illegal function or declaration */ + } /* switch */ + } while (tok=='&' || tok==tLABEL || tok==tCONST + || tok!=tELLIPS && matchtoken(',')); /* more? */ + /* if the next token is not ",", it should be ")" */ + needtoken(')'); + } /* if */ + /* resolve any "sizeof" arguments (now that all arguments are known) */ + assert(sym->dim.arglist!=NULL); + arglist=sym->dim.arglist; + for (idx=0; idx=argcnt) { + error(17,ptr); /* undefined symbol */ + } else { + assert(arglist[idx].defvalue.size.symname!=NULL); + /* check the level against the number of dimensions */ + /* the level must be zero for "tagof" values */ + assert(arglist[idx].defvalue.size.level==0 || (arglist[idx].hasdefault & uSIZEOF)!=0); + if (arglist[idx].defvalue.size.level>0 + && arglist[idx].defvalue.size.level>=arglist[altidx].numdim) + error(28); /* invalid subscript */ + /* check the type of the argument whose size to take; for a iVARIABLE + * or a iREFERENCE, this is always 1 (so the code is redundant) + */ + assert(arglist[altidx].ident!=iVARARGS); + if (arglist[altidx].ident!=iREFARRAY) { + assert(arglist[altidx].ident==iVARIABLE || arglist[altidx].ident==iREFERENCE); + error(223,ptr); /* redundant sizeof */ + } /* if */ + } /* if */ + } /* if */ + } /* for */ + + sym->usage|=uPROTOTYPED; + errorset(sRESET); /* reset error flag (clear the "panic mode")*/ + return argcnt; +} + +/* doarg - declare one argument type + * + * this routine is called from "declargs()" and adds an entry in the local + * symbol table for one argument. + * + * "fpublic" indicates whether the function for this argument list is public. + * The arguments themselves are never public. + */ +static void doarg(char *name,int ident,int offset,int tags[],int numtags, + int fpublic,int fconst,arginfo *arg) +{ + symbol *argsym; + cell size; + int idxtag[sDIMEN_MAX]; + + strcpy(arg->name,name); + arg->hasdefault=FALSE; /* preset (most common case) */ + arg->defvalue.val=0; /* clear */ + arg->defvalue_tag=0; + arg->numdim=0; + if (matchtoken('[')) { + if (ident==iREFERENCE) + error(67,name); /* illegal declaration ("&name[]" is unsupported) */ + do { + if (arg->numdim == sDIMEN_MAX) { + error(53); /* exceeding maximum number of dimensions */ + return; + } /* if */ + /* there is no check for non-zero major dimensions here, only if the + * array parameter has a default value, we enforce that all array + * dimensions, except the last, are non-zero + */ + size=needsub(&idxtag[arg->numdim]);/* may be zero here, it is a pointer anyway */ + #if INT_MAX < LONG_MAX + if (size > INT_MAX) + error(105); /* overflow, exceeding capacity */ + #endif + arg->dim[arg->numdim]=(int)size; + arg->numdim+=1; + } while (matchtoken('[')); + ident=iREFARRAY; /* "reference to array" (is a pointer) */ + if (matchtoken('=')) { + int level; + lexpush(); /* initials() needs the "=" token again */ + assert(litidx==0); /* at the start of a function, this is reset */ + assert(numtags>0); + /* for the moment, when a default value is given for the array, all + * dimension sizes, except the last, must be non-zero (function initials() + * requires to know the major dimensions) + */ + for (level=0; level < arg->numdim - 1; level++) + if (arg->dim[level]==0) + error(52); /* only last dimension may be variable length */ + initials(ident,tags[0],&size,arg->dim,arg->numdim); + assert(size>=litidx); + /* allocate memory to hold the initial values */ + arg->defvalue.array.data=(cell *)malloc(litidx*sizeof(cell)); + if (arg->defvalue.array.data!=NULL) { + int i; + memcpy(arg->defvalue.array.data,litq,litidx*sizeof(cell)); + arg->hasdefault=TRUE; /* argument has default value */ + arg->defvalue.array.size=litidx; + arg->defvalue.array.addr=-1; + /* calulate size to reserve on the heap */ + arg->defvalue.array.arraysize=1; + for (i=0; inumdim; i++) + arg->defvalue.array.arraysize*=arg->dim[i]; + if (arg->defvalue.array.arraysize < arg->defvalue.array.size) + arg->defvalue.array.arraysize = arg->defvalue.array.size; + } /* if */ + litidx=0; /* reset */ + } /* if */ + } else { + if (matchtoken('=')) { + unsigned char size_tag_token; + assert(ident==iVARIABLE || ident==iREFERENCE); + arg->hasdefault=TRUE; /* argument has a default value */ + size_tag_token=(unsigned char)(matchtoken(tSIZEOF) ? uSIZEOF : 0); + if (size_tag_token==0) + size_tag_token=(unsigned char)(matchtoken(tTAGOF) ? uTAGOF : 0); + if (size_tag_token!=0) { + int paranthese; + if (ident==iREFERENCE) + error(66,name); /* argument may not be a reference */ + paranthese=0; + while (matchtoken('(')) + paranthese++; + if (needtoken(tSYMBOL)) { + /* save the name of the argument whose size id to take */ + char *name; + cell val; + tokeninfo(&val,&name); + if ((arg->defvalue.size.symname=duplicatestring(name)) == NULL) + error(103); /* insufficient memory */ + arg->defvalue.size.level=0; + if (size_tag_token==uSIZEOF) { + while (matchtoken('[')) { + arg->defvalue.size.level+=(short)1; + needtoken(']'); + } /* while */ + } /* if */ + if (ident==iVARIABLE) /* make sure we set this only if not a reference */ + arg->hasdefault |= size_tag_token; /* uSIZEOF or uTAGOF */ + } /* if */ + while (paranthese--) + needtoken(')'); + } else { + constexpr(&arg->defvalue.val,&arg->defvalue_tag); + assert(numtags>0); + if (!matchtag(tags[0],arg->defvalue_tag,TRUE)) + error(213); /* tagname mismatch */ + } /* if */ + } /* if */ + } /* if */ + arg->ident=(char)ident; + arg->usage=(char)(fconst ? uCONST : 0); + arg->numtags=numtags; + arg->tags=(int*)malloc(numtags*sizeof tags[0]); + if (arg->tags==NULL) + error(103); /* insufficient memory */ + memcpy(arg->tags,tags,numtags*sizeof tags[0]); + argsym=findloc(name); + if (argsym!=NULL) { + error(21,name); /* symbol already defined */ + } else { + if ((argsym=findglb(name))!=NULL && argsym->ident!=iFUNCTN) + error(219,name); /* variable shadows another symbol */ + /* add details of type and address */ + assert(numtags>0); + argsym=addvariable(name,offset,ident,sLOCAL,tags[0], + arg->dim,arg->numdim,idxtag); + argsym->compound=0; + if (ident==iREFERENCE) + argsym->usage|=uREAD; /* because references are passed back */ + if (fpublic) + argsym->usage|=uREAD; /* arguments of public functions are always "used" */ + if (fconst) + argsym->usage|=uCONST; + } /* if */ +} + +static int count_referrers(symbol *entry) +{ + int i,count; + + count=0; + for (i=0; inumrefers; i++) + if (entry->refer[i]!=NULL) + count++; + return count; +} + +#if !defined SC_LIGHT +static void dump_referrers(symbol *root,FILE *log,char *sourcefile) +{ + char symname[2*sNAMEMAX+16]; + int i; + symbol *sym,*ref; + + /* the XML header */ + fprintf(log,"\n"); + fprintf(log,"\n",sourcefile); + + /* use multiple passes to print constants variables and functions in + * separate sections + */ + + fprintf(log,"\t\n"); + for (sym=root->next; sym!=NULL; sym=sym->next) { + if (sym->parent!=NULL) + continue; /* hierarchical data type */ + assert(sym->ident==iCONSTEXPR || sym->ident==iVARIABLE + || sym->ident==iARRAY || sym->ident==iFUNCTN); + if (sym->ident!=iCONSTEXPR) + continue; + if ((sym->usage & uREAD)==0) + continue; + fprintf(log,"\t\t\n",funcdisplayname(symname,sym->name)); + assert(sym->refer!=NULL); + for (i=0; inumrefers; i++) { + if ((ref=sym->refer[i])!=NULL) + fprintf(log,"\t\t\t%s\n",funcdisplayname(symname,ref->name)); + } /* for */ + fprintf(log,"\t\t\n"); + } /* for */ + fprintf(log,"\t\n\n"); + + fprintf(log,"\t\n"); + for (sym=root->next; sym!=NULL; sym=sym->next) { + if (sym->parent!=NULL) + continue; /* hierarchical data type */ + if (sym->ident!=iVARIABLE && sym->ident!=iARRAY) + continue; + fprintf(log,"\t\t\n",funcdisplayname(symname,sym->name)); + assert(sym->refer!=NULL); + if ((sym->usage & uPUBLIC)!=0) + fprintf(log,"\t\t\t\n"); + for (i=0; inumrefers; i++) { + if ((ref=sym->refer[i])!=NULL) + fprintf(log,"\t\t\t%s\n",funcdisplayname(symname,ref->name)); + } /* for */ + fprintf(log,"\t\t\n"); + } /* for */ + fprintf(log,"\t\n\n"); + + fprintf(log,"\t\n"); + for (sym=root->next; sym!=NULL; sym=sym->next) { + if (sym->parent!=NULL) + continue; /* hierarchical data type */ + if (sym->ident!=iFUNCTN) + continue; + if ((sym->usage & (uREAD | uNATIVE))==uNATIVE) + continue; /* unused native function */ + fprintf(log,"\t\t\n",funcdisplayname(symname,sym->name)); + assert(sym->refer!=NULL); + /* check whether this function is called from the outside */ + if ((sym->usage & uNATIVE)!=0) + fprintf(log,"\t\t\t\n"); + if ((sym->usage & uPUBLIC)!=0) + fprintf(log,"\t\t\t\n"); + if (strcmp(sym->name,uMAINFUNC)==0) + fprintf(log,"\t\t\t\n"); + for (i=0; inumrefers; i++) { + if ((ref=sym->refer[i])!=NULL) + fprintf(log,"\t\t\t%s\n",funcdisplayname(symname,ref->name)); + } /* for */ + fprintf(log,"\t\t\n"); + } /* for */ + fprintf(log,"\t\n\n"); + + fprintf(log,"\n"); +} +#endif + +/* Every symbol has a referrer list, that contains the functions that use + * the symbol. Now, if function "apple" is accessed by functions "banana" and + * "citron", but neither function "banana" nor "citron" are used by anyone + * else, then, by inference, function "apple" is not used either. + */ +static void reduce_referrers(symbol *root) +{ + int i,restart; + symbol *sym,*ref; + + do { + restart=0; + for (sym=root->next; sym!=NULL; sym=sym->next) { + if (sym->parent!=NULL) + continue; /* hierarchical data type */ + if (sym->ident==iFUNCTN + && (sym->usage & uNATIVE)==0 + && (sym->usage & uPUBLIC)==0 && strcmp(sym->name,uMAINFUNC)!=0 + && count_referrers(sym)==0) + { + sym->usage&=~(uREAD | uWRITTEN); /* erase usage bits if there is no referrer */ + /* find all symbols that are referred by this symbol */ + for (ref=root->next; ref!=NULL; ref=ref->next) { + if (ref->parent!=NULL) + continue; /* hierarchical data type */ + assert(ref->refer!=NULL); + for (i=0; inumrefers && ref->refer[i]!=sym; i++) + /* nothing */; + if (inumrefers) { + assert(ref->refer[i]==sym); + ref->refer[i]=NULL; + restart++; + } /* if */ + } /* for */ + } else if ((sym->ident==iVARIABLE || sym->ident==iARRAY) + && (sym->usage & uPUBLIC)==0 + && sym->parent==NULL + && count_referrers(sym)==0) + { + sym->usage&=~(uREAD | uWRITTEN); /* erase usage bits if there is no referrer */ + } /* if */ + } /* for */ + /* after removing a symbol, check whether more can be removed */ + } while (restart>0); +} + +/* testsymbols - test for unused local or global variables + * + * "Public" functions are excluded from the check, since these + * may be exported to other object modules. + * Labels are excluded from the check if the argument 'testlabs' + * is 0. Thus, labels are not tested until the end of the function. + * Constants may also be excluded (convenient for global constants). + * + * When the nesting level drops below "level", the check stops. + * + * The function returns whether there is an "entry" point for the file. + * This flag will only be 1 when browsing the global symbol table. + */ +static int testsymbols(symbol *root,int level,int testlabs,int testconst) +{ + char symname[2*sNAMEMAX+16]; + int entry=FALSE; + + symbol *sym=root->next; + while (sym!=NULL && sym->compound>=level) { + switch (sym->ident) { + case iLABEL: + if (testlabs) { + if ((sym->usage & uDEFINE)==0) + error(19,sym->name); /* not a label: ... */ + else if ((sym->usage & uREAD)==0) + error(203,sym->name); /* symbol isn't used: ... */ + } /* if */ + break; + case iFUNCTN: + if ((sym->usage & (uDEFINE | uREAD | uNATIVE | uSTOCK))==uDEFINE) { + funcdisplayname(symname,sym->name); + if (strlen(symname)>0) + error(203,symname); /* symbol isn't used ... (and not native/stock) */ + } /* if */ + if ((sym->usage & uPUBLIC)!=0 || strcmp(sym->name,uMAINFUNC)==0) + entry=TRUE; /* there is an entry point */ + break; + case iCONSTEXPR: + if (testconst && (sym->usage & uREAD)==0) + error(203,sym->name); /* symbol isn't used: ... */ + break; + default: + /* a variable */ + if (sym->parent!=NULL) + break; /* hierarchical data type */ + if ((sym->usage & (uWRITTEN | uREAD | uSTOCK | uPUBLIC))==0) + error(203,sym->name); /* symbol isn't used (and not stock or public) */ + else if ((sym->usage & (uREAD | uSTOCK | uPUBLIC))==0) + error(204,sym->name); /* value assigned to symbol is never used */ +#if 0 // ??? not sure whether it is a good idea to force people use "const" + else if ((sym->usage & (uWRITTEN | uPUBLIC | uCONST))==0 && sym->ident==iREFARRAY) + error(214,sym->name); /* make array argument "const" */ +#endif + } /* if */ + sym=sym->next; + } /* while */ + + return entry; +} + +static cell calc_array_datasize(symbol *sym, cell *offset) +{ + cell length; + + assert(sym!=NULL); + assert(sym->ident==iARRAY || sym->ident==iREFARRAY); + length=sym->dim.array.length; + if (sym->dim.array.level > 0) { + cell sublength=calc_array_datasize(finddepend(sym),offset); + if (offset!=NULL) + *offset=length*(*offset+sizeof(cell)); + if (sublength>0) + length*=length*sublength; + else + length=0; + } else { + if (offset!=NULL) + *offset=0; + } /* if */ + return length; +} + +static void destructsymbols(symbol *root,int level) +{ + cell offset=0; + int savepri=FALSE; + symbol *sym=root->next; + while (sym!=NULL && sym->compound>=level) { + if (sym->ident==iVARIABLE || sym->ident==iARRAY) { + char symbolname[16]; + symbol *opsym; + cell elements; + /* check that the '~' operator is defined for this tag */ + operator_symname(symbolname,"~",sym->tag,0,1,0); + if ((opsym=findglb(symbolname))!=NULL) { + /* save PRI, in case of a return statment */ + if (!savepri) { + push1(); /* right-hand operand is in PRI */ + savepri=TRUE; + } /* if */ + /* if the variable is an array, get the number of elements */ + if (sym->ident==iARRAY) { + elements=calc_array_datasize(sym,&offset); + /* "elements" can be zero when the variable is declared like + * new mytag: myvar[2][] = { {1, 2}, {3, 4} } + * one should declare all dimensions! + */ + if (elements==0) + error(46,sym->name); /* array size is unknown */ + } else { + elements=1; + offset=0; + } /* if */ + pushval(elements); + /* call the '~' operator */ + address(sym); + addconst(offset); /* add offset to array data to the address */ + push1(); + pushval(2*sizeof(cell));/* 2 parameters */ + assert(opsym->ident==iFUNCTN); + ffcall(opsym,1); + if (sc_status!=statSKIP) + markusage(opsym,uREAD); /* do not mark as "used" when this call itself is skipped */ + if (opsym->x.lib!=NULL) + opsym->x.lib->value += 1; /* increment "usage count" of the library */ + } /* if */ + } /* if */ + sym=sym->next; + } /* while */ + /* restore PRI, if it was saved */ + if (savepri) + pop1(); +} + +static constvalue *insert_constval(constvalue *prev,constvalue *next,char *name,cell val, + short index) +{ + constvalue *cur; + + if ((cur=(constvalue*)malloc(sizeof(constvalue)))==NULL) + error(103); /* insufficient memory (fatal error) */ + memset(cur,0,sizeof(constvalue)); + strcpy(cur->name,name); + cur->value=val; + cur->index=index; + cur->next=next; + prev->next=cur; + return cur; +} + +SC_FUNC constvalue *append_constval(constvalue *table,char *name,cell val,short index) +{ + constvalue *cur,*prev; + + /* find the end of the constant table */ + for (prev=table, cur=table->next; cur!=NULL; prev=cur, cur=cur->next) + /* nothing */; + return insert_constval(prev,NULL,name,val,index); +} + +SC_FUNC constvalue *find_constval(constvalue *table,char *name,short index) +{ + constvalue *ptr = table->next; + + while (ptr!=NULL) { + if (strcmp(name,ptr->name)==0 && ptr->index==index) + return ptr; + ptr=ptr->next; + } /* while */ + return NULL; +} + +static constvalue *find_constval_byval(constvalue *table,cell val) +{ + constvalue *ptr = table->next; + + while (ptr!=NULL) { + if (ptr->value==val) + return ptr; + ptr=ptr->next; + } /* while */ + return NULL; +} + +#if 0 /* never used */ +static int delete_constval(constvalue *table,char *name) +{ + constvalue *prev = table; + constvalue *cur = prev->next; + + while (cur!=NULL) { + if (strcmp(name,cur->name)==0) { + prev->next=cur->next; + free(cur); + return TRUE; + } /* if */ + prev=cur; + cur=cur->next; + } /* while */ + return FALSE; +} +#endif + +SC_FUNC void delete_consttable(constvalue *table) +{ + constvalue *cur=table->next, *next; + + while (cur!=NULL) { + next=cur->next; + free(cur); + cur=next; + } /* while */ + memset(table,0,sizeof(constvalue)); +} + +/* add_constant + * + * Adds a symbol to the #define symbol table. + */ +SC_FUNC void add_constant(char *name,cell val,int vclass,int tag) +{ + symbol *sym; + + /* Test whether a global or local symbol with the same name exists. Since + * constants are stored in the symbols table, this also finds previously + * defind constants. */ + sym=findglb(name); + if (!sym) + sym=findloc(name); + if (sym) { + /* silently ignore redefinitions of constants with the same value */ + if (sym->ident==iCONSTEXPR) { + if (sym->addr!=val) + error(201,name); /* redefinition of constant (different value) */ + } else { + error(21,name); /* symbol already defined */ + } /* if */ + return; + } /* if */ + + /* constant doesn't exist yet, an entry must be created */ + sym=addsym(name,val,iCONSTEXPR,vclass,tag,uDEFINE); + assert(sym!=NULL); /* fatal error 103 must be given on error */ + if (sc_status == statIDLE) + sym->usage |= uPREDEF; +} + +/* statement - The Statement Parser + * + * This routine is called whenever the parser needs to know what statement + * it encounters (i.e. whenever program syntax requires a statement). + */ +static void statement(int *lastindent,int allow_decl) +{ + int tok; + cell val; + char *st; + + if (!freading) { + error(36); /* empty statement */ + return; + } /* if */ + errorset(sRESET); + + tok=lex(&val,&st); + if (tok!='{') + setline(fline,fcurrent); + /* lex() has set stmtindent */ + if (lastindent!=NULL && tok!=tLABEL) { + if (*lastindent>=0 && *lastindent!=stmtindent && !indent_nowarn && sc_tabsize>0) + error(217); /* loose indentation */ + *lastindent=stmtindent; + indent_nowarn=FALSE; /* if warning was blocked, re-enable it */ + } /* if */ + switch (tok) { + case 0: + /* nothing */ + break; + case tNEW: + if (allow_decl) { + declloc(FALSE); + lastst=tNEW; + } else { + error(3); /* declaration only valid in a block */ + } /* if */ + break; + case tSTATIC: + if (allow_decl) { + declloc(TRUE); + lastst=tNEW; + } else { + error(3); /* declaration only valid in a block */ + } /* if */ + break; + case '{': + if (!matchtoken('}')) /* {} is the empty statement */ + compound(); + /* lastst (for "last statement") does not change */ + break; + case ';': + error(36); /* empty statement */ + break; + case tIF: + doif(); + lastst=tIF; + break; + case tWHILE: + dowhile(); + lastst=tWHILE; + break; + case tDO: + dodo(); + lastst=tDO; + break; + case tFOR: + dofor(); + lastst=tFOR; + break; + case tSWITCH: + doswitch(); + lastst=tSWITCH; + break; + case tCASE: + case tDEFAULT: + error(14); /* not in switch */ + break; + case tGOTO: + dogoto(); + lastst=tGOTO; + break; + case tLABEL: + dolabel(); + lastst=tLABEL; + break; + case tRETURN: + doreturn(); + lastst=tRETURN; + break; + case tBREAK: + dobreak(); + lastst=tBREAK; + break; + case tCONTINUE: + docont(); + lastst=tCONTINUE; + break; + case tEXIT: + doexit(); + lastst=tEXIT; + break; + case tASSERT: + doassert(); + lastst=tASSERT; + break; + case tSLEEP: + dosleep(); + lastst=tSLEEP; + break; + case tCONST: + decl_const(sLOCAL); + break; + case tENUM: + decl_enum(sLOCAL); + break; + default: /* non-empty expression */ + lexpush(); /* analyze token later */ + doexpr(TRUE,TRUE,TRUE,TRUE,NULL,FALSE); + needtoken(tTERM); + lastst=tEXPR; + } /* switch */ +} + +static void compound(void) +{ + int indent=-1; + cell save_decl=declared; + int count_stmt=0; + nestlevel+=1; /* increase compound statement level */ + while (matchtoken('}')==0){ /* repeat until compound statement is closed */ + if (!freading){ + needtoken('}'); /* gives error: "expected token }" */ + break; + } else { + if (count_stmt>0 && (lastst==tRETURN || lastst==tBREAK || lastst==tCONTINUE)) + error(225); /* unreachable code */ + statement(&indent,TRUE); /* do a statement */ + count_stmt++; + } /* if */ + } /* while */ + if (lastst!=tRETURN) + destructsymbols(&loctab,nestlevel); + if (lastst!=tRETURN && lastst!=tGOTO) + modstk((int)(declared-save_decl)*sizeof(cell)); /* delete local variable space */ + testsymbols(&loctab,nestlevel,FALSE,TRUE); /* look for unused block locals */ + declared=save_decl; + delete_symbols(&loctab,nestlevel,FALSE,TRUE); /* erase local symbols, but + * retain block local labels + * (within the function) */ + nestlevel-=1; /* decrease compound statement level */ +} + +/* doexpr + * + * Global references: stgidx (referred to only) + */ +static void doexpr(int comma,int chkeffect,int allowarray,int mark_endexpr, + int *tag,int chkfuncresult) +{ + int constant,index,ident; + int localstaging=FALSE; + cell val; + + if (!staging) { + stgset(TRUE); /* start stage-buffering */ + localstaging=TRUE; + assert(stgidx==0); + } /* if */ + index=stgidx; + errorset(sEXPRMARK); + do { + /* on second round through, mark the end of the previous expression */ + if (index!=stgidx) + endexpr(TRUE); + sideeffect=FALSE; + ident=expression(&constant,&val,tag,chkfuncresult); + if (!allowarray && (ident==iARRAY || ident==iREFARRAY)) + error(33,"-unknown-"); /* array must be indexed */ + if (chkeffect && !sideeffect) + error(215); /* expression has no effect */ + } while (comma && matchtoken(',')); /* more? */ + if (mark_endexpr) + endexpr(TRUE); /* optionally, mark the end of the expression */ + errorset(sEXPRRELEASE); + if (localstaging) { + stgout(index); + stgset(FALSE); /* stop staging */ + } /* if */ +} + +/* constexpr + */ +SC_FUNC int constexpr(cell *val,int *tag) +{ + int constant,index; + cell cidx; + + stgset(TRUE); /* start stage-buffering */ + stgget(&index,&cidx); /* mark position in code generator */ + errorset(sEXPRMARK); + expression(&constant,val,tag,FALSE); + stgdel(index,cidx); /* scratch generated code */ + stgset(FALSE); /* stop stage-buffering */ + if (constant==0) + error(8); /* must be constant expression */ + errorset(sEXPRRELEASE); + return constant; +} + +/* test + * + * In the case a "simple assignment" operator ("=") is used within a test, + * the warning "possibly unintended assignment" is displayed. This routine + * sets the global variable "intest" to true, it is restored upon termination. + * In the case the assignment was intended, use parantheses around the + * expression to avoid the warning; primary() sets "intest" to 0. + * + * Global references: intest (altered, but restored upon termination) + */ +static void test(int label,int parens,int invert) +{ + int index,tok; + cell cidx; + value lval = {0}; + int localstaging=FALSE; + + if (!staging) { + stgset(TRUE); /* start staging */ + localstaging=TRUE; + #if !defined NDEBUG + stgget(&index,&cidx); /* should start at zero if started locally */ + assert(index==0); + #endif + } /* if */ + + pushstk((stkitem)intest); + intest=1; + if (parens) + needtoken('('); + do { + stgget(&index,&cidx); /* mark position (of last expression) in + * code generator */ + if (hier14(&lval)) + rvalue(&lval); + tok=matchtoken(','); + if (tok) + endexpr(TRUE); + } while (tok); /* do */ + if (parens) + needtoken(')'); + if (lval.ident==iARRAY || lval.ident==iREFARRAY) { + char *ptr=(lval.sym->name!=NULL) ? lval.sym->name : "-unknown-"; + error(33,ptr); /* array must be indexed */ + } /* if */ + if (lval.ident==iCONSTEXPR) { /* constant expression */ + intest=(int)(long)popstk(); /* restore stack */ + stgdel(index,cidx); + if (lval.constval) { /* code always executed */ + error(206); /* redundant test: always non-zero */ + } else { + error(205); /* redundant code: never executed */ + jumplabel(label); + } /* if */ + if (localstaging) { + stgout(0); /* write "jumplabel" code */ + stgset(FALSE); /* stop staging */ + } /* if */ + return; + } /* if */ + if (lval.tag!=0 && lval.tag!=sc_addtag("bool")) + if (check_userop(lneg,lval.tag,0,1,NULL,&lval.tag)) + invert= !invert; /* user-defined ! operator inverted result */ + if (invert) + jmp_ne0(label); /* jump to label if true (different from 0) */ + else + jmp_eq0(label); /* jump to label if false (equal to 0) */ + endexpr(TRUE); /* end expression (give optimizer a chance) */ + intest=(int)(long)popstk(); /* double typecast to avoid warning with Microsoft C */ + if (localstaging) { + stgout(0); /* output queue from the very beginning (see + * assert() when localstaging is set to TRUE) */ + stgset(FALSE); /* stop staging */ + } /* if */ +} + +static void doif(void) +{ + int flab1,flab2; + int ifindent; + + ifindent=stmtindent; /* save the indent of the "if" instruction */ + flab1=getlabel(); /* get label number for false branch */ + test(flab1,TRUE,FALSE); /* get expression, branch to flab1 if false */ + statement(NULL,FALSE); /* if true, do a statement */ + if (matchtoken(tELSE)==0){ /* if...else ? */ + setlabel(flab1); /* no, simple if..., print false label */ + } else { + /* to avoid the "dangling else" error, we want a warning if the "else" + * has a lower indent than the matching "if" */ + if (stmtindent0) + error(217); /* loose indentation */ + flab2=getlabel(); + if ((lastst!=tRETURN) && (lastst!=tGOTO)) + jumplabel(flab2); + setlabel(flab1); /* print false label */ + statement(NULL,FALSE); /* do "else" clause */ + setlabel(flab2); /* print true label */ + } /* endif */ +} + +static void dowhile(void) +{ + int wq[wqSIZE]; /* allocate local queue */ + + addwhile(wq); /* add entry to queue for "break" */ + setlabel(wq[wqLOOP]); /* loop label */ + /* The debugger uses the "line" opcode to be able to "break" out of + * a loop. To make sure that each loop has a line opcode, even for the + * tiniest loop, set it below the top of the loop */ + setline(fline,fcurrent); + test(wq[wqEXIT],TRUE,FALSE); /* branch to wq[wqEXIT] if false */ + statement(NULL,FALSE); /* if so, do a statement */ + jumplabel(wq[wqLOOP]); /* and loop to "while" start */ + setlabel(wq[wqEXIT]); /* exit label */ + delwhile(); /* delete queue entry */ +} + +/* + * Note that "continue" will in this case not jump to the top of the loop, but + * to the end: just before the TRUE-or-FALSE testing code. + */ +static void dodo(void) +{ + int wq[wqSIZE],top; + + addwhile(wq); /* see "dowhile" for more info */ + top=getlabel(); /* make a label first */ + setlabel(top); /* loop label */ + statement(NULL,FALSE); + needtoken(tWHILE); + setlabel(wq[wqLOOP]); /* "continue" always jumps to WQLOOP. */ + setline(fline,fcurrent); + test(wq[wqEXIT],TRUE,FALSE); + jumplabel(top); + setlabel(wq[wqEXIT]); + delwhile(); + needtoken(tTERM); +} + +static void dofor(void) +{ + int wq[wqSIZE],skiplab; + cell save_decl; + int save_nestlevel,index; + int *ptr; + + save_decl=declared; + save_nestlevel=nestlevel; + + addwhile(wq); + skiplab=getlabel(); + needtoken('('); + if (matchtoken(';')==0) { + /* new variable declarations are allowed here */ + if (matchtoken(tNEW)) { + /* The variable in expr1 of the for loop is at a + * 'compound statement' level of it own. + */ + nestlevel++; + declloc(FALSE); /* declare local variable */ + } else { + doexpr(TRUE,TRUE,TRUE,TRUE,NULL,FALSE); /* expression 1 */ + needtoken(';'); + } /* if */ + } /* if */ + /* Adjust the "declared" field in the "while queue", in case that + * local variables were declared in the first expression of the + * "for" loop. These are deleted in separately, so a "break" or a "continue" + * must ignore these fields. + */ + ptr=readwhile(); + assert(ptr!=NULL); + ptr[wqBRK]=(int)declared; + ptr[wqCONT]=(int)declared; + jumplabel(skiplab); /* skip expression 3 1st time */ + setlabel(wq[wqLOOP]); /* "continue" goes to this label: expr3 */ + setline(fline,fcurrent); + /* Expressions 2 and 3 are reversed in the generated code: expression 3 + * precedes expression 2. When parsing, the code is buffered and marks for + * the start of each expression are insterted in the buffer. + */ + assert(!staging); + stgset(TRUE); /* start staging */ + assert(stgidx==0); + index=stgidx; + stgmark(sSTARTREORDER); + stgmark((char)(sEXPRSTART+0)); /* mark start of 2nd expression in stage */ + setlabel(skiplab); /* jump to this point after 1st expression */ + if (matchtoken(';')==0) { + test(wq[wqEXIT],FALSE,FALSE); /* expression 2 (jump to wq[wqEXIT] if false) */ + needtoken(';'); + } /* if */ + stgmark((char)(sEXPRSTART+1)); /* mark start of 3th expression in stage */ + if (matchtoken(')')==0) { + doexpr(TRUE,TRUE,TRUE,TRUE,NULL,FALSE); /* expression 3 */ + needtoken(')'); + } /* if */ + stgmark(sENDREORDER); /* mark end of reversed evaluation */ + stgout(index); + stgset(FALSE); /* stop staging */ + statement(NULL,FALSE); + jumplabel(wq[wqLOOP]); + setlabel(wq[wqEXIT]); + delwhile(); + + assert(nestlevel>=save_nestlevel); + if (nestlevel>save_nestlevel) { + /* Clean up the space and the symbol table for the local + * variable in "expr1". + */ + destructsymbols(&loctab,nestlevel); + modstk((int)(declared-save_decl)*sizeof(cell)); + declared=save_decl; + delete_symbols(&loctab,nestlevel,FALSE,TRUE); + nestlevel=save_nestlevel; /* reset 'compound statement' nesting level */ + } /* if */ +} + +/* The switch statement is incompatible with its C sibling: + * 1. the cases are not drop through + * 2. only one instruction may appear below each case, use a compound + * instruction to execute multiple instructions + * 3. the "case" keyword accepts a comma separated list of values to + * match, it also accepts a range using the syntax "1 .. 4" + * + * SWITCH param + * PRI = expression result + * param = table offset (code segment) + * + */ +static void doswitch(void) +{ + int lbl_table,lbl_exit,lbl_case; + int tok,swdefault,casecount; + cell val; + char *str; + constvalue caselist = { NULL, "", 0, 0}; /* case list starts empty */ + constvalue *cse,*csp; + char labelname[sNAMEMAX+1]; + + needtoken('('); + doexpr(TRUE,FALSE,FALSE,TRUE,NULL,FALSE); /* evaluate switch expression */ + needtoken(')'); + /* generate the code for the switch statement, the label is the address + * of the case table (to be generated later). + */ + lbl_table=getlabel(); + lbl_case=0; /* just to avoid a compiler warning */ + ffswitch(lbl_table); + + needtoken('{'); + lbl_exit=getlabel(); /* get label number for jumping out of switch */ + swdefault=FALSE; + casecount=0; + do { + tok=lex(&val,&str); /* read in (new) token */ + switch (tok) { + case tCASE: + if (swdefault!=FALSE) + error(15); /* "default" case must be last in switch statement */ + lbl_case=getlabel(); + sc_allowtags=FALSE; /* do not allow tagnames here */ + do { + casecount++; + + /* ??? enforce/document that, in a switch, a statement cannot start + * with a label. Then, you can search for: + * * the first semicolon (marks the end of a statement) + * * an opening brace (marks the start of a compound statement) + * and search for the right-most colon before that statement + * Now, by replacing the ':' by a special COLON token, you can + * parse all expressions until that special token. + */ + + constexpr(&val,NULL); + /* Search the insertion point (the table is kept in sorted order, so + * that advanced abstract machines can sift the case table with a + * binary search). Check for duplicate case values at the same time. + */ + for (csp=&caselist, cse=caselist.next; + cse!=NULL && cse->valuenext) + /* nothing */; + if (cse!=NULL && cse->value==val) + error(40,val); /* duplicate "case" label */ + /* Since the label is stored as a string in the "constvalue", the + * size of an identifier must be at least 8, as there are 8 + * hexadecimal digits in a 32-bit number. + */ + #if sNAMEMAX < 8 + #error Length of identifier (sNAMEMAX) too small. + #endif + assert(csp!=NULL); + assert(csp->next==cse); + insert_constval(csp,cse,itoh(lbl_case),val,0); + if (matchtoken(tDBLDOT)) { + cell end; + constexpr(&end,NULL); + if (end<=val) + error(50); /* invalid range */ + while (++val<=end) { + casecount++; + /* find the new insertion point */ + for (csp=&caselist, cse=caselist.next; + cse!=NULL && cse->valuenext) + /* nothing */; + if (cse!=NULL && cse->value==val) + error(40,val); /* duplicate "case" label */ + assert(csp!=NULL); + assert(csp->next==cse); + insert_constval(csp,cse,itoh(lbl_case),val,0); + } /* if */ + } /* if */ + } while (matchtoken(',')); + needtoken(':'); /* ':' ends the case */ + sc_allowtags=TRUE; /* reset */ + setlabel(lbl_case); + statement(NULL,FALSE); + jumplabel(lbl_exit); + break; + case tDEFAULT: + if (swdefault!=FALSE) + error(16); /* multiple defaults in switch */ + lbl_case=getlabel(); + setlabel(lbl_case); + needtoken(':'); + swdefault=TRUE; + statement(NULL,FALSE); + /* Jump to lbl_exit, even thouh this is the last clause in the + * switch, because the jump table is generated between the last + * clause of the switch and the exit label. + */ + jumplabel(lbl_exit); + break; + case '}': + /* nothing, but avoid dropping into "default" */ + break; + default: + error(2); + indent_nowarn=TRUE; /* disable this check */ + tok='}'; /* break out of the loop after an error */ + } /* switch */ + } while (tok!='}'); + + #if !defined NDEBUG + /* verify that the case table is sorted (unfortunatly, duplicates can + * occur; there really shouldn't be duplicate cases, but the compiler + * may not crash or drop into an assertion for a user error). */ + for (cse=caselist.next; cse!=NULL && cse->next!=NULL; cse=cse->next) + assert(cse->value <= cse->next->value); + #endif + /* generate the table here, before lbl_exit (general jump target) */ + setlabel(lbl_table); + assert(swdefault==FALSE || swdefault==TRUE); + if (swdefault==FALSE) { + /* store lbl_exit as the "none-matched" label in the switch table */ + strcpy(labelname,itoh(lbl_exit)); + } else { + /* lbl_case holds the label of the "default" clause */ + strcpy(labelname,itoh(lbl_case)); + } /* if */ + ffcase(casecount,labelname,TRUE); + /* generate the rest of the table */ + for (cse=caselist.next; cse!=NULL; cse=cse->next) + ffcase(cse->value,cse->name,FALSE); + + setlabel(lbl_exit); + delete_consttable(&caselist); /* clear list of case labels */ +} + +static void doassert(void) +{ + int flab1,index; + cell cidx; + value lval = {0}; + + if ((sc_debug & sCHKBOUNDS)!=0) { + flab1=getlabel(); /* get label number for "OK" branch */ + test(flab1,FALSE,TRUE); /* get expression and branch to flab1 if true */ + setline(fline,fcurrent); /* make sure we abort on the correct line number */ + ffabort(xASSERTION); + setlabel(flab1); + } else { + stgset(TRUE); /* start staging */ + stgget(&index,&cidx); /* mark position in code generator */ + do { + if (hier14(&lval)) + rvalue(&lval); + stgdel(index,cidx); /* just scrap the code */ + } while (matchtoken(',')); + stgset(FALSE); /* stop staging */ + } /* if */ + needtoken(tTERM); +} + +static void dogoto(void) +{ + char *st; + cell val; + symbol *sym; + + if (lex(&val,&st)==tSYMBOL) { + sym=fetchlab(st); + jumplabel((int)sym->addr); + sym->usage|=uREAD; /* set "uREAD" bit */ + // ??? if the label is defined (check sym->usage & uDEFINE), check + // sym->compound (nesting level of the label) against nestlevel; + // if sym->compound < nestlevel, call the destructor operator + } else { + error(20,st); /* illegal symbol name */ + } /* if */ + needtoken(tTERM); +} + +static void dolabel(void) +{ + char *st; + cell val; + symbol *sym; + + tokeninfo(&val,&st); /* retrieve label name again */ + if (find_constval(&tagname_tab,st,0)!=NULL) + error(221,st); /* label name shadows tagname */ + sym=fetchlab(st); + setlabel((int)sym->addr); + /* since one can jump around variable declarations or out of compound + * blocks, the stack must be manually adjusted + */ + setstk(-declared*sizeof(cell)); + sym->usage|=uDEFINE; /* label is now defined */ +} + +/* fetchlab + * + * Finds a label from the (local) symbol table or adds one to it. + * Labels are local in scope. + * + * Note: The "_usage" bit is set to zero. The routines that call "fetchlab()" + * must set this bit accordingly. + */ +static symbol *fetchlab(char *name) +{ + symbol *sym; + + sym=findloc(name); /* labels are local in scope */ + if (sym){ + if (sym->ident!=iLABEL) + error(19,sym->name); /* not a label: ... */ + } else { + sym=addsym(name,getlabel(),iLABEL,sLOCAL,0,0); + assert(sym!=NULL); /* fatal error 103 must be given on error */ + sym->x.declared=(int)declared; + sym->compound=nestlevel; + } /* if */ + return sym; +} + +/* doreturn + * + * Global references: rettype (altered) + */ +static void doreturn(void) +{ + int tag; + if (matchtoken(tTERM)==0){ + if ((rettype & uRETNONE)!=0) + error(208); /* mix "return;" and "return value;" */ + doexpr(TRUE,FALSE,FALSE,TRUE,&tag,FALSE); + needtoken(tTERM); + rettype|=uRETVALUE; /* function returns a value */ + /* check tagname with function tagname */ + assert(curfunc!=NULL); + if (!matchtag(curfunc->tag,tag,TRUE)) + error(213); /* tagname mismatch */ + } else { + /* this return statement contains no expression */ + const1(0); + if ((rettype & uRETVALUE)!=0) { + char symname[2*sNAMEMAX+16]; /* allow space for user defined operators */ + assert(curfunc!=NULL); + funcdisplayname(symname,curfunc->name); + error(209,symname); /* function should return a value */ + } /* if */ + rettype|=uRETNONE; /* function does not return anything */ + } /* if */ + destructsymbols(&loctab,0); /* call destructor for *all* locals */ + modstk((int)declared*sizeof(cell)); /* end of function, remove *all* + * local variables */ + ffret(); +} + +static void dobreak(void) +{ + int *ptr; + + ptr=readwhile(); /* readwhile() gives an error if not in loop */ + needtoken(tTERM); + if (ptr==NULL) + return; + destructsymbols(&loctab,nestlevel); + modstk(((int)declared-ptr[wqBRK])*sizeof(cell)); + jumplabel(ptr[wqEXIT]); +} + +static void docont(void) +{ + int *ptr; + + ptr=readwhile(); /* readwhile() gives an error if not in loop */ + needtoken(tTERM); + if (ptr==NULL) + return; + destructsymbols(&loctab,nestlevel); + modstk(((int)declared-ptr[wqCONT])*sizeof(cell)); + jumplabel(ptr[wqLOOP]); +} + +SC_FUNC void exporttag(int tag) +{ + /* find the tag by value in the table, then set the top bit to mark it + * "public" + */ + if (tag!=0) { + constvalue *ptr; + assert((tag & PUBLICTAG)==0); + for (ptr=tagname_tab.next; ptr!=NULL && tag!=(int)(ptr->value & TAGMASK); ptr=ptr->next) + /* nothing */; + if (ptr!=NULL) + ptr->value |= PUBLICTAG; + } /* if */ +} + +static void doexit(void) +{ + int tag=0; + + if (matchtoken(tTERM)==0){ + doexpr(TRUE,FALSE,FALSE,TRUE,&tag,FALSE); + needtoken(tTERM); + } else { + const1(0); + } /* if */ + const2(tag); + exporttag(tag); + destructsymbols(&loctab,0); /* call destructor for *all* locals */ + ffabort(xEXIT); +} + +static void dosleep(void) +{ + int tag=0; + + if (matchtoken(tTERM)==0){ + doexpr(TRUE,FALSE,FALSE,TRUE,&tag,FALSE); + needtoken(tTERM); + } else { + const1(0); + } /* if */ + const2(tag); + exporttag(tag); + ffabort(xSLEEP); +} + +static void addwhile(int *ptr) +{ + int k; + + ptr[wqBRK]=(int)declared; /* stack pointer (for "break") */ + ptr[wqCONT]=(int)declared; /* for "continue", possibly adjusted later */ + ptr[wqLOOP]=getlabel(); + ptr[wqEXIT]=getlabel(); + if (wqptr>=(wq+wqTABSZ-wqSIZE)) + error(102,"loop table"); /* loop table overflow (too many active loops)*/ + k=0; + while (kwq) + wqptr-=wqSIZE; +} + +static int *readwhile(void) +{ + if (wqptr<=wq){ + error(24); /* out of context */ + return NULL; + } else { + return (wqptr-wqSIZE); + } /* if */ +} + diff --git a/legacy/embryo/src/bin/embryo_cc_sc2.c b/legacy/embryo/src/bin/embryo_cc_sc2.c new file mode 100644 index 0000000000..f0da7495c3 --- /dev/null +++ b/legacy/embryo/src/bin/embryo_cc_sc2.c @@ -0,0 +1,2332 @@ +/* Small compiler - File input, preprocessing and lexical analysis functions + * + * Copyright (c) ITB CompuPhase, 1997-2003 + * + * This software is provided "as-is", without any express or implied warranty. + * In no event will the authors be held liable for any damages arising from + * the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software in + * a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + * Version: $Id$ + */ +#include +#include +#include +#include +#include +#include +#include "embryo_cc_sc.h" +#if defined LINUX + #include +#endif + +#if defined FORTIFY + #include "fortify.h" +#endif + +static int match(char *st,int end); +static cell litchar(char **lptr,int rawmode); +static int alpha(char c); + + +static int icomment; /* currently in multiline comment? */ +static int iflevel; /* nesting level if #if/#else/#endif */ +static int skiplevel; /* level at which we started skipping */ +static int elsedone; /* level at which we have seen an #else */ +static char term_expr[] = ""; +static int listline=-1; /* "current line" for the list file */ + + +/* pushstk & popstk + * + * Uses a LIFO stack to store information. The stack is used by doinclude(), + * doswitch() (to hold the state of "swactive") and some other routines. + * + * Porting note: I made the bold assumption that an integer will not be + * larger than a pointer (it may be smaller). That is, the stack element + * is typedef'ed as a pointer type, but I also store integers on it. See + * SC.H for "stkitem" + * + * Global references: stack,stkidx (private to pushstk() and popstk()) + */ +static stkitem stack[sSTKMAX]; +static int stkidx; +SC_FUNC void pushstk(stkitem val) +{ + if (stkidx>=sSTKMAX) + error(102,"parser stack"); /* stack overflow (recursive include?) */ + stack[stkidx]=val; + stkidx+=1; +} + +SC_FUNC stkitem popstk(void) +{ + if (stkidx==0) + return (stkitem) -1; /* stack is empty */ + stkidx-=1; + return stack[stkidx]; +} + +SC_FUNC int plungequalifiedfile(char *name) +{ +static char *extensions[] = { ".inc", ".sma", ".small" }; + FILE *fp; + char *ext; + int ext_idx; + + ext_idx=0; + do { + fp=(FILE*)sc_opensrc(name); + ext=strchr(name,'\0'); /* save position */ + if (fp==NULL) { + /* try to append an extension */ + strcpy(ext,extensions[ext_idx]); + fp=(FILE*)sc_opensrc(name); + if (fp==NULL) + *ext='\0'; /* on failure, restore filename */ + } /* if */ + ext_idx++; + } while (fp==NULL && ext_idx<(sizeof extensions / sizeof extensions[0])); + if (fp==NULL) { + *ext='\0'; /* restore filename */ + return FALSE; + } /* if */ + pushstk((stkitem)inpf); + pushstk((stkitem)inpfname); /* pointer to current file name */ + pushstk((stkitem)curlibrary); + pushstk((stkitem)iflevel); + assert(skiplevel==0); + pushstk((stkitem)icomment); + pushstk((stkitem)fcurrent); + pushstk((stkitem)fline); + inpfname=duplicatestring(name);/* set name of include file */ + if (inpfname==NULL) + error(103); /* insufficient memory */ + inpf=fp; /* set input file pointer to include file */ + fnumber++; + fline=0; /* set current line number to 0 */ + fcurrent=fnumber; + icomment=FALSE; + setfile(inpfname,fcurrent); + setfiledirect(inpfname); + listline=-1; /* force a #line directive when changing the file */ + setactivefile(fcurrent); + return TRUE; +} + +SC_FUNC int plungefile(char *name,int try_currentpath,int try_includepaths) +{ + int result=FALSE; + int i; + char *ptr; + + if (try_currentpath) + result=plungequalifiedfile(name); + + if (try_includepaths && name[0]!=DIRSEP_CHAR) { + for (i=0; !result && (ptr=get_path(i))!=NULL; i++) { + char path[_MAX_PATH]; + strncpy(path,ptr,sizeof path); + path[sizeof path - 1]='\0'; /* force '\0' termination */ + strncat(path,name,sizeof(path)-strlen(path)); + path[sizeof path - 1]='\0'; + result=plungequalifiedfile(path); + } /* while */ + } /* if */ + return result; +} + +static void check_empty(char *lptr) +{ + /* verifies that the string contains only whitespace */ + while (*lptr<=' ' && *lptr!='\0') + lptr++; + if (*lptr!='\0') + error(38); /* extra characters on line */ +} + +/* doinclude + * + * Gets the name of an include file, pushes the old file on the stack and + * sets some options. This routine doesn't use lex(), since lex() doesn't + * recognize file names (and directories). + * + * Global references: inpf (altered) + * inpfname (altered) + * fline (altered) + * lptr (altered) + */ +static void doinclude(void) +{ + char name[_MAX_PATH],c; + int i, result; + + while (*lptr<=' ' && *lptr!=0) /* skip leading whitespace */ + lptr++; + if (*lptr=='<' || *lptr=='\"'){ + c=(char)((*lptr=='\"') ? '\"' : '>'); /* termination character */ + lptr++; + while (*lptr<=' ' && *lptr!=0) /* skip whitespace after quote */ + lptr++; + } else { + c='\0'; + } /* if */ + + i=0; + while (*lptr!=c && *lptr!='\0' && i0 && name[i-1]<=' ') + i--; /* strip trailing whitespace */ + assert(i>=0 && i are only read from the list of include directories. + */ + result=plungefile(name,(c!='>'),TRUE); + if(!result) + error(100,name); /* cannot read from ... (fatal error) */ +} + +/* readline + * + * Reads in a new line from the input file pointed to by "inpf". readline() + * concatenates lines that end with a \ with the next line. If no more data + * can be read from the file, readline() attempts to pop off the previous file + * from the stack. If that fails too, it sets "freading" to 0. + * + * Global references: inpf,fline,inpfname,freading,icomment (altered) + */ +static void readline(char *line) +{ + int i,num,cont; + char *ptr; + + if (lptr==term_expr) + return; + num=sLINEMAX; + cont=FALSE; + do { + if (inpf==NULL || sc_eofsrc(inpf)) { + if (cont) + error(49); /* invalid line continuation */ + if (inpf!=NULL && inpf!=inpf_org) + sc_closesrc(inpf); + i=(int)(long)popstk(); + if (i==-1) { /* All's done; popstk() returns "stack is empty" */ + freading=FALSE; + *line='\0'; + /* when there is nothing more to read, the #if/#else stack should + * be empty and we should not be in a comment + */ + assert(iflevel>=0); + if (iflevel>0) + error(1,"#endif","-end of file-"); + else if (icomment) + error(1,"*/","-end of file-"); + return; + } /* if */ + fline=i; + fcurrent=(int)(long)popstk(); + icomment=(int)(long)popstk(); + assert(skiplevel==0); /* skiplevel was not stored on stack, because it should always be zero at this point */ + iflevel=(int)(long)popstk(); + curlibrary=(constvalue *)popstk(); + free(inpfname); /* return memory allocated for the include file name */ + inpfname=(char *)popstk(); + inpf=(FILE *)popstk(); + setactivefile(fcurrent); + setfiledirect(inpfname); + listline=-1; /* force a #line directive when changing the file */ + elsedone=0; + } /* if */ + + if (sc_readsrc(inpf,line,num)==NULL) { + *line='\0'; /* delete line */ + cont=FALSE; + } else { + /* check whether to erase leading spaces */ + if (cont) { + char *ptr=line; + while (*ptr==' ' || *ptr=='\t') + ptr++; + if (ptr!=line) + memmove(line,ptr,strlen(ptr)+1); + } /* if */ + cont=FALSE; + /* check whether a full line was read */ + if (strchr(line,'\n')==NULL && !sc_eofsrc(inpf)) + error(75); /* line too long */ + /* check if the next line must be concatenated to this line */ + if ((ptr=strchr(line,'\n'))!=NULL && ptr>line) { + assert(*(ptr+1)=='\0'); /* '\n' should be last in the string */ + while (ptr>line && (*ptr=='\n' || *ptr==' ' || *ptr=='\t')) + ptr--; /* skip trailing whitespace */ + if (*ptr=='\\') { + cont=TRUE; + /* set '\a' at the position of '\\' to make it possible to check + * for a line continuation in a single line comment (error 49) + */ + *ptr++='\a'; + *ptr='\0'; /* erase '\n' (and any trailing whitespace) */ + } /* if */ + } /* if */ + num-=strlen(line); + line+=strlen(line); + } /* if */ + fline+=1; + } while (num>=0 && cont); +} + +/* stripcom + * + * Replaces all comments from the line by space characters. It updates + * a global variable ("icomment") for multiline comments. + * + * This routine also supports the C++ extension for single line comments. + * These comments are started with "//" and end at the end of the line. + * + * Global references: icomment (private to "stripcom") + */ +static void stripcom(char *line) +{ + char c; + + while (*line){ + if (icomment){ + if (*line=='*' && *(line+1)=='/') { + icomment=FALSE; /* comment has ended */ + *line=' '; /* replace '*' and '/' characters by spaces */ + *(line+1)=' '; + line+=2; + } else { + if (*line=='/' && *(line+1)=='*') + error(216); /* nested comment */ + *line=' '; /* replace comments by spaces */ + line+=1; + } /* if */ + } else { + if (*line=='/' && *(line+1)=='*'){ + icomment=TRUE; /* start comment */ + *line=' '; /* replace '/' and '*' characters by spaces */ + *(line+1)=' '; + line+=2; + } else if (*line=='/' && *(line+1)=='/'){ /* comment to end of line */ + if (strchr(line,'\a')!=NULL) + error(49); /* invalid line continuation */ + *line++='\n'; /* put "newline" at first slash */ + *line='\0'; /* put "zero-terminator" at second slash */ + } else { + if (*line=='\"' || *line=='\''){ /* leave literals unaltered */ + c=*line; /* ending quote, single or double */ + line+=1; + while ((*line!=c || *(line-1)=='\\') && *line!='\0') + line+=1; + line+=1; /* skip final quote */ + } else { + line+=1; + } /* if */ + } /* if */ + } /* if */ + } /* while */ +} + +/* btoi + * + * Attempts to interpret a numeric symbol as a boolean value. On success + * it returns the number of characters processed (so the line pointer can be + * adjusted) and the value is stored in "val". Otherwise it returns 0 and + * "val" is garbage. + * + * A boolean value must start with "0b" + */ +static int btoi(cell *val,char *curptr) +{ + char *ptr; + + *val=0; + ptr=curptr; + if (*ptr=='0' && *(ptr+1)=='b') { + ptr+=2; + while (*ptr=='0' || *ptr=='1' || *ptr=='_') { + if (*ptr!='_') + *val=(*val<<1) | (*ptr-'0'); + ptr++; + } /* while */ + } else { + return 0; + } /* if */ + if (alphanum(*ptr)) /* number must be delimited by non-alphanumeric char */ + return 0; + else + return (int)(ptr-curptr); +} + +/* dtoi + * + * Attempts to interpret a numeric symbol as a decimal value. On success + * it returns the number of characters processed and the value is stored in + * "val". Otherwise it returns 0 and "val" is garbage. + */ +static int dtoi(cell *val,char *curptr) +{ + char *ptr; + + *val=0; + ptr=curptr; + if (!isdigit(*ptr)) /* should start with digit */ + return 0; + while (isdigit(*ptr) || *ptr=='_') { + if (*ptr!='_') + *val=(*val*10)+(*ptr-'0'); + ptr++; + } /* while */ + if (alphanum(*ptr)) /* number must be delimited by non-alphanumerical */ + return 0; + if (*ptr=='.' && isdigit(*(ptr+1))) + return 0; /* but a fractional part must not be present */ + return (int)(ptr-curptr); +} + +/* htoi + * + * Attempts to interpret a numeric symbol as a hexadecimal value. On + * success it returns the number of characters processed and the value is + * stored in "val". Otherwise it return 0 and "val" is garbage. + */ +static int htoi(cell *val,char *curptr) +{ + char *ptr; + + *val=0; + ptr=curptr; + if (!isdigit(*ptr)) /* should start with digit */ + return 0; + if (*ptr=='0' && *(ptr+1)=='x') { /* C style hexadecimal notation */ + ptr+=2; + while (ishex(*ptr) || *ptr=='_') { + if (*ptr!='_') { + assert(ishex(*ptr)); + *val= *val<<4; + if (isdigit(*ptr)) + *val+= (*ptr-'0'); + else + *val+= (tolower(*ptr)-'a'+10); + } /* if */ + ptr++; + } /* while */ + } else { + return 0; + } /* if */ + if (alphanum(*ptr)) + return 0; + else + return (int)(ptr-curptr); +} + +#if defined LINUX +static double pow10(int value) +{ + double res=1.0; + while (value>=4) { + res*=10000.0; + value-=5; + } /* while */ + while (value>=2) { + res*=100.0; + value-=2; + } /* while */ + while (value>=1) { + res*=10.0; + value-=1; + } /* while */ + return res; +} +#endif + +/* ftoi + * + * Attempts to interpret a numeric symbol as a rational number, either as + * IEEE 754 single precision floating point or as a fixed point integer. + * On success it returns the number of characters processed and the value is + * stored in "val". Otherwise it returns 0 and "val" is unchanged. + * + * Small has stricter definition for floating point numbers than most: + * o the value must start with a digit; ".5" is not a valid number, you + * should write "0.5" + * o a period must appear in the value, even if an exponent is given; "2e3" + * is not a valid number, you should write "2.0e3" + * o at least one digit must follow the period; "6." is not a valid number, + * you should write "6.0" + */ +static int ftoi(cell *val,char *curptr) +{ + char *ptr; + double fnum,ffrac,fmult; + unsigned long dnum,dbase; + int i, ignore; + + assert(rational_digits>=0 && rational_digits<9); + for (i=0,dbase=1; i0 && !ignore) { + error(222); /* number of digits exceeds rational number precision */ + ignore=TRUE; + } /* if */ + } /* if */ + ptr++; + } /* while */ + fnum += ffrac*fmult; /* form the number so far */ + if (*ptr=='e') { /* optional fractional part */ + int exp,sign; + ptr++; + if (*ptr=='-') { + sign=-1; + ptr++; + } else { + sign=1; + } /* if */ + if (!isdigit(*ptr)) /* 'e' should be followed by a digit */ + return 0; + exp=0; + while (isdigit(*ptr)) { + exp=(exp*10)+(*ptr-'0'); + ptr++; + } /* while */ + #if defined LINUX + fmult=pow10(exp*sign); + #else + fmult=pow(10,exp*sign); + #endif + fnum *= fmult; + dnum *= (unsigned long)(fmult+0.5); + } /* if */ + + /* decide how to store the number */ + if (sc_rationaltag==0) { + error(70); /* rational number support was not enabled */ + *val=0; + } else if (rational_digits==0) { + /* floating point */ + float value=(float)fnum; + *val=*((cell *)&value); + #if !defined NDEBUG + /* I assume that the C/C++ compiler stores "float" values in IEEE 754 + * format (as mandated in the ANSI standard). Test this assumption anyway. + */ + { float test1 = 0.0, test2 = 50.0; + assert(*(long*)&test1==0x00000000L && *(long*)&test2==0x42480000L); + } + #endif + } else { + /* fixed point */ + *val=(cell)dnum; + } /* if */ + + return (int)(ptr-curptr); +} + +/* number + * + * Reads in a number (binary, decimal or hexadecimal). It returns the number + * of characters processed or 0 if the symbol couldn't be interpreted as a + * number (in this case the argument "val" remains unchanged). This routine + * relies on the 'early dropout' implementation of the logical or (||) + * operator. + * + * Note: the routine doesn't check for a sign (+ or -). The - is checked + * for at "hier2()" (in fact, it is viewed as an operator, not as a + * sign) and the + is invalid (as in K&R C, and unlike ANSI C). + */ +static int number(cell *val,char *curptr) +{ + int i; + cell value; + + if ((i=btoi(&value,curptr))!=0 /* binary? */ + || (i=htoi(&value,curptr))!=0 /* hexadecimal? */ + || (i=dtoi(&value,curptr))!=0) /* decimal? */ + { + *val=value; + return i; + } else { + return 0; /* else not a number */ + } /* if */ +} + +static void chrcat(char *str,char chr) +{ + str=strchr(str,'\0'); + *str++=chr; + *str='\0'; +} + +static int preproc_expr(cell *val,int *tag) +{ + int result; + int index; + cell code_index; + char *term; + + /* Disable staging; it should be disabled already because + * expressions may not be cut off half-way between conditional + * compilations. Reset the staging index, but keep the code + * index. + */ + if (stgget(&index,&code_index)) { + error(57); /* unfinished expression */ + stgdel(0,code_index); + stgset(FALSE); + } /* if */ + /* append a special symbol to the string, so the expression + * analyzer won't try to read a next line when it encounters + * an end-of-line + */ + assert(strlen(pline)0 ? CMD_CONDFALSE : CMD_NONE; /* it is not a compiler directive */ + /* compiler directive found */ + indent_nowarn=TRUE; /* allow loose indentation" */ + lexclr(FALSE); /* clear any "pushed" tokens */ + /* on a pending expression, force to return a silent ';' token and force to + * re-read the line + */ + if (!sc_needsemicolon && stgget(&index,&code_index)) { + lptr=term_expr; + return CMD_TERM; + } /* if */ + tok=lex(&val,&str); + ret=skiplevel>0 ? CMD_CONDFALSE : CMD_DIRECTIVE; /* preset 'ret' to CMD_DIRECTIVE (most common case) */ + switch (tok) { + case tpIF: /* conditional compilation */ + ret=CMD_IF; + iflevel+=1; + if (skiplevel) + break; /* break out of switch */ + preproc_expr(&val,NULL); /* get value (or 0 on error) */ + if (!val) + skiplevel=iflevel; + check_empty(lptr); + break; + case tpELSE: + ret=CMD_IF; + if (iflevel==0 && skiplevel==0) { + error(26); /* no matching #if */ + errorset(sRESET); + } else { + if (elsedone==iflevel) + error(60); /* multiple #else directives between #if ... #endif */ + elsedone=iflevel; + if (skiplevel==iflevel) + skiplevel=0; + else if (skiplevel==0) + skiplevel=iflevel; + } /* if */ + check_empty(lptr); + break; +#if 0 /* ??? *really* need to use a stack here */ + case tpELSEIF: + ret=CMD_IF; + if (iflevel==0 && skiplevel==0) { + error(26); /* no matching #if */ + errorset(sRESET); + } else if (elsedone==iflevel) { + error(61); /* #elseif directive may not follow an #else */ + errorset(sRESET); + } else { + preproc_expr(&val,NULL); /* get value (or 0 on error) */ + if (skiplevel==0) + skiplevel=iflevel; /* we weren't skipping, start skipping now */ + else if (val) + skiplevel=0; /* we were skipping, condition is valid -> stop skipping */ + /* else: we were skipping and condition is invalid -> keep skipping */ + check_empty(lptr); + } /* if */ + break; +#endif + case tpENDIF: + ret=CMD_IF; + if (iflevel==0 && skiplevel==0){ + error(26); + errorset(sRESET); + } else { + if (skiplevel==iflevel) + skiplevel=0; + if (elsedone==iflevel) + elsedone=0; /* ??? actually, should build a stack of #if/#endif and keep + * the state whether an #else was seen per nesting level */ + iflevel-=1; + } /* if */ + check_empty(lptr); + break; + case tINCLUDE: /* #include directive */ + ret=CMD_INCLUDE; + if (skiplevel==0) + doinclude(); + break; + case tpFILE: + if (skiplevel==0) { + char pathname[_MAX_PATH]; + lptr=getstring(pathname,sizeof pathname,lptr); + if (strlen(pathname)>0) { + free(inpfname); + inpfname=duplicatestring(pathname); + if (inpfname==NULL) + error(103); /* insufficient memory */ + } /* if */ + } /* if */ + check_empty(lptr); + break; + case tpLINE: + if (skiplevel==0) { + if (lex(&val,&str)!=tNUMBER) + error(8); /* invalid/non-constant expression */ + fline=(int)val; + } /* if */ + check_empty(lptr); + break; + case tpASSERT: + if (skiplevel==0 && (sc_debug & sCHKBOUNDS)!=0) { + preproc_expr(&val,NULL); /* get constant expression (or 0 on error) */ + if (!val) + error(7); /* assertion failed */ + check_empty(lptr); + } /* if */ + break; + case tpPRAGMA: + if (skiplevel==0) { + if (lex(&val,&str)==tSYMBOL) { + if (strcmp(str,"ctrlchar")==0) { + if (lex(&val,&str)!=tNUMBER) + error(27); /* invalid character constant */ + sc_ctrlchar=(char)val; + } else if (strcmp(str,"compress")==0) { + cell val; + preproc_expr(&val,NULL); + sc_compress=(int)val; /* switch code packing on/off */ + } else if (strcmp(str,"dynamic")==0) { + preproc_expr(&sc_stksize,NULL); + } else if (strcmp(str,"library")==0) { + char name[sNAMEMAX+1]; + while (*lptr<=' ' && *lptr!='\0') + lptr++; + if (*lptr=='"') { + lptr=getstring(name,sizeof name,lptr); + } else { + int i; + for (i=0; isEXPMAX) + error(220,name,sEXPMAX); /* exported symbol is truncated */ + /* add the name if it does not yet exist in the table */ + if (find_constval(&libname_tab,name,0)==NULL) + curlibrary=append_constval(&libname_tab,name,0,0); + } /* if */ + } else if (strcmp(str,"pack")==0) { + cell val; + preproc_expr(&val,NULL); /* default = packed/unpacked */ + sc_packstr=(int)val; + } else if (strcmp(str,"rational")==0) { + char name[sNAMEMAX+1]; + cell digits=0; + int i; + /* first gather all information, start with the tag name */ + while (*lptr<=' ' && *lptr!='\0') + lptr++; + for (i=0; i9) { + error(68); /* invalid rational number precision */ + digits=0; + } /* if */ + if (*lptr==')') + lptr++; + } /* if */ + /* add the tag (make it public) and check the values */ + i=sc_addtag(name); + exporttag(i); + if (sc_rationaltag==0 || (sc_rationaltag==i && rational_digits==(int)digits)) { + sc_rationaltag=i; + rational_digits=(int)digits; + } else { + error(69); /* rational number format already set, can only be set once */ + } /* if */ + } else if (strcmp(str,"semicolon")==0) { + cell val; + preproc_expr(&val,NULL); + sc_needsemicolon=(int)val; + } else if (strcmp(str,"tabsize")==0) { + cell val; + preproc_expr(&val,NULL); + sc_tabsize=(int)val; + } else if (strcmp(str,"align")==0) { + sc_alignnext=TRUE; + } else if (strcmp(str,"unused")==0) { + char name[sNAMEMAX+1]; + int i,comma; + symbol *sym; + do { + /* get the name */ + while (*lptr<=' ' && *lptr!='\0') + lptr++; + for (i=0; iusage |= uREAD; + if (sym->ident==iVARIABLE || sym->ident==iREFERENCE + || sym->ident==iARRAY || sym->ident==iREFARRAY) + sym->usage |= uWRITTEN; + } else { + error(17,name); /* undefined symbol */ + } /* if */ + /* see if a comma follows the name */ + while (*lptr<=' ' && *lptr!='\0') + lptr++; + comma= (*lptr==','); + if (comma) + lptr++; + } while (comma); + } else { + error(207); /* unknown #pragma */ + } /* if */ + } else { + error(207); /* unknown #pragma */ + } /* if */ + check_empty(lptr); + } /* if */ + break; + case tpENDINPUT: + case tpENDSCRPT: + if (skiplevel==0) { + check_empty(lptr); + assert(inpf!=NULL); + if (inpf!=inpf_org) + sc_closesrc(inpf); + inpf=NULL; + } /* if */ + break; +#if !defined NOEMIT + case tpEMIT: { + /* write opcode to output file */ + char name[40]; + int i; + while (*lptr<=' ' && *lptr!='\0') + lptr++; + for (i=0; i<40 && (isalpha(*lptr) || *lptr=='.'); i++,lptr++) + name[i]=(char)tolower(*lptr); + name[i]='\0'; + stgwrite("\t"); + stgwrite(name); + stgwrite(" "); + code_idx+=opcodes(1); + /* write parameter (if any) */ + while (*lptr<=' ' && *lptr!='\0') + lptr++; + if (*lptr!='\0') { + symbol *sym; + tok=lex(&val,&str); + switch (tok) { + case tNUMBER: + case tRATIONAL: + outval(val,FALSE); + code_idx+=opargs(1); + break; + case tSYMBOL: + sym=findloc(str); + if (sym==NULL) + sym=findglb(str); + if (sym==NULL || sym->ident!=iFUNCTN && sym->ident!=iREFFUNC && (sym->usage & uDEFINE)==0) { + error(17,str); /* undefined symbol */ + } else { + outval(sym->addr,FALSE); + /* mark symbol as "used", unknown whether for read or write */ + markusage(sym,uREAD | uWRITTEN); + code_idx+=opargs(1); + } /* if */ + break; + default: { + char s2[20]; + extern char *sc_tokens[];/* forward declaration */ + if (tok<256) + sprintf(s2,"%c",(char)tok); + else + strcpy(s2,sc_tokens[tok-tFIRST]); + error(1,sc_tokens[tSYMBOL-tFIRST],s2); + break; + } /* case */ + } /* switch */ + } /* if */ + stgwrite("\n"); + check_empty(lptr); + break; + } /* case */ +#endif +#if !defined NO_DEFINE + case tpDEFINE: { + ret=CMD_DEFINE; + if (skiplevel==0) { + char *pattern,*substitution; + char *start,*end; + int count,prefixlen; + stringpair *def; + /* find the pattern to match */ + while (*lptr<=' ' && *lptr!='\0') + lptr++; + start=lptr; /* save starting point of the match pattern */ + count=0; + while (*lptr>' ' && *lptr!='\0') { + litchar(&lptr,FALSE); /* litchar() advances "lptr" and handles escape characters */ + count++; + } /* while */ + end=lptr; + /* check pattern to match */ + if (!isalpha(*start) && *start!='_') { + error(74); /* pattern must start with an alphabetic character */ + break; + } /* if */ + /* store matched pattern */ + pattern=malloc(count+1); + if (pattern==NULL) + error(103); /* insufficient memory */ + lptr=start; + count=0; + while (lptr!=end) { + assert(lptr=2 && isdigit(pattern[count-1]) && pattern[count-2]=='%') + pattern[count-2]='\0'; + /* find substitution string */ + while (*lptr<=' ' && *lptr!='\0') + lptr++; + start=lptr; /* save starting point of the match pattern */ + count=0; + end=NULL; + while (*lptr!='\0') { + /* keep position of the start of trailing whitespace */ + if (*lptr<=' ') { + if (end==NULL) + end=lptr; + } else { + end=NULL; + } /* if */ + count++; + lptr++; + } /* while */ + if (end==NULL) + end=lptr; + /* store matched substitution */ + substitution=malloc(count+1); /* +1 for '\0' */ + if (substitution==NULL) + error(103); /* insufficient memory */ + lptr=start; + count=0; + while (lptr!=end) { + assert(lptr0); + if ((def=find_subst(pattern,prefixlen))!=NULL) { + if (strcmp(def->first,pattern)!=0 || strcmp(def->second,substitution)!=0) + error(201,pattern); /* redefinition of macro (non-identical) */ + delete_subst(pattern,prefixlen); + } /* if */ + /* add the pattern/substitution pair to the list */ + assert(strlen(pattern)>0); + insert_subst(pattern,substitution,prefixlen); + free(pattern); + free(substitution); + } /* if */ + break; + } /* case */ + case tpUNDEF: + if (skiplevel==0) { + if (lex(&val,&str)==tSYMBOL) { + if (!delete_subst(str,strlen(str))) + error(17,str); /* undefined symbol */ + } else { + error(20,str); /* invalid symbol name */ + } /* if */ + check_empty(lptr); + } /* if */ + break; +#endif + default: + error(31); /* unknown compiler directive */ + ret=skiplevel>0 ? CMD_DIRECTIVE : CMD_NONE; /* line must be processed (if skiplevel==0) */ + } /* switch */ + return ret; +} + +#if !defined NO_DEFINE +static int is_startstring(char *string) +{ + if (*string=='\"' || *string=='\'') + return TRUE; /* "..." */ + + if (*string=='!') { + string++; + if (*string=='\"' || *string=='\'') + return TRUE; /* !"..." */ + if (*string==sc_ctrlchar) { + string++; + if (*string=='\"' || *string=='\'') + return TRUE; /* !\"..." */ + } /* if */ + } else if (*string==sc_ctrlchar) { + string++; + if (*string=='\"' || *string=='\'') + return TRUE; /* \"..." */ + if (*string=='!') { + string++; + if (*string=='\"' || *string=='\'') + return TRUE; /* \!"..." */ + } /* if */ + } /* if */ + + return FALSE; +} + +static char *skipstring(char *string) +{ + char endquote; + int rawstring=FALSE; + + while (*string=='!' || *string==sc_ctrlchar) { + rawstring= (*string==sc_ctrlchar); + string++; + } /* while */ + + endquote=*string; + assert(endquote=='"' || endquote=='\''); + string++; /* skip open quote */ + while (*string!=endquote && *string!='\0') + litchar(&string,rawstring); + return string; +} + +static char *skippgroup(char *string) +{ + int nest=0; + char open=*string; + char close; + + switch (open) { + case '(': + close=')'; + break; + case '{': + close='}'; + break; + case '[': + close=']'; + break; + case '<': + close='>'; + break; + default: + assert(0); + close='\0'; /* only to avoid a compiler warning */ + }/* switch */ + + string++; + while (*string!=close || nest>0) { + if (*string==open) + nest++; + else if (*string==close) + nest--; + else if (is_startstring(string)) + string=skipstring(string); + if (*string=='\0') + break; + string++; + } /* while */ + return string; +} + +static char *strdel(char *str,size_t len) +{ + size_t length=strlen(str); + if (len>length) + len=length; + memmove(str, str+len, length-len+1); /* include EOS byte */ + return str; +} + +static char *strins(char *dest,char *src,size_t srclen) +{ + size_t destlen=strlen(dest); + assert(srclen<=strlen(src)); + memmove(dest+srclen, dest, destlen+1);/* include EOS byte */ + memcpy(dest, src, srclen); + return dest; +} + +static int substpattern(char *line,size_t buffersize,char *pattern,char *substitution) +{ + int prefixlen; + char *p,*s,*e,*args[10]; + int match,arg,len; + + memset(args,0,sizeof args); + + /* check the length of the prefix */ + for (prefixlen=0,s=pattern; isalpha(*s) || isdigit(*s) || *s=='_'; prefixlen++,s++) + /* nothing */; + assert(prefixlen>0); + assert(strncmp(line,pattern,prefixlen)==0); + + /* pattern prefix matches; match the rest of the pattern, gather + * the parameters + */ + s=line+prefixlen; + p=pattern+prefixlen; + match=TRUE; /* so far, pattern matches */ + while (match && *s!='\0' && *p!='\0') { + if (*p=='%') { + p++; /* skip '%' */ + if (isdigit(*p)) { + arg=*p-'0'; + assert(arg>=0 && arg<=9); + p++; /* skip parameter id */ + assert(*p!='\0'); + /* match the source string up to the character after the digit + * (skipping strings in the process + */ + e=s; + while (*e!=*p && *e!='\0' && *e!='\n') { + if (is_startstring(e)) /* skip strings */ + e=skipstring(e); + else if (strchr("({[",*e)!=NULL) /* skip parenthized groups */ + e=skippgroup(e); + if (*e!='\0') + e++; /* skip non-alphapetic character (or closing quote of + * a string, or the closing paranthese of a group) */ + } /* while */ + /* store the parameter (overrule any earlier) */ + if (args[arg]!=NULL) + free(args[arg]); + len=(int)(e-s); + args[arg]=malloc(len+1); + if (args[arg]==NULL) + error(103); /* insufficient memory */ + strncpy(args[arg],s,len); + args[arg][len]='\0'; + /* character behind the pattern was matched too */ + if (*e==*p) { + s=e+1; + } else if (*e=='\n' && *p==';' && *(p+1)=='\0' && !sc_needsemicolon) { + s=e; /* allow a trailing ; in the pattern match to end of line */ + } else { + assert(*e=='\0' || *e=='\n'); + match=FALSE; + s=e; + } /* if */ + p++; + } else { + match=FALSE; + } /* if */ + } else if (*p==';' && *(p+1)=='\0' && !sc_needsemicolon) { + /* source may be ';' or end of the line */ + while (*s<=' ' && *s!='\0') + s++; /* skip white space */ + if (*s!=';' && *s!='\0') + match=FALSE; + p++; /* skip the semicolon in the pattern */ + } else { + cell ch; + /* skip whitespace between two non-alphanumeric characters, except + * for two identical symbols + */ + assert(p>pattern); + if (!alphanum(*p) && *(p-1)!=*p) + while (*s<=' ' && *s!='\0') + s++; /* skip white space */ + ch=litchar(&p,FALSE); /* this increments "p" */ + if (*s!=ch) + match=FALSE; + else + s++; /* this character matches */ + } /* if */ + } /* while */ + + if (match && *p=='\0') { + /* if the last character to match is an alphanumeric character, the + * current character in the source may not be alphanumeric + */ + assert(p>pattern); + if (alphanum(*(p-1)) && alphanum(*s)) + match=FALSE; + } /* if */ + + if (match) { + /* calculate the length of the substituted string */ + for (e=substitution,len=0; *e!='\0'; e++) { + if (*e=='%' && isdigit(*(e+1))) { + arg=*(e+1)-'0'; + assert(arg>=0 && arg<=9); + if (args[arg]!=NULL) + len+=strlen(args[arg]); + e++; /* skip %, digit is skipped later */ + } else { + len++; + } /* if */ + } /* for */ + /* check length of the string after substitution */ + if (strlen(line) + len - (int)(s-line) > buffersize) { + error(75); /* line too long */ + } else { + /* substitute pattern */ + strdel(line,(int)(s-line)); + for (e=substitution,s=line; *e!='\0'; e++) { + if (*e=='%' && isdigit(*(e+1))) { + arg=*(e+1)-'0'; + assert(arg>=0 && arg<=9); + if (args[arg]!=NULL) { + strins(s,args[arg],strlen(args[arg])); + s+=strlen(args[arg]); + } /* if */ + e++; /* skip %, digit is skipped later */ + } else { + strins(s,e,1); + s++; + } /* if */ + } /* for */ + } /* if */ + } /* if */ + + for (arg=0; arg<10; arg++) + if (args[arg]!=NULL) + free(args[arg]); + + return match; +} + +static void substallpatterns(char *line,int buffersize) +{ + char *start, *end; + int prefixlen; + stringpair *subst; + + start=line; + while (*start!='\0') { + /* find the start of a prefix (skip all non-alphabetic characters), + * also skip strings + */ + while (!isalpha(*start) && *start!='_' && *start!='\0') { + /* skip strings */ + if (is_startstring(start)) { + start=skipstring(start); + if (*start=='\0') + break; /* abort loop on error */ + } /* if */ + start++; /* skip non-alphapetic character (or closing quote of a string) */ + } /* while */ + if (*start=='\0') + break; /* abort loop on error */ + /* get the prefix (length), look for a matching definition */ + prefixlen=0; + end=start; + while (isalpha(*end) || isdigit(*end) || *end=='_') { + prefixlen++; + end++; + } /* while */ + assert(prefixlen>0); + subst=find_subst(start,prefixlen); + if (subst!=NULL) { + /* properly match the pattern and substitute */ + if (!substpattern(start,buffersize-(start-line),subst->first,subst->second)) + start=end; /* match failed, skip this prefix */ + /* match succeeded: do not update "start", because the substitution text + * may be matched by other macros + */ + } else { + start=end; /* no macro with this prefix, skip this prefix */ + } /* if */ + } /* while */ +} +#endif + +/* preprocess + * + * Reads a line by readline() into "pline" and performs basic preprocessing: + * deleting comments, skipping lines with false "#if.." code and recognizing + * other compiler directives. There is an indirect recursion: lex() calls + * preprocess() if a new line must be read, preprocess() calls command(), + * which at his turn calls lex() to identify the token. + * + * Global references: lptr (altered) + * pline (altered) + * freading (referred to only) + */ +SC_FUNC void preprocess(void) +{ + int iscommand; + + if (!freading) + return; + do { + readline(pline); + stripcom(pline); /* ??? no need for this when reading back from list file (in the second pass) */ + lptr=pline; /* set "line pointer" to start of the parsing buffer */ + iscommand=command(); + if (iscommand!=CMD_NONE) + errorset(sRESET); /* reset error flag ("panic mode") on empty line or directive */ + #if !defined NO_DEFINE + if (iscommand==CMD_NONE) { + assert(lptr!=term_expr); + substallpatterns(pline,sLINEMAX); + lptr=pline; /* reset "line pointer" to start of the parsing buffer */ + } /* if */ + #endif + if (sc_status==statFIRST && sc_listing && freading + && (iscommand==CMD_NONE || iscommand==CMD_EMPTYLINE || iscommand==CMD_DIRECTIVE)) + { + listline++; + if (fline!=listline) { + listline=fline; + setlinedirect(fline); + } /* if */ + if (iscommand==CMD_EMPTYLINE) + fputs("\n",outf); + else + fputs(pline,outf); + } /* if */ + } while (iscommand!=CMD_NONE && iscommand!=CMD_TERM && freading); /* enddo */ +} + +static char *unpackedstring(char *lptr,int rawstring) +{ + while (*lptr!='\"' && *lptr!='\0') { + if (*lptr=='\a') { /* ignore '\a' (which was inserted at a line concatenation) */ + lptr++; + continue; + } /* if */ + stowlit(litchar(&lptr,rawstring)); /* litchar() alters "lptr" */ + } /* while */ + stowlit(0); /* terminate string */ + return lptr; +} + +static char *packedstring(char *lptr,int rawstring) +{ + int i; + ucell val,c; + + i=sizeof(ucell)-(charbits/8); /* start at most significant byte */ + val=0; + while (*lptr!='\"' && *lptr!='\0') { + if (*lptr=='\a') { /* ignore '\a' (which was inserted at a line concatenation) */ + lptr++; + continue; + } /* if */ + c=litchar(&lptr,rawstring); /* litchar() alters "lptr" */ + if (c>=(ucell)(1 << charbits)) + error(43); /* character constant exceeds range */ + val |= (c << 8*i); + if (i==0) { + stowlit(val); + val=0; + } /* if */ + i=(i+sizeof(ucell)-(charbits/8)) % sizeof(ucell); + } /* if */ + /* save last code; make sure there is at least one terminating zero character */ + if (i!=(int)(sizeof(ucell)-(charbits/8))) + stowlit(val); /* at least one zero character in "val" */ + else + stowlit(0); /* add full cell of zeros */ + return lptr; +} + +/* lex(lexvalue,lexsym) Lexical Analysis + * + * lex() first deletes leading white space, then checks for multi-character + * operators, keywords (including most compiler directives), numbers, + * labels, symbols and literals (literal characters are converted to a number + * and are returned as such). If every check fails, the line must contain + * a single-character operator. So, lex() returns this character. In the other + * case (something did match), lex() returns the number of the token. All + * these tokens have been assigned numbers above 255. + * + * Some tokens have "attributes": + * tNUMBER the value of the number is return in "lexvalue". + * tRATIONAL the value is in IEEE 754 encoding or in fixed point + * encoding in "lexvalue". + * tSYMBOL the first sNAMEMAX characters of the symbol are + * stored in a buffer, a pointer to this buffer is + * returned in "lexsym". + * tLABEL the first sNAMEMAX characters of the label are + * stored in a buffer, a pointer to this buffer is + * returned in "lexsym". + * tSTRING the string is stored in the literal pool, the index + * in the literal pool to this string is stored in + * "lexvalue". + * + * lex() stores all information (the token found and possibly its attribute) + * in global variables. This allows a token to be examined twice. If "_pushed" + * is true, this information is returned. + * + * Global references: lptr (altered) + * fline (referred to only) + * litidx (referred to only) + * _lextok, _lexval, _lexstr + * _pushed + */ + +static int _pushed; +static int _lextok; +static cell _lexval; +static char _lexstr[sLINEMAX+1]; +static int _lexnewline; + +SC_FUNC void lexinit(void) +{ + stkidx=0; /* index for pushstk() and popstk() */ + iflevel=0; /* preprocessor: nesting of "#if" */ + skiplevel=0; /* preprocessor: skipping lines or compiling lines */ + icomment=FALSE; /* currently not in a multiline comment */ + _pushed=FALSE; /* no token pushed back into lex */ + _lexnewline=FALSE; +} + +char *sc_tokens[] = { + "*=", "/=", "%=", "+=", "-=", "<<=", ">>>=", ">>=", "&=", "^=", "|=", + "||", "&&", "==", "!=", "<=", ">=", "<<", ">>>", ">>", "++", "--", + "...", "..", + "assert", "break", "case", "char", "const", "continue", "default", + "defined", "do", "else", "enum", "exit", "for", "forward", "goto", + "if", "native", "new", "operator", "public", "return", "sizeof", + "sleep", "static", "stock", "switch", "tagof", "while", + "#assert", "#define", "#else", "#emit", "#endif", "#endinput", + "#endscript", "#file", "#if", "#include", "#line", "#pragma", "#undef", + ";", ";", "-integer value-", "-rational value-", "-identifier-", + "-label-", "-string-" + }; + +SC_FUNC int lex(cell *lexvalue,char **lexsym) +{ + int i,toolong,newline,rawstring; + char **tokptr; + + if (_pushed) { + _pushed=FALSE; /* reset "_pushed" flag */ + *lexvalue=_lexval; + *lexsym=_lexstr; + return _lextok; + } /* if */ + + _lextok=0; /* preset all values */ + _lexval=0; + _lexstr[0]='\0'; + *lexvalue=_lexval; + *lexsym=_lexstr; + _lexnewline=FALSE; + if (!freading) + return 0; + + newline= (lptr==pline); /* does lptr point to start of line buffer */ + while (*lptr<=' ') { /* delete leading white space */ + if (*lptr=='\0') { + preprocess(); /* preprocess resets "lptr" */ + if (!freading) + return 0; + if (lptr==term_expr) /* special sequence to terminate a pending expression */ + return (_lextok=tENDEXPR); + _lexnewline=TRUE; /* set this after preprocess(), because + * preprocess() calls lex() recursively */ + newline=TRUE; + } else { + lptr+=1; + } /* if */ + } /* while */ + if (newline) { + stmtindent=0; + for (i=0; i<(int)(lptr-pline); i++) + if (pline[i]=='\t' && sc_tabsize>0) + stmtindent += (int)(sc_tabsize - (stmtindent+sc_tabsize) % sc_tabsize); + else + stmtindent++; + } /* if */ + + i=tFIRST; + tokptr=sc_tokens; + while (i<=tMIDDLE) { /* match multi-character operators */ + if (match(*tokptr,FALSE)) { + _lextok=i; + return _lextok; + } /* if */ + i+=1; + tokptr+=1; + } /* while */ + while (i<=tLAST) { /* match reserved words and compiler directives */ + if (match(*tokptr,TRUE)) { + _lextok=i; + errorset(sRESET); /* reset error flag (clear the "panic mode")*/ + return _lextok; + } /* if */ + i+=1; + tokptr+=1; + } /* while */ + + if ((i=number(&_lexval,lptr))!=0) { /* number */ + _lextok=tNUMBER; + *lexvalue=_lexval; + lptr+=i; + } else if ((i=ftoi(&_lexval,lptr))!=0) { + _lextok=tRATIONAL; + *lexvalue=_lexval; + lptr+=i; + } else if (alpha(*lptr)) { /* symbol or label */ + /* Note: only sNAMEMAX characters are significant. The compiler + * generates a warning if a symbol exceeds this length. + */ + _lextok=tSYMBOL; + i=0; + toolong=0; + while (alphanum(*lptr)){ + _lexstr[i]=*lptr; + lptr+=1; + if (i=litmax) { + cell *p; + + litmax+=sDEF_LITMAX; + p=(cell *)realloc(litq,litmax*sizeof(cell)); + if (p==NULL) + error(102,"literal table"); /* literal table overflow (fatal error) */ + litq=p; + } /* if */ + assert(litidx='0' && *cptr<='9') /* decimal! */ + c=c*10 + *cptr++ - '0'; + if (*cptr==';') + cptr++; /* swallow a trailing ';' */ + } else { + error(27); /* invalid character constant */ + } /* if */ + } /* switch */ + } /* if */ + } /* if */ + *lptr=(char *)cptr; + assert(c>=0 && c<256); + return c; +} + +/* alpha + * + * Test if character "c" is alphabetic ("a".."z"), an underscore ("_") + * or an "at" sign ("@"). The "@" is an extension to standard C. + */ +static int alpha(char c) +{ + return (isalpha(c) || c=='_' || c==PUBLIC_CHAR); +} + +/* alphanum + * + * Test if character "c" is alphanumeric ("a".."z", "0".."9", "_" or "@") + */ +SC_FUNC int alphanum(char c) +{ + return (alpha(c) || isdigit(c)); +} + +/* ishex + * + * Test if character "c" is a hexadecimal digit ("0".."9" or "a".."f"). + */ +SC_FUNC int ishex(char c) +{ + return (c>='0' && c<='9') || (c>='a' && c<='f') || (c>='A' && c<='F'); +} + +/* The local variable table must be searched backwards, so that the deepest + * nesting of local variables is searched first. The simplest way to do + * this is to insert all new items at the head of the list. + * In the global list, the symbols are kept in sorted order, so that the + * public functions are written in sorted order. + */ +static symbol *add_symbol(symbol *root,symbol *entry,int sort) +{ + symbol *newsym; + + if (sort) + while (root->next!=NULL && strcmp(entry->name,root->next->name)>0) + root=root->next; + + if ((newsym=(symbol *)malloc(sizeof(symbol)))==NULL) { + error(103); + return NULL; + } /* if */ + memcpy(newsym,entry,sizeof(symbol)); + newsym->next=root->next; + root->next=newsym; + return newsym; +} + +static void free_symbol(symbol *sym) +{ + arginfo *arg; + + /* free all sub-symbol allocated memory blocks, depending on the + * kind of the symbol + */ + assert(sym!=NULL); + if (sym->ident==iFUNCTN) { + /* run through the argument list; "default array" arguments + * must be freed explicitly; the tag list must also be freed */ + assert(sym->dim.arglist!=NULL); + for (arg=sym->dim.arglist; arg->ident!=0; arg++) { + if (arg->ident==iREFARRAY && arg->hasdefault) + free(arg->defvalue.array.data); + else if (arg->ident==iVARIABLE + && ((arg->hasdefault & uSIZEOF)!=0 || (arg->hasdefault & uTAGOF)!=0)) + free(arg->defvalue.size.symname); + assert(arg->tags!=NULL); + free(arg->tags); + } /* for */ + free(sym->dim.arglist); + } /* if */ + assert(sym->refer!=NULL); + free(sym->refer); + free(sym); +} + +SC_FUNC void delete_symbol(symbol *root,symbol *sym) +{ + /* find the symbol and its predecessor + * (this function assumes that you will never delete a symbol that is not + * in the table pointed at by "root") + */ + assert(root!=sym); + while (root->next!=sym) { + root=root->next; + assert(root!=NULL); + } /* while */ + + /* unlink it, then free it */ + root->next=sym->next; + free_symbol(sym); +} + +SC_FUNC void delete_symbols(symbol *root,int level,int delete_labels,int delete_functions) +{ + symbol *sym; + + /* erase only the symbols with a deeper nesting level than the + * specified nesting level */ + while (root->next!=NULL) { + sym=root->next; + if (sym->compoundident!=iLABEL) + && (delete_functions || sym->ident!=iFUNCTN || (sym->usage & uNATIVE)!=0) + && (delete_functions || sym->ident!=iCONSTEXPR || (sym->usage & uPREDEF)==0) + && (delete_functions || (sym->ident!=iVARIABLE && sym->ident!=iARRAY))) + { + root->next=sym->next; + free_symbol(sym); + } else { + /* if the function was prototyped, but not implemented in this source, + * mark it as such, so that its use can be flagged + */ + if (sym->ident==iFUNCTN && (sym->usage & uDEFINE)==0) + sym->usage |= uMISSING; + if (sym->ident==iFUNCTN || sym->ident==iVARIABLE || sym->ident==iARRAY) + sym->usage &= ~uDEFINE; /* clear "defined" flag */ + /* for user defined operators, also remove the "prototyped" flag, as + * user-defined operators *must* be declared before use + */ + if (sym->ident==iFUNCTN && !isalpha(*sym->name) && *sym->name!='_' && *sym->name!=PUBLIC_CHAR) + sym->usage &= ~uPROTOTYPED; + root=sym; /* skip the symbol */ + } /* if */ + } /* if */ +} + +/* The purpose of the hash is to reduce the frequency of a "name" + * comparison (which is costly). There is little interest in avoiding + * clusters in similar names, which is why this function is plain simple. + */ +SC_FUNC uint32_t namehash(char *name) +{ + unsigned char *ptr=(unsigned char *)name; + int len=strlen(name); + if (len==0) + return 0L; + assert(len<256); + return (len<<24Lu) + (ptr[0]<<16Lu) + (ptr[len-1]<<8Lu) + (ptr[len>>1Lu]); +} + +static symbol *find_symbol(symbol *root,char *name,int fnumber) +{ + symbol *ptr=root->next; + unsigned long hash=namehash(name); + while (ptr!=NULL) { + if (hash==ptr->hash && strcmp(name,ptr->name)==0 && ptr->parent==NULL + && (ptr->fnumber<0 || ptr->fnumber==fnumber)) + return ptr; + ptr=ptr->next; + } /* while */ + return NULL; +} + +static symbol *find_symbol_child(symbol *root,symbol *sym) +{ + symbol *ptr=root->next; + while (ptr!=NULL) { + if (ptr->parent==sym) + return ptr; + ptr=ptr->next; + } /* while */ + return NULL; +} + +/* Adds "bywhom" to the list of referrers of "entry". Typically, + * bywhom will be the function that uses a variable or that calls + * the function. + */ +SC_FUNC int refer_symbol(symbol *entry,symbol *bywhom) +{ + int count; + + assert(bywhom!=NULL); /* it makes no sense to add a "void" referrer */ + assert(entry!=NULL); + assert(entry->refer!=NULL); + + /* see if it is already there */ + for (count=0; countnumrefers && entry->refer[count]!=bywhom; count++) + /* nothing */; + if (countnumrefers) { + assert(entry->refer[count]==bywhom); + return TRUE; + } /* if */ + + /* see if there is an empty spot in the referrer list */ + for (count=0; countnumrefers && entry->refer[count]!=NULL; count++) + /* nothing */; + assert(count <= entry->numrefers); + if (count==entry->numrefers) { + symbol **refer; + int newsize=2*entry->numrefers; + assert(newsize>0); + /* grow the referrer list */ + refer=(symbol**)realloc(entry->refer,newsize*sizeof(symbol*)); + if (refer==NULL) + return FALSE; /* insufficient memory */ + /* initialize the new entries */ + entry->refer=refer; + for (count=entry->numrefers; countrefer[count]=NULL; + count=entry->numrefers; /* first empty spot */ + entry->numrefers=newsize; + } /* if */ + + /* add the referrer */ + assert(entry->refer[count]==NULL); + entry->refer[count]=bywhom; + return TRUE; +} + +SC_FUNC void markusage(symbol *sym,int usage) +{ + sym->usage |= (char)usage; + /* check if (global) reference must be added to the symbol */ + if ((usage & (uREAD | uWRITTEN))!=0) { + /* only do this for global symbols */ + if (sym->vclass==sGLOBAL) { + /* "curfunc" should always be valid, since statements may not occurs + * outside functions; in the case of syntax errors, however, the + * compiler may arrive through this function + */ + if (curfunc!=NULL) + refer_symbol(sym,curfunc); + } /* if */ + } /* if */ +} + + +/* findglb + * + * Returns a pointer to the global symbol (if found) or NULL (if not found) + */ +SC_FUNC symbol *findglb(char *name) +{ + return find_symbol(&glbtab,name,fcurrent); +} + +/* findloc + * + * Returns a pointer to the local symbol (if found) or NULL (if not found). + * See add_symbol() how the deepest nesting level is searched first. + */ +SC_FUNC symbol *findloc(char *name) +{ + return find_symbol(&loctab,name,-1); +} + +SC_FUNC symbol *findconst(char *name) +{ + symbol *sym; + + sym=find_symbol(&loctab,name,-1); /* try local symbols first */ + if (sym==NULL || sym->ident!=iCONSTEXPR) /* not found, or not a constant */ + sym=find_symbol(&glbtab,name,fcurrent); + if (sym==NULL || sym->ident!=iCONSTEXPR) + return NULL; + assert(sym->parent==NULL); /* constants have no hierarchy */ + return sym; +} + +SC_FUNC symbol *finddepend(symbol *parent) +{ + symbol *sym; + + sym=find_symbol_child(&loctab,parent); /* try local symbols first */ + if (sym==NULL) /* not found */ + sym=find_symbol_child(&glbtab,parent); + return sym; +} + +/* addsym + * + * Adds a symbol to the symbol table (either global or local variables, + * or global and local constants). + */ +SC_FUNC symbol *addsym(char *name,cell addr,int ident,int vclass,int tag,int usage) +{ + symbol entry, **refer; + + /* global variables/constants/functions may only be defined once */ + assert(!(ident==iFUNCTN || ident==iCONSTEXPR) || vclass!=sGLOBAL || findglb(name)==NULL); + /* labels may only be defined once */ + assert(ident!=iLABEL || findloc(name)==NULL); + + /* create an empty referrer list */ + if ((refer=(symbol**)malloc(sizeof(symbol*)))==NULL) { + error(103); /* insufficient memory */ + return NULL; + } /* if */ + *refer=NULL; + + /* first fill in the entry */ + strcpy(entry.name,name); + entry.hash=namehash(name); + entry.addr=addr; + entry.vclass=(char)vclass; + entry.ident=(char)ident; + entry.tag=tag; + entry.usage=(char)usage; + entry.compound=0; /* may be overridden later */ + entry.fnumber=-1; /* assume global visibility (ignored for local symbols) */ + entry.numrefers=1; + entry.refer=refer; + entry.parent=NULL; + + /* then insert it in the list */ + if (vclass==sGLOBAL) + return add_symbol(&glbtab,&entry,TRUE); + else + return add_symbol(&loctab,&entry,FALSE); +} + +SC_FUNC symbol *addvariable(char *name,cell addr,int ident,int vclass,int tag, + int dim[],int numdim,int idxtag[]) +{ + symbol *sym,*parent,*top; + int level; + + /* global variables may only be defined once */ + assert(vclass!=sGLOBAL || (sym=findglb(name))==NULL || (sym->usage & uDEFINE)==0); + + if (ident==iARRAY || ident==iREFARRAY) { + parent=NULL; + sym=NULL; /* to avoid a compiler warning */ + for (level=0; leveldim.array.length=dim[level]; + top->dim.array.level=(short)(numdim-level-1); + top->x.idxtag=idxtag[level]; + top->parent=parent; + parent=top; + if (level==0) + sym=top; + } /* for */ + } else { + sym=addsym(name,addr,ident,vclass,tag,uDEFINE); + } /* if */ + return sym; +} + +/* getlabel + * + * Return next available internal label number. + */ +SC_FUNC int getlabel(void) +{ + return labnum++; +} + +/* itoh + * + * Converts a number to a hexadecimal string and returns a pointer to that + * string. + */ +SC_FUNC char *itoh(ucell val) +{ +static char itohstr[15]; /* hex number is 10 characters long at most */ + char *ptr; + int i,nibble[8]; /* a 32-bit hexadecimal cell has 8 nibbles */ + int max; + + #if defined(BIT16) + max=4; + #else + max=8; + #endif + ptr=itohstr; + for (i=0; i>=4; + } /* endfor */ + i=max-1; + while (nibble[i]==0 && i>0) /* search for highest non-zero nibble */ + i-=1; + while (i>=0){ + if (nibble[i]>=10) + *ptr++=(char)('a'+(nibble[i]-10)); + else + *ptr++=(char)('0'+nibble[i]); + i-=1; + } /* while */ + *ptr='\0'; /* and a zero-terminator */ + return itohstr; +} + diff --git a/legacy/embryo/src/bin/embryo_cc_sc3.c b/legacy/embryo/src/bin/embryo_cc_sc3.c new file mode 100644 index 0000000000..cbf0d64830 --- /dev/null +++ b/legacy/embryo/src/bin/embryo_cc_sc3.c @@ -0,0 +1,2063 @@ +/* Small compiler - Recursive descend expresion parser + * + * Copyright (c) ITB CompuPhase, 1997-2003 + * + * This software is provided "as-is", without any express or implied warranty. + * In no event will the authors be held liable for any damages arising from + * the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software in + * a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + * Version: $Id$ + */ +#include +#include +#include /* for _MAX_PATH */ +#include +#if defined FORTIFY + #include "fortify.h" +#endif +#include "embryo_cc_sc.h" + +static int skim(int *opstr,void (*testfunc)(int),int dropval,int endval, + int (*hier)(value*),value *lval); +static void dropout(int lvalue,void (*testfunc)(int val),int exit1,value *lval); +static int plnge(int *opstr,int opoff,int (*hier)(value *lval),value *lval, + char *forcetag,int chkbitwise); +static int plnge1(int (*hier)(value *lval),value *lval); +static void plnge2(void (*oper)(void), + int (*hier)(value *lval), + value *lval1,value *lval2); +static cell calc(cell left,void (*oper)(),cell right,char *boolresult); +static int hier13(value *lval); +static int hier12(value *lval); +static int hier11(value *lval); +static int hier10(value *lval); +static int hier9(value *lval); +static int hier8(value *lval); +static int hier7(value *lval); +static int hier6(value *lval); +static int hier5(value *lval); +static int hier4(value *lval); +static int hier3(value *lval); +static int hier2(value *lval); +static int hier1(value *lval1); +static int primary(value *lval); +static void clear_value(value *lval); +static void callfunction(symbol *sym); +static int dbltest(void (*oper)(),value *lval1,value *lval2); +static int commutative(void (*oper)()); +static int constant(value *lval); + +static char lastsymbol[sNAMEMAX+1]; /* name of last function/variable */ +static int bitwise_opercount; /* count of bitwise operators in an expression */ + +/* Function addresses of binary operators for signed operations */ +static void (*op1[17])(void) = { + os_mult,os_div,os_mod, /* hier3, index 0 */ + ob_add,ob_sub, /* hier4, index 3 */ + ob_sal,os_sar,ou_sar, /* hier5, index 5 */ + ob_and, /* hier6, index 8 */ + ob_xor, /* hier7, index 9 */ + ob_or, /* hier8, index 10 */ + os_le,os_ge,os_lt,os_gt, /* hier9, index 11 */ + ob_eq,ob_ne, /* hier10, index 15 */ +}; +/* These two functions are defined because the functions inc() and dec() in + * SC4.C have a different prototype than the other code generation functions. + * The arrays for user-defined functions use the function pointers for + * identifying what kind of operation is requested; these functions must all + * have the same prototype. As inc() and dec() are special cases already, it + * is simplest to add two "do-nothing" functions. + */ +static void user_inc(void) {} +static void user_dec(void) {} + +/* + * Searches for a binary operator a list of operators. The list is stored in + * the array "list". The last entry in the list should be set to 0. + * + * The index of an operator in "list" (if found) is returned in "opidx". If + * no operator is found, nextop() returns 0. + */ +static int nextop(int *opidx,int *list) +{ + *opidx=0; + while (*list){ + if (matchtoken(*list)){ + return TRUE; /* found! */ + } else { + list+=1; + *opidx+=1; + } /* if */ + } /* while */ + return FALSE; /* entire list scanned, nothing found */ +} + +SC_FUNC int check_userop(void (*oper)(void),int tag1,int tag2,int numparam, + value *lval,int *resulttag) +{ +static char *binoperstr[] = { "*", "/", "%", "+", "-", "", "", "", + "", "", "", "<=", ">=", "<", ">", "==", "!=" }; +static int binoper_savepri[] = { FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, + FALSE, FALSE, FALSE, FALSE, FALSE, + TRUE, TRUE, TRUE, TRUE, FALSE, FALSE }; +static char *unoperstr[] = { "!", "-", "++", "--" }; +static void (*unopers[])(void) = { lneg, neg, user_inc, user_dec }; + char opername[4] = "", symbolname[sNAMEMAX+1]; + int i,swapparams,savepri,savealt; + int paramspassed; + symbol *sym; + + /* since user-defined operators on untagged operands are forbidden, we have + * a quick exit. + */ + assert(numparam==1 || numparam==2); + if (tag1==0 && (numparam==1 || tag2==0)) + return FALSE; + + savepri=savealt=FALSE; + /* find the name with the operator */ + if (numparam==2) { + if (oper==NULL) { + /* assignment operator: a special case */ + strcpy(opername,"="); + if (lval!=NULL && (lval->ident==iARRAYCELL || lval->ident==iARRAYCHAR)) + savealt=TRUE; + } else { + assert( (sizeof binoperstr / sizeof binoperstr[0]) == (sizeof op1 / sizeof op1[0]) ); + for (i=0; iusage & uDEFINE)==0*/) { /* ??? should not check uDEFINE; first pass clears these bits */ + /* check for commutative operators */ + if (tag1==tag2 || oper==NULL || !commutative(oper)) + return FALSE; /* not commutative, cannot swap operands */ + /* if arrived here, the operator is commutative and the tags are different, + * swap tags and try again + */ + assert(numparam==2); /* commutative operator must be a binary operator */ + operator_symname(symbolname,opername,tag2,tag1,numparam,tag1); + swapparams=TRUE; + sym=findglb(symbolname); + if (sym==NULL /*|| (sym->usage & uDEFINE)==0*/) + return FALSE; + } /* if */ + + /* check existance and the proper declaration of this function */ + if ((sym->usage & uMISSING)!=0 || (sym->usage & uPROTOTYPED)==0) { + char symname[2*sNAMEMAX+16]; /* allow space for user defined operators */ + funcdisplayname(symname,sym->name); + if ((sym->usage & uMISSING)!=0) + error(4,symname); /* function not defined */ + if ((sym->usage & uPROTOTYPED)==0) + error(71,symname); /* operator must be declared before use */ + } /* if */ + + /* we don't want to use the redefined operator in the function that + * redefines the operator itself, otherwise the snippet below gives + * an unexpected recursion: + * fixed:operator+(fixed:a, fixed:b) + * return a + b + */ + if (sym==curfunc) + return FALSE; + + /* for increment and decrement operators, the symbol must first be loaded + * (and stored back afterwards) + */ + if (oper==user_inc || oper==user_dec) { + assert(!savepri); + assert(lval!=NULL); + if (lval->ident==iARRAYCELL || lval->ident==iARRAYCHAR) + push1(); /* save current address in PRI */ + rvalue(lval); /* get the symbol's value in PRI */ + } /* if */ + + assert(!savepri || !savealt); /* either one MAY be set, but not both */ + if (savepri) { + /* the chained comparison operators require that the ALT register is + * unmodified, so we save it here; actually, we save PRI because the normal + * instruction sequence (without user operator) swaps PRI and ALT + */ + push1(); /* right-hand operand is in PRI */ + } else if (savealt) { + /* for the assignment operator, ALT may contain an address at which the + * result must be stored; this address must be preserved accross the + * call + */ + assert(lval!=NULL); /* this was checked earlier */ + assert(lval->ident==iARRAYCELL || lval->ident==iARRAYCHAR); /* checked earlier */ + push2(); + } /* if */ + + /* push parameters, call the function */ + paramspassed= (oper==NULL) ? 1 : numparam; + switch (paramspassed) { + case 1: + push1(); + break; + case 2: + /* note that 1) a function expects that the parameters are pushed + * in reversed order, and 2) the left operand is in the secondary register + * and the right operand is in the primary register */ + if (swapparams) { + push2(); + push1(); + } else { + push1(); + push2(); + } /* if */ + break; + default: + assert(0); + } /* switch */ + endexpr(FALSE); /* mark the end of a sub-expression */ + pushval((cell)paramspassed*sizeof(cell)); + assert(sym->ident==iFUNCTN); + ffcall(sym,paramspassed); + if (sc_status!=statSKIP) + markusage(sym,uREAD); /* do not mark as "used" when this call itself is skipped */ + if (sym->x.lib!=NULL) + sym->x.lib->value += 1; /* increment "usage count" of the library */ + sideeffect=TRUE; /* assume functions carry out a side-effect */ + assert(resulttag!=NULL); + *resulttag=sym->tag; /* save tag of the called function */ + + if (savepri || savealt) + pop2(); /* restore the saved PRI/ALT that into ALT */ + if (oper==user_inc || oper==user_dec) { + assert(lval!=NULL); + if (lval->ident==iARRAYCELL || lval->ident==iARRAYCHAR) + pop2(); /* restore address (in ALT) */ + store(lval); /* store PRI in the symbol */ + moveto1(); /* make sure PRI is restored on exit */ + } /* if */ + return TRUE; +} + +SC_FUNC int matchtag(int formaltag,int actualtag,int allowcoerce) +{ + if (formaltag!=actualtag) { + /* if the formal tag is zero and the actual tag is not "fixed", the actual + * tag is "coerced" to zero + */ + if (!allowcoerce || formaltag!=0 || (actualtag & FIXEDTAG)!=0) + return FALSE; + } /* if */ + return TRUE; +} + +/* + * The AMX pseudo-processor has no direct support for logical (boolean) + * operations. These have to be done via comparing and jumping. Since we are + * already jumping through the code, we might as well implement an "early + * drop-out" evaluation (also called "short-circuit"). This conforms to + * standard C: + * + * expr1 || expr2 expr2 will only be evaluated if expr1 is false. + * expr1 && expr2 expr2 will only be evaluated if expr1 is true. + * + * expr1 || expr2 && expr3 expr2 will only be evaluated if expr1 is false + * and expr3 will only be evaluated if expr1 is + * false and expr2 is true. + * + * Code generation for the last example proceeds thus: + * + * evaluate expr1 + * operator || found + * jump to "l1" if result of expr1 not equal to 0 + * evaluate expr2 + * -> operator && found; skip to higher level in hierarchy diagram + * jump to "l2" if result of expr2 equal to 0 + * evaluate expr3 + * jump to "l2" if result of expr3 equal to 0 + * set expression result to 1 (true) + * jump to "l3" + * l2: set expression result to 0 (false) + * l3: + * <- drop back to previous hierarchy level + * jump to "l1" if result of expr2 && expr3 not equal to 0 + * set expression result to 0 (false) + * jump to "l4" + * l1: set expression result to 1 (true) + * l4: + * + */ + +/* Skim over terms adjoining || and && operators + * dropval The value of the expression after "dropping out". An "or" drops + * out when the left hand is TRUE, so dropval must be 1 on "or" + * expressions. + * endval The value of the expression when no expression drops out. In an + * "or" expression, this happens when both the left hand and the + * right hand are FALSE, so endval must be 0 for "or" expressions. + */ +static int skim(int *opstr,void (*testfunc)(int),int dropval,int endval, + int (*hier)(value*),value *lval) +{ + int lvalue,hits,droplab,endlab,opidx; + int allconst; + cell constval; + int index; + cell cidx; + + stgget(&index,&cidx); /* mark position in code generator */ + hits=FALSE; /* no logical operators "hit" yet */ + allconst=TRUE; /* assume all values "const" */ + constval=0; + droplab=0; /* to avoid a compiler warning */ + for ( ;; ) { + lvalue=plnge1(hier,lval); /* evaluate left expression */ + + allconst= allconst && (lval->ident==iCONSTEXPR); + if (allconst) { + if (hits) { + /* one operator was already found */ + if (testfunc==jmp_ne0) + lval->constval= lval->constval || constval; + else + lval->constval= lval->constval && constval; + } /* if */ + constval=lval->constval; /* save result accumulated so far */ + } /* if */ + + if (nextop(&opidx,opstr)) { + if (!hits) { + /* this is the first operator in the list */ + hits=TRUE; + droplab=getlabel(); + } /* if */ + dropout(lvalue,testfunc,droplab,lval); + } else if (hits) { /* no (more) identical operators */ + dropout(lvalue,testfunc,droplab,lval); /* found at least one operator! */ + const1(endval); + jumplabel(endlab=getlabel()); + setlabel(droplab); + const1(dropval); + setlabel(endlab); + lval->sym=NULL; + lval->tag=0; + if (allconst) { + lval->ident=iCONSTEXPR; + lval->constval=constval; + stgdel(index,cidx); /* scratch generated code and calculate */ + } else { + lval->ident=iEXPRESSION; + lval->constval=0; + } /* if */ + return FALSE; + } else { + return lvalue; /* none of the operators in "opstr" were found */ + } /* if */ + + } /* while */ +} + +/* + * Reads into the primary register the variable pointed to by lval if + * plunging through the hierarchy levels detected an lvalue. Otherwise + * if a constant was detected, it is loaded. If there is no constant and + * no lvalue, the primary register must already contain the expression + * result. + * + * After that, the compare routines "jmp_ne0" or "jmp_eq0" are called, which + * compare the primary register against 0, and jump to the "early drop-out" + * label "exit1" if the condition is true. + */ +static void dropout(int lvalue,void (*testfunc)(int val),int exit1,value *lval) +{ + if (lvalue) + rvalue(lval); + else if (lval->ident==iCONSTEXPR) + const1(lval->constval); + (*testfunc)(exit1); +} + +static void checkfunction(value *lval) +{ + symbol *sym=lval->sym; + + if (sym==NULL || (sym->ident!=iFUNCTN && sym->ident!=iREFFUNC)) + return; /* no known symbol, or not a function result */ + + if ((sym->usage & uDEFINE)!=0) { + /* function is defined, can now check the return value (but make an + * exception for directly recursive functions) + */ + if (sym!=curfunc && (sym->usage & uRETVALUE)==0) { + char symname[2*sNAMEMAX+16]; /* allow space for user defined operators */ + funcdisplayname(symname,sym->name); + error(209,symname); /* function should return a value */ + } /* if */ + } else { + /* function not yet defined, set */ + sym->usage|=uRETVALUE; /* make sure that a future implementation of + * the function uses "return " */ + } /* if */ +} + +/* + * Plunge to a lower level + */ +static int plnge(int *opstr,int opoff,int (*hier)(value *lval),value *lval, + char *forcetag,int chkbitwise) +{ + int lvalue,opidx; + int count; + value lval2 = {0}; + + lvalue=plnge1(hier,lval); + if (nextop(&opidx,opstr)==0) + return lvalue; /* no operator in "opstr" found */ + if (lvalue) + rvalue(lval); + count=0; + do { + if (chkbitwise && count++>0 && bitwise_opercount!=0) + error(212); + opidx+=opoff; /* add offset to index returned by nextop() */ + plnge2(op1[opidx],hier,lval,&lval2); + if (op1[opidx]==ob_and || op1[opidx]==ob_or) + bitwise_opercount++; + if (forcetag!=NULL) + lval->tag=sc_addtag(forcetag); + } while (nextop(&opidx,opstr)); /* do */ + return FALSE; /* result of expression is not an lvalue */ +} + +/* plnge_rel + * + * Binary plunge to lower level; this is very simular to plnge, but + * it has special code generation sequences for chained operations. + */ +static int plnge_rel(int *opstr,int opoff,int (*hier)(value *lval),value *lval) +{ + int lvalue,opidx; + value lval2 = {0}; /* intialize, to avoid a compiler warning */ + int count; + + /* this function should only be called for relational operators */ + assert(op1[opoff]==os_le); + lvalue=plnge1(hier,lval); + if (nextop(&opidx,opstr)==0) + return lvalue; /* no operator in "opstr" found */ + if (lvalue) + rvalue(lval); + count=0; + lval->boolresult=TRUE; + do { + /* same check as in plnge(), but "chkbitwise" is always TRUE */ + if (count>0 && bitwise_opercount!=0) + error(212); + if (count>0) { + relop_prefix(); + *lval=lval2; /* copy right hand expression of the previous iteration */ + } /* if */ + opidx+=opoff; + plnge2(op1[opidx],hier,lval,&lval2); + if (count++>0) + relop_suffix(); + } while (nextop(&opidx,opstr)); /* enddo */ + lval->constval=lval->boolresult; + lval->tag=sc_addtag("bool"); /* force tag to be "bool" */ + return FALSE; /* result of expression is not an lvalue */ +} + +/* plnge1 + * + * Unary plunge to lower level + * Called by: skim(), plnge(), plnge2(), plnge_rel(), hier14() and hier13() + */ +static int plnge1(int (*hier)(value *lval),value *lval) +{ + int lvalue,index; + cell cidx; + + stgget(&index,&cidx); /* mark position in code generator */ + lvalue=(*hier)(lval); + if (lval->ident==iCONSTEXPR) + stgdel(index,cidx); /* load constant later */ + return lvalue; +} + +/* plnge2 + * + * Binary plunge to lower level + * Called by: plnge(), plnge_rel(), hier14() and hier1() + */ +static void plnge2(void (*oper)(void), + int (*hier)(value *lval), + value *lval1,value *lval2) +{ + int index; + cell cidx; + + stgget(&index,&cidx); /* mark position in code generator */ + if (lval1->ident==iCONSTEXPR) { /* constant on left side; it is not yet loaded */ + if (plnge1(hier,lval2)) + rvalue(lval2); /* load lvalue now */ + else if (lval2->ident==iCONSTEXPR) + const1(lval2->constval<constval<ident==iCONSTEXPR) { /* constant on right side */ + if (commutative(oper)) { /* test for commutative operators */ + value lvaltmp = {0}; + stgdel(index,cidx); /* scratch push1() and constant fetch (then + * fetch the constant again */ + const2(lval2->constval<constval<ident==iARRAY || lval1->ident==iREFARRAY) { + char *ptr=(lval1->sym!=NULL) ? lval1->sym->name : "-unknown-"; + error(33,ptr); /* array must be indexed */ + } else if (lval2->ident==iARRAY || lval2->ident==iREFARRAY) { + char *ptr=(lval2->sym!=NULL) ? lval2->sym->name : "-unknown-"; + error(33,ptr); /* array must be indexed */ + } /* if */ + /* ??? ^^^ should do same kind of error checking with functions */ + + /* check whether an "operator" function is defined for the tag names + * (a constant expression cannot be optimized in that case) + */ + if (check_userop(oper,lval1->tag,lval2->tag,2,NULL,&lval1->tag)) { + lval1->ident=iEXPRESSION; + lval1->constval=0; + } else if (lval1->ident==iCONSTEXPR && lval2->ident==iCONSTEXPR) { + /* only constant expression if both constant */ + stgdel(index,cidx); /* scratch generated code and calculate */ + if (!matchtag(lval1->tag,lval2->tag,FALSE)) + error(213); /* tagname mismatch */ + lval1->constval=calc(lval1->constval,oper,lval2->constval,&lval1->boolresult); + } else { + if (!matchtag(lval1->tag,lval2->tag,FALSE)) + error(213); /* tagname mismatch */ + (*oper)(); /* do the (signed) operation */ + lval1->ident=iEXPRESSION; + } /* if */ + } /* if */ +} + +static cell truemodulus(cell a,cell b) +{ + return (a % b + b) % b; +} + +static cell calc(cell left,void (*oper)(),cell right,char *boolresult) +{ + if (oper==ob_or) + return (left | right); + else if (oper==ob_xor) + return (left ^ right); + else if (oper==ob_and) + return (left & right); + else if (oper==ob_eq) + return (left == right); + else if (oper==ob_ne) + return (left != right); + else if (oper==os_le) + return *boolresult &= (char)(left <= right), right; + else if (oper==os_ge) + return *boolresult &= (char)(left >= right), right; + else if (oper==os_lt) + return *boolresult &= (char)(left < right), right; + else if (oper==os_gt) + return *boolresult &= (char)(left > right), right; + else if (oper==os_sar) + return (left >> (int)right); + else if (oper==ou_sar) + return ((ucell)left >> (ucell)right); + else if (oper==ob_sal) + return ((ucell)left << (int)right); + else if (oper==ob_add) + return (left + right); + else if (oper==ob_sub) + return (left - right); + else if (oper==os_mult) + return (left * right); + else if (oper==os_div) + return (left - truemodulus(left,right)) / right; + else if (oper==os_mod) + return truemodulus(left,right); + else + error(29); /* invalid expression, assumed 0 (this should never occur) */ + return 0; +} + +SC_FUNC int expression(int *constant,cell *val,int *tag,int chkfuncresult) +{ + value lval = {0}; + + if (hier14(&lval)) + rvalue(&lval); + if (lval.ident==iCONSTEXPR) { /* constant expression */ + *constant=TRUE; + *val=lval.constval; + } else { + *constant=FALSE; + } /* if */ + if (tag!=NULL) + *tag=lval.tag; + if (chkfuncresult) + checkfunction(&lval); + return lval.ident; +} + +static cell array_totalsize(symbol *sym) +{ + cell length; + + assert(sym!=NULL); + assert(sym->ident==iARRAY || sym->ident==iREFARRAY); + length=sym->dim.array.length; + if (sym->dim.array.level > 0) { + cell sublength=array_totalsize(finddepend(sym)); + if (sublength>0) + length=length+length*sublength; + else + length=0; + } /* if */ + return length; +} + +static cell array_levelsize(symbol *sym,int level) +{ + assert(sym!=NULL); + assert(sym->ident==iARRAY || sym->ident==iREFARRAY); + assert(level <= sym->dim.array.level); + while (level-- > 0) { + sym=finddepend(sym); + assert(sym!=NULL); + } /* if */ + return sym->dim.array.length; +} + +/* hier14 + * + * Lowest hierarchy level (except for the , operator). + * + * Global references: intest (reffered to only) + */ +SC_FUNC int hier14(value *lval1) +{ + int lvalue; + value lval2 = {0},lval3 = {0}; + void (*oper)(void); + int tok,level,i; + cell val; + char *st; + int bwcount; + cell arrayidx1[sDIMEN_MAX],arrayidx2[sDIMEN_MAX]; /* last used array indices */ + cell *org_arrayidx; + + bwcount=bitwise_opercount; + bitwise_opercount=0; + for (i=0; iarrayidx; /* save current pointer, to reset later */ + if (lval1->arrayidx==NULL) + lval1->arrayidx=arrayidx1; + lvalue=plnge1(hier13,lval1); + if (lval1->ident!=iARRAYCELL && lval1->ident!=iARRAYCHAR) + lval1->arrayidx=NULL; + if (lval1->ident==iCONSTEXPR) /* load constant here */ + const1(lval1->constval); + tok=lex(&val,&st); + switch (tok) { + case taOR: + oper=ob_or; + break; + case taXOR: + oper=ob_xor; + break; + case taAND: + oper=ob_and; + break; + case taADD: + oper=ob_add; + break; + case taSUB: + oper=ob_sub; + break; + case taMULT: + oper=os_mult; + break; + case taDIV: + oper=os_div; + break; + case taMOD: + oper=os_mod; + break; + case taSHRU: + oper=ou_sar; + break; + case taSHR: + oper=os_sar; + break; + case taSHL: + oper=ob_sal; + break; + case '=': /* simple assignment */ + oper=NULL; + if (intest) + error(211); /* possibly unintended assignment */ + break; + default: + lexpush(); + bitwise_opercount=bwcount; + lval1->arrayidx=org_arrayidx; /* restore array index pointer */ + return lvalue; + } /* switch */ + + /* if we get here, it was an assignment; first check a few special cases + * and then the general */ + if (lval1->ident==iARRAYCHAR) { + /* special case, assignment to packed character in a cell is permitted */ + lvalue=TRUE; + } else if (lval1->ident==iARRAY || lval1->ident==iREFARRAY) { + /* array assignment is permitted too (with restrictions) */ + if (oper) + return error(23); /* array assignment must be simple assigment */ + assert(lval1->sym!=NULL); + if (array_totalsize(lval1->sym)==0) + return error(46,lval1->sym->name); /* unknown array size */ + lvalue=TRUE; + } /* if */ + + /* operand on left side of assignment must be lvalue */ + if (!lvalue) + return error(22); /* must be lvalue */ + /* may not change "constant" parameters */ + assert(lval1->sym!=NULL); + if ((lval1->sym->usage & uCONST)!=0) + return error(22); /* assignment to const argument */ + lval3=*lval1; /* save symbol to enable storage of expresion result */ + lval1->arrayidx=org_arrayidx; /* restore array index pointer */ + if (lval1->ident==iARRAYCELL || lval1->ident==iARRAYCHAR + || lval1->ident==iARRAY || lval1->ident==iREFARRAY) + { + /* if indirect fetch: save PRI (cell address) */ + if (oper) { + push1(); + rvalue(lval1); + } /* if */ + lval2.arrayidx=arrayidx2; + plnge2(oper,hier14,lval1,&lval2); + if (lval2.ident!=iARRAYCELL && lval2.ident!=iARRAYCHAR) + lval2.arrayidx=NULL; + if (oper) + pop2(); + if (!oper && lval3.arrayidx!=NULL && lval2.arrayidx!=NULL + && lval3.ident==lval2.ident && lval3.sym==lval2.sym) + { + int same=TRUE; + assert(lval3.arrayidx==arrayidx1); + assert(lval2.arrayidx==arrayidx2); + for (i=0; iname); /* self-assignment */ + } /* if */ + } else { + if (oper){ + rvalue(lval1); + plnge2(oper,hier14,lval1,&lval2); + } else { + /* if direct fetch and simple assignment: no "push" + * and "pop" needed -> call hier14() directly, */ + if (hier14(&lval2)) + rvalue(&lval2); /* instead of plnge2(). */ + checkfunction(&lval2); + /* check whether lval2 and lval3 (old lval1) refer to the same variable */ + if (lval2.ident==iVARIABLE && lval3.ident==lval2.ident && lval3.sym==lval2.sym) { + assert(lval3.sym!=NULL); + error(226,lval3.sym->name); /* self-assignment */ + } /* if */ + } /* if */ + } /* if */ + if (lval3.ident==iARRAY || lval3.ident==iREFARRAY) { + /* left operand is an array, right operand should be an array variable + * of the same size and the same dimension, an array literal (of the + * same size) or a literal string. + */ + int exactmatch=TRUE; + if (lval2.ident!=iARRAY && lval2.ident!=iREFARRAY) + error(33,lval3.sym->name); /* array must be indexed */ + if (lval2.sym!=NULL) { + val=lval2.sym->dim.array.length; /* array variable */ + level=lval2.sym->dim.array.level; + } else { + val=lval2.constval; /* literal array */ + level=0; + /* If val is negative, it means that lval2 is a + * literal string. The string array size may be + * smaller than the destination array. + */ + if (val<0) { + val=-val; + exactmatch=FALSE; + } /* if */ + } /* if */ + if (lval3.sym->dim.array.level!=level) + return error(48); /* array dimensions must match */ + else if (lval3.sym->dim.array.lengthdim.array.length>val) + return error(47); /* array sizes must match */ + if (level>0) { + /* check the sizes of all sublevels too */ + symbol *sym1 = lval3.sym; + symbol *sym2 = lval2.sym; + int i; + assert(sym1!=NULL && sym2!=NULL); + /* ^^^ sym2 must be valid, because only variables can be + * multi-dimensional (there are no multi-dimensional arrays), + * sym1 must be valid because it must be an lvalue + */ + assert(exactmatch); + for (i=0; idim.array.length!=sym2->dim.array.length) + error(47); /* array sizes must match */ + } /* for */ + /* get the total size in cells of the multi-dimensional array */ + val=array_totalsize(lval3.sym); + assert(val>0); /* already checked */ + } /* if */ + } else { + /* left operand is not an array, right operand should then not be either */ + if (lval2.ident==iARRAY || lval2.ident==iREFARRAY) + error(6); /* must be assigned to an array */ + } /* if */ + if (lval3.ident==iARRAY || lval3.ident==iREFARRAY) { + memcopy(val*sizeof(cell)); + } else { + check_userop(NULL,lval2.tag,lval3.tag,2,&lval3,&lval2.tag); + store(&lval3); /* now, store the expression result */ + } /* if */ + if (!oper && !matchtag(lval3.tag,lval2.tag,TRUE)) + error(213); /* tagname mismatch (if "oper", warning already given in plunge2()) */ + if (lval3.sym) + markusage(lval3.sym,uWRITTEN); + sideeffect=TRUE; + bitwise_opercount=bwcount; + return FALSE; /* expression result is never an lvalue */ +} + +static int hier13(value *lval) +{ + int lvalue,flab1,flab2; + value lval2 = {0}; + int array1,array2; + + lvalue=plnge1(hier12,lval); + if (matchtoken('?')) { + flab1=getlabel(); + flab2=getlabel(); + if (lvalue) { + rvalue(lval); + } else if (lval->ident==iCONSTEXPR) { + const1(lval->constval); + error(lval->constval ? 206 : 205); /* redundant test */ + } /* if */ + jmp_eq0(flab1); /* go to second expression if primary register==0 */ + if (hier14(lval)) + rvalue(lval); + jumplabel(flab2); + setlabel(flab1); + needtoken(':'); + if (hier14(&lval2)) + rvalue(&lval2); + array1= (lval->ident==iARRAY || lval->ident==iREFARRAY); + array2= (lval2.ident==iARRAY || lval2.ident==iREFARRAY); + if (array1 && !array2) { + char *ptr=(lval->sym->name!=NULL) ? lval->sym->name : "-unknown-"; + error(33,ptr); /* array must be indexed */ + } else if (!array1 && array2) { + char *ptr=(lval2.sym->name!=NULL) ? lval2.sym->name : "-unknown-"; + error(33,ptr); /* array must be indexed */ + } /* if */ + /* ??? if both are arrays, should check dimensions */ + if (!matchtag(lval->tag,lval2.tag,FALSE)) + error(213); /* tagname mismatch ('true' and 'false' expressions) */ + setlabel(flab2); + if (lval->ident==iARRAY) + lval->ident=iREFARRAY; /* iARRAY becomes iREFARRAY */ + else if (lval->ident!=iREFARRAY) + lval->ident=iEXPRESSION; /* iREFARRAY stays iREFARRAY, rest becomes iEXPRESSION */ + return FALSE; /* conditional expression is no lvalue */ + } else { + return lvalue; + } /* endif */ +} + +/* the order of the operators in these lists is important and must cohere */ +/* with the order of the operators in the array "op1" */ +static int list3[] = {'*','/','%',0}; +static int list4[] = {'+','-',0}; +static int list5[] = {tSHL,tSHR,tSHRU,0}; +static int list6[] = {'&',0}; +static int list7[] = {'^',0}; +static int list8[] = {'|',0}; +static int list9[] = {tlLE,tlGE,'<','>',0}; +static int list10[] = {tlEQ,tlNE,0}; +static int list11[] = {tlAND,0}; +static int list12[] = {tlOR,0}; + +static int hier12(value *lval) +{ + return skim(list12,jmp_ne0,1,0,hier11,lval); +} + +static int hier11(value *lval) +{ + return skim(list11,jmp_eq0,0,1,hier10,lval); +} + +static int hier10(value *lval) +{ /* ==, != */ + return plnge(list10,15,hier9,lval,"bool",TRUE); +} /* ^ this variable is the starting index in the op1[] + * array of the operators of this hierarchy level */ + +static int hier9(value *lval) +{ /* <=, >=, <, > */ + return plnge_rel(list9,11,hier8,lval); +} + +static int hier8(value *lval) +{ /* | */ + return plnge(list8,10,hier7,lval,NULL,FALSE); +} + +static int hier7(value *lval) +{ /* ^ */ + return plnge(list7,9,hier6,lval,NULL,FALSE); +} + +static int hier6(value *lval) +{ /* & */ + return plnge(list6,8,hier5,lval,NULL,FALSE); +} + +static int hier5(value *lval) +{ /* <<, >>, >>> */ + return plnge(list5,5,hier4,lval,NULL,FALSE); +} + +static int hier4(value *lval) +{ /* +, - */ + return plnge(list4,3,hier3,lval,NULL,FALSE); +} + +static int hier3(value *lval) +{ /* *, /, % */ + return plnge(list3,0,hier2,lval,NULL,FALSE); +} + +static int hier2(value *lval) +{ + int lvalue,tok; + int tag,paranthese; + cell val; + char *st; + symbol *sym; + int saveresult; + + tok=lex(&val,&st); + switch (tok) { + case tINC: /* ++lval */ + if (!hier2(lval)) + return error(22); /* must be lvalue */ + assert(lval->sym!=NULL); + if ((lval->sym->usage & uCONST)!=0) + return error(22); /* assignment to const argument */ + if (!check_userop(user_inc,lval->tag,0,1,lval,&lval->tag)) + inc(lval); /* increase variable first */ + rvalue(lval); /* and read the result into PRI */ + sideeffect=TRUE; + return FALSE; /* result is no longer lvalue */ + case tDEC: /* --lval */ + if (!hier2(lval)) + return error(22); /* must be lvalue */ + assert(lval->sym!=NULL); + if ((lval->sym->usage & uCONST)!=0) + return error(22); /* assignment to const argument */ + if (!check_userop(user_dec,lval->tag,0,1,lval,&lval->tag)) + dec(lval); /* decrease variable first */ + rvalue(lval); /* and read the result into PRI */ + sideeffect=TRUE; + return FALSE; /* result is no longer lvalue */ + case '~': /* ~ (one's complement) */ + if (hier2(lval)) + rvalue(lval); + invert(); /* bitwise NOT */ + lval->constval=~lval->constval; + return FALSE; + case '!': /* ! (logical negate) */ + if (hier2(lval)) + rvalue(lval); + if (check_userop(lneg,lval->tag,0,1,NULL,&lval->tag)) { + lval->ident=iEXPRESSION; + lval->constval=0; + } else { + lneg(); /* 0 -> 1, !0 -> 0 */ + lval->constval=!lval->constval; + lval->tag=sc_addtag("bool"); + } /* if */ + return FALSE; + case '-': /* unary - (two's complement) */ + if (hier2(lval)) + rvalue(lval); + /* make a special check for a constant expression with the tag of a + * rational number, so that we can simple swap the sign of that constant. + */ + if (lval->ident==iCONSTEXPR && lval->tag==sc_rationaltag && sc_rationaltag!=0) { + if (rational_digits==0) { + float *f = (float *)&lval->constval; + *f= - *f; /* this modifies lval->constval */ + } else { + /* the negation of a fixed point number is just an integer negation */ + lval->constval=-lval->constval; + } /* if */ + } else if (check_userop(neg,lval->tag,0,1,NULL,&lval->tag)) { + lval->ident=iEXPRESSION; + lval->constval=0; + } else { + neg(); /* arithmic negation */ + lval->constval=-lval->constval; + } /* if */ + return FALSE; + case tLABEL: /* tagname override */ + tag=sc_addtag(st); + lvalue=hier2(lval); + lval->tag=tag; + return lvalue; + case tDEFINED: + paranthese=0; + while (matchtoken('(')) + paranthese++; + tok=lex(&val,&st); + if (tok!=tSYMBOL) + return error(20,st); /* illegal symbol name */ + sym=findloc(st); + if (sym==NULL) + sym=findglb(st); + if (sym!=NULL && sym->ident!=iFUNCTN && sym->ident!=iREFFUNC && (sym->usage & uDEFINE)==0) + sym=NULL; /* symbol is not a function, it is in the table, but not "defined" */ + val= (sym!=NULL); + if (!val && find_subst(st,strlen(st))!=NULL) + val=1; + clear_value(lval); + lval->ident=iCONSTEXPR; + lval->constval= val; + const1(lval->constval); + while (paranthese--) + needtoken(')'); + return FALSE; + case tSIZEOF: + paranthese=0; + while (matchtoken('(')) + paranthese++; + tok=lex(&val,&st); + if (tok!=tSYMBOL) + return error(20,st); /* illegal symbol name */ + sym=findloc(st); + if (sym==NULL) + sym=findglb(st); + if (sym==NULL) + return error(17,st); /* undefined symbol */ + if (sym->ident==iCONSTEXPR) + error(39); /* constant symbol has no size */ + else if (sym->ident==iFUNCTN || sym->ident==iREFFUNC) + error(72); /* "function" symbol has no size */ + else if ((sym->usage & uDEFINE)==0) + return error(17,st); /* undefined symbol (symbol is in the table, but it is "used" only) */ + clear_value(lval); + lval->ident=iCONSTEXPR; + lval->constval=1; /* preset */ + if (sym->ident==iARRAY || sym->ident==iREFARRAY) { + int level; + for (level=0; matchtoken('['); level++) + needtoken(']'); + if (level>sym->dim.array.level) + error(28); /* invalid subscript */ + else + lval->constval=array_levelsize(sym,level); + if (lval->constval==0 && strchr(lptr,PREPROC_TERM)==NULL) + error(224,st); /* indeterminate array size in "sizeof" expression */ + } /* if */ + const1(lval->constval); + while (paranthese--) + needtoken(')'); + return FALSE; + case tTAGOF: + paranthese=0; + while (matchtoken('(')) + paranthese++; + tok=lex(&val,&st); + if (tok!=tSYMBOL && tok!=tLABEL) + return error(20,st); /* illegal symbol name */ + if (tok==tLABEL) { + tag=sc_addtag(st); + } else { + sym=findloc(st); + if (sym==NULL) + sym=findglb(st); + if (sym==NULL) + return error(17,st); /* undefined symbol */ + if ((sym->usage & uDEFINE)==0) + return error(17,st); /* undefined symbol (symbol is in the table, but it is "used" only) */ + tag=sym->tag; + } /* if */ + exporttag(tag); + clear_value(lval); + lval->ident=iCONSTEXPR; + lval->constval=tag; + const1(lval->constval); + while (paranthese--) + needtoken(')'); + return FALSE; + default: + lexpush(); + lvalue=hier1(lval); + /* check for postfix operators */ + if (matchtoken(';')) { + /* Found a ';', do not look further for postfix operators */ + lexpush(); /* push ';' back after successful match */ + return lvalue; + } else if (matchtoken(tTERM)) { + /* Found a newline that ends a statement (this is the case when + * semicolons are optional). Note that an explicit semicolon was + * handled above. This case is similar, except that the token must + * not be pushed back. + */ + return lvalue; + } else { + tok=lex(&val,&st); + switch (tok) { + case tINC: /* lval++ */ + if (!lvalue) + return error(22); /* must be lvalue */ + assert(lval->sym!=NULL); + if ((lval->sym->usage & uCONST)!=0) + return error(22); /* assignment to const argument */ + /* on incrementing array cells, the address in PRI must be saved for + * incremening the value, whereas the current value must be in PRI + * on exit. + */ + saveresult= (lval->ident==iARRAYCELL || lval->ident==iARRAYCHAR); + if (saveresult) + push1(); /* save address in PRI */ + rvalue(lval); /* read current value into PRI */ + if (saveresult) + swap1(); /* save PRI on the stack, restore address in PRI */ + if (!check_userop(user_inc,lval->tag,0,1,lval,&lval->tag)) + inc(lval); /* increase variable afterwards */ + if (saveresult) + pop1(); /* restore PRI (result of rvalue()) */ + sideeffect=TRUE; + return FALSE; /* result is no longer lvalue */ + case tDEC: /* lval-- */ + if (!lvalue) + return error(22); /* must be lvalue */ + assert(lval->sym!=NULL); + if ((lval->sym->usage & uCONST)!=0) + return error(22); /* assignment to const argument */ + saveresult= (lval->ident==iARRAYCELL || lval->ident==iARRAYCHAR); + if (saveresult) + push1(); /* save address in PRI */ + rvalue(lval); /* read current value into PRI */ + if (saveresult) + swap1(); /* save PRI on the stack, restore address in PRI */ + if (!check_userop(user_dec,lval->tag,0,1,lval,&lval->tag)) + dec(lval); /* decrease variable afterwards */ + if (saveresult) + pop1(); /* restore PRI (result of rvalue()) */ + sideeffect=TRUE; + return FALSE; + case tCHAR: /* char (compute required # of cells */ + if (lval->ident==iCONSTEXPR) { + lval->constval *= charbits/8; /* from char to bytes */ + lval->constval = (lval->constval + sizeof(cell)-1) / sizeof(cell); + } else { + if (lvalue) + rvalue(lval); /* fetch value if not already in PRI */ + char2addr(); /* from characters to bytes */ + addconst(sizeof(cell)-1); /* make sure the value is rounded up */ + addr2cell(); /* truncate to number of cells */ + } /* if */ + return FALSE; + default: + lexpush(); + return lvalue; + } /* switch */ + } /* if */ + } /* switch */ +} + +/* hier1 + * + * The highest hierarchy level: it looks for pointer and array indices + * and function calls. + * Generates code to fetch a pointer value if it is indexed and code to + * add to the pointer value or the array address (the address is already + * read at primary()). It also generates code to fetch a function address + * if that hasn't already been done at primary() (check lval[4]) and calls + * callfunction() to call the function. + */ +static int hier1(value *lval1) +{ + int lvalue,index,tok,symtok; + cell val,cidx; + value lval2 = {0}; + char *st; + char close; + symbol *sym; + + lvalue=primary(lval1); + symtok=tokeninfo(&val,&st); /* get token read by primary() */ +restart: + sym=lval1->sym; + if (matchtoken('[') || matchtoken('{') || matchtoken('(')) { + tok=tokeninfo(&val,&st); /* get token read by matchtoken() */ + if (sym==NULL && symtok!=tSYMBOL) { + /* we do not have a valid symbol and we appear not to have read a valid + * symbol name (so it is unlikely that we would have read a name of an + * undefined symbol) */ + error(29); /* expression error, assumed 0 */ + lexpush(); /* analyse '(', '{' or '[' again later */ + return FALSE; + } /* if */ + if (tok=='[' || tok=='{') { /* subscript */ + close = (char)((tok=='[') ? ']' : '}'); + if (sym==NULL) { /* sym==NULL if lval is a constant or a literal */ + error(28); /* cannot subscript */ + needtoken(close); + return FALSE; + } else if (sym->ident!=iARRAY && sym->ident!=iREFARRAY){ + error(28); /* cannot subscript, variable is not an array */ + needtoken(close); + return FALSE; + } else if (sym->dim.array.level>0 && close!=']') { + error(51); /* invalid subscript, must use [ ] */ + needtoken(close); + return FALSE; + } /* if */ + stgget(&index,&cidx); /* mark position in code generator */ + push1(); /* save base address of the array */ + if (hier14(&lval2)) /* create expression for the array index */ + rvalue(&lval2); + if (lval2.ident==iARRAY || lval2.ident==iREFARRAY) + error(33,lval2.sym->name); /* array must be indexed */ + needtoken(close); + if (!matchtag(sym->x.idxtag,lval2.tag,TRUE)) + error(213); + if (lval2.ident==iCONSTEXPR) { /* constant expression */ + stgdel(index,cidx); /* scratch generated code */ + if (lval1->arrayidx!=NULL) { /* keep constant index, for checking */ + assert(sym->dim.array.level>=0 && sym->dim.array.levelarrayidx[sym->dim.array.level]=lval2.constval; + } /* if */ + if (close==']') { + /* normal array index */ + if (lval2.constval<0 || sym->dim.array.length!=0 && sym->dim.array.length<=lval2.constval) + error(32,sym->name); /* array index out of bounds */ + if (lval2.constval!=0) { + /* don't add offsets for zero subscripts */ + #if defined(BIT16) + const2(lval2.constval<<1); + #else + const2(lval2.constval<<2); + #endif + ob_add(); + } /* if */ + } else { + /* character index */ + if (lval2.constval<0 || sym->dim.array.length!=0 + && sym->dim.array.length*((8*sizeof(cell))/charbits)<=(ucell)lval2.constval) + error(32,sym->name); /* array index out of bounds */ + if (lval2.constval!=0) { + /* don't add offsets for zero subscripts */ + if (charbits==16) + const2(lval2.constval<<1);/* 16-bit character */ + else + const2(lval2.constval); /* 8-bit character */ + ob_add(); + } /* if */ + charalign(); /* align character index into array */ + } /* if */ + } else { + /* array index is not constant */ + lval1->arrayidx=NULL; /* reset, so won't be checked */ + if (close==']') { + if (sym->dim.array.length!=0) + ffbounds(sym->dim.array.length-1); /* run time check for array bounds */ + cell2addr(); /* normal array index */ + } else { + if (sym->dim.array.length!=0) + ffbounds(sym->dim.array.length*(32/charbits)-1); + char2addr(); /* character array index */ + } /* if */ + pop2(); + ob_add(); /* base address was popped into secondary register */ + if (close!=']') + charalign(); /* align character index into array */ + } /* if */ + /* the indexed item may be another array (multi-dimensional arrays) */ + assert(lval1->sym==sym && sym!=NULL); /* should still be set */ + if (sym->dim.array.level>0) { + assert(close==']'); /* checked earlier */ + /* read the offset to the subarray and add it to the current address */ + lval1->ident=iARRAYCELL; + push1(); /* the optimizer makes this to a MOVE.alt */ + rvalue(lval1); + pop2(); + ob_add(); + /* adjust the "value" structure and find the referenced array */ + lval1->ident=iREFARRAY; + lval1->sym=finddepend(sym); + assert(lval1->sym!=NULL); + assert(lval1->sym->dim.array.level==sym->dim.array.level-1); + /* try to parse subsequent array indices */ + lvalue=FALSE; /* for now, a iREFARRAY is no lvalue */ + goto restart; + } /* if */ + assert(sym->dim.array.level==0); + /* set type to fetch... INDIRECTLY */ + lval1->ident= (char)((close==']') ? iARRAYCELL : iARRAYCHAR); + lval1->tag=sym->tag; + /* a cell in an array is an lvalue, a character in an array is not + * always a *valid* lvalue */ + return TRUE; + } else { /* tok=='(' -> function(...) */ + if (sym==NULL + || (sym->ident!=iFUNCTN && sym->ident!=iREFFUNC)) + { + if (sym==NULL && sc_status==statFIRST) { + /* could be a "use before declaration"; in that case, create a stub + * function so that the usage can be marked. + */ + sym=fetchfunc(lastsymbol,0); + if (sym!=NULL) + markusage(sym,uREAD); + } /* if */ + return error(12); /* invalid function call */ + } else if ((sym->usage & uMISSING)!=0) { + char symname[2*sNAMEMAX+16]; /* allow space for user defined operators */ + funcdisplayname(symname,sym->name); + error(4,symname); /* function not defined */ + } /* if */ + callfunction(sym); + lval1->ident=iEXPRESSION; + lval1->constval=0; + lval1->tag=sym->tag; + return FALSE; /* result of function call is no lvalue */ + } /* if */ + } /* if */ + if (sym!=NULL && lval1->ident==iFUNCTN) { + assert(sym->ident==iFUNCTN); + address(sym); + lval1->sym=NULL; + lval1->ident=iREFFUNC; + /* ??? however... function pointers (or function references are not (yet) allowed */ + error(29); /* expression error, assumed 0 */ + return FALSE; + } /* if */ + return lvalue; +} + +/* primary + * + * Returns 1 if the operand is an lvalue (everything except arrays, functions + * constants and -of course- errors). + * Generates code to fetch the address of arrays. Code for constants is + * already generated by constant(). + * This routine first clears the entire lval array (all fields are set to 0). + * + * Global references: intest (may be altered, but restored upon termination) + */ +static int primary(value *lval) +{ + char *st; + int lvalue,tok; + cell val; + symbol *sym; + + if (matchtoken('(')){ /* sub-expression - (expression,...) */ + pushstk((stkitem)intest); + pushstk((stkitem)sc_allowtags); + + intest=0; /* no longer in "test" expression */ + sc_allowtags=TRUE; /* allow tagnames to be used in parenthised expressions */ + do + lvalue=hier14(lval); + while (matchtoken(',')); + needtoken(')'); + lexclr(FALSE); /* clear lex() push-back, it should have been + * cleared already by needtoken() */ + sc_allowtags=(int)(long)popstk(); + intest=(int)(long)popstk(); + return lvalue; + } /* if */ + + clear_value(lval); /* clear lval */ + tok=lex(&val,&st); + if (tok==tSYMBOL) { + /* lastsymbol is char[sNAMEMAX+1], lex() should have truncated any symbol + * to sNAMEMAX significant characters */ + assert(strlen(st)ident==iLABEL) { + error(29); /* expression error, assumed 0 */ + const1(0); /* load 0 */ + return FALSE; /* return 0 for labels (expression error) */ + } /* if */ + lval->sym=sym; + lval->ident=sym->ident; + lval->tag=sym->tag; + if (sym->ident==iARRAY || sym->ident==iREFARRAY) { + address(sym); /* get starting address in primary register */ + return FALSE; /* return 0 for array (not lvalue) */ + } else { + return TRUE; /* return 1 if lvalue (not label or array) */ + } /* if */ + } /* if */ + /* now try a global variable */ + if ((sym=findglb(st))!=0) { + if (sym->ident==iFUNCTN || sym->ident==iREFFUNC) { + /* if the function is only in the table because it was inserted as a + * stub in the first pass (i.e. it was "used" but never declared or + * implemented, issue an error + */ + if ((sym->usage & uPROTOTYPED)==0) + error(17,st); + } else { + if ((sym->usage & uDEFINE)==0) + error(17,st); + lval->sym=sym; + lval->ident=sym->ident; + lval->tag=sym->tag; + if (sym->ident==iARRAY || sym->ident==iREFARRAY) { + address(sym); /* get starting address in primary register */ + return FALSE; /* return 0 for array (not lvalue) */ + } else { + return TRUE; /* return 1 if lvalue (not function or array) */ + } /* if */ + } /* if */ + } else { + return error(17,st); /* undefined symbol */ + } /* endif */ + assert(sym!=NULL); + assert(sym->ident==iFUNCTN || sym->ident!=iREFFUNC); + lval->sym=sym; + lval->ident=sym->ident; + lval->tag=sym->tag; + return FALSE; /* return 0 for function (not an lvalue) */ + } /* if */ + lexpush(); /* push the token, it is analyzed by constant() */ + if (constant(lval)==0) { + error(29); /* expression error, assumed 0 */ + const1(0); /* load 0 */ + } /* if */ + return FALSE; /* return 0 for constants (or errors) */ +} + +static void clear_value(value *lval) +{ + lval->sym=NULL; + lval->constval=0L; + lval->tag=0; + lval->ident=0; + lval->boolresult=FALSE; + /* do not clear lval->arrayidx, it is preset in hier14() */ +} + +static void setdefarray(cell *string,cell size,cell array_sz,cell *dataaddr,int fconst) +{ + /* The routine must copy the default array data onto the heap, as to avoid + * that a function can change the default value. An optimization is that + * the default array data is "dumped" into the data segment only once (on the + * first use). + */ + assert(string!=NULL); + assert(size>0); + /* check whether to dump the default array */ + assert(dataaddr!=NULL); + if (sc_status==statWRITE && *dataaddr<0) { + int i; + *dataaddr=(litidx+glb_declared)*sizeof(cell); + for (i=0; i=size); + modheap((int)array_sz*sizeof(cell)); + /* ??? should perhaps fill with zeros first */ + memcopy(size*sizeof(cell)); + moveto1(); + } /* if */ +} + +static int findnamedarg(arginfo *arg,char *name) +{ + int i; + + for (i=0; arg[i].ident!=0 && arg[i].ident!=iVARARGS; i++) + if (strcmp(arg[i].name,name)==0) + return i; + return -1; +} + +static int checktag(int tags[],int numtags,int exprtag) +{ + int i; + + assert(tags!=0); + assert(numtags>0); + for (i=0; idim.arglist; + assert(arg!=NULL); + stgmark(sSTARTREORDER); + for (argpos=0; argposusage & uCONST)!=0 && (arg[argidx].usage & uCONST)==0) { + /* treat a "const" variable passed to a function with a non-const + * "variable argument list" as a constant here */ + assert(lvalue); + rvalue(&lval); /* get value in PRI */ + setheap_pri(); /* address of the value on the heap in PRI */ + heapalloc++; + } else if (lvalue) { + address(lval.sym); + } else { + setheap_pri(); /* address of the value on the heap in PRI */ + heapalloc++; + } /* if */ + } else if (lval.ident==iCONSTEXPR || lval.ident==iEXPRESSION + || lval.ident==iARRAYCHAR) + { + /* fetch value if needed */ + if (lval.ident==iARRAYCHAR) + rvalue(&lval); + /* allocate a cell on the heap and store the + * value (already in PRI) there */ + setheap_pri(); /* address of the value on the heap in PRI */ + heapalloc++; + } /* if */ + /* ??? handle const array passed by reference */ + /* otherwise, the address is already in PRI */ + if (lval.sym!=NULL) + markusage(lval.sym,uWRITTEN); + if (!checktag(arg[argidx].tags,arg[argidx].numtags,lval.tag)) + error(213); + break; + case iVARIABLE: + if (lval.ident==iLABEL || lval.ident==iFUNCTN || lval.ident==iREFFUNC + || lval.ident==iARRAY || lval.ident==iREFARRAY) + error(35,argidx+1); /* argument type mismatch */ + if (lvalue) + rvalue(&lval); /* get value (direct or indirect) */ + /* otherwise, the expression result is already in PRI */ + assert(arg[argidx].numtags>0); + check_userop(NULL,lval.tag,arg[argidx].tags[0],2,NULL,&lval.tag); + if (!checktag(arg[argidx].tags,arg[argidx].numtags,lval.tag)) + error(213); + argidx++; /* argument done */ + break; + case iREFERENCE: + if (!lvalue || lval.ident==iARRAYCHAR) + error(35,argidx+1); /* argument type mismatch */ + if (lval.sym!=NULL && (lval.sym->usage & uCONST)!=0 && (arg[argidx].usage & uCONST)==0) + error(35,argidx+1); /* argument type mismatch */ + if (lval.ident==iVARIABLE || lval.ident==iREFERENCE) { + if (lvalue) { + assert(lval.sym!=NULL); + address(lval.sym); + } else { + setheap_pri(); /* address of the value on the heap in PRI */ + heapalloc++; + } /* if */ + } /* if */ + /* otherwise, the address is already in PRI */ + if (!checktag(arg[argidx].tags,arg[argidx].numtags,lval.tag)) + error(213); + argidx++; /* argument done */ + if (lval.sym!=NULL) + markusage(lval.sym,uWRITTEN); + break; + case iREFARRAY: + if (lval.ident!=iARRAY && lval.ident!=iREFARRAY + && lval.ident!=iARRAYCELL) + { + error(35,argidx+1); /* argument type mismatch */ + break; + } /* if */ + if (lval.sym!=NULL && (lval.sym->usage & uCONST)!=0 && (arg[argidx].usage & uCONST)==0) + error(35,argidx+1); /* argument type mismatch */ + /* Verify that the dimensions match with those in arg[argidx]. + * A literal array always has a single dimension. + * An iARRAYCELL parameter is also assumed to have a single dimension. + */ + if (lval.sym==NULL || lval.ident==iARRAYCELL) { + if (arg[argidx].numdim!=1) { + error(48); /* array dimensions must match */ + } else if (arg[argidx].dim[0]!=0) { + assert(arg[argidx].dim[0]>0); + if (lval.ident==iARRAYCELL) { + error(47); /* array sizes must match */ + } else { + assert(lval.constval!=0); /* literal array must have a size */ + /* A literal array must have exactly the same size as the + * function argument; a literal string may be smaller than + * the function argument. + */ + if (lval.constval>0 && arg[argidx].dim[0]!=lval.constval + || lval.constval<0 && arg[argidx].dim[0] < -lval.constval) + error(47); /* array sizes must match */ + } /* if */ + } /* if */ + if (lval.ident!=iARRAYCELL) { + /* save array size, for default values with uSIZEOF flag */ + cell array_sz=lval.constval; + assert(array_sz!=0); /* literal array must have a size */ + if (array_sz<0) + array_sz= -array_sz; + append_constval(&arrayszlst,arg[argidx].name,array_sz,0); + } /* if */ + } else { + symbol *sym=lval.sym; + short level=0; + assert(sym!=NULL); + if (sym->dim.array.level+1!=arg[argidx].numdim) + error(48); /* array dimensions must match */ + /* the lengths for all dimensions must match, unless the dimension + * length was defined at zero (which means "undefined") + */ + while (sym->dim.array.level>0) { + assert(leveldim.array.length!=arg[argidx].dim[level]) + error(47); /* array sizes must match */ + append_constval(&arrayszlst,arg[argidx].name,sym->dim.array.length,level); + sym=finddepend(sym); + assert(sym!=NULL); + level++; + } /* if */ + /* the last dimension is checked too, again, unless it is zero */ + assert(leveldim.array.length!=arg[argidx].dim[level]) + error(47); /* array sizes must match */ + append_constval(&arrayszlst,arg[argidx].name,sym->dim.array.length,level); + } /* if */ + /* address already in PRI */ + if (!checktag(arg[argidx].tags,arg[argidx].numtags,lval.tag)) + error(213); + // ??? set uWRITTEN? + argidx++; /* argument done */ + break; + } /* switch */ + push1(); /* store the function argument on the stack */ + endexpr(FALSE); /* mark the end of a sub-expression */ + } /* if */ + assert(arglist[argpos]!=ARG_UNHANDLED); + nargs++; + close=matchtoken(')'); + if (!close) /* if not paranthese... */ + if (!needtoken(',')) /* ...should be comma... */ + break; /* ...but abort loop if neither */ + } while (!close && freading && !matchtoken(tENDEXPR)); /* do */ + } /* if */ + /* check remaining function arguments (they may have default values) */ + for (argidx=0; arg[argidx].ident!=0 && arg[argidx].ident!=iVARARGS; argidx++) { + if (arglist[argidx]==ARG_DONE) + continue; /* already seen and handled this argument */ + /* in this first stage, we also skip the arguments with uSIZEOF and uTAGOF; + * these are handled last + */ + if ((arg[argidx].hasdefault & uSIZEOF)!=0 || (arg[argidx].hasdefault & uTAGOF)!=0) { + assert(arg[argidx].ident==iVARIABLE); + continue; + } /* if */ + stgmark((char)(sEXPRSTART+argidx));/* mark beginning of new expression in stage */ + if (arg[argidx].hasdefault) { + if (arg[argidx].ident==iREFARRAY) { + short level; + setdefarray(arg[argidx].defvalue.array.data, + arg[argidx].defvalue.array.size, + arg[argidx].defvalue.array.arraysize, + &arg[argidx].defvalue.array.addr, + (arg[argidx].usage & uCONST)!=0); + if ((arg[argidx].usage & uCONST)==0) + heapalloc+=arg[argidx].defvalue.array.arraysize; + /* keep the lengths of all dimensions of a multi-dimensional default array */ + assert(arg[argidx].numdim>0); + if (arg[argidx].numdim==1) { + append_constval(&arrayszlst,arg[argidx].name,arg[argidx].defvalue.array.arraysize,0); + } else { + for (level=0; level0); + check_userop(NULL,arg[argidx].defvalue_tag,arg[argidx].tags[0],2,NULL,&dummytag); + assert(dummytag==arg[argidx].tags[0]); + } /* if */ + push1(); /* store the function argument on the stack */ + endexpr(FALSE); /* mark the end of a sub-expression */ + } else { + error(202,argidx); /* argument count mismatch */ + } /* if */ + if (arglist[argidx]==ARG_UNHANDLED) + nargs++; + arglist[argidx]=ARG_DONE; + } /* for */ + /* now a second loop to catch the arguments with default values that are + * the "sizeof" or "tagof" of other arguments + */ + for (argidx=0; arg[argidx].ident!=0 && arg[argidx].ident!=iVARARGS; argidx++) { + constvalue *asz; + cell array_sz; + if (arglist[argidx]==ARG_DONE) + continue; /* already seen and handled this argument */ + stgmark((char)(sEXPRSTART+argidx));/* mark beginning of new expression in stage */ + assert(arg[argidx].ident==iVARIABLE); /* if "sizeof", must be single cell */ + /* if unseen, must be "sizeof" or "tagof" */ + assert((arg[argidx].hasdefault & uSIZEOF)!=0 || (arg[argidx].hasdefault & uTAGOF)!=0); + if ((arg[argidx].hasdefault & uSIZEOF)!=0) { + /* find the argument; if it isn't found, the argument's default value + * was a "sizeof" of a non-array (a warning for this was already given + * when declaring the function) + */ + asz=find_constval(&arrayszlst,arg[argidx].defvalue.size.symname, + arg[argidx].defvalue.size.level); + if (asz!=NULL) { + array_sz=asz->value; + if (array_sz==0) + error(224,arg[argidx].name); /* indeterminate array size in "sizeof" expression */ + } else { + array_sz=1; + } /* if */ + } else { + symbol *sym; + assert((arg[argidx].hasdefault & uTAGOF)!=0); + sym=findloc(arg[argidx].defvalue.size.symname); + if (sym==NULL) + sym=findglb(arg[argidx].defvalue.size.symname); + array_sz=(sym!=NULL) ? sym->tag : 0; + exporttag(array_sz); + } /* if */ + const1(array_sz); + push1(); /* store the function argument on the stack */ + endexpr(FALSE); + if (arglist[argidx]==ARG_UNHANDLED) + nargs++; + arglist[argidx]=ARG_DONE; + } /* for */ + stgmark(sENDREORDER); /* mark end of reversed evaluation */ + pushval((cell)nargs*sizeof(cell)); + ffcall(sym,nargs); + if (sc_status!=statSKIP) + markusage(sym,uREAD); /* do not mark as "used" when this call itself is skipped */ + if (sym->x.lib!=NULL) + sym->x.lib->value += 1; /* increment "usage count" of the library */ + modheap(-heapalloc*sizeof(cell)); + sideeffect=TRUE; /* assume functions carry out a side-effect */ + delete_consttable(&arrayszlst); /* clear list of array sizes */ +} + +/* dbltest + * + * Returns a non-zero value if lval1 an array and lval2 is not an array and + * the operation is addition or subtraction. + * + * Returns the "shift" count (1 for 16-bit, 2 for 32-bit) to align a cell + * to an array offset. + */ +static int dbltest(void (*oper)(),value *lval1,value *lval2) +{ + if ((oper!=ob_add) && (oper!=ob_sub)) + return 0; + if (lval1->ident!=iARRAY) + return 0; + if (lval2->ident==iARRAY) + return 0; + return sizeof(cell)/2; /* 1 for 16-bit, 2 for 32-bit */ +} + +/* commutative + * + * Test whether an operator is commutative, i.e. x oper y == y oper x. + * Commutative operators are: + (addition) + * * (multiplication) + * == (equality) + * != (inequality) + * & (bitwise and) + * ^ (bitwise xor) + * | (bitwise or) + * + * If in an expression, code for the left operand has been generated and + * the right operand is a constant and the operator is commutative, the + * precautionary "push" of the primary register is scrapped and the constant + * is read into the secondary register immediately. + */ +static int commutative(void (*oper)()) +{ + return oper==ob_add || oper==os_mult + || oper==ob_eq || oper==ob_ne + || oper==ob_and || oper==ob_xor || oper==ob_or; +} + +/* constant + * + * Generates code to fetch a number, a literal character (which is returned + * by lex() as a number as well) or a literal string (lex() stores the + * strings in the literal queue). If the operand was a number, it is stored + * in lval->constval. + * + * The function returns 1 if the token was a constant or a string, 0 + * otherwise. + */ +static int constant(value *lval) +{ + int tok,index,constant; + cell val,item,cidx; + char *st; + symbol *sym; + + tok=lex(&val,&st); + if (tok==tSYMBOL && (sym=findconst(st))!=0){ + lval->constval=sym->addr; + const1(lval->constval); + lval->ident=iCONSTEXPR; + lval->tag=sym->tag; + markusage(sym,uREAD); + } else if (tok==tNUMBER) { + lval->constval=val; + const1(lval->constval); + lval->ident=iCONSTEXPR; + } else if (tok==tRATIONAL) { + lval->constval=val; + const1(lval->constval); + lval->ident=iCONSTEXPR; + lval->tag=sc_rationaltag; + } else if (tok==tSTRING) { + /* lex() stores starting index of string in the literal table in 'val' */ + const1((val+glb_declared)*sizeof(cell)); + lval->ident=iARRAY; /* pretend this is a global array */ + lval->constval=val-litidx; /* constval == the negative value of the + * size of the literal array; using a negative + * value distinguishes between literal arrays + * and literal strings (this was done for + * array assignment). */ + } else if (tok=='{') { + int tag,lasttag=-1; + val=litidx; + do { + /* cannot call constexpr() here, because "staging" is already turned + * on at this point */ + assert(staging); + stgget(&index,&cidx); /* mark position in code generator */ + expression(&constant,&item,&tag,FALSE); + stgdel(index,cidx); /* scratch generated code */ + if (constant==0) + error(8); /* must be constant expression */ + if (lasttag<0) + lasttag=tag; + else if (!matchtag(lasttag,tag,FALSE)) + error(213); /* tagname mismatch */ + stowlit(item); /* store expression result in literal table */ + } while (matchtoken(',')); + needtoken('}'); + const1((val+glb_declared)*sizeof(cell)); + lval->ident=iARRAY; /* pretend this is a global array */ + lval->constval=litidx-val; /* constval == the size of the literal array */ + } else { + return FALSE; /* no, it cannot be interpreted as a constant */ + } /* if */ + return TRUE; /* yes, it was a constant value */ +} + diff --git a/legacy/embryo/src/bin/embryo_cc_sc4.c b/legacy/embryo/src/bin/embryo_cc_sc4.c new file mode 100644 index 0000000000..3dd1d50bf0 --- /dev/null +++ b/legacy/embryo/src/bin/embryo_cc_sc4.c @@ -0,0 +1,1195 @@ +/* Small compiler - code generation (unoptimized "assembler" code) + * + * Copyright (c) ITB CompuPhase, 1997-2003 + * + * This software is provided "as-is", without any express or implied warranty. + * In no event will the authors be held liable for any damages arising from + * the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software in + * a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + * Version: $Id$ + */ +#include +#include +#include +#include /* for _MAX_PATH */ +#include +#if defined FORTIFY + #include "fortify.h" +#endif +#include "embryo_cc_sc.h" + +/* When a subroutine returns to address 0, the AMX must halt. In earlier + * releases, the RET and RETN opcodes checked for the special case 0 address. + * Today, the compiler simply generates a HALT instruction at address 0. So + * a subroutine can savely return to 0, and then encounter a HALT. + */ +SC_FUNC void writeleader(void) +{ + assert(code_idx==0); + stgwrite(";program exit point\n"); + stgwrite("\thalt 0\n"); + /* calculate code length */ + code_idx+=opcodes(1)+opargs(1); +} + +/* writetrailer + * Not much left of this once important function. + * + * Global references: sc_stksize (referred to only) + * sc_dataalign (referred to only) + * code_idx (altered) + * glb_declared (altered) + */ +SC_FUNC void writetrailer(void) +{ + assert(sc_dataalign % opcodes(1) == 0); /* alignment must be a multiple of + * the opcode size */ + assert(sc_dataalign!=0); + + /* pad code to align data segment */ + if ((code_idx % sc_dataalign)!=0) { + begcseg(); + while ((code_idx % sc_dataalign)!=0) + nooperation(); + } /* if */ + + /* pad data segment to align the stack and the heap */ + assert(litidx==0); /* literal queue should have been emptied */ + assert(sc_dataalign % sizeof(cell) == 0); + if (((glb_declared*sizeof(cell)) % sc_dataalign)!=0) { + begdseg(); + defstorage(); + while (((glb_declared*sizeof(cell)) % sc_dataalign)!=0) { + stgwrite("0 "); + glb_declared++; + } /* while */ + } /* if */ + + stgwrite("\nSTKSIZE "); /* write stack size (align stack top) */ + outval(sc_stksize - (sc_stksize % sc_dataalign), TRUE); +} + +/* + * Start (or restart) the CODE segment. + * + * In fact, the code and data segment specifiers are purely informational; + * the "DUMP" instruction itself already specifies that the following values + * should go to the data segment. All otherinstructions go to the code + * segment. + * + * Global references: curseg + */ +SC_FUNC void begcseg(void) +{ + if (curseg!=sIN_CSEG) { + stgwrite("\n"); + stgwrite("CODE\t; "); + outval(code_idx,TRUE); + curseg=sIN_CSEG; + } /* endif */ +} + +/* + * Start (or restart) the DATA segment. + * + * Global references: curseg + */ +SC_FUNC void begdseg(void) +{ + if (curseg!=sIN_DSEG) { + stgwrite("\n"); + stgwrite("DATA\t; "); + outval(glb_declared-litidx,TRUE); + curseg=sIN_DSEG; + } /* if */ +} + +SC_FUNC void setactivefile(int fnumber) +{ + stgwrite("curfile "); + outval(fnumber,TRUE); +} + +SC_FUNC cell nameincells(char *name) +{ + cell clen=(strlen(name)+sizeof(cell)) & ~(sizeof(cell)-1); + return clen; +} + +SC_FUNC void setfile(char *name,int fileno) +{ + if ((sc_debug & sSYMBOLIC)!=0) { + begcseg(); + stgwrite("file "); + outval(fileno,FALSE); + stgwrite(" "); + stgwrite(name); + stgwrite("\n"); + /* calculate code length */ + code_idx+=opcodes(1)+opargs(2)+nameincells(name); + } /* if */ +} + +SC_FUNC void setline(int line,int fileno) +{ + if ((sc_debug & (sSYMBOLIC | sCHKBOUNDS))!=0) { + stgwrite("line "); + outval(line,FALSE); + stgwrite(" "); + outval(fileno,FALSE); + stgwrite("\t; "); + outval(code_idx,TRUE); + code_idx+=opcodes(1)+opargs(2); + } /* if */ +} + +SC_FUNC void setfiledirect(char *name) +{ + if (sc_status==statFIRST && sc_listing) { + assert(name!=NULL); + fprintf(outf,"#file %s\n",name); + } /* if */ +} + +SC_FUNC void setlinedirect(int line) +{ + if (sc_status==statFIRST && sc_listing) + fprintf(outf,"#line %d\n",line); +} + +/* setlabel + * + * Post a code label (specified as a number), on a new line. + */ +SC_FUNC void setlabel(int number) +{ + assert(number>=0); + stgwrite("l."); + stgwrite((char *)itoh(number)); + /* To assist verification of the assembled code, put the address of the + * label as a comment. However, labels that occur inside an expression + * may move (through optimization or through re-ordering). So write the + * address only if it is known to accurate. + */ + if (!staging) { + stgwrite("\t\t; "); + outval(code_idx,FALSE); + } /* if */ + stgwrite("\n"); +} + +/* Write a token that signifies the end of an expression, or the end of a + * function parameter. This allows several simple optimizations by the peephole + * optimizer. + */ +SC_FUNC void endexpr(int fullexpr) +{ + if (fullexpr) + stgwrite("\t;$exp\n"); + else + stgwrite("\t;$par\n"); +} + +/* startfunc - declare a CODE entry point (function start) + * + * Global references: funcstatus (referred to only) + */ +SC_FUNC void startfunc(char *fname) +{ + stgwrite("\tproc"); + if (sc_asmfile) { + char symname[2*sNAMEMAX+16]; + funcdisplayname(symname,fname); + stgwrite("\t; "); + stgwrite(symname); + } /* if */ + stgwrite("\n"); + code_idx+=opcodes(1); +} + +/* endfunc + * + * Declare a CODE ending point (function end) + */ +SC_FUNC void endfunc(void) +{ + stgwrite("\n"); /* skip a line */ +} + +/* alignframe + * + * Aligns the frame (and the stack) of the current function to a multiple + * of the specified byte count. Two caveats: the alignment ("numbytes") should + * be a power of 2, and this alignment must be done right after the frame + * is set up (before the first variable is declared) + */ +SC_FUNC void alignframe(int numbytes) +{ + #if !defined NDEBUG + /* "numbytes" should be a power of 2 for this code to work */ + int i,count=0; + for (i=0; isym; + if (lval->ident==iARRAYCELL) { + /* indirect fetch, address already in PRI */ + stgwrite("\tload.i\n"); + code_idx+=opcodes(1); + } else if (lval->ident==iARRAYCHAR) { + /* indirect fetch of a character from a pack, address already in PRI */ + stgwrite("\tlodb.i "); + outval(charbits/8,TRUE); /* read one or two bytes */ + code_idx+=opcodes(1)+opargs(1); + } else if (lval->ident==iREFERENCE) { + /* indirect fetch, but address not yet in PRI */ + assert(sym!=NULL); + assert(sym->vclass==sLOCAL); /* global references don't exist in Small */ + if (sym->vclass==sLOCAL) + stgwrite("\tlref.s.pri "); + else + stgwrite("\tlref.pri "); + outval(sym->addr,TRUE); + markusage(sym,uREAD); + code_idx+=opcodes(1)+opargs(1); + } else { + /* direct or stack relative fetch */ + assert(sym!=NULL); + if (sym->vclass==sLOCAL) + stgwrite("\tload.s.pri "); + else + stgwrite("\tload.pri "); + outval(sym->addr,TRUE); + markusage(sym,uREAD); + code_idx+=opcodes(1)+opargs(1); + } /* if */ +} + +/* + * Get the address of a symbol into the primary register (used for arrays, + * and for passing arguments by reference). + */ +SC_FUNC void address(symbol *sym) +{ + assert(sym!=NULL); + /* the symbol can be a local array, a global array, or an array + * that is passed by reference. + */ + if (sym->ident==iREFARRAY || sym->ident==iREFERENCE) { + /* reference to a variable or to an array; currently this is + * always a local variable */ + stgwrite("\tload.s.pri "); + } else { + /* a local array or local variable */ + if (sym->vclass==sLOCAL) + stgwrite("\taddr.pri "); + else + stgwrite("\tconst.pri "); + } /* if */ + outval(sym->addr,TRUE); + markusage(sym,uREAD); + code_idx+=opcodes(1)+opargs(1); +} + +/* store + * + * Saves the contents of "primary" into a memory cell, either directly + * or indirectly (at the address given in the alternate register). + */ +SC_FUNC void store(value *lval) +{ + symbol *sym; + + sym=lval->sym; + if (lval->ident==iARRAYCELL) { + /* store at address in ALT */ + stgwrite("\tstor.i\n"); + code_idx+=opcodes(1); + } else if (lval->ident==iARRAYCHAR) { + /* store at address in ALT */ + stgwrite("\tstrb.i "); + outval(charbits/8,TRUE); /* write one or two bytes */ + code_idx+=opcodes(1)+opargs(1); + } else if (lval->ident==iREFERENCE) { + assert(sym!=NULL); + if (sym->vclass==sLOCAL) + stgwrite("\tsref.s.pri "); + else + stgwrite("\tsref.pri "); + outval(sym->addr,TRUE); + code_idx+=opcodes(1)+opargs(1); + } else { + assert(sym!=NULL); + markusage(sym,uWRITTEN); + if (sym->vclass==sLOCAL) + stgwrite("\tstor.s.pri "); + else + stgwrite("\tstor.pri "); + outval(sym->addr,TRUE); + code_idx+=opcodes(1)+opargs(1); + } /* if */ +} + +/* source must in PRI, destination address in ALT. The "size" + * parameter is in bytes, not cells. + */ +SC_FUNC void memcopy(cell size) +{ + stgwrite("\tmovs "); + outval(size,TRUE); + + code_idx+=opcodes(1)+opargs(1); +} + +/* Address of the source must already have been loaded in PRI + * "size" is the size in bytes (not cells). + */ +SC_FUNC void copyarray(symbol *sym,cell size) +{ + assert(sym!=NULL); + /* the symbol can be a local array, a global array, or an array + * that is passed by reference. + */ + if (sym->ident==iREFARRAY) { + /* reference to an array; currently this is always a local variable */ + assert(sym->vclass==sLOCAL); /* symbol must be stack relative */ + stgwrite("\tload.s.alt "); + } else { + /* a local or global array */ + if (sym->vclass==sLOCAL) + stgwrite("\taddr.alt "); + else + stgwrite("\tconst.alt "); + } /* if */ + outval(sym->addr,TRUE); + markusage(sym,uWRITTEN); + + code_idx+=opcodes(1)+opargs(1); + memcopy(size); +} + +SC_FUNC void fillarray(symbol *sym,cell size,cell value) +{ + const1(value); /* load value in PRI */ + + assert(sym!=NULL); + /* the symbol can be a local array, a global array, or an array + * that is passed by reference. + */ + if (sym->ident==iREFARRAY) { + /* reference to an array; currently this is always a local variable */ + assert(sym->vclass==sLOCAL); /* symbol must be stack relative */ + stgwrite("\tload.s.alt "); + } else { + /* a local or global array */ + if (sym->vclass==sLOCAL) + stgwrite("\taddr.alt "); + else + stgwrite("\tconst.alt "); + } /* if */ + outval(sym->addr,TRUE); + markusage(sym,uWRITTEN); + + stgwrite("\tfill "); + outval(size,TRUE); + + code_idx+=opcodes(2)+opargs(2); +} + +/* + * Instruction to get an immediate value into the primary register + */ +SC_FUNC void const1(cell val) +{ + if (val==0) { + stgwrite("\tzero.pri\n"); + code_idx+=opcodes(1); + } else { + stgwrite("\tconst.pri "); + outval(val, TRUE); + code_idx+=opcodes(1)+opargs(1); + } /* if */ +} + +/* + * Instruction to get an immediate value into the secondary register + */ +SC_FUNC void const2(cell val) +{ + if (val==0) { + stgwrite("\tzero.alt\n"); + code_idx+=opcodes(1); + } else { + stgwrite("\tconst.alt "); + outval(val, TRUE); + code_idx+=opcodes(1)+opargs(1); + } /* if */ +} + +/* Copy value in secondary register to the primary register */ +SC_FUNC void moveto1(void) +{ + stgwrite("\tmove.pri\n"); + code_idx+=opcodes(1)+opargs(0); +} + +/* + * Push primary register onto the stack + */ +SC_FUNC void push1(void) +{ + stgwrite("\tpush.pri\n"); + code_idx+=opcodes(1); +} + +/* + * Push alternate register onto the stack + */ +SC_FUNC void push2(void) +{ + stgwrite("\tpush.alt\n"); + code_idx+=opcodes(1); +} + +/* + * Push a constant value onto the stack + */ +SC_FUNC void pushval(cell val) +{ + stgwrite("\tpush.c "); + outval(val, TRUE); + code_idx+=opcodes(1)+opargs(1); +} + +/* + * pop stack to the primary register + */ +SC_FUNC void pop1(void) +{ + stgwrite("\tpop.pri\n"); + code_idx+=opcodes(1); +} + +/* + * pop stack to the secondary register + */ +SC_FUNC void pop2(void) +{ + stgwrite("\tpop.alt\n"); + code_idx+=opcodes(1); +} + +/* + * swap the top-of-stack with the value in primary register + */ +SC_FUNC void swap1(void) +{ + stgwrite("\tswap.pri\n"); + code_idx+=opcodes(1); +} + +/* Switch statements + * The "switch" statement generates a "case" table using the "CASE" opcode. + * The case table contains a list of records, each record holds a comparison + * value and a label to branch to on a match. The very first record is an + * exception: it holds the size of the table (excluding the first record) and + * the label to branch to when none of the values in the case table match. + * The case table is sorted on the comparison value. This allows more advanced + * abstract machines to sift the case table with a binary search. + */ +SC_FUNC void ffswitch(int label) +{ + stgwrite("\tswitch "); + outval(label,TRUE); /* the label is the address of the case table */ + code_idx+=opcodes(1)+opargs(1); +} + +SC_FUNC void ffcase(cell value,char *labelname,int newtable) +{ + if (newtable) { + stgwrite("\tcasetbl\n"); + code_idx+=opcodes(1); + } /* if */ + stgwrite("\tcase "); + outval(value,FALSE); + stgwrite(" "); + stgwrite(labelname); + stgwrite("\n"); + code_idx+=opcodes(0)+opargs(2); +} + +/* + * Call specified function + */ +SC_FUNC void ffcall(symbol *sym,int numargs) +{ + char symname[2*sNAMEMAX+16]; + + assert(sym!=NULL); + assert(sym->ident==iFUNCTN); + if (sc_asmfile) + funcdisplayname(symname,sym->name); + if ((sym->usage & uNATIVE)!=0) { + /* reserve a SYSREQ id if called for the first time */ + if (sc_status==statWRITE && (sym->usage & uREAD)==0 && sym->addr>=0) + sym->addr=ntv_funcid++; + stgwrite("\tsysreq.c "); + outval(sym->addr,FALSE); + if (sc_asmfile) { + stgwrite("\t; "); + stgwrite(symname); + } /* if */ + stgwrite("\n\tstack "); + outval((numargs+1)*sizeof(cell), TRUE); + code_idx+=opcodes(2)+opargs(2); + } else { + /* normal function */ + stgwrite("\tcall "); + stgwrite(sym->name); + if (sc_asmfile + && !isalpha(sym->name[0]) && sym->name[0]!='_' && sym->name[0]!=sc_ctrlchar) + { + stgwrite("\t; "); + stgwrite(symname); + } /* if */ + stgwrite("\n"); + code_idx+=opcodes(1)+opargs(1); + } /* if */ +} + +/* Return from function + * + * Global references: funcstatus (referred to only) + */ +SC_FUNC void ffret(void) +{ + stgwrite("\tretn\n"); + code_idx+=opcodes(1); +} + +SC_FUNC void ffabort(int reason) +{ + stgwrite("\thalt "); + outval(reason,TRUE); + code_idx+=opcodes(1)+opargs(1); +} + +SC_FUNC void ffbounds(cell size) +{ + if ((sc_debug & sCHKBOUNDS)!=0) { + stgwrite("\tbounds "); + outval(size,TRUE); + code_idx+=opcodes(1)+opargs(1); + } /* if */ +} + +/* + * Jump to local label number (the number is converted to a name) + */ +SC_FUNC void jumplabel(int number) +{ + stgwrite("\tjump "); + outval(number,TRUE); + code_idx+=opcodes(1)+opargs(1); +} + +/* + * Define storage (global and static variables) + */ +SC_FUNC void defstorage(void) +{ + stgwrite("dump "); +} + +/* + * Inclrement/decrement stack pointer. Note that this routine does + * nothing if the delta is zero. + */ +SC_FUNC void modstk(int delta) +{ + if (delta) { + stgwrite("\tstack "); + outval(delta, TRUE); + code_idx+=opcodes(1)+opargs(1); + } /* if */ +} + +/* set the stack to a hard offset from the frame */ +SC_FUNC void setstk(cell value) +{ + stgwrite("\tlctrl 5\n"); /* get FRM */ + assert(value<=0); /* STK should always become <= FRM */ + if (value<0) { + stgwrite("\tadd.c "); + outval(value, TRUE); /* add (negative) offset */ + code_idx+=opcodes(1)+opargs(1); + // ??? write zeros in the space between STK and the value in PRI (the new stk) + // get value of STK in ALT + // zero PRI + // need new FILL opcode that takes a variable size + } /* if */ + stgwrite("\tsctrl 4\n"); /* store in STK */ + code_idx+=opcodes(2)+opargs(2); +} + +SC_FUNC void modheap(int delta) +{ + if (delta) { + stgwrite("\theap "); + outval(delta, TRUE); + code_idx+=opcodes(1)+opargs(1); + } /* if */ +} + +SC_FUNC void setheap_pri(void) +{ + stgwrite("\theap "); /* ALT = HEA++ */ + outval(sizeof(cell), TRUE); + stgwrite("\tstor.i\n"); /* store PRI (default value) at address ALT */ + stgwrite("\tmove.pri\n"); /* move ALT to PRI: PRI contains the address */ + code_idx+=opcodes(3)+opargs(1); +} + +SC_FUNC void setheap(cell value) +{ + stgwrite("\tconst.pri "); /* load default value in PRI */ + outval(value, TRUE); + code_idx+=opcodes(1)+opargs(1); + setheap_pri(); +} + +/* + * Convert a cell number to a "byte" address; i.e. double or quadruple + * the primary register. + */ +SC_FUNC void cell2addr(void) +{ + #if defined(BIT16) + stgwrite("\tshl.c.pri 1\n"); + #else + stgwrite("\tshl.c.pri 2\n"); + #endif + code_idx+=opcodes(1)+opargs(1); +} + +/* + * Double or quadruple the alternate register. + */ +SC_FUNC void cell2addr_alt(void) +{ + #if defined(BIT16) + stgwrite("\tshl.c.alt 1\n"); + #else + stgwrite("\tshl.c.alt 2\n"); + #endif + code_idx+=opcodes(1)+opargs(1); +} + +/* + * Convert "distance of addresses" to "number of cells" in between. + * Or convert a number of packed characters to the number of cells (with + * truncation). + */ +SC_FUNC void addr2cell(void) +{ + #if defined(BIT16) + stgwrite("\tshr.c.pri 1\n"); + #else + stgwrite("\tshr.c.pri 2\n"); + #endif + code_idx+=opcodes(1)+opargs(1); +} + +/* Convert from character index to byte address. This routine does + * nothing if a character has the size of a byte. + */ +SC_FUNC void char2addr(void) +{ + if (charbits==16) { + stgwrite("\tshl.c.pri 1\n"); + code_idx+=opcodes(1)+opargs(1); + } /* if */ +} + +/* Align PRI (which should hold a character index) to an address. + * The first character in a "pack" occupies the highest bits of + * the cell. This is at the lower memory address on Big Endian + * computers and on the higher address on Little Endian computers. + * The ALIGN.pri/alt instructions must solve this machine dependence; + * that is, on Big Endian computers, ALIGN.pri/alt shuold do nothing + * and on Little Endian computers they should toggle the address. + */ +SC_FUNC void charalign(void) +{ + stgwrite("\talign.pri "); + outval(charbits/8,TRUE); + code_idx+=opcodes(1)+opargs(1); +} + +/* + * Add a constant to the primary register. + */ +SC_FUNC void addconst(cell value) +{ + if (value!=0) { + stgwrite("\tadd.c "); + outval(value,TRUE); + code_idx+=opcodes(1)+opargs(1); + } /* if */ +} + +/* + * signed multiply of primary and secundairy registers (result in primary) + */ +SC_FUNC void os_mult(void) +{ + stgwrite("\tsmul\n"); + code_idx+=opcodes(1); +} + +/* + * signed divide of alternate register by primary register (quotient in + * primary; remainder in alternate) + */ +SC_FUNC void os_div(void) +{ + stgwrite("\tsdiv.alt\n"); + code_idx+=opcodes(1); +} + +/* + * modulus of (alternate % primary), result in primary (signed) + */ +SC_FUNC void os_mod(void) +{ + stgwrite("\tsdiv.alt\n"); + stgwrite("\tmove.pri\n"); /* move ALT to PRI */ + code_idx+=opcodes(2); +} + +/* + * Add primary and alternate registers (result in primary). + */ +SC_FUNC void ob_add(void) +{ + stgwrite("\tadd\n"); + code_idx+=opcodes(1); +} + +/* + * subtract primary register from alternate register (result in primary) + */ +SC_FUNC void ob_sub(void) +{ + stgwrite("\tsub.alt\n"); + code_idx+=opcodes(1); +} + +/* + * arithmic shift left alternate register the number of bits + * given in the primary register (result in primary). + * There is no need for a "logical shift left" routine, since + * logical shift left is identical to arithmic shift left. + */ +SC_FUNC void ob_sal(void) +{ + stgwrite("\txchg\n"); + stgwrite("\tshl\n"); + code_idx+=opcodes(2); +} + +/* + * arithmic shift right alternate register the number of bits + * given in the primary register (result in primary). + */ +SC_FUNC void os_sar(void) +{ + stgwrite("\txchg\n"); + stgwrite("\tsshr\n"); + code_idx+=opcodes(2); +} + +/* + * logical (unsigned) shift right of the alternate register by the + * number of bits given in the primary register (result in primary). + */ +SC_FUNC void ou_sar(void) +{ + stgwrite("\txchg\n"); + stgwrite("\tshr\n"); + code_idx+=opcodes(2); +} + +/* + * inclusive "or" of primary and secondary registers (result in primary) + */ +SC_FUNC void ob_or(void) +{ + stgwrite("\tor\n"); + code_idx+=opcodes(1); +} + +/* + * "exclusive or" of primary and alternate registers (result in primary) + */ +SC_FUNC void ob_xor(void) +{ + stgwrite("\txor\n"); + code_idx+=opcodes(1); +} + +/* + * "and" of primary and secundairy registers (result in primary) + */ +SC_FUNC void ob_and(void) +{ + stgwrite("\tand\n"); + code_idx+=opcodes(1); +} + +/* + * test ALT==PRI; result in primary register (1 or 0). + */ +SC_FUNC void ob_eq(void) +{ + stgwrite("\teq\n"); + code_idx+=opcodes(1); +} + +/* + * test ALT!=PRI + */ +SC_FUNC void ob_ne(void) +{ + stgwrite("\tneq\n"); + code_idx+=opcodes(1); +} + +/* The abstract machine defines the relational instructions so that PRI is + * on the left side and ALT on the right side of the operator. For example, + * SLESS sets PRI to either 1 or 0 depending on whether the expression + * "PRI < ALT" is true. + * + * The compiler generates comparisons with ALT on the left side of the + * relational operator and PRI on the right side. The XCHG instruction + * prefixing the relational operators resets this. We leave it to the + * peephole optimizer to choose more compact instructions where possible. + */ + +/* Relational operator prefix for chained relational expressions. The + * "suffix" code restores the stack. + * For chained relational operators, the goal is to keep the comparison + * result "so far" in PRI and the value of the most recent operand in + * ALT, ready for a next comparison. + * The "prefix" instruction pushed the comparison result (PRI) onto the + * stack and moves the value of ALT into PRI. If there is a next comparison, + * PRI can now serve as the "left" operand of the relational operator. + */ +SC_FUNC void relop_prefix(void) +{ + stgwrite("\tpush.pri\n"); + stgwrite("\tmove.pri\n"); + code_idx+=opcodes(2); +} + +SC_FUNC void relop_suffix(void) +{ + stgwrite("\tswap.alt\n"); + stgwrite("\tand\n"); + stgwrite("\tpop.alt\n"); + code_idx+=opcodes(3); +} + +/* + * test ALTPRI (signed) + */ +SC_FUNC void os_gt(void) +{ + stgwrite("\txchg\n"); + stgwrite("\tsgrtr\n"); + code_idx+=opcodes(2); +} + +/* + * test ALT>=PRI (signed) + */ +SC_FUNC void os_ge(void) +{ + stgwrite("\txchg\n"); + stgwrite("\tsgeq\n"); + code_idx+=opcodes(2); +} + +/* + * logical negation of primary register + */ +SC_FUNC void lneg(void) +{ + stgwrite("\tnot\n"); + code_idx+=opcodes(1); +} + +/* + * two's complement primary register + */ +SC_FUNC void neg(void) +{ + stgwrite("\tneg\n"); + code_idx+=opcodes(1); +} + +/* + * one's complement of primary register + */ +SC_FUNC void invert(void) +{ + stgwrite("\tinvert\n"); + code_idx+=opcodes(1); +} + +/* + * nop + */ +SC_FUNC void nooperation(void) +{ + stgwrite("\tnop\n"); + code_idx+=opcodes(1); +} + + +/* increment symbol + */ +SC_FUNC void inc(value *lval) +{ + symbol *sym; + + sym=lval->sym; + if (lval->ident==iARRAYCELL) { + /* indirect increment, address already in PRI */ + stgwrite("\tinc.i\n"); + code_idx+=opcodes(1); + } else if (lval->ident==iARRAYCHAR) { + /* indirect increment of single character, address already in PRI */ + stgwrite("\tpush.pri\n"); + stgwrite("\tpush.alt\n"); + stgwrite("\tmove.alt\n"); /* copy address */ + stgwrite("\tlodb.i "); /* read from PRI into PRI */ + outval(charbits/8,TRUE); /* read one or two bytes */ + stgwrite("\tinc.pri\n"); + stgwrite("\tstrb.i "); /* write PRI to ALT */ + outval(charbits/8,TRUE); /* write one or two bytes */ + stgwrite("\tpop.alt\n"); + stgwrite("\tpop.pri\n"); + code_idx+=opcodes(8)+opargs(2); + } else if (lval->ident==iREFERENCE) { + assert(sym!=NULL); + stgwrite("\tpush.pri\n"); + /* load dereferenced value */ + assert(sym->vclass==sLOCAL); /* global references don't exist in Small */ + if (sym->vclass==sLOCAL) + stgwrite("\tlref.s.pri "); + else + stgwrite("\tlref.pri "); + outval(sym->addr,TRUE); + /* increment */ + stgwrite("\tinc.pri\n"); + /* store dereferenced value */ + if (sym->vclass==sLOCAL) + stgwrite("\tsref.s.pri "); + else + stgwrite("\tsref.pri "); + outval(sym->addr,TRUE); + stgwrite("\tpop.pri\n"); + code_idx+=opcodes(5)+opargs(2); + } else { + /* local or global variable */ + assert(sym!=NULL); + if (sym->vclass==sLOCAL) + stgwrite("\tinc.s "); + else + stgwrite("\tinc "); + outval(sym->addr,TRUE); + code_idx+=opcodes(1)+opargs(1); + } /* if */ +} + +/* decrement symbol + * + * in case of an integer pointer, the symbol must be incremented by 2. + */ +SC_FUNC void dec(value *lval) +{ + symbol *sym; + + sym=lval->sym; + if (lval->ident==iARRAYCELL) { + /* indirect decrement, address already in PRI */ + stgwrite("\tdec.i\n"); + code_idx+=opcodes(1); + } else if (lval->ident==iARRAYCHAR) { + /* indirect decrement of single character, address already in PRI */ + stgwrite("\tpush.pri\n"); + stgwrite("\tpush.alt\n"); + stgwrite("\tmove.alt\n"); /* copy address */ + stgwrite("\tlodb.i "); /* read from PRI into PRI */ + outval(charbits/8,TRUE); /* read one or two bytes */ + stgwrite("\tdec.pri\n"); + stgwrite("\tstrb.i "); /* write PRI to ALT */ + outval(charbits/8,TRUE); /* write one or two bytes */ + stgwrite("\tpop.alt\n"); + stgwrite("\tpop.pri\n"); + code_idx+=opcodes(8)+opargs(2); + } else if (lval->ident==iREFERENCE) { + assert(sym!=NULL); + stgwrite("\tpush.pri\n"); + /* load dereferenced value */ + assert(sym->vclass==sLOCAL); /* global references don't exist in Small */ + if (sym->vclass==sLOCAL) + stgwrite("\tlref.s.pri "); + else + stgwrite("\tlref.pri "); + outval(sym->addr,TRUE); + /* decrement */ + stgwrite("\tdec.pri\n"); + /* store dereferenced value */ + if (sym->vclass==sLOCAL) + stgwrite("\tsref.s.pri "); + else + stgwrite("\tsref.pri "); + outval(sym->addr,TRUE); + stgwrite("\tpop.pri\n"); + code_idx+=opcodes(5)+opargs(2); + } else { + /* local or global variable */ + assert(sym!=NULL); + if (sym->vclass==sLOCAL) + stgwrite("\tdec.s "); + else + stgwrite("\tdec "); + outval(sym->addr,TRUE); + code_idx+=opcodes(1)+opargs(1); + } /* if */ +} + +/* + * Jumps to "label" if PRI != 0 + */ +SC_FUNC void jmp_ne0(int number) +{ + stgwrite("\tjnz "); + outval(number,TRUE); + code_idx+=opcodes(1)+opargs(1); +} + +/* + * Jumps to "label" if PRI == 0 + */ +SC_FUNC void jmp_eq0(int number) +{ + stgwrite("\tjzer "); + outval(number,TRUE); + code_idx+=opcodes(1)+opargs(1); +} + +/* write a value in hexadecimal; optionally adds a newline */ +SC_FUNC void outval(cell val,int newline) +{ + stgwrite(itoh(val)); + if (newline) + stgwrite("\n"); +} diff --git a/legacy/embryo/src/bin/embryo_cc_sc5.c b/legacy/embryo/src/bin/embryo_cc_sc5.c new file mode 100644 index 0000000000..611699d0c9 --- /dev/null +++ b/legacy/embryo/src/bin/embryo_cc_sc5.c @@ -0,0 +1,165 @@ +/* Small compiler - Error message system + * In fact a very simple system, using only 'panic mode'. + * + * Copyright (c) ITB CompuPhase, 1997-2003 + * + * This software is provided "as-is", without any express or implied warranty. + * In no event will the authors be held liable for any damages arising from + * the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software in + * a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + * Version: $Id$ + */ +#include +#if defined __WIN32__ || defined _WIN32 || defined __MSDOS__ + #include +#endif +#if defined LINUX || defined __GNUC__ + #include +#endif +#include +#include +#include /* ANSI standardized variable argument list functions */ +#include +#if defined FORTIFY + #include "fortify.h" +#endif +#include "embryo_cc_sc.h" + +#if defined _MSC_VER + #pragma warning(push) + #pragma warning(disable:4125) /* decimal digit terminates octal escape sequence */ +#endif + +#include "embryo_cc_sc5.scp" + +#if defined _MSC_VER + #pragma warning(pop) +#endif + +static int errflag; +static int errstart; /* line number at which the instruction started */ + +/* error + * + * Outputs an error message (note: msg is passed optionally). + * If an error is found, the variable "errflag" is set and subsequent + * errors are ignored until lex() finds a semicolumn or a keyword + * (lex() resets "errflag" in that case). + * + * Global references: inpfname (reffered to only) + * fline (reffered to only) + * fcurrent (reffered to only) + * errflag (altered) + */ +SC_FUNC int error(int number,...) +{ +static char *prefix[3]={ "error", "fatal error", "warning" }; +static int lastline,lastfile,errorcount; + char *msg,*pre; + va_list argptr; + char string[128]; + + /* errflag is reset on each semicolon. + * In a two-pass compiler, an error should not be reported twice. Therefore + * the error reporting is enabled only in the second pass (and only when + * actually producing output). Fatal errors may never be ignored. + */ + if ((errflag || sc_status!=statWRITE) && (number<100 || number>=200)) + return 0; + + if (number<100){ + msg=errmsg[number-1]; + pre=prefix[0]; + errflag=TRUE; /* set errflag (skip rest of erroneous expression) */ + errnum++; + } else if (number<200){ + msg=fatalmsg[number-100]; + pre=prefix[1]; + errnum++; /* a fatal error also counts as an error */ + } else { + msg=warnmsg[number-200]; + pre=prefix[2]; + warnnum++; + } /* if */ + + strexpand(string,(unsigned char *)msg,sizeof string,SCPACK_TABLE); + + assert(errstart<=fline); + va_start(argptr,number); + if (strlen(errfname)==0) { + int start= (errstart==fline) ? -1 : errstart; + if (sc_error(number,string,inpfname,start,fline,argptr)) { + sc_closeasm(outf,TRUE); + outf=NULL; + longjmp(errbuf,3); /* user abort */ + } /* if */ + } else { + FILE *fp=fopen(errfname,"at"); + if (fp!=NULL) { + if (errstart>=0 && errstart!=fline) + fprintf(fp,"%s(%d -- %d) : %s %03d: ",inpfname,errstart,fline,pre,number); + else + fprintf(fp,"%s(%d) : %s %03d: ",inpfname,fline,pre,number); + vfprintf(fp,string,argptr); + fclose(fp); + } /* if */ + } /* if */ + va_end(argptr); + + if (number>=100 && number<200 || errnum>25){ + if (strlen(errfname)==0) { + va_start(argptr,number); + sc_error(0,"\nCompilation aborted.",NULL,0,0,argptr); + va_end(argptr); + } /* if */ + if (outf!=NULL) { + sc_closeasm(outf,TRUE); + outf=NULL; + } /* if */ + longjmp(errbuf,2); /* fatal error, quit */ + } /* if */ + + /* check whether we are seeing many errors on the same line */ + if ((errstart<0 && lastline!=fline) || lastlinefline || fcurrent!=lastfile) + errorcount=0; + lastline=fline; + lastfile=fcurrent; + if (number<200) + errorcount++; + if (errorcount>=3) + error(107); /* too many error/warning messages on one line */ + + return 0; +} + +SC_FUNC void errorset(int code) +{ + switch (code) { + case sRESET: + errflag=FALSE; /* start reporting errors */ + break; + case sFORCESET: + errflag=TRUE; /* stop reporting errors */ + break; + case sEXPRMARK: + errstart=fline; /* save start line number */ + break; + case sEXPRRELEASE: + errstart=-1; /* forget start line number */ + break; + } /* switch */ +} + +#undef SCPACK_TABLE diff --git a/legacy/embryo/src/bin/embryo_cc_sc5.scp b/legacy/embryo/src/bin/embryo_cc_sc5.scp new file mode 100644 index 0000000000..a64513da3e --- /dev/null +++ b/legacy/embryo/src/bin/embryo_cc_sc5.scp @@ -0,0 +1,283 @@ +/* Small compiler - Error message strings (plain and compressed formats) + * + * Copyright (c) ITB CompuPhase, 2000-2003 + * + * This software is provided "as-is", without any express or implied warranty. + * In no event will the authors be held liable for any damages arising from + * the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software in + * a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + * Version: $Id$ + */ + +SC_FUNC int strexpand(char *dest, unsigned char *source, int maxlen, unsigned char pairtable[128][2]); + +#define SCPACK_TABLE errstr_table +/*-*SCPACK start of pair table, do not change or remove this line */ +unsigned char errstr_table[][2] = { + {101,32}, {116,32}, {111,110}, {105,110}, {97,114}, {100,32}, {105,130}, {101,114}, {101,110}, {115,32}, {97,108}, {97,116}, {117,110}, {115,34}, {37,141}, {34,142}, + {109,136}, {121,32}, {97,110}, {114,101}, {99,116}, {134,32}, {110,111}, {101,133}, {118,138}, {115,105}, {98,108}, {111,114}, {115,116}, {41,10}, {109,98}, {100,101}, + {117,115}, {150,129}, {102,140}, {117,144}, {162,148}, {103,163}, {132,165}, {114,97}, {105,133}, {152,168}, {99,104}, {32,143}, {97,32}, {131,169}, {97,115}, {164,149}, + {111,108}, {101,120}, {97,154}, {135,32}, {132,167}, {111,102}, {105,116}, {166,129}, {101,100}, {98,128}, {178,128}, {160,129}, {105,137}, {180,145}, {121,158}, {190,176}, + {109,187}, {115,191}, {118,132}, {101,10}, {115,10}, {112,147}, {155,32}, {181,32}, {159,102}, {194,105}, {99,130}, {103,32}, {201,186}, {116,111}, {34,32}, {109,97}, + {153,122}, {171,10}, {104,97}, {100,105}, {108,111}, {111,112}, {200,131}, {139,134}, {213,135}, {101,137}, {202,156}, {143,157}, {138,32}, {192,185}, {58,209}, {105,99}, + {112,111}, {115,115}, {110,117}, {115,117}, {146,129}, {226,158}, {229,179}, {177,197}, {231,225}, {132,97}, {98,101}, {99,111}, {216,139}, {109,139}, {116,10}, {99,146}, + {44,32}, {237,170}, {131,203}, {116,104}, {117,108}, {152,117}, {108,128}, {118,128}, {101,144}, {233,148}, {174,153}, {110,32}, {131,32}, {146,32}, {239,161} +}; +/*-*SCPACK end of pair table, do not change or remove this line */ + +static char *errmsg[] = { +#ifdef SCPACK +/*001*/ "expected token: \"%s\", but found \"%s\"\n", +/*002*/ "only a single statement (or expression) can follow each \"case\"\n", +/*003*/ "declaration of a local variable must appear in a compound block\n", +/*004*/ "function \"%s\" is not implemented\n", +/*005*/ "function may not have arguments\n", +/*006*/ "must be assigned to an array\n", +/*007*/ "assertion failed\n", +/*008*/ "must be a constant expression; assumed zero\n", +/*009*/ "invalid array size (negative or zero)\n", +/*010*/ "invalid function or declaration\n", +/*011*/ "invalid outside functions\n", +/*012*/ "invalid function call, not a valid address\n", +/*013*/ "no entry point (no public functions)\n", +/*014*/ "invalid statement; not in switch\n", +/*015*/ "\"default\" case must be the last case in switch statement\n", +/*016*/ "multiple defaults in \"switch\"\n", +/*017*/ "undefined symbol \"%s\"\n", +/*018*/ "initialization data exceeds declared size\n", +/*019*/ "not a label: \"%s\"\n", +/*020*/ "invalid symbol name \"%s\"\n", +/*021*/ "symbol already defined: \"%s\"\n", +/*022*/ "must be lvalue (non-constant)\n", +/*023*/ "array assignment must be simple assignment\n", +/*024*/ "\"break\" or \"continue\" is out of context\n", +/*025*/ "function heading differs from prototype\n", +/*026*/ "no matching \"#if...\"\n", +/*027*/ "invalid character constant\n", +/*028*/ "invalid subscript (not an array or too many subscripts)\n", +/*029*/ "invalid expression, assumed zero\n", +/*030*/ "compound statement not closed at the end of file\n", +/*031*/ "unknown directive\n", +/*032*/ "array index out of bounds (variable \"%s\")\n", +/*033*/ "array must be indexed (variable \"%s\")\n", +/*034*/ "argument does not have a default value (argument %d)\n", +/*035*/ "argument type mismatch (argument %d)\n", +/*036*/ "empty statement\n", +/*037*/ "invalid string (possibly non-terminated string)\n", +/*038*/ "extra characters on line\n", +/*039*/ "constant symbol has no size\n", +/*040*/ "duplicate \"case\" label (value %d)\n", +/*041*/ "invalid ellipsis, array size is not known\n", +/*042*/ "invalid combination of class specifiers\n", +/*043*/ "character constant exceeds range for packed string\n", +/*044*/ "positional parameters must precede all named parameters\n", +/*045*/ "too many function arguments\n", +/*046*/ "unknown array size (variable \"%s\")\n", +/*047*/ "array sizes must match\n", +/*048*/ "array dimensions must match\n", +/*049*/ "invalid line continuation\n", +/*050*/ "invalid range\n", +/*051*/ "invalid subscript, use \"[ ]\" operators on major dimensions\n", +/*052*/ "only the last dimension may be variable length\n", +/*053*/ "exceeding maximum number of dimensions\n", +/*054*/ "unmatched closing brace\n", +/*055*/ "start of function body without function header\n", +/*056*/ "arrays, local variables and function arguments cannot be public (variable \"%s\")\n", +/*057*/ "unfinished expression before compiler directive\n", +/*058*/ "duplicate argument; same argument is passed twice\n", +/*059*/ "function argument may not have a default value (variable \"%s\")\n", +/*060*/ "multiple \"#else\" directives between \"#if ... #endif\"\n", +/*061*/ "operator cannot be redefined\n", +/*062*/ "number of operands does not fit the operator\n", +/*063*/ "function result tag of operator \"%s\" must be \"%s\"\n", +/*064*/ "cannot change predefined operators\n", +/*065*/ "function argument may only have a single tag (argument %d)\n", +/*066*/ "function argument may not be a reference argument or an array (argument \"%s\")\n", +/*067*/ "variable cannot be both a reference and an array (variable \"%s\")\n", +/*068*/ "invalid rational number precision in #pragma\n", +/*069*/ "rational number format already defined\n", +/*070*/ "rational number support was not enabled\n", +/*071*/ "user-defined operator must be declared before use (function \"%s\")\n", +/*072*/ "\"sizeof\" operator is invalid on \"function\" symbols\n", +/*073*/ "function argument must be an array (argument \"%s\")\n", +/*074*/ "#define pattern must start with an alphabetic character\n", +/*075*/ "input line too long (after substitutions)\n" +#else + "\261pe\224\227\315k\210:\253\360bu\201fo\214\205\217\012", + "\202l\221\254s\203g\366\234\213\370\201(\306\350\206) \357 f\260\324w ea\252 \042c\256e\042\012", + "\237cl\204\213\225\307\254\324c\334\314\300appe\204 \374\254\353m\340\214\205\232ock\012", + "\257\217 \274\241impl\370t\270\012", + "\257\317\221\241\322\367\246t\304", + "\335\372gn\227\315 \375\264y\012", + "\256s\207t\225fail\270\012", + "\335\254\332\344\350\206; \256\343m\227z\207o\012", + "\255\275\320\200(neg\213i\367\306z\207o\235", + "\255\257\306\237cl\204\327\012", + "\255out\231d\200\244\206\304", + "\255\257c\212l\360\241\254\251add\223s\304", + "\226 \210tr\221\340\203\201(\226 pu\232\337 \244\206s\235", + "\255\234\213\370t; \241\374sw\266\252\012", + "\042\310a\364t\316c\256\200\335\363\200l\256\201c\256\200\374sw\266\252 \234\213\370\356", + "m\364tip\366\310a\364t\211\374\042sw\266\252\042\012", + "\214\326\227\301\321", + "\203\266i\212iz\213\225d\213\254\261ce\270\211\237cl\204\227\320\303", + "\241\254la\352l\336", + "\255\301 nam\200\217\012", + "\301 \212\223ad\221\326\270\336", + "\335l\365\200(n\202-\332\222t\235", + "\275\372gn\220\201\335\231mp\366\372gn\220\356", + "\042b\223ak\316\306\042\312t\203ue\316\274ou\201\307\312t\261\356", + "\257head\362\323ff\207\211from pro\315typ\303", + "\226 \361\362\042#if...\042\012", + "\255\252\371\263\332\222\356", + "\255\343bscrip\201(\241\375\275\306\315o m\222\221\343bscripts\235", + "\255\350\206\360\256\343m\227z\207o\012", + "\353m\340\214\205\234\213\370\201\241c\324s\227a\201\363\200\210\205\307fil\303", + "\214k\226w\373\323\223\224iv\303", + "\275\203\237x ou\201\307bo\214d\211(\314\333", + "\275\335\203\237x\227(\314\333", + "\267do\331\241\322\367\254\310a\364\201\365\200(\267%d\235", + "\267typ\200mis\361 (\267%d\235", + "empt\221\234\213\370\356", + "\255\234r\362(\340s\231\232\221n\202-t\207m\203\213\227\234r\203g\235", + "\261t\247 \252\371\207\211\202 l\203\303", + "\332\344\301 \322\211\226 \320\303", + "dupl\337\213\200\042c\256e\316la\352l (\365\200%d\235", + "\255ellip\231s\360\275\320\200\274\241k\226wn\012", + "\255\353\236\203\213\225\307cl\256\211specifi\207\304", + "\252\371\263\332\344\261ce\270\211r\222g\200f\306pack\227\234r\203g\012", + "\340\231t\206\334p\351met\207\211\300\305c\270\200\212l nam\227p\351met\207\304", + "\315o m\222\221\257\246t\304", + "\214k\226w\373\275\320\200(\314\333", + "\275\320\331\300\361\012", + "\275\323\220s\206\211\300\361\012", + "\255l\203\200\312t\203u\327\012", + "\255r\222g\303", + "\255\343bscript\360\240\200\042[ ]\316\354\233\211\202 \317j\306\323\220s\206\304", + "\202l\221\363\200l\256\201\323\220s\225\317\221\271\314l\210g\363\012", + "\261ce\270\362\317ximum \346\307\323\220s\206\304", + "\214\361\227c\324s\362b\247c\303", + "\234\204\201\307\257bod\221w\266hou\201\257head\207\012", + "\264ys\360\324c\334\311\262\331\222\205\257\246t\211\376\271pu\232\337 (\314\333", + "\214f\203ish\227\350\225\352f\233\200\353mpil\263\323\223\224iv\303", + "dupl\337\213\200\246t; sam\200\267\274p\256s\227tw\337\303", + "\257\267\317\221\241\322\367\254\310a\364\201\365\200(\314\333", + "m\364tip\366\042#else\316\323\223\224iv\331\352twe\210 \042#if ... #\210\323f\042\012", + "\354\306\376\271\223\326\270\012", + "\346\307\330\222d\211do\331\241fi\201\363\200\354\233\012", + "\257\223\343l\201ta\313\307\354\233\253 \335\217\012", + "\376\252\222g\200\305\326\227\354\233\304", + "\257\267\317\221\202l\221\322\367\254s\203g\366ta\313(\267%d\235", + "\257\267\317\221\241\271\254\223f\207\210c\200\267\306\375\275(\267\333", + "\314\376\271bo\363 \254\223f\207\210c\200\222\205\375\275(\314\333", + "\255r\327\334\346\305cis\225\374#p\247g\317\012", + "r\327\334\346f\233\317\201\212\223ad\221\326\270\012", + "r\327\334\346\343pp\233\201wa\211\241\210\262\270\012", + "\240\207-\326\227\354\306\335\237cl\204\227\352f\233\200\240\200(\257\333", + "\042\320e\265\316\354\306\274\255\202 \042\244\206\316\301\304", + "\257\267\335\375\275(\267\333", + "#\326\200p\213t\207\373\300\234\204\201w\266h \375\212p\322\352t\337 \252\371\207\012", + "\203pu\201l\203\200\315o l\202\313(aft\263\343b\234\266ut\206s\235" +#endif + }; + +static char *fatalmsg[] = { +#ifdef SCPACK +/*100*/ "cannot read from file: \"%s\"\n", +/*101*/ "cannot write to file: \"%s\"\n", +/*102*/ "table overflow: \"%s\"\n", + /* table can be: loop table + * literal table + * staging buffer + * parser stack (recursive include?) + * option table (response file) + * peephole optimizer table + */ +/*103*/ "insufficient memory\n", +/*104*/ "invalid assembler instruction \"%s\"\n", +/*105*/ "numeric overflow, exceeding capacity\n", +/*106*/ "compaction buffer overflow\n", +/*107*/ "too many error messages on one line\n" +#else + "\376\223a\205from file\336", + "\376wr\266\200\315 file\336", + "t\272ov\207f\324w\336", + "\203\343ff\337i\210\201mem\233y\012", + "\255\256sem\232\263\203\234ru\224\225\217\012", + "\342m\207\337 ov\207f\324w\360\261ce\270\362capac\266y\012", + "\353mpa\224\225buff\263ov\207f\324w\012", + "\315o m\222\221\207r\306me\341ag\331\202 \202\200l\203\303" +#endif + }; + +static char *warnmsg[] = { +#ifdef SCPACK +/*200*/ "symbol \"%s\" is truncated to %d characters\n", +/*201*/ "redefinition of constant/macro (symbol \"%s\")\n", +/*202*/ "number of arguments does not match definition\n", +/*203*/ "symbol is never used: \"%s\"\n", +/*204*/ "symbol is assigned a value that is never used: \"%s\"\n", +/*205*/ "redundant code: constant expression is zero\n", +/*206*/ "redundant test: constant expression is non-zero\n", +/*207*/ "unknown #pragma\n", +/*208*/ "function uses both \"return;\" and \"return ;\"\n", +/*209*/ "function \"%s\" should return a value\n", +/*210*/ "possible use of symbol before initialization: \"%s\"\n", +/*211*/ "possibly unintended assignment\n", +/*212*/ "possibly unintended bitwise operation\n", +/*213*/ "tag mismatch\n", +/*214*/ "possibly a \"const\" array argument was intended: \"%s\"\n", +/*215*/ "expression has no effect\n", +/*216*/ "nested comment\n", +/*217*/ "loose indentation\n", +/*218*/ "old style prototypes used with optional semicolumns\n", +/*219*/ "local variable \"%s\" shadows a variable at a preceding level\n", +/*220*/ "exported or native symbol \"%s\" is truncated to %d characters\n", +/*221*/ "label name \"%s\" shadows tag name\n", +/*222*/ "number of digits exceeds rational number precision\n", +/*223*/ "redundant \"sizeof\": argument size is always 1 (symbol \"%s\")\n", +/*224*/ "indeterminate array size in \"sizeof\" expression (symbol \"%s\")\n", +/*225*/ "unreachable code\n", +/*226*/ "a variable is assigned to itself (symbol \"%s\")\n" +#else + "\301\253 \274tr\214c\213\227\315 %\205\252\371\207\304", + "\223\326\266\225\307\332\222t/\317cro (\301\253\235", + "\346\307\246t\211do\331\241\361 \326\266\206\012", + "\301 \274nev\263\240\270\336", + "\301 \274\372gn\227\254\365\200t\322\201\274nev\263\240\270\336", + "\223d\214d\344\353\237: \332\344\350\225\274z\207o\012", + "\223d\214d\344te\234: \332\344\350\225\274n\202-z\207o\012", + "\214k\226w\373#p\247g\317\012", + "\257\240\331bo\363 \042\223turn;\316\222\205\042\223tur\373<\365e>;\042\012", + "\257\217 sho\364\205\223tur\373\254\365\303", + "\340s\231\232\200\240\200\307\301 \352f\233\200\203\266i\212iz\327\336", + "\340s\231\232\221\214\203t\210d\227\372gn\220\356", + "\340s\231\232\221\214\203t\210d\227b\266wis\200\330\327\012", + "ta\313mis\361\012", + "\340s\231\232\221\254\042\332\316\275\267wa\211\203t\210\237d\336", + "\350\225\322\211\226 effe\224\012", + "ne\234\227\353m\220\356", + "\324os\200\203d\210t\327\012", + "\260\205\234y\366pro\315typ\331\240\227w\266h \325t\206\334sem\337\260umn\304", + "\324c\334\314\217 s\322dow\211\254\314a\201\254\305c\270\362level\012", + "\261p\233t\227\306n\213i\367\301\253 \274tr\214c\213\227\315 %\205\252\371\207\304", + "la\352l nam\200\217 s\322dow\211ta\313nam\303", + "\346\307\323g\266\211\261ce\270\211r\327\334\346\305cis\206\012", + "\223d\214d\344\042\320e\265\042: \267\320\200\274\212way\2111 (\301\253\235", + "\203\237t\207m\203\213\200\275\320\200\374\042\320e\265\316\350\225(\301\253\235", + "\214\223a\252\272\353\237\012", + "\254\314\274\372gn\227\315 \266self (\301\253\235" +#endif + }; diff --git a/legacy/embryo/src/bin/embryo_cc_sc6.c b/legacy/embryo/src/bin/embryo_cc_sc6.c new file mode 100644 index 0000000000..44381f45c1 --- /dev/null +++ b/legacy/embryo/src/bin/embryo_cc_sc6.c @@ -0,0 +1,967 @@ +/* Small compiler - Binary code generation (the "assembler") + * + * Copyright (c) ITB CompuPhase, 1997-2003 + * + * This software is provided "as-is", without any express or implied warranty. + * In no event will the authors be held liable for any damages arising from + * the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software in + * a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + * Version: $Id$ + */ +#include +#include +#include /* for macro max() */ +#include +#include +#if defined LINUX + #include +#endif +#if defined FORTIFY + #include "fortify.h" +#endif +#include "embryo_cc_sc.h" + +typedef cell (*OPCODE_PROC)(FILE *fbin,char *params,cell opcode); + +typedef struct { + cell opcode; + char *name; + int segment; /* sIN_CSEG=parse in cseg, sIN_DSEG=parse in dseg */ + OPCODE_PROC func; +} OPCODE; + +static cell codeindex; /* similar to "code_idx" */ +static cell *lbltab; /* label table */ +static int writeerror; +static int bytes_in, bytes_out; + +/* apparently, strtol() does not work correctly on very large (unsigned) + * hexadecimal values */ +static ucell hex2long(char *s,char **n) +{ + unsigned long result=0L; + int negate=FALSE; + int digit; + + /* ignore leading whitespace */ + while (*s==' ' || *s=='\t') + s++; + + /* allow a negation sign to create the two's complement of numbers */ + if (*s=='-') { + negate=TRUE; + s++; + } /* if */ + + assert((*s>='0' && *s<='9') || (*s>='a' && *s<='f') || (*s>='a' && *s<='f')); + for ( ;; ) { + if (*s>='0' && *s<='9') + digit=*s-'0'; + else if (*s>='a' && *s<='f') + digit=*s-'a' + 10; + else if (*s>='A' && *s<='F') + digit=*s-'A' + 10; + else + break; /* probably whitespace */ + result=(result<<4) | digit; + s++; + } /* for */ + if (n!=NULL) + *n=s; + if (negate) + result=(~result)+1; /* take two's complement of the result */ + return (ucell)result; +} + +#if BYTE_ORDER==BIG_ENDIAN +static short *align16(short *v) +{ + unsigned char *s = (unsigned char *)v; + unsigned char t; + + /* swap two bytes */ + t=s[0]; + s[0]=s[1]; + s[1]=t; + return v; +} + +static long *align32(long *v) +{ + unsigned char *s = (unsigned char *)v; + unsigned char t; + + /* swap outer two bytes */ + t=s[0]; + s[0]=s[3]; + s[3]=t; + /* swap inner two bytes */ + t=s[1]; + s[1]=s[2]; + s[2]=t; + return v; +} + #if defined BIT16 + #define aligncell(v) align16(v) + #else + #define aligncell(v) align32(v) + #endif +#else + #define align16(v) (v) + #define align32(v) (v) + #define aligncell(v) (v) +#endif + +static char *skipwhitespace(char *str) +{ + while (isspace(*str)) + str++; + return str; +} + +static char *stripcomment(char *str) +{ + char *ptr=strchr(str,';'); + if (ptr!=NULL) { + *ptr++='\n'; /* terminate the line, but leave the '\n' */ + *ptr='\0'; + } /* if */ + return str; +} + +static void write_encoded(FILE *fbin,ucell *c,int num) +{ + assert(sizeof(cell)<=4); /* code must be adjusted for larger cells */ + assert(fbin!=NULL); + while (num-->0) { + if (sc_compress) { + ucell p=(ucell)*c; + unsigned char t[5]; /* a 32-bit cell is encoded in max. 5 bytes (3 bytes for a 16-bit cell) */ + unsigned char code; + int index; + for (index=0; index<5; index++) { + t[index]=(unsigned char)(p & 0x7f); /* store 7 bits */ + p>>=7; + } /* for */ + /* skip leading zeros */ + while (index>1 && t[index-1]==0 && (t[index-2] & 0x40)==0) + index--; + /* skip leading -1s */ /* ??? for BIT16, check for index==3 && t[index-1]==0x03 */ + if (index==5 && t[index-1]==0x0f && (t[index-2] & 0x40)!=0) + index--; + while (index>1 && t[index-1]==0x7f && (t[index-2] & 0x40)!=0) + index--; + /* write high byte first, write continuation bits */ + assert(index>0); + while (index-->0) { + code=(unsigned char)((index==0) ? t[index] : (t[index]|0x80)); + writeerror |= !sc_writebin(fbin,&code,1); + bytes_out++; + } /* while */ + bytes_in+=sizeof *c; + assert(AMX_EXPANDMARGIN>2); + if (bytes_out-bytes_in>=AMX_EXPANDMARGIN-2) + error(106); /* compression buffer overflow */ + } else { + assert((sc_lengthbin(fbin) % sizeof(cell)) == 0); + writeerror |= !sc_writebin(fbin,aligncell(c),sizeof *c); + } /* if */ + c++; + } /* while */ +} + +#if defined __BORLANDC__ || defined __WATCOMC__ + #pragma argsused +#endif +static cell noop(FILE *fbin,char *params,cell opcode) +{ + return 0; +} + +#if defined __BORLANDC__ || defined __WATCOMC__ + #pragma argsused +#endif +static cell parm0(FILE *fbin,char *params,cell opcode) +{ + if (fbin!=NULL) + write_encoded(fbin,(ucell*)&opcode,1); + return opcodes(1); +} + +static cell parm1(FILE *fbin,char *params,cell opcode) +{ + ucell p=hex2long(params,NULL); + if (fbin!=NULL) { + write_encoded(fbin,(ucell*)&opcode,1); + write_encoded(fbin,&p,1); + } /* if */ + return opcodes(1)+opargs(1); +} + +static cell parm2(FILE *fbin,char *params,cell opcode) +{ + ucell p[2]; + + p[0]=hex2long(params,¶ms); + p[1]=hex2long(params,NULL); + if (fbin!=NULL) { + write_encoded(fbin,(ucell*)&opcode,1); + write_encoded(fbin,p,2); + } /* if */ + return opcodes(1)+opargs(2); +} + +#if defined __BORLANDC__ || defined __WATCOMC__ + #pragma argsused +#endif +static cell do_dump(FILE *fbin,char *params,cell opcode) +{ + ucell p; + int num = 0; + + while (*params!='\0') { + p=hex2long(params,¶ms); + if (fbin!=NULL) + write_encoded(fbin,&p,1); + num++; + while (isspace(*params)) + params++; + } /* while */ + return num*sizeof(cell); +} + +static cell do_call(FILE *fbin,char *params,cell opcode) +{ + char name[sNAMEMAX+1]; + int i; + symbol *sym; + ucell p; + + for (i=0; !isspace(*params); i++,params++) { + assert(*params!='\0'); + assert(iident==iFUNCTN || sym->ident==iREFFUNC); + assert(sym->vclass==sGLOBAL); + + p=sym->addr; + if (fbin!=NULL) { + write_encoded(fbin,(ucell*)&opcode,1); + write_encoded(fbin,&p,1); + } /* if */ + return opcodes(1)+opargs(1); +} + +static cell do_jump(FILE *fbin,char *params,cell opcode) +{ + int i; + ucell p; + + i=(int)hex2long(params,NULL); + assert(i>=0 && i0 && isspace(params[len-1])) + len--; + params[len++]='\0'; /* zero-terminate */ + while (len % sizeof(cell) != 0) + params[len++]='\0'; /* pad with zeros up to full cell */ + assert(len>0 && len<256); + clen=len+sizeof(cell); /* add size of file ordinal */ + + if (fbin!=NULL) { + write_encoded(fbin,(ucell*)&opcode,1); + write_encoded(fbin,&clen,1); + write_encoded(fbin,&p,1); + write_encoded(fbin,(ucell*)params,len/sizeof(cell)); + } /* if */ + return opcodes(1)+opargs(1)+clen; /* other argument is in clen */ +} + +static cell do_symbol(FILE *fbin,char *params,cell opcode) +{ + char *endptr; + ucell offset, clen, flags; + int len; + unsigned char mclass,type; + + for (endptr=params; !isspace(*endptr) && endptr!='\0'; endptr++) + /* nothing */; + assert(*endptr==' '); + + len=(int)(endptr-params); + assert(len>0 && len=0 && i=0 && i=MAX_INSTR_LEN) + return 0; + strncpy(str,instr,maxlen); + str[maxlen]='\0'; /* make sure the string is zero terminated */ + /* look up the instruction with a binary search + * the assembler is case insensitive to instructions (but case sensitive + * to symbols) + */ + low=1; /* entry 0 is reserved (for "not found") */ + high=(sizeof opcodelist / sizeof opcodelist[0])-1; + while (low0) + low=mid+1; + else + high=mid; + } /* while */ + + assert(low==high); + if (stricmp(str,opcodelist[low].name)==0) + return low; /* found */ + return 0; /* not found, return special index */ +} + +SC_FUNC void assemble(FILE *fout,FILE *fin) +{ + typedef struct tagFUNCSTUB { + uint32_t address,nameofs; + } FUNCSTUB; + AMX_HEADER hdr; + FUNCSTUB func; + int numpublics,numnatives,numlibraries,numpubvars,numtags,padding; + long nametablesize,nameofs; + char line[256],*instr,*params; + int i,pass; + int16_t count; + symbol *sym, **nativelist; + constvalue *constptr; + cell mainaddr; + + #if !defined NDEBUG + /* verify that the opcode list is sorted (skip entry 1; it is reserved + * for a non-existant opcode) + */ + assert(opcodelist[1].name!=NULL); + for (i=2; i<(sizeof opcodelist / sizeof opcodelist[0]); i++) { + assert(opcodelist[i].name!=NULL); + assert(stricmp(opcodelist[i].name,opcodelist[i-1].name)>0); + } /* for */ + #endif + + writeerror=FALSE; + nametablesize=sizeof(int16_t); + numpublics=0; + numnatives=0; + numpubvars=0; + mainaddr=-1; + /* count number of public and native functions and public variables */ + for (sym=glbtab.next; sym!=NULL; sym=sym->next) { + char alias[sNAMEMAX+1]=""; + int match=0; + if (sym->ident==iFUNCTN) { + assert(strlen(sym->name)<=sNAMEMAX); + if ((sym->usage & uNATIVE)!=0 && (sym->usage & uREAD)!=0 && sym->addr>=0) { + match=++numnatives; + if (!lookup_alias(alias,sym->name)) + strcpy(alias,sym->name); + } /* if */ + if ((sym->usage & uPUBLIC)!=0 && (sym->usage & uDEFINE)!=0) { + match=++numpublics; + strcpy(alias,sym->name); + } /* if */ + if (strcmp(sym->name,uMAINFUNC)==0) { + assert(sym->vclass==sGLOBAL); + mainaddr=sym->addr; + } /* if */ + } else if (sym->ident==iVARIABLE) { + if ((sym->usage & uPUBLIC)!=0) { + match=++numpubvars; + strcpy(alias,sym->name); + } /* if */ + } /* if */ + if (match) { + assert(strlen(alias)>0); + nametablesize+=strlen(alias)+1; + } /* if */ + } /* for */ + assert(numnatives==ntv_funcid); + + /* count number of libraries */ + numlibraries=0; + for (constptr=libname_tab.next; constptr!=NULL; constptr=constptr->next) { + if (constptr->value>0) { + assert(strlen(constptr->name)>0); + numlibraries++; + nametablesize+=strlen(constptr->name)+1; + } /* if */ + } /* for */ + + /* count number of public tags */ + numtags=0; + for (constptr=tagname_tab.next; constptr!=NULL; constptr=constptr->next) { + if ((constptr->value & PUBLICTAG)!=0) { + assert(strlen(constptr->name)>0); + numtags++; + nametablesize+=strlen(constptr->name)+1; + } /* if */ + } /* for */ + + /* pad the header to sc_dataalign + * => thereby the code segment is aligned + * => since the code segment is padded to a sc_dataalign boundary, the data segment is aligned + * => and thereby the stack top is aligned too + */ + assert(sc_dataalign!=0); + padding= sc_dataalign - (sizeof hdr + nametablesize) % sc_dataalign; + if (padding==sc_dataalign) + padding=0; + + /* write the abstract machine header */ + memset(&hdr, 0, sizeof hdr); + hdr.magic=(unsigned short)0xF1E0; + hdr.file_version=CUR_FILE_VERSION; + hdr.amx_version=MIN_AMX_VERSION; + hdr.flags=(short)(sc_debug & sSYMBOLIC); + if (charbits==16) + hdr.flags|=AMX_FLAG_CHAR16; + if (sc_compress) + hdr.flags|=AMX_FLAG_COMPACT; + if (sc_debug==0) + hdr.flags|=AMX_FLAG_NOCHECKS; + #if BYTE_ORDER==BIG_ENDIAN + hdr.flags|=AMX_FLAG_BIGENDIAN; + #endif + hdr.defsize=sizeof(FUNCSTUB); + assert((hdr.defsize % sizeof(cell))==0); + hdr.publics=sizeof hdr; /* public table starts right after the header */ + hdr.natives=hdr.publics + numpublics*sizeof(FUNCSTUB); + hdr.libraries=hdr.natives + numnatives*sizeof(FUNCSTUB); + hdr.pubvars=hdr.libraries + numlibraries*sizeof(FUNCSTUB); + hdr.tags=hdr.pubvars + numpubvars*sizeof(FUNCSTUB); + hdr.nametable=hdr.tags + numtags*sizeof(FUNCSTUB); + hdr.cod=hdr.nametable + nametablesize + padding; + hdr.dat=hdr.cod + code_idx; + hdr.hea=hdr.dat + glb_declared*sizeof(cell); + hdr.stp=hdr.hea + sc_stksize*sizeof(cell); + hdr.cip=mainaddr; + hdr.size=hdr.hea; /* preset, this is incorrect in case of compressed output */ + #if BYTE_ORDER==BIG_ENDIAN + align32(&hdr.size); + align16(&hdr.magic); + align16(&hdr.flags); + align16(&hdr.defsize); + align32(&hdr.publics); + align32(&hdr.natives); + align32(&hdr.libraries); + align32(&hdr.pubvars); + align32(&hdr.tags); + align32(&hdr.nametable); + align32(&hdr.cod); + align32(&hdr.dat); + align32(&hdr.hea); + align32(&hdr.stp); + align32(&hdr.cip); + #endif + sc_writebin(fout,&hdr,sizeof hdr); + + /* dump zeros up to the rest of the header, so that we can easily "seek" */ + for (nameofs=sizeof hdr; nameofsnext) { + if (sym->ident==iFUNCTN + && (sym->usage & uPUBLIC)!=0 && (sym->usage & uDEFINE)!=0) + { + assert(sym->vclass==sGLOBAL); + func.address=sym->addr; + func.nameofs=nameofs; + #if BYTE_ORDER==BIG_ENDIAN + align32(&func.address); + align32(&func.nameofs); + #endif + fseek(fout,hdr.publics+count*sizeof(FUNCSTUB),SEEK_SET); + sc_writebin(fout,&func,sizeof func); + fseek(fout,func.nameofs,SEEK_SET); + sc_writebin(fout,sym->name,strlen(sym->name)+1); + nameofs+=strlen(sym->name)+1; + count++; + } /* if */ + } /* for */ + + /* write the natives table */ + /* The native functions must be written in sorted order. (They are + * sorted on their "id", not on their name). A nested loop to find + * each successive function would be an O(n^2) operation. But we + * do not really need to sort, because the native function id's + * are sequential and there are no duplicates. So we first walk + * through the complete symbol list and store a pointer to every + * native function of interest in a temporary table, where its id + * serves as the index in the table. Now we can walk the table and + * have all native functions in sorted order. + */ + if (numnatives>0) { + nativelist=(symbol **)malloc(numnatives*sizeof(symbol *)); + if (nativelist==NULL) + error(103); /* insufficient memory */ + #if !defined NDEBUG + memset(nativelist,0,numnatives*sizeof(symbol *)); /* for NULL checking */ + #endif + for (sym=glbtab.next; sym!=NULL; sym=sym->next) { + if (sym->ident==iFUNCTN && (sym->usage & uNATIVE)!=0 && (sym->usage & uREAD)!=0 && sym->addr>=0) { + assert(sym->addr < numnatives); + nativelist[(int)sym->addr]=sym; + } /* if */ + } /* for */ + count=0; + for (i=0; iname)) { + assert(strlen(sym->name)<=sNAMEMAX); + strcpy(alias,sym->name); + } /* if */ + assert(sym->vclass==sGLOBAL); + func.address=0; + func.nameofs=nameofs; + #if BYTE_ORDER==BIG_ENDIAN + align32(&func.address); + align32(&func.nameofs); + #endif + fseek(fout,hdr.natives+count*sizeof(FUNCSTUB),SEEK_SET); + sc_writebin(fout,&func,sizeof func); + fseek(fout,func.nameofs,SEEK_SET); + sc_writebin(fout,alias,strlen(alias)+1); + nameofs+=strlen(alias)+1; + count++; + } /* for */ + free(nativelist); + } /* if */ + + /* write the libraries table */ + count=0; + for (constptr=libname_tab.next; constptr!=NULL; constptr=constptr->next) { + if (constptr->value>0) { + assert(strlen(constptr->name)>0); + func.address=0; + func.nameofs=nameofs; + #if BYTE_ORDER==BIG_ENDIAN + align32(&func.address); + align32(&func.nameofs); + #endif + fseek(fout,hdr.libraries+count*sizeof(FUNCSTUB),SEEK_SET); + sc_writebin(fout,&func,sizeof func); + fseek(fout,func.nameofs,SEEK_SET); + sc_writebin(fout,constptr->name,strlen(constptr->name)+1); + nameofs+=strlen(constptr->name)+1; + count++; + } /* if */ + } /* for */ + + /* write the public variables table */ + count=0; + for (sym=glbtab.next; sym!=NULL; sym=sym->next) { + if (sym->ident==iVARIABLE && (sym->usage & uPUBLIC)!=0) { + assert((sym->usage & uDEFINE)!=0); + assert(sym->vclass==sGLOBAL); + func.address=sym->addr; + func.nameofs=nameofs; + #if BYTE_ORDER==BIG_ENDIAN + align32(&func.address); + align32(&func.nameofs); + #endif + fseek(fout,hdr.pubvars+count*sizeof(FUNCSTUB),SEEK_SET); + sc_writebin(fout,&func,sizeof func); + fseek(fout,func.nameofs,SEEK_SET); + sc_writebin(fout,sym->name,strlen(sym->name)+1); + nameofs+=strlen(sym->name)+1; + count++; + } /* if */ + } /* for */ + + /* write the public tagnames table */ + count=0; + for (constptr=tagname_tab.next; constptr!=NULL; constptr=constptr->next) { + if ((constptr->value & PUBLICTAG)!=0) { + assert(strlen(constptr->name)>0); + func.address=constptr->value & TAGMASK; + func.nameofs=nameofs; + #if BYTE_ORDER==BIG_ENDIAN + align32(&func.address); + align32(&func.nameofs); + #endif + fseek(fout,hdr.tags+count*sizeof(FUNCSTUB),SEEK_SET); + sc_writebin(fout,&func,sizeof func); + fseek(fout,func.nameofs,SEEK_SET); + sc_writebin(fout,constptr->name,strlen(constptr->name)+1); + nameofs+=strlen(constptr->name)+1; + count++; + } /* if */ + } /* for */ + + /* write the "maximum name length" field in the name table */ + assert(nameofs==hdr.nametable+nametablesize); + fseek(fout,hdr.nametable,SEEK_SET); + count=sNAMEMAX; + #if BYTE_ORDER==BIG_ENDIAN + align16(&count); + #endif + sc_writebin(fout,&count,sizeof count); + fseek(fout,hdr.cod,SEEK_SET); + + /* First pass: relocate all labels */ + /* This pass is necessary because the code addresses of labels is only known + * after the peephole optimization flag. Labels can occur inside expressions + * (e.g. the conditional operator), which are optimized. + */ + lbltab=NULL; + if (labnum>0) { + /* only very short programs have zero labels; no first pass is needed + * if there are no labels */ + lbltab=(cell *)malloc(labnum*sizeof(cell)); + if (lbltab==NULL) + error(103); /* insufficient memory */ + codeindex=0; + sc_resetasm(fin); + while (sc_readasm(fin,line,sizeof line)!=NULL) { + stripcomment(line); + instr=skipwhitespace(line); + /* ignore empty lines */ + if (*instr=='\0') + continue; + if (tolower(*instr)=='l' && *(instr+1)=='.') { + int lindex=(int)hex2long(instr+2,NULL); + assert(lindexinstr); + i=findopcode(instr,(int)(params-instr)); + if (opcodelist[i].name==NULL) { + *params='\0'; + error(104,instr); /* invalid assembler instruction */ + } /* if */ + if (opcodelist[i].segment==sIN_CSEG) + codeindex+=opcodelist[i].func(NULL,skipwhitespace(params),opcodelist[i].opcode); + } /* if */ + } /* while */ + } /* if */ + + /* Second pass (actually 2 more passes, one for all code and one for all data) */ + bytes_in=0; + bytes_out=0; + for (pass=sIN_CSEG; pass<=sIN_DSEG; pass++) { + sc_resetasm(fin); + while (sc_readasm(fin,line,sizeof line)!=NULL) { + stripcomment(line); + instr=skipwhitespace(line); + /* ignore empty lines and labels (labels have a special syntax, so these + * must be parsed separately) */ + if (*instr=='\0' || tolower(*instr)=='l' && *(instr+1)=='.') + continue; + /* get to the end of the instruction (make use of the '\n' that fgets() + * added at the end of the line; this way we will *always* drop on a + * whitespace character) */ + for (params=instr; *params!='\0' && !isspace(*params); params++) + /* nothing */; + assert(params>instr); + i=findopcode(instr,(int)(params-instr)); + assert(opcodelist[i].name!=NULL); + if (opcodelist[i].segment==pass) + opcodelist[i].func(fout,skipwhitespace(params),opcodelist[i].opcode); + } /* while */ + } /* for */ + if (bytes_out-bytes_in>0) + error(106); /* compression buffer overflow */ + + if (lbltab!=NULL) { + free(lbltab); + #if !defined NDEBUG + lbltab=NULL; + #endif + } /* if */ + + if (writeerror) + error(101,"disk full"); + + /* adjust the header */ + if (sc_compress) { + hdr.size=sc_lengthbin(fout); + #if BYTE_ORDER==BIG_ENDIAN + align32(&hdr.size); + #endif + sc_resetbin(fout); /* "size" is the very first field */ + sc_writebin(fout,&hdr.size,sizeof hdr.size); + } /* if */ +} diff --git a/legacy/embryo/src/bin/embryo_cc_sc7.c b/legacy/embryo/src/bin/embryo_cc_sc7.c new file mode 100644 index 0000000000..5f12ee6f22 --- /dev/null +++ b/legacy/embryo/src/bin/embryo_cc_sc7.c @@ -0,0 +1,606 @@ +/* Small compiler - Staging buffer and optimizer + * + * The staging buffer + * ------------------ + * The staging buffer allows buffered output of generated code, deletion + * of redundant code, optimization by a tinkering process and reversing + * the ouput of evaluated expressions (which is used for the reversed + * evaluation of arguments in functions). + * Initially, stgwrite() writes to the file directly, but after a call to + * stgset(TRUE), output is redirected to the buffer. After a call to + * stgset(FALSE), stgwrite()'s output is directed to the file again. Thus + * only one routine is used for writing to the output, which can be + * buffered output or direct output. + * + * staging buffer variables: stgbuf - the buffer + * stgidx - current index in the staging buffer + * staging - if true, write to the staging buffer; + * if false, write to file directly. + * + * Copyright (c) ITB CompuPhase, 1997-2003 + * + * This software is provided "as-is", without any express or implied warranty. + * In no event will the authors be held liable for any damages arising from + * the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software in + * a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + * Version: $Id$ + */ +#include +#include +#include /* for atoi() */ +#include +#include +#if defined FORTIFY + #include "fortify.h" +#endif +#include "embryo_cc_sc.h" + +#if defined _MSC_VER + #pragma warning(push) + #pragma warning(disable:4125) /* decimal digit terminates octal escape sequence */ +#endif + +#include "embryo_cc_sc7.scp" + +#if defined _MSC_VER + #pragma warning(pop) +#endif + +static void stgstring(char *start,char *end); +static void stgopt(char *start,char *end); + + +#define sSTG_GROW 512 +#define sSTG_MAX 20480 + +static char *stgbuf = NULL; +static int stgmax = 0; /* current size of the staging buffer */ + +#define CHECK_STGBUFFER(index) if ((int)(index)>=stgmax) grow_stgbuffer((index)+1) + +static void grow_stgbuffer(int requiredsize) +{ + char *p; + int clear = stgbuf==NULL; /* if previously none, empty buffer explicitly */ + + assert(stgmaxsSTG_MAX) + error(102,"staging buffer"); /* staging buffer overflow (fatal error) */ + stgmax=requiredsize+sSTG_GROW; + if (stgbuf!=NULL) + p=(char *)realloc(stgbuf,stgmax*sizeof(char)); + else + p=(char *)malloc(stgmax*sizeof(char)); + if (p==NULL) + error(102,"staging buffer"); /* staging buffer overflow (fatal error) */ + stgbuf=p; + if (clear) + *stgbuf='\0'; +} + +SC_FUNC void stgbuffer_cleanup(void) +{ + if (stgbuf!=NULL) { + free(stgbuf); + stgbuf=NULL; + stgmax=0; + } /* if */ +} + +/* the variables "stgidx" and "staging" are declared in "scvars.c" */ + +/* stgmark + * + * Copies a mark into the staging buffer. At this moment there are three + * possible marks: + * sSTARTREORDER identifies the beginning of a series of expression + * strings that must be written to the output file in + * reordered order + * sENDREORDER identifies the end of 'reverse evaluation' + * sEXPRSTART + idx only valid within a block that is evaluated in + * reordered order, it identifies the start of an + * expression; the "idx" value is the argument position + * + * Global references: stgidx (altered) + * stgbuf (altered) + * staging (referred to only) + */ +SC_FUNC void stgmark(char mark) +{ + if (staging) { + CHECK_STGBUFFER(stgidx); + stgbuf[stgidx++]=mark; + } /* if */ +} + +static int filewrite(char *str) +{ + if (sc_status==statWRITE) + return sc_writeasm(outf,str); + return TRUE; +} + +/* stgwrite + * + * Writes the string "st" to the staging buffer or to the output file. In the + * case of writing to the staging buffer, the terminating byte of zero is + * copied too, but... the optimizer can only work on complete lines (not on + * fractions of it. Therefore if the string is staged, if the last character + * written to the buffer is a '\0' and the previous-to-last is not a '\n', + * the string is concatenated to the last string in the buffer (the '\0' is + * overwritten). This also means an '\n' used in the middle of a string isn't + * recognized and could give wrong results with the optimizer. + * Even when writing to the output file directly, all strings are buffered + * until a whole line is complete. + * + * Global references: stgidx (altered) + * stgbuf (altered) + * staging (referred to only) + */ +SC_FUNC void stgwrite(char *st) +{ + int len; + + CHECK_STGBUFFER(0); + if (staging) { + if (stgidx>=2 && stgbuf[stgidx-1]=='\0' && stgbuf[stgidx-2]!='\n') + stgidx-=1; /* overwrite last '\0' */ + while (*st!='\0') { /* copy to staging buffer */ + CHECK_STGBUFFER(stgidx); + stgbuf[stgidx++]=*st++; + } /* while */ + CHECK_STGBUFFER(stgidx); + stgbuf[stgidx++]='\0'; + } else { + CHECK_STGBUFFER(strlen(stgbuf)+strlen(st)+1); + strcat(stgbuf,st); + len=strlen(stgbuf); + if (len>0 && stgbuf[len-1]=='\n') { + filewrite(stgbuf); + stgbuf[0]='\0'; + } /* if */ + } /* if */ +} + +/* stgout + * + * Writes the staging buffer to the output file via stgstring() (for + * reversing expressions in the buffer) and stgopt() (for optimizing). It + * resets "stgidx". + * + * Global references: stgidx (altered) + * stgbuf (referred to only) + * staging (referred to only) + */ +SC_FUNC void stgout(int index) +{ + if (!staging) + return; + stgstring(&stgbuf[index],&stgbuf[stgidx]); + stgidx=index; +} + +typedef struct { + char *start,*end; +} argstack; + +/* stgstring + * + * Analyses whether code strings should be output to the file as they appear + * in the staging buffer or whether portions of it should be re-ordered. + * Re-ordering takes place in function argument lists; Small passes arguments + * to functions from right to left. When arguments are "named" rather than + * positional, the order in the source stream is indeterminate. + * This function calls itself recursively in case it needs to re-order code + * strings, and it uses a private stack (or list) to mark the start and the + * end of expressions in their correct (reversed) order. + * In any case, stgstring() sends a block as large as possible to the + * optimizer stgopt(). + * + * In "reorder" mode, each set of code strings must start with the token + * sEXPRSTART, even the first. If the token sSTARTREORDER is represented + * by '[', sENDREORDER by ']' and sEXPRSTART by '|' the following applies: + * '[]...' valid, but useless; no output + * '[|...] valid, but useless; only one string + * '[|...|...] valid and usefull + * '[...|...] invalid, first string doesn't start with '|' + * '[|...|] invalid + */ +static void stgstring(char *start,char *end) +{ + char *ptr; + int nest,argc,arg; + argstack *stack; + + while (start=0) + stack[arg].end=start-1; /* finish previous argument */ + arg=(unsigned char)*start - sEXPRSTART; + stack[arg].start=start+1; + if (arg>=argc) + argc=arg+1; + } /* if */ + start++; + } else { + start+=strlen(start)+1; + } /* if */ + } /* switch */ + } while (nest); /* enddo */ + if (arg>=0) + stack[arg].end=start-1; /* finish previous argument */ + while (argc>0) { + argc--; + stgstring(stack[argc].start,stack[argc].end); + } /* while */ + free(stack); + } else { + ptr=start; + while (ptr0) + filewrite(stgbuf); + } /* if */ + stgbuf[0]='\0'; +} + +/* phopt_init + * Initialize all sequence strings of the peehole optimizer. The strings + * are embedded in the .EXE file in compressed format, here we expand + * them (and allocate memory for the sequences). + */ +static SEQUENCE *sequences; + +SC_FUNC int phopt_init(void) +{ + int number, i, len; + char str[160]; + + /* count number of sequences */ + for (number=0; sequences_cmp[number].find!=NULL; number++) + /* nothing */; + number++; /* include an item for the NULL terminator */ + + if ((sequences=(SEQUENCE*)malloc(number * sizeof(SEQUENCE)))==NULL) + return FALSE; + + /* pre-initialize all to NULL (in case of failure) */ + for (i=0; i=end) + return FALSE; + switch (*pattern) { + case '%': /* new "symbol" */ + pattern++; + assert(isdigit(*pattern)); + var=atoi(pattern) - 1; + assert(var>=0 && var<_maxoptvars); + assert(alphanum(*start)); + for (i=0; start=0 && var<_maxoptvars); + assert(symbols[var][0]!='\0'); /* variable should be defined */ + *repl_length+=strlen(symbols[var]); + break; + case '!': + *repl_length+=3; /* '\t', '\n' & '\0' */ + break; + default: + *repl_length+=1; + } /* switch */ + lptr++; + } /* while */ + + /* allocate a buffer to replace the sequence in */ + if ((buffer=malloc(*repl_length))==NULL) + return (char*)error(103); + + /* replace the pattern into this temporary buffer */ + lptr=buffer; + *lptr++='\t'; /* the "replace" patterns do not have tabs */ + while (*pattern) { + assert((int)(lptr-buffer)<*repl_length); + switch (*pattern) { + case '%': + /* write out the symbol */ + pattern++; + assert(isdigit(*pattern)); + var=atoi(pattern) - 1; + assert(var>=0 && var<_maxoptvars); + assert(symbols[var][0]!='\0'); /* variable should be defined */ + strcpy(lptr,symbols[var]); + lptr+=strlen(symbols[var]); + break; + case '!': + /* finish the line, optionally start the next line with an indent */ + *lptr++='\n'; + *lptr++='\0'; + if (*(pattern+1)!='\0') + *lptr++='\t'; + break; + default: + *lptr++=*pattern; + } /* switch */ + pattern++; + } /* while */ + + assert((int)(lptr-buffer)==*repl_length); + return buffer; +} + +static void strreplace(char *dest,char *replace,int sub_length,int repl_length,int dest_length) +{ + int offset=sub_length-repl_length; + if (offset>0) /* delete a section */ + memmove(dest,dest+offset,dest_length-offset); + else if (offset<0) /* insert a section */ + memmove(dest-offset, dest, dest_length); + memcpy(dest, replace, repl_length); +} + +/* stgopt + * + * Optimizes the staging buffer by checking for series of instructions that + * can be coded more compact. The routine expects the lines in the staging + * buffer to be separated with '\n' and '\0' characters. + * + * The longest sequences must be checked first. + */ + +static void stgopt(char *start,char *end) +{ + char symbols[_maxoptvars][_aliasmax+1]; + int seq,match_length,repl_length; + + assert(sequences!=NULL); + while (start=0); + if (matchsequence(start,end,sequences[seq].find,symbols,&match_length)) { + char *replace=replacesequence(sequences[seq].replace,symbols,&repl_length); + /* If the replacement is bigger than the original section, we may need + * to "grow" the staging buffer. This is quite complex, due to the + * re-ordering of expressions that can also happen in the staging + * buffer. In addition, it should not happen: the peephole optimizer + * must replace sequences with *shorter* sequences, not longer ones. + * So, I simply forbid sequences that are longer than the ones they + * are meant to replace. + */ + assert(match_length>=repl_length); + if (match_length>=repl_length) { + strreplace(start,replace,match_length,repl_length,(int)(end-start)); + end-=match_length-repl_length; + free(replace); + code_idx-=sequences[seq].savesize; + seq=0; /* restart search for matches */ + } else { + /* actually, we should never get here (match_length this optimization does not work, because the argument re-ordering in + * a function call causes each argument to be optimized individually + */ +//{ +// #ifdef SCPACK +// "const.pri %1!push.pri!;$par!const.pri %1!push.pri!;$par!const.pri %1!push.pri!;$par!const.pri %1!push.pri!;$par!const.pri %1!push.pri!;$par!", +// "const.pri %1!push.r.pri 5!;$par!", +// #else +// "\327\327\254", +// "\352\221.r\2745!", +// #endif +// seqsize(10,5) - seqsize(2,2) +//}, +//{ +// #ifdef SCPACK +// "const.pri %1!push.pri!;$par!const.pri %1!push.pri!;$par!const.pri %1!push.pri!;$par!const.pri %1!push.pri!;$par!", +// "const.pri %1!push.r.pri 4!;$par!", +// #else +// "\327\327", +// "\352\221.r\274\326", +// #endif +// seqsize(8,4) - seqsize(2,2) +//}, +//{ +// #ifdef SCPACK +// "const.pri %1!push.pri!;$par!const.pri %1!push.pri!;$par!const.pri %1!push.pri!;$par!", +// "const.pri %1!push.r.pri 3!;$par!", +// #else +// "\327\254", +// "\352\221.r\274\247", +// #endif +// seqsize(6,3) - seqsize(2,2) +//}, + /* User-defined operators first load the operands into registers and + * then have them pushed onto the stack. This can give rise to sequences + * like: + * const.pri n1 push.c n1 + * const.alt n2 push.c n2 + * push.pri - + * push.alt - + * A similar sequence occurs with the two PUSH.pri/alt instructions inverted. + * The first, second, or both CONST.pri/alt instructions can also be + * LOAD.pri/alt. + * This gives 2 x 4 cases. + */ + { + #ifdef SCPACK + "const.pri %1!const.alt %2!push.pri!push.alt!", + "push.c %1!push.c %2!", + #else + "\316\236\311\240\351", + "\330\205\330\216", + #endif + seqsize(4,2) - seqsize(2,2) + }, + { + #ifdef SCPACK + "const.pri %1!const.alt %2!push.alt!push.pri!", + "push.c %2!push.c %1!", + #else + "\316\236\311\351\240", + "\330\216\330\205", + #endif + seqsize(4,2) - seqsize(2,2) + }, + { + #ifdef SCPACK + "const.pri %1!load.alt %2!push.pri!push.alt!", + "push.c %1!push %2!", + #else + "\316\213\311\240\351", + "\330\205\222\216", + #endif + seqsize(4,2) - seqsize(2,2) + }, + { + #ifdef SCPACK + "const.pri %1!load.alt %2!push.alt!push.pri!", + "push %2!push.c %1!", + #else + "\316\213\311\351\240", + "\222\216\330\205", + #endif + seqsize(4,2) - seqsize(2,2) + }, + { + #ifdef SCPACK + "load.pri %1!const.alt %2!push.pri!push.alt!", + "push %1!push.c %2!", + #else + "\314\236\311\240\351", + "\222\205\330\216", + #endif + seqsize(4,2) - seqsize(2,2) + }, + { + #ifdef SCPACK + "load.pri %1!const.alt %2!push.alt!push.pri!", + "push.c %2!push %1!", + #else + "\314\236\311\351\240", + "\330\216\222\205", + #endif + seqsize(4,2) - seqsize(2,2) + }, + { + #ifdef SCPACK + "load.pri %1!load.alt %2!push.pri!push.alt!", + "push %1!push %2!", + #else + "\314\213\311\240\351", + "\222\205\222\216", + #endif + seqsize(4,2) - seqsize(2,2) + }, + { + #ifdef SCPACK + "load.pri %1!load.alt %2!push.alt!push.pri!", + "push %2!push %1!", + #else + "\314\213\311\351\240", + "\222\216\222\205", + #endif + seqsize(4,2) - seqsize(2,2) + }, + /* Function calls (parameters are passed on the stack) + * load.s.pri n1 push.s n1 + * push.pri - + * -------------------------------------- + * load.pri n1 push n1 + * push.pri - + * -------------------------------------- + * const.pri n1 push.c n1 + * push.pri - + * -------------------------------------- + * zero.pri push.c 0 + * push.pri - + * -------------------------------------- + * addr.pri n1 pushaddr n1 + * push.pri - + * + * However, PRI must not be needed after this instruction + * if this shortcut is used. Check for the ;$par comment. + */ + { + #ifdef SCPACK + "load.s.pri %1!push.pri!;$par!", + "push.s %1!;$par!", + #else + "\224\255\344", + "\222\220\205\344", + #endif + seqsize(2,1) - seqsize(1,1) + }, + { + #ifdef SCPACK + "load.pri %1!push.pri!;$par!", + "push %1!;$par!", + #else + "\213\255\344", + "\222\205\344", + #endif + seqsize(2,1) - seqsize(1,1) + }, + { + #ifdef SCPACK + "const.pri %1!push.pri!;$par!", + "push.c %1!;$par!", + #else + "\236\255\344", + "\330\205\344", + #endif + seqsize(2,1) - seqsize(1,1) + }, + { + #ifdef SCPACK + "zero.pri!push.pri!;$par!", + "push.c 0!;$par!", + #else + "\376\240\344", + "\330 0!\344", + #endif + seqsize(2,0) - seqsize(1,1) + }, + { + #ifdef SCPACK + "addr.pri %1!push.pri!;$par!", + "pushaddr %1!;$par!", + #else + "\252\255\344", + "\222\252\205\344", + #endif + seqsize(2,1) - seqsize(1,1) + }, + /* References with a default value generate new cells on the heap + * dynamically. That code often ends with: + * move.pri push.alt + * push.pri - + */ + { + #ifdef SCPACK + "move.pri!push.pri!", + "push.alt!", + #else + "\350\232\240", + "\351", + #endif + seqsize(2,0) - seqsize(1,0) + }, + /* Simple arithmetic operations on constants. Noteworthy is the + * subtraction of a constant, since it is converted to the addition + * of the inverse value. + * const.alt n1 add.c n1 + * add - + * -------------------------------------- + * const.alt n1 add.c -n1 + * sub - + * -------------------------------------- + * const.alt n1 smul.c n1 + * smul - + * -------------------------------------- + * const.alt n1 eq.c.pri n1 + * eq - + */ + { + #ifdef SCPACK + "const.alt %1!add!", + "add.c %1!", + #else + "\360\270", + "\233\247\205", + #endif + seqsize(2,1) - seqsize(1,1) + }, + { + #ifdef SCPACK + "const.alt %1!sub!", + "add.c -%1!", + #else + "\360sub!", + "\233\247 -%\204", + #endif + seqsize(2,1) - seqsize(1,1) + }, + { + #ifdef SCPACK + "const.alt %1!smul!", + "smul.c %1!", + #else + "\360smul!", + "smu\271\205", + #endif + seqsize(2,1) - seqsize(1,1) + }, + { + #ifdef SCPACK + "const.alt %1!eq!", + "eq.c.pri %1!", + #else + "\360\265", + "\253\247\223", + #endif + seqsize(2,1) - seqsize(1,1) + }, + /* Some operations use the alternative subtraction operation --these + * can also be optimized. + * const.pri n1 load.s.pri n2 + * load.s.alt n2 add.c -n1 + * sub.alt - + * -------------------------------------- + * const.pri n1 load.pri n2 + * load.alt n2 add.c -n1 + * sub.alt - + */ + { + #ifdef SCPACK + "const.pri %1!load.s.alt %2!sub.alt!", + "load.s.pri %2!add.c -%1!", + #else + "\316\224\311sub\217", + "\241\233\247 -%\204", + #endif + seqsize(3,2) - seqsize(2,2) + }, + { + #ifdef SCPACK + "const.pri %1!load.alt %2!sub.alt!", + "load.pri %2!add.c -%1!", + #else + "\316\213\311sub\217", + "\317\233\247 -%\204", + #endif + seqsize(3,2) - seqsize(2,2) + }, + /* Compare and jump + * eq jneq n1 + * jzer n1 - + * -------------------------------------- + * eq jeq n1 + * jnz n1 - + * -------------------------------------- + * neq jeq n1 + * jzer n1 - + * -------------------------------------- + * neq jneq n1 + * jnz n1 - + * Compares followed by jzer occur much more + * often than compares followed with jnz. So we + * take the easy route here. + * less jgeq n1 + * jzer n1 - + * -------------------------------------- + * leq jgrtr n1 + * jzer n1 - + * -------------------------------------- + * grtr jleq n1 + * jzer n1 - + * -------------------------------------- + * geq jless n1 + * jzer n1 - + * -------------------------------------- + * sless jsgeq n1 + * jzer n1 - + * -------------------------------------- + * sleq jsgrtr n1 + * jzer n1 - + * -------------------------------------- + * sgrtr jsleq n1 + * jzer n1 - + * -------------------------------------- + * sgeq jsless n1 + * jzer n1 - + */ + { + #ifdef SCPACK + "eq!jzer %1!", + "jneq %1!", + #else + "\265\305", + "jn\325", + #endif + seqsize(2,1) - seqsize(1,1) + }, + { + #ifdef SCPACK + "eq!jnz %1!", + "jeq %1!", + #else + "\265jnz\205", + "j\325", + #endif + seqsize(2,1) - seqsize(1,1) + }, + { + #ifdef SCPACK + "neq!jzer %1!", + "jeq %1!", + #else + "n\265\305", + "j\325", + #endif + seqsize(2,1) - seqsize(1,1) + }, + { + #ifdef SCPACK + "neq!jnz %1!", + "jneq %1!", + #else + "n\265jnz\205", + "jn\325", + #endif + seqsize(2,1) - seqsize(1,1) + }, + { + #ifdef SCPACK + "less!jzer %1!", + "jgeq %1!", + #else + "l\322!\305", + "jg\325", + #endif + seqsize(2,1) - seqsize(1,1) + }, + { + #ifdef SCPACK + "leq!jzer %1!", + "jgrtr %1!", + #else + "l\265\305", + "jg\323r\205", + #endif + seqsize(2,1) - seqsize(1,1) + }, + { + #ifdef SCPACK + "grtr!jzer %1!", + "jleq %1!", + #else + "g\323\306\305", + "jl\325", + #endif + seqsize(2,1) - seqsize(1,1) + }, + { + #ifdef SCPACK + "geq!jzer %1!", + "jless %1!", + #else + "g\265\305", + "jl\322\205", + #endif + seqsize(2,1) - seqsize(1,1) + }, + { + #ifdef SCPACK + "sless!jzer %1!", + "jsgeq %1!", + #else + "\357\305", + "j\302\325", + #endif + seqsize(2,1) - seqsize(1,1) + }, + { + #ifdef SCPACK + "sleq!jzer %1!", + "jsgrtr %1!", + #else + "\362\305", + "j\337r\205", + #endif + seqsize(2,1) - seqsize(1,1) + }, + { + #ifdef SCPACK + "sgrtr!jzer %1!", + "jsleq %1!", + #else + "\364\305", + "j\303\325", + #endif + seqsize(2,1) - seqsize(1,1) + }, + { + #ifdef SCPACK + "sgeq!jzer %1!", + "jsless %1!", + #else + "\361\305", + "j\341\205", + #endif + seqsize(2,1) - seqsize(1,1) + }, + /* Test for zero (common case, especially for strings) + * E.g. the test expression of: "for (i=0; str{i}!=0; ++i)" + * + * zero.alt jzer n1 + * jeq n1 - + * -------------------------------------- + * zero.alt jnz n1 + * jneq n1 - + */ + { + #ifdef SCPACK + "zero.alt!jeq %1!", + "jzer %1!", + #else + "\315\217j\325", + "\305", + #endif + seqsize(2,1) - seqsize(1,1) + }, + { + #ifdef SCPACK + "zero.alt!jneq %1!", + "jnz %1!", + #else + "\315\217jn\325", + "jnz\205", + #endif + seqsize(2,1) - seqsize(1,1) + }, + /* Incrementing and decrementing leaves a value in + * in PRI which may not be used (for example, as the + * third expression in a "for" loop). + * inc n1 inc n1 ; ++n + * load.pri n1 ;$exp + * ;$exp - + * -------------------------------------- + * load.pri n1 inc n1 ; n++, e.g. "for (n=0; n<10; n++)" + * inc n1 ;$exp + * ;$exp - + * Plus the varieties for stack relative increments + * and decrements. + */ + { + #ifdef SCPACK + "inc %1!load.pri %1!;$exp!", + "inc %1!;$exp!", + #else + "\373c\205\314\245", + "\373c\261", + #endif + seqsize(2,2) - seqsize(1,1) + }, + { + #ifdef SCPACK + "load.pri %1!inc %1!;$exp!", + "inc %1!;$exp!", + #else + "\314\373c\261", + "\373c\261", + #endif + seqsize(2,2) - seqsize(1,1) + }, + { + #ifdef SCPACK + "inc.s %1!load.s.pri %1!;$exp!", + "inc.s %1!;$exp!", + #else + "\373\352\205\324\245", + "\373\352\261", + #endif + seqsize(2,2) - seqsize(1,1) + }, + { + #ifdef SCPACK + "load.s.pri %1!inc.s %1!;$exp!", + "inc.s %1!;$exp!", + #else + "\324\373\352\261", + "\373\352\261", + #endif + seqsize(2,2) - seqsize(1,1) + }, + { + #ifdef SCPACK + "dec %1!load.pri %1!;$exp!", + "dec %1!;$exp!", + #else + "\367c\205\314\245", + "\367c\261", + #endif + seqsize(2,2) - seqsize(1,1) + }, + { + #ifdef SCPACK + "load.pri %1!dec %1!;$exp!", + "dec %1!;$exp!", + #else + "\314\367c\261", + "\367c\261", + #endif + seqsize(2,2) - seqsize(1,1) + }, + { + #ifdef SCPACK + "dec.s %1!load.s.pri %1!;$exp!", + "dec.s %1!;$exp!", + #else + "\367\352\205\324\245", + "\367\352\261", + #endif + seqsize(2,2) - seqsize(1,1) + }, + { + #ifdef SCPACK + "load.s.pri %1!dec.s %1!;$exp!", + "dec.s %1!;$exp!", + #else + "\324\367\352\261", + "\367\352\261", + #endif + seqsize(2,2) - seqsize(1,1) + }, + /* ??? the same (increments and decrements) for references */ + /* Loading the constant zero has a special opcode. + * When storing zero in memory, the value of PRI must not be later on. + * const.pri 0 zero n1 + * stor.pri n1 ;$exp + * ;$exp - + * -------------------------------------- + * const.pri 0 zero.s n1 + * stor.s.pri n1 ;$exp + * ;$exp - + * -------------------------------------- + * zero.pri zero n1 + * stor.pri n1 ;$exp + * ;$exp - + * -------------------------------------- + * zero.pri zero.s n1 + * stor.s.pri n1 ;$exp + * ;$exp - + * -------------------------------------- + * const.pri 0 zero.pri + * -------------------------------------- + * const.alt 0 zero.alt + * The last two alternatives save more memory than they save + * time, but anyway... + */ + { + #ifdef SCPACK + "const.pri 0!stor.pri %1!;$exp!", + "zero %1!;$exp!", + #else + "\236\203 0!\227or\223\245", + "\315\261", + #endif + seqsize(2,2) - seqsize(1,1) + }, + { + #ifdef SCPACK + "const.pri 0!stor.s.pri %1!;$exp!", + "zero.s %1!;$exp!", + #else + "\236\203 0!\227or\220\223\245", + "\315\220\261", + #endif + seqsize(2,2) - seqsize(1,1) + }, + { + #ifdef SCPACK + "zero.pri!stor.pri %1!;$exp!", + "zero %1!;$exp!", + #else + "\376\227or\223\245", + "\315\261", + #endif + seqsize(2,1) - seqsize(1,1) + }, + { + #ifdef SCPACK + "zero.pri!stor.s.pri %1!;$exp!", + "zero.s %1!;$exp!", + #else + "\376\227or\220\223\245", + "\315\220\261", + #endif + seqsize(2,1) - seqsize(1,1) + }, + { + #ifdef SCPACK + "const.pri 0!", + "zero.pri!", + #else + "\236\203 0!", + "\376", + #endif + seqsize(1,1) - seqsize(1,0) + }, + { + #ifdef SCPACK + "const.alt 0!", + "zero.alt!", + #else + "\236\211 0!", + "\315\217", + #endif + seqsize(1,1) - seqsize(1,0) + }, + /* ----- */ + { NULL, NULL, 0 } +}; diff --git a/legacy/embryo/src/bin/embryo_cc_scexpand.c b/legacy/embryo/src/bin/embryo_cc_scexpand.c new file mode 100644 index 0000000000..034b794839 --- /dev/null +++ b/legacy/embryo/src/bin/embryo_cc_scexpand.c @@ -0,0 +1,67 @@ +/* expand.c -- Byte Pair Encoding decompression */ +/* Copyright 1996 Philip Gage */ + +/* Byte Pair Compression appeared in the September 1997 + * issue of C/C++ Users Journal. The original source code + * may still be found at the web site of the magazine + * (www.cuj.com). + * + * The decompressor has been modified by me (Thiadmer + * Riemersma) to accept a string as input, instead of a + * complete file. + */ +#include +#include +#include "embryo_cc_sc.h" + +#define STACKSIZE 16 + +SC_FUNC int strexpand(char *dest, unsigned char *source, int maxlen, unsigned char pairtable[128][2]) +{ + unsigned char stack[STACKSIZE]; + short c, top = 0; + int len; + + assert(maxlen > 0); + len = 1; /* already 1 byte for '\0' */ + for (;;) { + + /* Pop byte from stack or read byte from the input string */ + if (top) + c = stack[--top]; + else if ((c = *(unsigned char *)source++) == '\0') + break; + + /* Push pair on stack or output byte to the output string */ + if (c > 127) { + assert(top+2 <= STACKSIZE); + stack[top++] = pairtable[c-128][1]; + stack[top++] = pairtable[c-128][0]; + } + else { + len++; + if (maxlen > 1) { /* reserve one byte for the '\0' */ + *dest++ = (char)c; + maxlen--; + } + } + } + *dest = '\0'; + return len; /* return number of bytes decoded */ +} + +#if 0 /*for testing*/ +#include "sc5.scp" + +int main (int argc, char **argv) +{ + int i; + char str[128]; + + for (i=0; i<58; i++) { + strexpand(str, errmsg[i], sizeof str, SCPACK_TABLE); + printf("%s", str); + } /* for */ + return 0; +} +#endif diff --git a/legacy/embryo/src/bin/embryo_cc_sclib.c b/legacy/embryo/src/bin/embryo_cc_sclib.c new file mode 100644 index 0000000000..760018e0af --- /dev/null +++ b/legacy/embryo/src/bin/embryo_cc_sclib.c @@ -0,0 +1,218 @@ +/* SCLIB.C + * + * This is an example file that shows how to embed the Small compiler into a + * program. This program contains the "default" implementation of all + * functions that the Small compiler calls for I/O. + * + * This program also contains a main(), so it compiles, again, to a + * stand-alone compiler. This is for illustration purposes only + * + * What this file does is (in sequence): + * 1. Declare the NO_MAIN macro, so that the function main() and all + * "callback" functions that are in SC1.C are not compiled. + * 2. Declare SC_FUNC and SC_VDEFINE as "static" so that all functions and + * global variables are "encapsulated" in the object file. This solves + * the global namespace polution problem. + * 3. Declare the SC_SKIP_VDECL macro which is needed to avoid variables to + * be doubly declared when the C files are *not* independently compiled. + * 4. And, the dirtiest trick of all, include the remaining C files. That is, + * the entire Small compiler compiles to a single object file (.OBJ in + * Windows). This is the only way to get rid of the global namespace + * polution. + * + * Note that the interface of the Small compiler is subject to change. + * + * Compilation: + * wcl386 /l=nt sclib.c + * + * Copyright (c) ITB CompuPhase, 2000-2003 + * This file may be freely used. No warranties of any kind. + */ +#include +#include +#include + +#define NO_MAIN +#define SC_FUNC static +#define SC_VDEFINE static +#define SC_SKIP_VDECL /* skip variable "forward declaration" */ +#include "sc.h" + +#include "scvars.c" +#include "sc1.c" +#include "sc2.c" +#include "sc3.c" +#include "sc4.c" +#include "sc5.c" +#include "sc6.c" +#include "sc7.c" +#include "sclist.c" +#include "scexpand.c" + +int main(int argc, char **argv) +{ + return sc_compile(argc,argv); +} + +/* sc_printf + * Called for general purpose "console" output. This function prints general + * purpose messages; errors go through sc_error(). The function is modelled + * after printf(). + */ +int sc_printf(const char *message,...) +{ + int ret; + va_list argptr; + + va_start(argptr,message); + ret=vprintf(message,argptr); + va_end(argptr); + + return ret; +} + +/* sc_error + * Called for producing error output. + * number the error number (as documented in the manual) + * message a string describing the error with embedded %d and %s tokens + * filename the name of the file currently being parsed + * firstline the line number at which the expression started on which + * the error was found, or -1 if there is no "starting line" + * lastline the line number at which the error was detected + * argptr a pointer to the first of a series of arguments (for macro + * "va_arg") + * Return: + * If the function returns 0, the parser attempts to continue compilation. + * On a non-zero return value, the parser aborts. + */ +int sc_error(int number,char *message,char *filename,int firstline,int lastline,va_list argptr) +{ +static char *prefix[3]={ "Error", "Fatal", "Warning" }; + + if (number!=0) { + char *pre; + + pre=prefix[number/100]; + if (firstline>=0) + printf("%s(%d -- %d) %s [%03d]: ",filename,firstline,lastline,pre,number); + else + printf("%s(%d) %s [%03d]: ",filename,lastline,pre,number); + } /* if */ + vprintf(message,argptr); + fflush(stdout); + return 0; +} + +/* sc_opensrc + * Opens a source file (or include file) for reading. The "file" does not have + * to be a physical file, one might compile from memory. + * filename the name of the "file" to read from + * Return: + * The function must return a pointer, which is used as a "magic cookie" to + * all I/O functions. When failing to open the file for reading, the + * function must return NULL. + */ +void *sc_opensrc(char *filename) +{ + return fopen(filename,"rt"); +} + +/* sc_closesrc + * Closes a source file (or include file). The "handle" parameter has the + * value that sc_opensrc() returned in an earlier call. + */ +void sc_closesrc(void *handle) +{ + assert(handle!=NULL); + fclose((FILE*)handle); +} + +/* sc_resetsrc + * "position" may only hold a pointer that was previously obtained from + * sc_getpossrc() */ +void sc_resetsrc(void *handle,void *position) +{ + assert(handle!=NULL); + fsetpos((FILE*)handle,(fpos_t *)position); +} + +char *sc_readsrc(void *handle,char *target,int maxchars) +{ + return fgets(target,maxchars,(FILE*)handle); +} + +void *sc_getpossrc(void *handle) +{ + static fpos_t lastpos; + + fgetpos((FILE*)handle,&lastpos); + return &lastpos; +} + +int sc_eofsrc(void *handle) +{ + return feof((FILE*)handle); +} + +/* should return a pointer, which is used as a "magic cookie" to all I/O + * functions; return NULL for failure + */ +void *sc_openasm(char *filename) +{ + return fopen(filename,"w+t"); +} + +void sc_closeasm(void *handle, int deletefile) +{ + fclose((FILE*)handle); + if (deletefile) + unlink(outfname); +} + +void sc_resetasm(void *handle) +{ + fflush((FILE*)handle); + fseek((FILE*)handle,0,SEEK_SET); +} + +int sc_writeasm(void *handle,char *st) +{ + return fputs(st,(FILE*)handle) >= 0; +} + +char *sc_readasm(void *handle, char *target, int maxchars) +{ + return fgets(target,maxchars,(FILE*)handle); +} + +/* Should return a pointer, which is used as a "magic cookie" to all I/O + * functions; return NULL for failure. + */ +void *sc_openbin(char *filename) +{ + return fopen(filename,"wb"); +} + +void sc_closebin(void *handle,int deletefile) +{ + fclose((FILE*)handle); + if (deletefile) + unlink(binfname); +} + +void sc_resetbin(void *handle) +{ + fflush((FILE*)handle); + fseek((FILE*)handle,0,SEEK_SET); +} + +int sc_writebin(void *handle,void *buffer,int size) +{ + return fwrite(buffer,1,size,(FILE*)handle) == size; +} + +long sc_lengthbin(void *handle) +{ + return ftell((FILE*)handle); +} + diff --git a/legacy/embryo/src/bin/embryo_cc_sclinux.h b/legacy/embryo/src/bin/embryo_cc_sclinux.h new file mode 100644 index 0000000000..aeed6b9687 --- /dev/null +++ b/legacy/embryo/src/bin/embryo_cc_sclinux.h @@ -0,0 +1,47 @@ +/* + * Things needed to compile under linux. + * + * Should be reworked totally to use GNU's 'configure' + */ + +/* + * Getchar is not a 'cool' replacement for MSDOS getch: Linux/unix depends on the features activated or not about the + * controlling terminal's tty. This means that ioctl(2) calls must be performed, for instance to have the controlling terminal tty's + * in 'raw' mode, if we want to be able to fetch a single character. This also means that everything must be put back + * correctly when the program ends. + * + * For interactive use of SRUN/SDBG if would be much better to use GNU's readline package: the user would be able to have + * a complete emacs/vi like line editing system. + * + * So we stick to getchar at the moment... (one needs to key ctrl-d to terminate input if getch is called with a controlling + * terminal driven by a tty having -raw) + */ +#define getch getchar +#define stricmp(a,b) strcasecmp(a,b) +#define strnicmp(a,b,c) strncasecmp(a,b,c) + +/* + * WinWorld wants '\'. Unices do not. + */ +#define DIRECTORY_SEP_CHAR '/' +#define DIRECTORY_SEP_STR "/" + +/* + * SC assumes that a computer is Little Endian unless told otherwise. It uses + * (and defines) the macros BYTE_ORDER and BIG_ENDIAN. + * For Linux, we must overrule these settings with those defined in glibc. + */ +#if !defined __BYTE_ORDER +# include +#endif + +#if defined __OpenBSD__ +# define __BYTE_ORDER BYTE_ORDER +# define __LITTLE_ENDIAN LITTLE_ENDIAN +# define __BIG_ENDIAN BIG_ENDIAN +#endif + +#if !defined __BYTE_ORDER +# error "Can't figure computer byte order (__BYTE_ORDER macro not found)" +#endif + diff --git a/legacy/embryo/src/bin/embryo_cc_sclist.c b/legacy/embryo/src/bin/embryo_cc_sclist.c new file mode 100644 index 0000000000..3dcad35324 --- /dev/null +++ b/legacy/embryo/src/bin/embryo_cc_sclist.c @@ -0,0 +1,279 @@ +/* Small compiler - maintenance of various lists + * + * Name list (aliases) + * Include path list + * + * Copyright (c) ITB CompuPhase, 2001-2003 + * + * This software is provided "as-is", without any express or implied warranty. + * In no event will the authors be held liable for any damages arising from + * the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software in + * a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + * Version: $Id$ + */ +#include +#include +#include +#include "embryo_cc_sc.h" + +#if defined FORTIFY + #include "fortify.h" +#endif + +/* a "private" implementation of strdup(), so that porting + * to other memory allocators becomes easier. + * By Søren Hannibal. + */ +SC_FUNC char* duplicatestring(const char* sourcestring) +{ + char* result=malloc(strlen(sourcestring)+1); + strcpy(result,sourcestring); + return result; +} + + +static stringpair *insert_stringpair(stringpair *root,char *first,char *second,int matchlength) +{ + stringpair *cur,*pred; + + assert(root!=NULL); + assert(first!=NULL); + assert(second!=NULL); + /* create a new node, and check whether all is okay */ + if ((cur=(stringpair*)malloc(sizeof(stringpair)))==NULL) + return NULL; + cur->first=duplicatestring(first); + cur->second=duplicatestring(second); + cur->matchlength=matchlength; + if (cur->first==NULL || cur->second==NULL) { + if (cur->first!=NULL) + free(cur->first); + if (cur->second!=NULL) + free(cur->second); + free(cur); + return NULL; + } /* if */ + /* link the node to the tree, find the position */ + for (pred=root; pred->next!=NULL && strcmp(pred->next->first,first)<0; pred=pred->next) + /* nothing */; + cur->next=pred->next; + pred->next=cur; + return cur; +} + +static void delete_stringpairtable(stringpair *root) +{ + stringpair *cur, *next; + + assert(root!=NULL); + cur=root->next; + while (cur!=NULL) { + next=cur->next; + assert(cur->first!=NULL); + assert(cur->second!=NULL); + free(cur->first); + free(cur->second); + free(cur); + cur=next; + } /* while */ + memset(root,0,sizeof(stringpair)); +} + +static stringpair *find_stringpair(stringpair *cur,char *first,int matchlength) +{ + int result=0; + + assert(matchlength>0); /* the function cannot handle zero-length comparison */ + assert(first!=NULL); + while (cur!=NULL && result<=0) { + result=(int)*cur->first - (int)*first; + if (result==0 && matchlength==cur->matchlength) { + result=strncmp(cur->first,first,matchlength); + if (result==0) + return cur; + } /* if */ + cur=cur->next; + } /* while */ + return NULL; +} + +static int delete_stringpair(stringpair *root,stringpair *item) +{ + stringpair *cur; + + assert(root!=NULL); + cur=root; + while (cur->next!=NULL) { + if (cur->next==item) { + cur->next=item->next; /* unlink from list */ + assert(item->first!=NULL); + assert(item->second!=NULL); + free(item->first); + free(item->second); + free(item); + return TRUE; + } /* if */ + cur=cur->next; + } /* while */ + return FALSE; +} + +/* ----- alias table --------------------------------------------- */ +static stringpair alias_tab = {NULL, NULL, NULL}; /* alias table */ + +SC_FUNC stringpair *insert_alias(char *name,char *alias) +{ + stringpair *cur; + + assert(name!=NULL); + assert(strlen(name)<=sNAMEMAX); + assert(alias!=NULL); + assert(strlen(alias)<=sEXPMAX); + if ((cur=insert_stringpair(&alias_tab,name,alias,strlen(name)))==NULL) + error(103); /* insufficient memory (fatal error) */ + return cur; +} + +SC_FUNC stringpair *find_alias(char *name) +{ + return find_stringpair(alias_tab.next,name,strlen(name)); +} + +SC_FUNC int lookup_alias(char *target,char *name) +{ + stringpair *cur=find_stringpair(alias_tab.next,name,strlen(name)); + if (cur!=NULL) { + assert(strlen(cur->second)<=sEXPMAX); + strcpy(target,cur->second); + } /* if */ + return cur!=NULL; +} + +SC_FUNC void delete_aliastable(void) +{ + delete_stringpairtable(&alias_tab); +} + +/* ----- include paths list -------------------------------------- */ +static stringlist includepaths = {NULL, NULL}; /* directory list for include files */ + +SC_FUNC stringlist *insert_path(char *path) +{ + stringlist *cur; + + assert(path!=NULL); + if ((cur=(stringlist*)malloc(sizeof(stringlist)))==NULL) + error(103); /* insufficient memory (fatal error) */ + if ((cur->line=duplicatestring(path))==NULL) + error(103); /* insufficient memory (fatal error) */ + cur->next=includepaths.next; + includepaths.next=cur; + return cur; +} + +SC_FUNC char *get_path(int index) +{ + stringlist *cur = includepaths.next; + + while (cur!=NULL && index-->0) + cur=cur->next; + if (cur!=NULL) { + assert(cur->line!=NULL); + return cur->line; + } /* if */ + return NULL; +} + +SC_FUNC void delete_pathtable(void) +{ + stringlist *cur=includepaths.next, *next; + + while (cur!=NULL) { + next=cur->next; + assert(cur->line!=NULL); + free(cur->line); + free(cur); + cur=next; + } /* while */ + memset(&includepaths,0,sizeof(stringlist)); +} + + +/* ----- text substitution patterns ------------------------------ */ +#if !defined NO_DEFINE + +static stringpair substpair = { NULL, NULL, NULL}; /* list of substitution pairs */ + +static stringpair *substindex['z'-'A'+1]; /* quick index to first character */ +static void adjustindex(char c) +{ + stringpair *cur; + assert(c>='A' && c<='Z' || c>='a' && c<='z' || c=='_'); + assert('A'<'_' && '_'<'z'); + + for (cur=substpair.next; cur!=NULL && cur->first[0]!=c; cur=cur->next) + /* nothing */; + substindex[(int)c-'A']=cur; +} + +SC_FUNC stringpair *insert_subst(char *pattern,char *substitution,int prefixlen) +{ + stringpair *cur; + + assert(pattern!=NULL); + assert(substitution!=NULL); + if ((cur=insert_stringpair(&substpair,pattern,substitution,prefixlen))==NULL) + error(103); /* insufficient memory (fatal error) */ + adjustindex(*pattern); + return cur; +} + +SC_FUNC stringpair *find_subst(char *name,int length) +{ + stringpair *item; + assert(name!=NULL); + assert(length>0); + assert(*name>='A' && *name<='Z' || *name>='a' && *name<='z' || *name=='_'); + item=substindex[(int)*name-'A']; + if (item!=NULL) + item=find_stringpair(item,name,length); + return item; +} + +SC_FUNC int delete_subst(char *name,int length) +{ + stringpair *item; + assert(name!=NULL); + assert(length>0); + assert(*name>='A' && *name<='Z' || *name>='a' && *name<='z' || *name=='_'); + item=substindex[(int)*name-'A']; + if (item!=NULL) + item=find_stringpair(item,name,length); + if (item==NULL) + return FALSE; + delete_stringpair(&substpair,item); + adjustindex(*name); + return TRUE; +} + +SC_FUNC void delete_substtable(void) +{ + int i; + delete_stringpairtable(&substpair); + for (i=0; i +#include +#include +#include +#include + +#if UINT_MAX > 0xFFFFU + #define MAXSIZE 1024*1024L +#else + #define MAXSIZE UINT_MAX /* Input file buffer size */ +#endif +#define HASHSIZE 8192 /* Hash table size, power of 2 */ +#define THRESHOLD 3 /* Increase for speed, min 3 */ + +#define START_TOKEN "#ifdef SCPACK" /* start reading the buffer here */ +#define NAME_TOKEN "#define SCPACK_TABLE" +#define SEP_TOKEN "#define SCPACK_SEPARATOR" +#define TERM_TOKEN "#define SCPACK_TERMINATOR" +#define TEMPFILE "~SCPACK.TMP" +static char tablename[32+1] = "scpack_table"; +static char separator[16]=","; +static char terminator[16]=""; + +int compress(unsigned char *buffer, unsigned buffersize, unsigned char pairtable[128][2]) +{ + unsigned char *left, *right, *count; + unsigned char a, b, bestcount; + unsigned i, j, index, bestindex, code=128; + + /* Dynamically allocate buffers and check for errors */ + left = (unsigned char *)malloc(HASHSIZE); + right = (unsigned char *)malloc(HASHSIZE); + count = (unsigned char *)malloc(HASHSIZE); + if (left==NULL || right==NULL || count==NULL) { + printf("Error allocating memory\n"); + exit(1); + } + + /* Check for errors */ + for (i=0; i 127) { + printf("This program works only on text files (7-bit ASCII)\n"); + exit(1); + } + + memset(pairtable, 0, 128*2*sizeof(char)); + + do { /* Replace frequent pairs with bytes 128..255 */ + + /* Enter counts of all byte pairs into hash table */ + memset(count,0,HASHSIZE); + for (i=0; i bestcount) { + bestcount = count[i]; + bestindex = i; + } + } + + /* Compress if enough occurrences of pair */ + if (bestcount >= THRESHOLD) { + + /* Add pair to table using code as index */ + a = pairtable[code-128][0] = left[bestindex]; + b = pairtable[code-128][1] = right[bestindex]; + + /* Replace all pair occurrences with unused byte */ + for (i=0, j=0; i= 128 || *bufptr == '"' || *bufptr == '\\') + fprintf(output, "\\%03o", *bufptr); + else + fprintf(output, "%c", *bufptr); + bufptr++; + } /* while */ + fprintf(output, "\""); + needseparator = 1; + bufptr++; /* skip '\0' */ + } /* while */ + fprintf(output, "%s\n",terminator); + bufptr++; + + /* skip the input file until the #endif section */ + while (fgets(str,sizeof str,input)!=NULL) { + if (strmatch(str,"#endif",NULL)) { + fprintf(output,"%s",str); + break; /* done */ + } /* if */ + } /* while */ + } /* while - !feof(input) */ +} + +static void usage(void) +{ + printf("Usage: scpack [output file]\n"); + exit(1); +} + +int main(int argc, char **argv) +{ + FILE *in, *out; + unsigned char *buffer; + unsigned buffersize, orgbuffersize; + unsigned char pairtable[128][2]; + + if (argc < 2 || argc > 3) + usage(); + if ((in=fopen(argv[1],"rt"))==NULL) { + printf("SCPACK: error opening input %s\n",argv[1]); + usage(); + } /* if */ + if (argc == 2) { + if ((out=fopen(TEMPFILE,"wt"))==NULL) { + printf("SCPACK: error opening temporary file %s\n",TEMPFILE); + usage(); + } /* if */ + } else { + if ((out=fopen(argv[2],"wt"))==NULL) { + printf("SCPACK: error opening output file %s\n",argv[2]); + usage(); + } /* if */ + } /* if */ + + buffer = (unsigned char *)malloc(MAXSIZE); + if (buffer == NULL) { + printf("SCPACK: error allocating memory\n"); + return 1; + } /* if */ + /* 1. read the buffer + * 2. compress the buffer + * 3. copy the file, insert the compressed buffer + */ + buffersize = readbuffer(in, buffer); + orgbuffersize = buffersize; + if (buffersize > 0) { + buffersize = compress(buffer, buffersize, pairtable); + writefile(in, out, buffer, buffersize, pairtable); + printf("SCPACK: compression ratio: %ld%% (%d -> %d)\n", + 100L-(100L*buffersize)/orgbuffersize, orgbuffersize, buffersize); + } else { + printf("SCPACK: no SCPACK section found, nothing to do\n"); + } /* if */ + fclose(out); + fclose(in); + /* let the new file replace the old file */ + if (buffersize == 0) { + if (argc == 2) + unlink(TEMPFILE); + else + unlink(argv[2]); + } else if (argc == 2) { + unlink(argv[1]); + rename(TEMPFILE,argv[1]); + } /* if */ + return 0; +} diff --git a/legacy/embryo/src/bin/embryo_cc_scstub.c b/legacy/embryo/src/bin/embryo_cc_scstub.c new file mode 100644 index 0000000000..4937d50830 --- /dev/null +++ b/legacy/embryo/src/bin/embryo_cc_scstub.c @@ -0,0 +1,29 @@ +#include +#include +#include + +static char filename[] = "scdos.exe"; + +int main(int argc, char *argv[]) +{ + int result; + + /* build a command line to pass on to the "DOS" program */ + char path[80], *ptr; + strcpy(path,argv[0]); + ptr=strrchr(path,'\\'); + if (ptr==NULL) + ptr=strchr(path,':'); + if (ptr==NULL) { + strcpy(path,filename); + } else { + strcpy(ptr+1,filename); + } /* if */ + + /* launch the DOS version of the tool */ + result=execv(path,argv); + if (result==-1) + printf("Error launching '%s'\n",path); + return result; +} + diff --git a/legacy/embryo/src/bin/embryo_cc_scvars.c b/legacy/embryo/src/bin/embryo_cc_scvars.c new file mode 100644 index 0000000000..a1b9d466f8 --- /dev/null +++ b/legacy/embryo/src/bin/embryo_cc_scvars.c @@ -0,0 +1,99 @@ +/* Small compiler + * + * Global (cross-module) variables. + * + * Copyright (c) ITB CompuPhase, 1997-2003 + * + * This software is provided "as-is", without any express or implied warranty. + * In no event will the authors be held liable for any damages arising from + * the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software in + * a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + * + * Version: $Id$ + */ +#include +#include /* for _MAX_PATH */ +#include "embryo_cc_sc.h" + +/* global variables + * + * All global variables that are shared amongst the compiler files are + * declared here. + */ +SC_VDEFINE symbol loctab; /* local symbol table */ +SC_VDEFINE symbol glbtab; /* global symbol table */ +SC_VDEFINE cell *litq; /* the literal queue */ +SC_VDEFINE char pline[sLINEMAX+1]; /* the line read from the input file */ +SC_VDEFINE char *lptr; /* points to the current position in "pline" */ +SC_VDEFINE constvalue tagname_tab = { NULL, "", 0, 0}; /* tagname table */ +SC_VDEFINE constvalue libname_tab = { NULL, "", 0, 0}; /* library table (#pragma library "..." syntax) */ +SC_VDEFINE constvalue *curlibrary = NULL;/* current library */ +SC_VDEFINE symbol *curfunc; /* pointer to current function */ +SC_VDEFINE char *inpfname; /* pointer to name of the file currently read from */ +SC_VDEFINE char outfname[_MAX_PATH]; /* output file name */ +SC_VDEFINE char errfname[_MAX_PATH]; /* error file name */ +SC_VDEFINE char sc_ctrlchar = CTRL_CHAR;/* the control character (or escape character)*/ +SC_VDEFINE int litidx = 0; /* index to literal table */ +SC_VDEFINE int litmax = sDEF_LITMAX;/* current size of the literal table */ +SC_VDEFINE int stgidx = 0; /* index to the staging buffer */ +SC_VDEFINE int labnum = 0; /* number of (internal) labels */ +SC_VDEFINE int staging = 0; /* true if staging output */ +SC_VDEFINE cell declared = 0; /* number of local cells declared */ +SC_VDEFINE cell glb_declared=0; /* number of global cells declared */ +SC_VDEFINE cell code_idx = 0; /* number of bytes with generated code */ +SC_VDEFINE int ntv_funcid= 0; /* incremental number of native function */ +SC_VDEFINE int errnum = 0; /* number of errors */ +SC_VDEFINE int warnnum = 0; /* number of warnings */ +SC_VDEFINE int sc_debug = sCHKBOUNDS; /* by default: bounds checking+assertions */ +SC_VDEFINE int charbits = 8; /* a "char" is 8 bits */ +SC_VDEFINE int sc_packstr= FALSE; /* strings are packed by default? */ +SC_VDEFINE int sc_asmfile= FALSE; /* create .ASM file? */ +SC_VDEFINE int sc_listing= FALSE; /* create .LST file? */ +SC_VDEFINE int sc_compress=TRUE; /* compress bytecode? */ +SC_VDEFINE int sc_needsemicolon=TRUE;/* semicolon required to terminate expressions? */ +SC_VDEFINE int sc_dataalign=sizeof(cell);/* data alignment value */ +SC_VDEFINE int sc_alignnext=FALSE; /* must frame of the next function be aligned? */ +SC_VDEFINE int curseg = 0; /* 1 if currently parsing CODE, 2 if parsing DATA */ +SC_VDEFINE cell sc_stksize=sDEF_AMXSTACK;/* default stack size */ +SC_VDEFINE int freading = FALSE; /* Is there an input file ready for reading? */ +SC_VDEFINE int fline = 0; /* the line number in the current file */ +SC_VDEFINE int fnumber = 0; /* the file number in the file table (debugging) */ +SC_VDEFINE int fcurrent = 0; /* current file being processed (debugging) */ +SC_VDEFINE int intest = 0; /* true if inside a test */ +SC_VDEFINE int sideeffect= 0; /* true if an expression causes a side-effect */ +SC_VDEFINE int stmtindent= 0; /* current indent of the statement */ +SC_VDEFINE int indent_nowarn=FALSE;/* skip warning "217 loose indentation" */ +SC_VDEFINE int sc_tabsize=8; /* number of spaces that a TAB represents */ +SC_VDEFINE int sc_allowtags=TRUE; /* allow/detect tagnames in lex() */ +SC_VDEFINE int sc_status; /* read/write status */ +SC_VDEFINE int sc_rationaltag=0; /* tag for rational numbers */ +SC_VDEFINE int rational_digits=0; /* number of fractional digits */ + +SC_VDEFINE FILE *inpf = NULL; /* file read from (source or include) */ +SC_VDEFINE FILE *inpf_org= NULL; /* main source file */ +SC_VDEFINE FILE *outf = NULL; /* file written to */ + +SC_VDEFINE jmp_buf errbuf; + +#if !defined SC_LIGHT + SC_VDEFINE int sc_makereport=FALSE; /* generate a cross-reference report */ +#endif + +#if defined __WATCOMC__ && !defined NDEBUG + /* Watcom's CVPACK dislikes .OBJ files without functions */ + static int dummyfunc(void) + { + return 0; + } +#endif diff --git a/legacy/embryo/src/bin/embryo_main.c b/legacy/embryo/src/bin/embryo_main.c new file mode 100644 index 0000000000..190333be65 --- /dev/null +++ b/legacy/embryo/src/bin/embryo_main.c @@ -0,0 +1,235 @@ +#include "Embryo.h" + +#include +#include +#include +#include +#include +#include +#include + +/* debugging native calls */ +static int dochar(Embryo_Program *ep, char ch, Embryo_Cell param); +static int doesc(Embryo_Program *ep, char ch, Embryo_Cell param); +static int printstring(Embryo_Program *ep, Embryo_Cell *cstr, Embryo_Cell *params, int num); + +static int +dochar(Embryo_Program * ep, char ch, Embryo_Cell param) +{ + Embryo_Cell *cptr; + + switch (ch) + { + case '%': + putchar(ch); + return 0; + case 'c': + cptr = embryo_data_address_get(ep, param); + if (cptr) + putchar((int) *cptr); + return 1; + case 'i': + case 'd': + cptr = embryo_data_address_get(ep, param); + if (cptr) + printf("%i", (int) *cptr); + return 1; + case 'x': + cptr = embryo_data_address_get(ep, param); + if (cptr) + printf("%x", (unsigned int) *cptr); + return 1; + case 'f': + cptr = embryo_data_address_get(ep, param); + if (cptr) + printf("%f", (float)(*(float *)cptr)); + return 1; + case 'X': + cptr = embryo_data_address_get(ep, param); + if (cptr) + printf("%08x", (unsigned int) *cptr); + return 1; + case 's': + cptr = embryo_data_address_get(ep, param); + if (cptr) + printstring(ep, cptr, NULL, 0); + return 1; + } + putchar(ch); + return 0; +} + +static int +doesc(Embryo_Program * ep, char ch, Embryo_Cell param) +{ + Embryo_Cell *cptr; + + switch (ch) + { + case 'n': + putchar('\n'); + return 1; + case 't': + putchar('\t'); + return 1; + } + putchar(ch); + return 0; +} + +static int +printstring(Embryo_Program * ep, Embryo_Cell *cstr, Embryo_Cell *params, int num) +{ + int i; + int informat = 0, paramidx = 0, inesc = 0, len = 0; + int j = sizeof(Embryo_Cell) - sizeof(char); + char c; + char *str; + + /* the string is packed */ + i = 0; + len = embryo_data_string_length_get(ep, cstr); + str = alloca(len + 1); + embryo_data_string_get(ep, cstr, str); + for (i = 0;; i++) { + c = (char) (str[i]); + if (c == 0) + break; + if (informat) { + paramidx += dochar(ep, c, params[paramidx]); + informat = 0; + } else if (inesc) { + doesc(ep, c, params[paramidx]); + inesc = 0; + } else if (params != NULL && c == '%') { + informat = 1; + } else if (params != NULL && c == '\\') { + inesc = 1; + } else { + putchar(c); + } /* if */ + } /* for */ + return EMBRYO_ERROR_NONE; +} + +static Embryo_Cell +exported_printf(Embryo_Program *ep, Embryo_Cell *params) +{ + Embryo_Cell *cptr; + + // params[0] = number of bytes params passed + cptr = embryo_data_address_get(ep, params[1]); + printstring(ep, cptr, params + 2, (int) (params[0] / sizeof(Embryo_Cell)) - 1); + fflush(stdout); + return EMBRYO_ERROR_NONE; +} + +static Embryo_Cell +exported_call(Embryo_Program *ep, Embryo_Cell *params) +{ + Embryo_Cell *cptr; + + // params[0] = number of bytes of params passed + cptr = embryo_data_address_get(ep, params[1]); + if (cptr) + { + char buf[4096]; + + buf[0] = 0; + printf(".."); + embryo_data_string_get(ep, cptr, buf); + printf("OUT: \"%s\"", buf); + } + cptr = embryo_data_address_get(ep, params[3]); + if (cptr) + { + char buf[4096]; + + buf[0] = 0; + embryo_data_string_get(ep, cptr, buf); + printf(" \"%s\"", buf); + } + { + int v; + + v = params[3]; + printf(" %i", v); + } + printf("\n"); + return 10; +} + +void +exit_error(Embryo_Program *ep, int errorcode) +{ + printf("Run time error %d: \"%s\"\n", + errorcode, + embryo_error_string_get(errorcode)); + exit(-1); +} + +void PrintUsage(char *program) +{ + printf("Usage: %s \n", program); + exit(1); +} + +int +main(int argc,char *argv[]) +{ + Embryo_Program *ep; + Embryo_Cell val; + Embryo_Function fn; + int r; + int err; + + if (argc != 2) + { + printf("Usage: %s \n", argv[0]); + exit(-1); + } + ep = embryo_program_load(argv[1]); + if (!ep) + { + printf("Cannot load %s\n", argv[1]); + exit(-1); + } + embryo_program_native_call_add(ep, "call", exported_call); + embryo_program_native_call_add(ep, "printf", exported_printf); + + embryo_program_vm_push(ep); + val = embryo_program_variable_find(ep, "global1"); + if (val != EMBRYO_CELL_NONE) + { + Embryo_Cell *addr; + + addr = embryo_data_address_get(ep, val); + if (addr) printf("Global variable value = %i\n", (int)*addr); + } + else + printf("Cannot find variable\n"); + + fn = embryo_program_function_find(ep, "testfn"); + if (fn != EMBRYO_FUNCTION_NONE) + { + printf("Found testfn()\n"); + embryo_parameter_cell_push(ep, 9876); + embryo_parameter_string_push(ep, "K is a dirty fish"); + embryo_parameter_cell_push(ep, 127); + while ((r = embryo_program_run(ep, fn)) == EMBRYO_PROGRAM_SLEEP); + if (r == EMBRYO_PROGRAM_FAIL) printf("Run failed!\n"); + } + else + { + printf("Runing main()\n"); + while ((r = embryo_program_run(ep, EMBRYO_FUNCTION_MAIN)) == EMBRYO_PROGRAM_SLEEP); + if (r == EMBRYO_PROGRAM_FAIL) printf("Run failed!\n"); + } + embryo_program_vm_pop(ep); + + err = embryo_program_error_get(ep); + if (err != EMBRYO_ERROR_NONE) exit_error(ep, err); + printf("Program %s returns %i\n", argv[1], embryo_program_return_value_get(ep)); + embryo_program_free(ep); + return 0; +} diff --git a/legacy/embryo/src/lib/Embryo.h b/legacy/embryo/src/lib/Embryo.h new file mode 100644 index 0000000000..90278986b2 --- /dev/null +++ b/legacy/embryo/src/lib/Embryo.h @@ -0,0 +1,98 @@ +#ifndef _EMBRYO_H +#define _EMBRYO_H +/* + * FIXME: + * handle the case where: + * [C] -> [vm] -> [native call] -> [same or other func in same vm] + */ + +#ifdef __cplusplus +extern "C" { +#endif + + /* potentioal error values */ + enum + { + EMBRYO_ERROR_NONE, + /* reserve the first 15 error codes for exit codes of the abstract machine */ + EMBRYO_ERROR_EXIT, /* forced exit */ + EMBRYO_ERROR_ASSERT, /* assertion failed */ + EMBRYO_ERROR_STACKERR, /* stack/heap collision */ + EMBRYO_ERROR_BOUNDS, /* index out of bounds */ + EMBRYO_ERROR_MEMACCESS, /* invalid memory access */ + EMBRYO_ERROR_INVINSTR, /* invalid instruction */ + EMBRYO_ERROR_STACKLOW, /* stack underflow */ + EMBRYO_ERROR_HEAPLOW, /* heap underflow */ + EMBRYO_ERROR_CALLBACK, /* no callback, or invalid callback */ + EMBRYO_ERROR_NATIVE, /* native function failed */ + EMBRYO_ERROR_DIVIDE, /* divide by zero */ + EMBRYO_ERROR_SLEEP, /* go into sleepmode - code can be restarted */ + + EMBRYO_ERROR_MEMORY = 16, /* out of memory */ + EMBRYO_ERROR_FORMAT, /* invalid file format */ + EMBRYO_ERROR_VERSION, /* file is for a newer version of the Embryo_Program */ + EMBRYO_ERROR_NOTFOUND, /* function not found */ + EMBRYO_ERROR_INDEX, /* invalid index parameter (bad entry point) */ + EMBRYO_ERROR_DEBUG, /* debugger cannot run */ + EMBRYO_ERROR_INIT, /* Embryo_Program not initialized (or doubly initialized) */ + EMBRYO_ERROR_USERDATA, /* unable to set user data field (table full) */ + EMBRYO_ERROR_INIT_JIT, /* cannot initialize the JIT */ + EMBRYO_ERROR_PARAMS, /* parameter error */ + EMBRYO_ERROR_DOMAIN, /* domain error, expression result does not fit in range */ + }; + + /* possible function type values that are enumerated */ +#define EMBRYO_FUNCTION_NONE 0x7fffffff /* an invalid/non existant function */ +#define EMBRYO_FUNCTION_MAIN -1 /* start at program entry point */ +#define EMBRYO_FUNCTION_CONT -2 /* continue from last address */ + /* an invalid cell reference */ +#define EMBRYO_CELL_NONE 0x7fffffff /* an invalid cell reference */ + /* program run return values */ +#define EMBRYO_PROGRAM_OK 1 +#define EMBRYO_PROGRAM_SLEEP 2 +#define EMBRYO_PROGRAM_BUSY 3 +#define EMBRYO_PROGRAM_FAIL 0 + +#define EMBRYO_FLOAT_TO_CELL(f) ( *((Embryo_Cell*)&f)) /* float to Embryo_Cell */ +#define EMBRYO_CELL_TO_FLOAT(c) ( *((float*)&c)) /* Embryo_Cell to float */ + + typedef unsigned int Embryo_UCell; + typedef int Embryo_Cell; + typedef struct _Embryo_Program Embryo_Program; + typedef int Embryo_Function; + + int embryo_init(void); + int embryo_shutdown(void); + + Embryo_Program *embryo_program_new(void *data, int size); + Embryo_Program *embryo_program_const_new(void *data, int size); + Embryo_Program *embryo_program_load(char *file); + void embryo_program_free(Embryo_Program *ep); + void embryo_program_native_call_add(Embryo_Program *ep, char *name, Embryo_Cell (*func) (Embryo_Program *ep, Embryo_Cell *params)); + void embryo_program_vm_reset(Embryo_Program *ep); + void embryo_program_vm_push(Embryo_Program *ep); + void embryo_program_vm_pop(Embryo_Program *ep); + void embryo_swap_16(unsigned short *v); + void embryo_swap_32(unsigned int *v); + Embryo_Function embryo_program_function_find(Embryo_Program *ep, char *name); + Embryo_Cell embryo_program_variable_find(Embryo_Program *ep, char *name); + void embryo_program_error_set(Embryo_Program *ep, int error); + int embryo_program_error_get(Embryo_Program *ep); + const char *embryo_error_string_get(int error); + int embryo_data_string_length_get(Embryo_Program *ep, Embryo_Cell *str_cell); + void embryo_data_string_get(Embryo_Program *ep, Embryo_Cell *str_cell, char *dst); + void embryo_data_string_set(Embryo_Program *ep, char *src, Embryo_Cell *str_cell); + Embryo_Cell *embryo_data_address_get(Embryo_Program *ep, Embryo_Cell addr); + Embryo_Cell embryo_data_heap_push(Embryo_Program *ep, int cells); + void embryo_data_heap_pop(Embryo_Program *ep, Embryo_Cell down_to); + int embryo_program_run(Embryo_Program *ep, Embryo_Function func); + Embryo_Cell embryo_program_return_value_get(Embryo_Program *ep); + int embryo_parameter_cell_push(Embryo_Program *ep, Embryo_Cell cell); + int embryo_parameter_string_push(Embryo_Program *ep, char *str); + int embryo_parameter_cell_array_push(Embryo_Program *ep, Embryo_Cell *cells, int num); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/legacy/embryo/src/lib/Makefile.am b/legacy/embryo/src/lib/Makefile.am new file mode 100644 index 0000000000..cc0140f1ff --- /dev/null +++ b/legacy/embryo/src/lib/Makefile.am @@ -0,0 +1,24 @@ +## Process this file with automake to produce Makefile.in + +AUTOMAKE_OPTIONS = 1.4 foreign + +# A list of all the files in the current directory which can be regenerated +MAINTAINERCLEANFILES = Makefile.in + +LDFLAGS = +INCLUDES = -I. \ + -I$(top_srcdir)/src/lib \ + -I$(top_srcdir)/src/lib/include + + +lib_LTLIBRARIES = libembryo.la +include_HEADERS = Embryo.h +libembryo_la_SOURCES = \ +embryo_amx.c \ +embryo_float.c \ +embryo_main.c \ +embryo_private.h + +libembryo_la_LIBADD = $(LDFLAGS) -lm +libembryo_la_DEPENDENCIES = $(top_builddir)/config.h +libembryo_la_LDFLAGS = -version-info 1:0:0 diff --git a/legacy/embryo/src/lib/embryo_amx.c b/legacy/embryo/src/lib/embryo_amx.c new file mode 100644 index 0000000000..bb5e3e52d5 --- /dev/null +++ b/legacy/embryo/src/lib/embryo_amx.c @@ -0,0 +1,1611 @@ +/* Abstract Machine for the Small compiler + * + * Copyright (c) ITB CompuPhase, 1997-2003 + * Portions Copyright (c) Carsten Haitzler, 2004 + * + * This software is provided "as-is", without any express or implied warranty. + * In no event will the authors be held liable for any damages arising from + * the use of this software. + * + * Permission is granted to anyone to use this software for any purpose, + * including commercial applications, and to alter it and redistribute it + * freely, subject to the following restrictions: + * + * 1. The origin of this software must not be misrepresented; you must not + * claim that you wrote the original software. If you use this software in + * a product, an acknowledgment in the product documentation would be + * appreciated but is not required. + * 2. Altered source versions must be plainly marked as such, and must not be + * misrepresented as being the original software. + * 3. This notice may not be removed or altered from any source distribution. + */ +#include "embryo_private.h" + +#define JUMPABS(base, ip) ((Embryo_Cell *)(code + (*ip))) + +static void _embryo_byte_swap_16 (unsigned short *v); +static void _embryo_byte_swap_32 (unsigned int *v); +static int _embryo_native_call (Embryo_Program *ep, Embryo_Cell index, Embryo_Cell *result, Embryo_Cell *params); +static int _embryo_func_get (Embryo_Program *ep, int index, char *funcname); +static int _embryo_var_get (Embryo_Program *ep, int index, char *varname, Embryo_Cell *ep_addr); +static int _embryo_program_init (Embryo_Program *ep, void *code); + +static void +_embryo_byte_swap_16(unsigned short *v) +{ + unsigned char *s, t; + + s = (unsigned char *)v; + t = s[0]; s[0] = s[1]; s[1] = t; +} + +static void +_embryo_byte_swap_32(unsigned int *v) +{ + unsigned char *s, t; + + s = (unsigned char *)v; + t = s[0]; s[0] = s[3]; s[3] = t; + t = s[1]; s[1] = s[2]; s[2] = t; +} + +static int +_embryo_native_call(Embryo_Program *ep, Embryo_Cell index, Embryo_Cell *result, Embryo_Cell *params) +{ + Embryo_Header *hdr; + Embryo_Func_Stub *func_entry; + Embryo_Native f; + + hdr = (Embryo_Header *)ep->base; + func_entry = GETENTRY(hdr, natives, index); + if ((func_entry->address <= 0) || + (func_entry->address > ep->native_calls_size)) + { + ep->error = EMBRYO_ERROR_CALLBACK; + return ep->error; + } + f = ep->native_calls[func_entry->address - 1]; + if (!f) + { + ep->error = EMBRYO_ERROR_CALLBACK; + return ep->error; + } + ep->error = EMBRYO_ERROR_NONE; + *result = f(ep, params); + return ep->error; +} + +static int +_embryo_func_get(Embryo_Program *ep, int index, char *funcname) +{ + Embryo_Header *hdr; + Embryo_Func_Stub *func; + + hdr = (Embryo_Header *)ep->code; + if (index >= (Embryo_Cell)NUMENTRIES(hdr, publics, natives)) + return EMBRYO_ERROR_INDEX; + + func = GETENTRY(hdr, publics, index); + strcpy(funcname, GETENTRYNAME(hdr, func)); + return EMBRYO_ERROR_NONE; +} + +static int +_embryo_var_get(Embryo_Program *ep, int index, char *varname, Embryo_Cell *ep_addr) +{ + + Embryo_Header *hdr; + Embryo_Func_Stub *var; + + hdr=(Embryo_Header *)ep->base; + if (index >= (Embryo_Cell)NUMENTRIES(hdr, pubvars, tags)) + return EMBRYO_ERROR_INDEX; + + var = GETENTRY(hdr, pubvars, index); + strcpy(varname, GETENTRYNAME(hdr, var)); + *ep_addr = var->address; + return EMBRYO_ERROR_NONE; +} + +static int +_embryo_program_init(Embryo_Program *ep, void *code) +{ + Embryo_Header *hdr; + Embryo_Func_Stub *fs; + int i, num; + + if ((ep->flags & EMBRYO_FLAG_RELOC)) return 1; + ep->code = (unsigned char *)code; + hdr = (Embryo_Header *)ep->code; +#ifdef WORDS_BIGENDIAN + embryo_swap_32((unsigned int *)&hdr->size); + embryo_swap_16((unsigned short *)&hdr->magic); + embryo_swap_16((unsigned short *)&hdr->flags); + embryo_swap_16((unsigned short *)&hdr->defsize); + embryo_swap_32((unsigned int *)&hdr->cod); + embryo_swap_32((unsigned int *)&hdr->dat); + embryo_swap_32((unsigned int *)&hdr->hea); + embryo_swap_32((unsigned int *)&hdr->stp); + embryo_swap_32((unsigned int *)&hdr->cip); + embryo_swap_32((unsigned int *)&hdr->publics); + embryo_swap_32((unsigned int *)&hdr->natives); + embryo_swap_32((unsigned int *)&hdr->libraries); + embryo_swap_32((unsigned int *)&hdr->pubvars); + embryo_swap_32((unsigned int *)&hdr->tags); +#endif + + if (hdr->magic != EMBRYO_MAGIC) return 0; + if ((hdr->file_version < MIN_FILE_VERSION) || + (hdr->ep_version > CUR_FILE_VERSION)) return 0; + if ((hdr->defsize != sizeof(Embryo_Func_Stub)) && + (hdr->defsize != (2 * sizeof(unsigned int)))) return 0; + if (hdr->defsize == (2 * sizeof(unsigned int))) + { + unsigned short *len; + + len = (unsigned short*)((unsigned char*)ep->code + hdr->nametable); + if (*len > sNAMEMAX) return 0; + } + if (hdr->stp <= 0) return 0; + if ((hdr->flags & EMBRYO_FLAG_COMPACT)) return 0; + + /* also align all addresses in the public function, public variable and */ + /* public tag tables */ + fs = GETENTRY(hdr, publics, 0); + num = NUMENTRIES(hdr, publics, natives); + for (i = 0; i < num; i++) + { + embryo_swap_32(&(fs->address)); + fs = (Embryo_Func_Stub *)((unsigned char *)fs + hdr->defsize); + } + + fs = GETENTRY(hdr, pubvars, 0); + num = NUMENTRIES(hdr, pubvars, tags); + for (i = 0; i < num; i++) + { + embryo_swap_32(&(fs->address)); + fs = (Embryo_Func_Stub *)((unsigned char *)fs + hdr->defsize); + } + + fs = GETENTRY(hdr, tags, 0); + num = NUMENTRIES(hdr, tags, nametable); + for (i = 0; i < num; i++) + { + embryo_swap_32(&(fs->address)); + fs = (Embryo_Func_Stub *)((unsigned char *)fs + hdr->defsize); + } + ep->flags = EMBRYO_FLAG_RELOC; + + /* init native api for handling floating point - default in embryo */ + _embryo_fp_init(ep); + return 1; +} + +/*** EXPORTED CALLS ***/ + +Embryo_Program * +embryo_program_new(void *data, int size) +{ + Embryo_Program *ep; + void *code_data; + + if (size < sizeof(Embryo_Header)) return NULL; + + ep = calloc(1, sizeof(Embryo_Program)); + if (!ep) return NULL; + + code_data = malloc(size); + if (!code_data) + { + free(ep); + return NULL; + } + memcpy(code_data, data, size); + if (_embryo_program_init(ep, code_data)) return ep; + free(code_data); + free(ep); + return NULL; +} + +Embryo_Program * +embryo_program_const_new(void *data, int size) +{ + Embryo_Program *ep; + + if (size < sizeof(Embryo_Header)) return NULL; + + ep = calloc(1, sizeof(Embryo_Program)); + if (!ep) return NULL; + + if (_embryo_program_init(ep, data)) + { + ep->dont_free_code = 1; + return ep; + } + free(ep); + return NULL; +} + +Embryo_Program * +embryo_program_load(char *file) +{ + Embryo_Program *ep; + FILE *f; + void *program = NULL; + int program_size = 0; + + f = fopen(file, "rb"); + if (!f) return NULL; + fseek(f, 0, SEEK_END); + program_size = ftell(f); + rewind(f); + if (program_size < sizeof(Embryo_Header)) + { + fclose(f); + return NULL; + } + program = malloc(program_size); + if (!program) + { + fclose(f); + return NULL; + } + if (fread(program, program_size, 1, f) != 1) + { + free(program); + fclose(f); + return NULL; + } + ep = embryo_program_new(program, program_size); + free(program); + fclose(f); + return ep; +} + +void +embryo_program_free(Embryo_Program *ep) +{ + int i; + + if (ep->base) free(ep->base); + if ((!ep->dont_free_code) && (ep->code)) free(ep->code); + if (ep->native_calls) free(ep->native_calls); + for (i = 0; i < ep->params_size; i++) + { + if (ep->params[i].string) free(ep->params[i].string); + if (ep->params[i].cell_array) free(ep->params[i].cell_array); + } + if (ep->params) free(ep->params); + free(ep); +} + +void +embryo_program_native_call_add(Embryo_Program *ep, char *name, Embryo_Cell (*func) (Embryo_Program *ep, Embryo_Cell *params)) +{ + Embryo_Func_Stub *func_entry; + Embryo_Header *hdr; + int i, num; + + if ((ep == NULL ) || (name == NULL) || (func == NULL)) return; + if (strlen(name) > sEXPMAX) return; + + hdr = (Embryo_Header *)ep->code; + if (hdr->defsize < 1) return; + num = NUMENTRIES(hdr, natives, libraries); + if (num <= 0) return; + + ep->native_calls_size++; + if (ep->native_calls_size > ep->native_calls_alloc) + { + Embryo_Native *calls; + + ep->native_calls_alloc += 16; + calls = realloc(ep->native_calls, + ep->native_calls_alloc * sizeof(Embryo_Native)); + if (!calls) + { + ep->native_calls_size--; + ep->native_calls_alloc -= 16; + return; + } + ep->native_calls = calls; + } + ep->native_calls[ep->native_calls_size - 1] = func; + + func_entry = GETENTRY(hdr, natives, 0); + for (i = 0; i < num; i++) + { + if (func_entry->address == 0) + { + char *entry_name; + + entry_name = GETENTRYNAME(hdr, func_entry); + if ((entry_name) && (!strcmp(entry_name, name))) + { + func_entry->address = ep->native_calls_size; + return; + } + } + func_entry = + (Embryo_Func_Stub *)((unsigned char *)func_entry + hdr->defsize); + } +} + +void +embryo_program_vm_reset(Embryo_Program *ep) +{ + Embryo_Header *hdr; + + if ((!ep) || (!ep->base)) return; + hdr = (Embryo_Header *)ep->code; + memcpy(ep->base, hdr, hdr->size); + *(Embryo_Cell *)(ep->base + (int)hdr->stp - sizeof(Embryo_Cell)) = 0; + + ep->hlw = hdr->hea - hdr->dat; /* stack and heap relative to data segment */ + ep->stp = hdr->stp - hdr->dat - sizeof(Embryo_Cell); + ep->hea = ep->hlw; + ep->stk = ep->stp; +} + +void +embryo_program_vm_push(Embryo_Program *ep) +{ + Embryo_Header *hdr; + + if ((!ep) || (ep->base)) return; + hdr = (Embryo_Header *)ep->code; + ep->base = malloc(hdr->stp); + if (!ep->base) return; + embryo_program_vm_reset(ep); +} + +void +embryo_program_vm_pop(Embryo_Program *ep) +{ + if ((!ep) || (!ep->base)) return; + free(ep->base); + ep->base = NULL; +} + +void +embryo_swap_16(unsigned short *v) +{ +#ifdef WORDS_BIGENDIAN + _embryo_byte_swap_16(v); +#endif +} + +void +embryo_swap_32(unsigned int *v) +{ +#ifdef WORDS_BIGENDIAN + _embryo_byte_swap_32(v); +#endif +} + +Embryo_Function +embryo_program_function_find(Embryo_Program *ep, char *name) +{ + int first, last, mid, result; + char pname[sNAMEMAX + 1]; + Embryo_Header *hdr; + + if (!ep) return EMBRYO_FUNCTION_NONE; + hdr = (Embryo_Header *)ep->code; + last = NUMENTRIES(hdr, publics, natives) - 1; + first = 0; + /* binary search */ + while (first <= last) + { + mid = (first + last) / 2; + if (_embryo_func_get(ep, mid, pname) == EMBRYO_ERROR_NONE) + result = strcmp(pname, name); + else + result = -1; + if (result > 0) last = mid - 1; + else if (result < 0) first = mid + 1; + else return mid; + } + return EMBRYO_FUNCTION_NONE; +} + +Embryo_Cell +embryo_program_variable_find(Embryo_Program *ep, char *name) +{ + int first, last, mid, result; + char pname[sNAMEMAX + 1]; + Embryo_Cell paddr; + Embryo_Header *hdr; + + if (!ep) return EMBRYO_CELL_NONE; + if (!ep->base) return EMBRYO_CELL_NONE; + hdr = (Embryo_Header *)ep->base; + last = NUMENTRIES(hdr, pubvars, tags) - 1; + first = 0; + /* binary search */ + while (first <= last) + { + mid = (first + last) / 2; + if (_embryo_var_get(ep, mid, pname, &paddr) == EMBRYO_ERROR_NONE) + result = strcmp(pname, name); + else + result = -1; + if (result > 0) last = mid - 1; + else if (result < 0) first = mid + 1; + return paddr; + } + return EMBRYO_CELL_NONE; +} + +void +embryo_program_error_set(Embryo_Program *ep, int error) +{ + if (!ep) return; + ep->error = error; +} + +int +embryo_program_error_get(Embryo_Program *ep) +{ + if (!ep) return EMBRYO_ERROR_NONE; + return ep->error; +} + +const char * +embryo_error_string_get(int error) +{ + const char *messages[] = + { + /* EMBRYO_ERROR_NONE */ "(none)", + /* EMBRYO_ERROR_EXIT */ "Forced exit", + /* EMBRYO_ERROR_ASSERT */ "Assertion failed", + /* EMBRYO_ERROR_STACKERR */ "Stack/heap collision (insufficient stack size)", + /* EMBRYO_ERROR_BOUNDS */ "Array index out of bounds", + /* EMBRYO_ERROR_MEMACCESS */ "Invalid memory access", + /* EMBRYO_ERROR_INVINSTR */ "Invalid instruction", + /* EMBRYO_ERROR_STACKLOW */ "Stack underflow", + /* EMBRYO_ERROR_HEAPLOW */ "Heap underflow", + /* EMBRYO_ERROR_CALLBACK */ "No (valid) native function callback", + /* EMBRYO_ERROR_NATIVE */ "Native function failed", + /* EMBRYO_ERROR_DIVIDE */ "Divide by zero", + /* EMBRYO_ERROR_SLEEP */ "(sleep mode)", + /* 13 */ "(reserved)", + /* 14 */ "(reserved)", + /* 15 */ "(reserved)", + /* EMBRYO_ERROR_MEMORY */ "Out of memory", + /* EMBRYO_ERROR_FORMAT */ "Invalid/unsupported P-code file format", + /* EMBRYO_ERROR_VERSION */ "File is for a newer version of the Embryo_Program", + /* EMBRYO_ERROR_NOTFOUND */ "Native/Public function is not found", + /* EMBRYO_ERROR_INDEX */ "Invalid index parameter (bad entry point)", + /* EMBRYO_ERROR_DEBUG */ "Debugger cannot run", + /* EMBRYO_ERROR_INIT */ "Embryo_Program not initialized (or doubly initialized)", + /* EMBRYO_ERROR_USERDATA */ "Unable to set user data field (table full)", + /* EMBRYO_ERROR_INIT_JIT */ "Cannot initialize the JIT", + /* EMBRYO_ERROR_PARAMS */ "Parameter error", + }; + if ((error < 0) || (error >= (sizeof(messages) / sizeof(messages[0])))) + return (const char *)"(unknown)"; + return messages[error]; +} + +int +embryo_data_string_length_get(Embryo_Program *ep, Embryo_Cell *str_cell) +{ + int len; + Embryo_Header *hdr; + + if ((!ep) || (!ep->base)) return 0; + hdr = (Embryo_Header *)ep->base; + if ((!str_cell) || + ((void *)str_cell >= (void *)(ep->base + hdr->stp)) || + ((void *)str_cell < (void *)ep->base)) + return 0; + for (len = 0; str_cell[len] != 0; len++); + return len; +} + +void +embryo_data_string_get(Embryo_Program *ep, Embryo_Cell *str_cell, char *dst) +{ + int i; + Embryo_Header *hdr; + + if (!dst) return; + if ((!ep) || (!ep->base)) + { + dst[0] = 0; + return; + } + hdr = (Embryo_Header *)ep->base; + if ((!str_cell) || + ((void *)str_cell >= (void *)(ep->base + hdr->stp)) || + ((void *)str_cell < (void *)ep->base)) + { + dst[0] = 0; + return; + } + for (i = 0; str_cell[i] != 0; i++) dst[i] = str_cell[i]; + dst[i] = 0; +} + +void +embryo_data_string_set(Embryo_Program *ep, char *src, Embryo_Cell *str_cell) +{ + int i; + Embryo_Header *hdr; + + if (!ep) return; + if (!ep->base) return; + hdr = (Embryo_Header *)ep->base; + if ((!str_cell) || + ((void *)str_cell >= (void *)(ep->base + hdr->stp)) || + ((void *)str_cell < (void *)ep->base)) + return; + if (!src) + { + str_cell[0] = 0; + return; + } + for (i = 0; src[i] != 0; i++) + { + if ((void *)(&(str_cell[i])) >= (void *)(ep->base + hdr->stp)) return; + else if ((void *)(&(str_cell[i]) == (void *)(ep->base + hdr->stp - 1))) + { + str_cell[i] = 0; + return; + } + str_cell[i] = src[i]; + } + str_cell[i] = 0; +} + +Embryo_Cell * +embryo_data_address_get(Embryo_Program *ep, Embryo_Cell addr) +{ + Embryo_Header *hdr; + unsigned char *data; + + if ((!ep) || (!ep->base)) return NULL; + hdr = (Embryo_Header *)ep->base; + data = ep->base + (int)hdr->dat; + if ((addr < 0) || (addr >= hdr->stp)) return NULL; + return (Embryo_Cell *)(data + (int)addr); +} + +Embryo_Cell +embryo_data_heap_push(Embryo_Program *ep, int cells) +{ + Embryo_Header *hdr; + unsigned char *data; + Embryo_Cell addr; + + if ((!ep) || (!ep->base)) return EMBRYO_CELL_NONE; + hdr = (Embryo_Header *)ep->base; + data = ep->base + (int)hdr->dat; + if (ep->stk - ep->hea - (cells * sizeof(Embryo_Cell)) < STKMARGIN) + return EMBRYO_CELL_NONE; + addr = ep->hea; + ep->hea += (cells * sizeof(Embryo_Cell)); + return addr; +} + +void +embryo_data_heap_pop(Embryo_Program *ep, Embryo_Cell down_to) +{ + if (!ep) return; + if (down_to < 0) down_to = 0; + if (ep->hea > down_to) ep->hea = down_to; +} + +int +embryo_program_run(Embryo_Program *ep, Embryo_Function fn) +{ + Embryo_Header *hdr; + Embryo_Func_Stub *func; + unsigned char *code, *data; + Embryo_Cell pri, alt, stk, frm, hea; + Embryo_Cell reset_stk, reset_hea, *cip; + Embryo_UCell codesize; + int i; + Embryo_Opcode op; + Embryo_Cell offs; + int num; + + if (!ep) return EMBRYO_PROGRAM_FAIL; + if (ep->run_count > 0) return EMBRYO_PROGRAM_BUSY; + if (!(ep->flags & EMBRYO_FLAG_RELOC)) + { + + ep->error = EMBRYO_ERROR_INIT; + return EMBRYO_PROGRAM_FAIL; + } + if (!ep->base) + { + ep->error = EMBRYO_ERROR_INIT; + return EMBRYO_PROGRAM_FAIL; + } + + /* set up the registers */ + hdr = (Embryo_Header *)ep->base; + codesize = (Embryo_UCell)(hdr->dat - hdr->cod); + code = ep->base + (int)hdr->cod; + data = ep->base + (int)hdr->dat; + hea = ep->hea; + stk = ep->stk; + reset_stk = stk; + reset_hea = hea; + frm = alt = pri = 0; + + /* get the start address */ + if (fn == EMBRYO_FUNCTION_MAIN) + { + if (hdr->cip < 0) + { + ep->error = EMBRYO_ERROR_INDEX; + return EMBRYO_PROGRAM_FAIL; + } + cip = (Embryo_Cell *)(code + (int)hdr->cip); + } + else if (fn == EMBRYO_FUNCTION_CONT) + { + /* all registers: pri, alt, frm, cip, hea, stk, reset_stk, reset_hea */ + frm = ep->frm; + stk = ep->stk; + hea = ep->hea; + pri = ep->pri; + alt = ep->alt; + reset_stk = ep->reset_stk; + reset_hea = ep->reset_hea; + cip = (Embryo_Cell *)(code + (int)ep->cip); + } + else if (fn < 0) + { + ep->error = EMBRYO_ERROR_INDEX; + return EMBRYO_PROGRAM_FAIL; + } + else + { + if (fn >= (Embryo_Cell)NUMENTRIES(hdr, publics, natives)) + { + ep->error = EMBRYO_ERROR_INDEX; + return EMBRYO_PROGRAM_FAIL; + } + func = GETENTRY(hdr, publics, fn); + cip = (Embryo_Cell *)(code + (int)func->address); + } + /* check values just copied */ + CHKSTACK(); + CHKHEAP(); + + if (fn != EMBRYO_FUNCTION_CONT) + { + int i; + + for (i = ep->params_size - 1; i >= 0; i--) + { + Embryo_Param *pr; + + pr = &(ep->params[i]); + if (pr->string) + { + int len; + Embryo_Cell ep_addr, *addr; + + len = strlen(pr->string); + ep_addr = embryo_data_heap_push(ep, len + 1); + if (ep_addr == EMBRYO_CELL_NONE) + { + ep->error = EMBRYO_ERROR_HEAPLOW; + return EMBRYO_PROGRAM_FAIL; + } + addr = embryo_data_address_get(ep, ep_addr); + if (addr) + embryo_data_string_set(ep, pr->string, addr); + else + { + ep->error = EMBRYO_ERROR_HEAPLOW; + return EMBRYO_PROGRAM_FAIL; + } + PUSH(ep_addr); + free(pr->string); + } + else if (pr->cell_array) + { + int len; + Embryo_Cell ep_addr, *addr; + + len = strlen(pr->string); + ep_addr = embryo_data_heap_push(ep, len + 1); + if (ep_addr == EMBRYO_CELL_NONE) + { + ep->error = EMBRYO_ERROR_HEAPLOW; + return EMBRYO_PROGRAM_FAIL; + } + addr = embryo_data_address_get(ep, ep_addr); + if (addr) + memcpy(addr, pr->cell_array, + pr->cell_array_size * sizeof(Embryo_Cell)); + else + { + ep->error = EMBRYO_ERROR_HEAPLOW; + return EMBRYO_PROGRAM_FAIL; + } + PUSH(ep_addr); + free(pr->cell_array); + } + else + { + PUSH(pr->cell); + } + } + PUSH(ep->params_size * sizeof(Embryo_Cell)); + PUSH(0); + if (ep->params) + { + free(ep->params); + ep->params = NULL; + } + ep->params_size = ep->params_alloc = 0; + } + /* check stack/heap before starting to run */ + CHKMARGIN(); + + ep->run_count++; + + /* start running */ + for (;;) + { + op = (Embryo_Opcode)*cip++; + switch (op) + { + case EMBRYO_OP_LOAD_PRI: + GETPARAM(offs); + pri = *(Embryo_Cell *)(data + (int)offs); + break; + case EMBRYO_OP_LOAD_ALT: + GETPARAM(offs); + alt = *(Embryo_Cell *)(data + (int)offs); + break; + case EMBRYO_OP_LOAD_S_PRI: + GETPARAM(offs); + pri = *(Embryo_Cell *)(data + (int)frm + (int)offs); + break; + case EMBRYO_OP_LOAD_S_ALT: + GETPARAM(offs); + alt = *(Embryo_Cell *)(data + (int)frm + (int)offs); + break; + case EMBRYO_OP_LREF_PRI: + GETPARAM(offs); + offs = *(Embryo_Cell *)(data + (int)offs); + pri = *(Embryo_Cell *)(data + (int)offs); + break; + case EMBRYO_OP_LREF_ALT: + GETPARAM(offs); + offs = *(Embryo_Cell *)(data + (int)offs); + alt = *(Embryo_Cell *)(data + (int)offs); + break; + case EMBRYO_OP_LREF_S_PRI: + GETPARAM(offs); + offs= * (Embryo_Cell *)(data+(int)frm+(int)offs); + pri= * (Embryo_Cell *)(data+(int)offs); + break; + case EMBRYO_OP_LREF_S_ALT: + GETPARAM(offs); + offs= * (Embryo_Cell *)(data+(int)frm+(int)offs); + alt= * (Embryo_Cell *)(data+(int)offs); + break; + case EMBRYO_OP_LOAD_I: + /* verify address */ + if (pri>=hea && pri=(Embryo_UCell)ep->stp) + ABORT(ep,EMBRYO_ERROR_MEMACCESS); + pri= * (Embryo_Cell *)(data+(int)pri); + break; + case EMBRYO_OP_LODB_I: + GETPARAM(offs); + /* verify address */ + if (pri>=hea && pri=(Embryo_UCell)ep->stp) + ABORT(ep,EMBRYO_ERROR_MEMACCESS); + switch (offs) + { + case 1: + pri= * (data+(int)pri); + break; + case 2: + pri= * (unsigned short *)(data+(int)pri); + break; + case 4: + pri= * (unsigned int *)(data+(int)pri); + break; + default: + ABORT(ep,EMBRYO_ERROR_INVINSTR); + break; + } + break; + case EMBRYO_OP_CONST_PRI: + GETPARAM(pri); + break; + case EMBRYO_OP_CONST_ALT: + GETPARAM(alt); + break; + case EMBRYO_OP_ADDR_PRI: + GETPARAM(pri); + pri+=frm; + break; + case EMBRYO_OP_ADDR_ALT: + GETPARAM(alt); + alt+=frm; + break; + case EMBRYO_OP_STOR_PRI: + GETPARAM(offs); + *(Embryo_Cell *)(data+(int)offs)=pri; + break; + case EMBRYO_OP_STOR_ALT: + GETPARAM(offs); + *(Embryo_Cell *)(data+(int)offs)=alt; + break; + case EMBRYO_OP_STOR_S_PRI: + GETPARAM(offs); + *(Embryo_Cell *)(data+(int)frm+(int)offs)=pri; + break; + case EMBRYO_OP_STOR_S_ALT: + GETPARAM(offs); + *(Embryo_Cell *)(data+(int)frm+(int)offs)=alt; + break; + case EMBRYO_OP_SREF_PRI: + GETPARAM(offs); + offs= * (Embryo_Cell *)(data+(int)offs); + *(Embryo_Cell *)(data+(int)offs)=pri; + break; + case EMBRYO_OP_SREF_ALT: + GETPARAM(offs); + offs= * (Embryo_Cell *)(data+(int)offs); + *(Embryo_Cell *)(data+(int)offs)=alt; + break; + case EMBRYO_OP_SREF_S_PRI: + GETPARAM(offs); + offs= * (Embryo_Cell *)(data+(int)frm+(int)offs); + *(Embryo_Cell *)(data+(int)offs)=pri; + break; + case EMBRYO_OP_SREF_S_ALT: + GETPARAM(offs); + offs= * (Embryo_Cell *)(data+(int)frm+(int)offs); + *(Embryo_Cell *)(data+(int)offs)=alt; + break; + case EMBRYO_OP_STOR_I: + /* verify address */ + if (alt>=hea && alt=(Embryo_UCell)ep->stp) + ABORT(ep,EMBRYO_ERROR_MEMACCESS); + *(Embryo_Cell *)(data+(int)alt)=pri; + break; + case EMBRYO_OP_STRB_I: + GETPARAM(offs); + /* verify address */ + if (alt>=hea && alt=(Embryo_UCell)ep->stp) + ABORT(ep,EMBRYO_ERROR_MEMACCESS); + switch (offs) + { + case 1: + *(data+(int)alt)=(unsigned char)pri; + break; + case 2: + *(unsigned short *)(data+(int)alt)=(unsigned short)pri; + break; + case 4: + *(unsigned int *)(data+(int)alt)=(unsigned int)pri; + break; + default: + ABORT(ep,EMBRYO_ERROR_INVINSTR); + break; + } /* switch */ + break; + case EMBRYO_OP_LIDX: + offs=pri*sizeof(Embryo_Cell)+alt; + /* verify address */ + if (offs>=hea && offs=(Embryo_UCell)ep->stp) + ABORT(ep,EMBRYO_ERROR_MEMACCESS); + pri= * (Embryo_Cell *)(data+(int)offs); + break; + case EMBRYO_OP_LIDX_B: + GETPARAM(offs); + offs=(pri << (int)offs)+alt; + /* verify address */ + if (offs>=hea && offs=(Embryo_UCell)ep->stp) + ABORT(ep,EMBRYO_ERROR_MEMACCESS); + pri= * (Embryo_Cell *)(data+(int)offs); + break; + case EMBRYO_OP_IDXADDR: + pri=pri*sizeof(Embryo_Cell)+alt; + break; + case EMBRYO_OP_IDXADDR_B: + GETPARAM(offs); + pri=(pri << (int)offs)+alt; + break; + case EMBRYO_OP_ALIGN_PRI: + GETPARAM(offs); +#ifdef WORDS_BIGENDIAN + if ((size_t)offscod; + break; + case 1: + pri=hdr->dat; + break; + case 2: + pri=hea; + break; + case 3: + pri=ep->stp; + break; + case 4: + pri=stk; + break; + case 5: + pri=frm; + break; + case 6: + pri=(Embryo_Cell)((unsigned char *)cip - code); + break; + default: + ABORT(ep,EMBRYO_ERROR_INVINSTR); + break; + } + break; + case EMBRYO_OP_SCTRL: + GETPARAM(offs); + switch (offs) + { + case 0: + case 1: + case 2: + hea=pri; + break; + case 3: + /* cannot change these parameters */ + break; + case 4: + stk=pri; + break; + case 5: + frm=pri; + break; + case 6: + cip=(Embryo_Cell *)(code + (int)pri); + break; + default: + ABORT(ep,EMBRYO_ERROR_INVINSTR); + break; + } + break; + case EMBRYO_OP_MOVE_PRI: + pri=alt; + break; + case EMBRYO_OP_MOVE_ALT: + alt=pri; + break; + case EMBRYO_OP_XCHG: + offs=pri; /* offs is a temporary variable */ + pri=alt; + alt=offs; + break; + case EMBRYO_OP_PUSH_PRI: + PUSH(pri); + break; + case EMBRYO_OP_PUSH_ALT: + PUSH(alt); + break; + case EMBRYO_OP_PUSH_C: + GETPARAM(offs); + PUSH(offs); + break; + case EMBRYO_OP_PUSH_R: + GETPARAM(offs); + while (offs--) + PUSH(pri); + break; + case EMBRYO_OP_PUSH: + GETPARAM(offs); + PUSH(* (Embryo_Cell *)(data+(int)offs)); + break; + case EMBRYO_OP_PUSH_S: + GETPARAM(offs); + PUSH(* (Embryo_Cell *)(data+(int)frm+(int)offs)); + break; + case EMBRYO_OP_POP_PRI: + POP(pri); + break; + case EMBRYO_OP_POP_ALT: + POP(alt); + break; + case EMBRYO_OP_STACK: + GETPARAM(offs); + alt=stk; + stk+=offs; + CHKMARGIN(); + CHKSTACK(); + break; + case EMBRYO_OP_HEAP: + GETPARAM(offs); + alt=hea; + hea+=offs; + CHKMARGIN(); + CHKHEAP(); + break; + case EMBRYO_OP_PROC: + PUSH(frm); + frm=stk; + CHKMARGIN(); + break; + case EMBRYO_OP_RET: + POP(frm); + POP(offs); + /* verify the return address */ + if ((Embryo_UCell)offs>=codesize) + ABORT(ep,EMBRYO_ERROR_MEMACCESS); + cip=(Embryo_Cell *)(code+(int)offs); + break; + case EMBRYO_OP_RETN: + POP(frm); + POP(offs); + /* verify the return address */ + if ((Embryo_UCell)offs>=codesize) + ABORT(ep,EMBRYO_ERROR_MEMACCESS); + cip=(Embryo_Cell *)(code+(int)offs); + stk+= *(Embryo_Cell *)(data+(int)stk) + sizeof(Embryo_Cell); /* remove parameters from the stack */ + ep->stk=stk; + break; + case EMBRYO_OP_CALL: + PUSH(((unsigned char *)cip-code)+sizeof(Embryo_Cell));/* skip address */ + cip=JUMPABS(code, cip); /* jump to the address */ + break; + case EMBRYO_OP_CALL_PRI: + PUSH((unsigned char *)cip-code); + cip=(Embryo_Cell *)(code+(int)pri); + break; + case EMBRYO_OP_JUMP: + /* since the GETPARAM() macro modifies cip, you cannot + * do GETPARAM(cip) directly */ + cip=JUMPABS(code, cip); + break; + case EMBRYO_OP_JREL: + offs=*cip; + cip=(Embryo_Cell *)((unsigned char *)cip + (int)offs + sizeof(Embryo_Cell)); + break; + case EMBRYO_OP_JZER: + if (pri==0) + cip=JUMPABS(code, cip); + else + cip=(Embryo_Cell *)((unsigned char *)cip+sizeof(Embryo_Cell)); + break; + case EMBRYO_OP_JNZ: + if (pri!=0) + cip=JUMPABS(code, cip); + else + cip=(Embryo_Cell *)((unsigned char *)cip+sizeof(Embryo_Cell)); + break; + case EMBRYO_OP_JEQ: + if (pri==alt) + cip=JUMPABS(code, cip); + else + cip=(Embryo_Cell *)((unsigned char *)cip+sizeof(Embryo_Cell)); + break; + case EMBRYO_OP_JNEQ: + if (pri!=alt) + cip=JUMPABS(code, cip); + else + cip=(Embryo_Cell *)((unsigned char *)cip+sizeof(Embryo_Cell)); + break; + case EMBRYO_OP_JLESS: + if ((Embryo_UCell)pri < (Embryo_UCell)alt) + cip=JUMPABS(code, cip); + else + cip=(Embryo_Cell *)((unsigned char *)cip+sizeof(Embryo_Cell)); + break; + case EMBRYO_OP_JLEQ: + if ((Embryo_UCell)pri <= (Embryo_UCell)alt) + cip=JUMPABS(code, cip); + else + cip=(Embryo_Cell *)((unsigned char *)cip+sizeof(Embryo_Cell)); + break; + case EMBRYO_OP_JGRTR: + if ((Embryo_UCell)pri > (Embryo_UCell)alt) + cip=JUMPABS(code, cip); + else + cip=(Embryo_Cell *)((unsigned char *)cip+sizeof(Embryo_Cell)); + break; + case EMBRYO_OP_JGEQ: + if ((Embryo_UCell)pri >= (Embryo_UCell)alt) + cip=JUMPABS(code, cip); + else + cip=(Embryo_Cell *)((unsigned char *)cip+sizeof(Embryo_Cell)); + break; + case EMBRYO_OP_JSLESS: + if (prialt) + cip=JUMPABS(code, cip); + else + cip=(Embryo_Cell *)((unsigned char *)cip+sizeof(Embryo_Cell)); + break; + case EMBRYO_OP_JSGEQ: + if (pri>=alt) + cip=JUMPABS(code, cip); + else + cip=(Embryo_Cell *)((unsigned char *)cip+sizeof(Embryo_Cell)); + break; + case EMBRYO_OP_SHL: + pri<<=alt; + break; + case EMBRYO_OP_SHR: + pri=(Embryo_UCell)pri >> (int)alt; + break; + case EMBRYO_OP_SSHR: + pri>>=alt; + break; + case EMBRYO_OP_SHL_C_PRI: + GETPARAM(offs); + pri<<=offs; + break; + case EMBRYO_OP_SHL_C_ALT: + GETPARAM(offs); + alt<<=offs; + break; + case EMBRYO_OP_SHR_C_PRI: + GETPARAM(offs); + pri=(Embryo_UCell)pri >> (int)offs; + break; + case EMBRYO_OP_SHR_C_ALT: + GETPARAM(offs); + alt=(Embryo_UCell)alt >> (int)offs; + break; + case EMBRYO_OP_SMUL: + pri*=alt; + break; + case EMBRYO_OP_SDIV: + if (alt==0) + ABORT(ep,EMBRYO_ERROR_DIVIDE); + /* divide must always round down; this is a bit + * involved to do in a machine-independent way. + */ + offs=(pri % alt + alt) % alt; /* true modulus */ + pri=(pri - offs) / alt; /* division result */ + alt=offs; + break; + case EMBRYO_OP_SDIV_ALT: + if (pri==0) + ABORT(ep,EMBRYO_ERROR_DIVIDE); + /* divide must always round down; this is a bit + * involved to do in a machine-independent way. + */ + offs=(alt % pri + pri) % pri; /* true modulus */ + pri=(alt - offs) / pri; /* division result */ + alt=offs; + break; + case EMBRYO_OP_UMUL: + pri=(Embryo_UCell)pri * (Embryo_UCell)alt; + break; + case EMBRYO_OP_UDIV: + if (alt==0) + ABORT(ep,EMBRYO_ERROR_DIVIDE); + offs=(Embryo_UCell)pri % (Embryo_UCell)alt; /* temporary storage */ + pri=(Embryo_UCell)pri / (Embryo_UCell)alt; + alt=offs; + break; + case EMBRYO_OP_UDIV_ALT: + if (pri==0) + ABORT(ep,EMBRYO_ERROR_DIVIDE); + offs=(Embryo_UCell)alt % (Embryo_UCell)pri; /* temporary storage */ + pri=(Embryo_UCell)alt / (Embryo_UCell)pri; + alt=offs; + break; + case EMBRYO_OP_ADD: + pri+=alt; + break; + case EMBRYO_OP_SUB: + pri-=alt; + break; + case EMBRYO_OP_SUB_ALT: + pri=alt-pri; + break; + case EMBRYO_OP_AND: + pri&=alt; + break; + case EMBRYO_OP_OR: + pri|=alt; + break; + case EMBRYO_OP_XOR: + pri^=alt; + break; + case EMBRYO_OP_NOT: + pri=!pri; + break; + case EMBRYO_OP_NEG: + pri=-pri; + break; + case EMBRYO_OP_INVERT: + pri=~pri; + break; + case EMBRYO_OP_ADD_C: + GETPARAM(offs); + pri+=offs; + break; + case EMBRYO_OP_SMUL_C: + GETPARAM(offs); + pri*=offs; + break; + case EMBRYO_OP_ZERO_PRI: + pri=0; + break; + case EMBRYO_OP_ZERO_ALT: + alt=0; + break; + case EMBRYO_OP_ZERO: + GETPARAM(offs); + *(Embryo_Cell *)(data+(int)offs)=0; + break; + case EMBRYO_OP_ZERO_S: + GETPARAM(offs); + *(Embryo_Cell *)(data+(int)frm+(int)offs)=0; + break; + case EMBRYO_OP_SIGN_PRI: + if ((pri & 0xff)>=0x80) + pri|= ~ (Embryo_UCell)0xff; + break; + case EMBRYO_OP_SIGN_ALT: + if ((alt & 0xff)>=0x80) + alt|= ~ (Embryo_UCell)0xff; + break; + case EMBRYO_OP_EQ: + pri= pri==alt ? 1 : 0; + break; + case EMBRYO_OP_NEQ: + pri= pri!=alt ? 1 : 0; + break; + case EMBRYO_OP_LESS: + pri= (Embryo_UCell)pri < (Embryo_UCell)alt ? 1 : 0; + break; + case EMBRYO_OP_LEQ: + pri= (Embryo_UCell)pri <= (Embryo_UCell)alt ? 1 : 0; + break; + case EMBRYO_OP_GRTR: + pri= (Embryo_UCell)pri > (Embryo_UCell)alt ? 1 : 0; + break; + case EMBRYO_OP_GEQ: + pri= (Embryo_UCell)pri >= (Embryo_UCell)alt ? 1 : 0; + break; + case EMBRYO_OP_SLESS: + pri= prialt ? 1 : 0; + break; + case EMBRYO_OP_SGEQ: + pri= pri>=alt ? 1 : 0; + break; + case EMBRYO_OP_EQ_C_PRI: + GETPARAM(offs); + pri= pri==offs ? 1 : 0; + break; + case EMBRYO_OP_EQ_C_ALT: + GETPARAM(offs); + pri= alt==offs ? 1 : 0; + break; + case EMBRYO_OP_INC_PRI: + pri++; + break; + case EMBRYO_OP_INC_ALT: + alt++; + break; + case EMBRYO_OP_INC: + GETPARAM(offs); + *(Embryo_Cell *)(data+(int)offs) += 1; + break; + case EMBRYO_OP_INC_S: + GETPARAM(offs); + *(Embryo_Cell *)(data+(int)frm+(int)offs) += 1; + break; + case EMBRYO_OP_INC_I: + *(Embryo_Cell *)(data+(int)pri) += 1; + break; + case EMBRYO_OP_DEC_PRI: + pri--; + break; + case EMBRYO_OP_DEC_ALT: + alt--; + break; + case EMBRYO_OP_DEC: + GETPARAM(offs); + *(Embryo_Cell *)(data+(int)offs) -= 1; + break; + case EMBRYO_OP_DEC_S: + GETPARAM(offs); + *(Embryo_Cell *)(data+(int)frm+(int)offs) -= 1; + break; + case EMBRYO_OP_DEC_I: + *(Embryo_Cell *)(data+(int)pri) -= 1; + break; + case EMBRYO_OP_MOVS: + GETPARAM(offs); + /* verify top & bottom memory addresses, for both source and destination + * addresses + */ + if (pri>=hea && pri=(Embryo_UCell)ep->stp) + ABORT(ep,EMBRYO_ERROR_MEMACCESS); + if ((pri+offs)>hea && (pri+offs)(Embryo_UCell)ep->stp) + ABORT(ep,EMBRYO_ERROR_MEMACCESS); + if (alt>=hea && alt=(Embryo_UCell)ep->stp) + ABORT(ep,EMBRYO_ERROR_MEMACCESS); + if ((alt+offs)>hea && (alt+offs)(Embryo_UCell)ep->stp) + ABORT(ep,EMBRYO_ERROR_MEMACCESS); + memcpy(data+(int)alt, data+(int)pri, (int)offs); + break; + case EMBRYO_OP_CMPS: + GETPARAM(offs); + /* verify top & bottom memory addresses, for both source and destination + * addresses + */ + if (pri>=hea && pri=(Embryo_UCell)ep->stp) + ABORT(ep,EMBRYO_ERROR_MEMACCESS); + if ((pri+offs)>hea && (pri+offs)(Embryo_UCell)ep->stp) + ABORT(ep,EMBRYO_ERROR_MEMACCESS); + if (alt>=hea && alt=(Embryo_UCell)ep->stp) + ABORT(ep,EMBRYO_ERROR_MEMACCESS); + if ((alt+offs)>hea && (alt+offs)(Embryo_UCell)ep->stp) + ABORT(ep,EMBRYO_ERROR_MEMACCESS); + pri=memcmp(data+(int)alt, data+(int)pri, (int)offs); + break; + case EMBRYO_OP_FILL: + GETPARAM(offs); + /* verify top & bottom memory addresses (destination only) */ + if (((alt >= hea) && (alt < stk)) || + ((Embryo_UCell)alt >= (Embryo_UCell)ep->stp)) + ABORT(ep, EMBRYO_ERROR_MEMACCESS); + if ((((alt + offs) > hea) && ((alt + offs) < stk)) || + ((Embryo_UCell)(alt + offs) > (Embryo_UCell)ep->stp)) + ABORT(ep, EMBRYO_ERROR_MEMACCESS); + for (i = (int)alt; (size_t)offs >= sizeof(Embryo_Cell); i += sizeof(Embryo_Cell), offs -= sizeof(Embryo_Cell)) + *(Embryo_Cell *)(data + i) = pri; + break; + case EMBRYO_OP_HALT: + GETPARAM(offs); + ep->retval = pri; + /* store complete status */ + ep->frm = frm; + ep->stk = stk; + ep->hea = hea; + ep->pri = pri; + ep->alt = alt; + ep->cip = (Embryo_Cell)((unsigned char*)cip - code); + if (offs == EMBRYO_ERROR_SLEEP) + { + ep->reset_stk = reset_stk; + ep->reset_hea = reset_hea; + ep->run_count--; + return EMBRYO_PROGRAM_SLEEP; + } + OK(ep, (int)offs); + case EMBRYO_OP_BOUNDS: + GETPARAM(offs); + if ((Embryo_UCell)pri > (Embryo_UCell)offs) + ABORT(ep, EMBRYO_ERROR_BOUNDS); + break; + case EMBRYO_OP_SYSREQ_PRI: + /* save a few registers */ + ep->cip = (Embryo_Cell)((unsigned char *)cip - code); + ep->hea = hea; + ep->frm = frm; + ep->stk = stk; + num = _embryo_native_call(ep, pri, &pri, (Embryo_Cell *)(data + (int)stk)); + if (num != EMBRYO_ERROR_NONE) + { + if (num == EMBRYO_ERROR_SLEEP) + { + ep->pri = pri; + ep->alt = alt; + ep->reset_stk = reset_stk; + ep->reset_hea = reset_hea; + ep->run_count--; + return EMBRYO_PROGRAM_SLEEP; + } + ABORT(ep, num); + } + break; + case EMBRYO_OP_SYSREQ_C: + GETPARAM(offs); + /* save a few registers */ + ep->cip = (Embryo_Cell)((unsigned char *)cip - code); + ep->hea = hea; + ep->frm = frm; + ep->stk = stk; + num = _embryo_native_call(ep, offs, &pri, (Embryo_Cell *)(data + (int)stk)); + if (num != EMBRYO_ERROR_NONE) + { + if (num == EMBRYO_ERROR_SLEEP) + { + ep->pri = pri; + ep->alt = alt; + ep->reset_stk = reset_stk; + ep->reset_hea = reset_hea; + ep->run_count--; + return EMBRYO_PROGRAM_SLEEP; + } + ABORT(ep, num); + } + break; + case EMBRYO_OP_SYSREQ_D: + GETPARAM(offs); + /* save a few registers */ + ep->cip = (Embryo_Cell)((unsigned char *)cip - code); + ep->hea = hea; + ep->frm = frm; + ep->stk = stk; + pri = ((Embryo_Native)offs)(ep, (Embryo_Cell *)(data + (int)stk)); + if (ep->error != EMBRYO_ERROR_NONE) + { + if (ep->error == EMBRYO_ERROR_SLEEP) + { + ep->pri = pri; + ep->alt = alt; + ep->reset_stk = reset_stk; + ep->reset_hea = reset_hea; + ep->run_count--; + return EMBRYO_PROGRAM_SLEEP; + } + ABORT(ep, ep->error); + } + break; + case EMBRYO_OP_JUMP_PRI: + cip = (Embryo_Cell *)(code + (int)pri); + break; + case EMBRYO_OP_SWITCH: + { + Embryo_Cell *cptr; + + cptr = (Embryo_Cell *)*cip + 1; /* +1, to skip the "casetbl" opcode */ + cip = (Embryo_Cell *)*(cptr + 1); /* preset to "none-matched" case */ + num = (int)*cptr; /* number of records in the case table */ + for (cptr += 2; (num > 0) && (*cptr != pri); num--, cptr += 2); + if (num > 0) cip = (Embryo_Cell *)*(cptr + 1); /* case found */ + } + break; + case EMBRYO_OP_SWAP_PRI: + offs = *(Embryo_Cell *)(data + (int)stk); + *(Embryo_Cell *)(data + (int)stk) = pri; + pri = offs; + break; + case EMBRYO_OP_SWAP_ALT: + offs = *(Embryo_Cell *)(data + (int)stk); + *(Embryo_Cell *)(data + (int)stk) = alt; + alt = offs; + break; + case EMBRYO_OP_PUSHADDR: + GETPARAM(offs); + PUSH(frm + offs); + break; + case EMBRYO_OP_NOP: + break; + default: + ABORT(ep, EMBRYO_ERROR_INVINSTR); + } + } + ep->run_count--; + return EMBRYO_PROGRAM_OK; +} + +Embryo_Cell +embryo_program_return_value_get(Embryo_Program *ep) +{ + if (!ep) return 0; + return ep->retval; +} + +int +embryo_parameter_cell_push(Embryo_Program *ep, Embryo_Cell cell) +{ + Embryo_Param *pr; + + ep->params_size++; + if (ep->params_size > ep->params_alloc) + { + ep->params_alloc += 8; + pr = realloc(ep->params, ep->params_alloc * sizeof(Embryo_Param)); + if (!pr) return 0; + ep->params = pr; + } + pr = &(ep->params[ep->params_size - 1]); + pr->string = NULL; + pr->cell_array = NULL; + pr->cell_array_size = 0; + pr->cell = 0; + pr->cell = cell; + return 1; +} + +int +embryo_parameter_string_push(Embryo_Program *ep, char *str) +{ + Embryo_Param *pr; + char *str_dup; + + if (!str) + return embryo_parameter_string_push(ep, ""); + str_dup = strdup(str); + if (!str_dup) return 0; + ep->params_size++; + if (ep->params_size > ep->params_alloc) + { + ep->params_alloc += 8; + pr = realloc(ep->params, ep->params_alloc * sizeof(Embryo_Param)); + if (!pr) + { + free(str_dup); + return 0; + } + ep->params = pr; + } + pr = &(ep->params[ep->params_size - 1]); + pr->string = NULL; + pr->cell_array = NULL; + pr->cell_array_size = 0; + pr->cell = 0; + pr->string = str_dup; + return 1; +} + +int +embryo_parameter_cell_array_push(Embryo_Program *ep, Embryo_Cell *cells, int num) +{ + Embryo_Param *pr; + Embryo_Cell *cell_array; + + pr->cell_array = malloc(num * sizeof(Embryo_Cell)); + if ((!cells) || (num <= 0)) + return embryo_parameter_cell_push(ep, 0); + ep->params_size++; + if (ep->params_size > ep->params_alloc) + { + ep->params_alloc += 8; + pr = realloc(ep->params, ep->params_alloc * sizeof(Embryo_Param)); + if (!pr) + { + free(cell_array); + return 0; + } + ep->params = pr; + } + pr = &(ep->params[ep->params_size - 1]); + pr->string = NULL; + pr->cell_array = NULL; + pr->cell_array_size = 0; + pr->cell = 0; + pr->cell_array = cell_array; + pr->cell_array_size = num; + memcpy(pr->cell_array, cells, num * sizeof(Embryo_Cell)); + return 1; +} diff --git a/legacy/embryo/src/lib/embryo_float.c b/legacy/embryo/src/lib/embryo_float.c new file mode 100644 index 0000000000..2b58e41581 --- /dev/null +++ b/legacy/embryo/src/lib/embryo_float.c @@ -0,0 +1,306 @@ +/* Float arithmetic for the Small AMX engine + * + * Copyright (c) Artran, Inc. 1999 + * Written by Greg Garner (gmg@artran.com) + * This file may be freely used. No warranties of any kind. + * Portions Copyright (c) Carsten Haitzler, 2004 + * + * CHANGES - + * 2002-08-27: Basic conversion of source from C++ to C by Adam D. Moss + * + * 2003-08-29: Removal of the dynamic memory allocation and replacing two + * type conversion functions by macros, by Thiadmer Riemersma + * 2003-09-22: Moved the type conversion macros to AMX.H, and simplifications + * of some routines, by Thiadmer Riemersma + * 2003-11-24: A few more native functions (geometry), plus minor modifications, + * mostly to be compatible with dynamically loadable extension + * modules, by Thiadmer Riemersma + * 2004-03-20: Cleaned up and reduced size for Embryo, Modified to conform to + * E coding style. Added extra parameter checks. + * Carsten Haitzler, + */ +#include +#include "embryo_private.h" + +#define PI 3.1415926535897932384626433832795 + +/* internally useful calls */ + +static float +_embryo_fp_degrees_to_radians(float angle, int radix) +{ + switch (radix) + { + case 1: /* degrees, sexagesimal system (technically: degrees/minutes/seconds) */ + return (float)(angle * PI / 180.0); + case 2: /* grades, centesimal system */ + return (float)(angle * PI / 200.0); + default: /* assume already radian */ + break; + } + return angle; +} + +/* exported float api */ + +static Embryo_Cell +_embryo_fp(Embryo_Program *ep, Embryo_Cell *params) +{ + /* params[1] = long value to convert to a float */ + float f; + + if (params[0] != (1 * sizeof(Embryo_Cell))) return 0; + f = (float)params[1]; + return EMBRYO_FLOAT_TO_CELL(f); +} + +static Embryo_Cell +_embryo_fp_str(Embryo_Program *ep, Embryo_Cell *params) +{ + /* params[1] = virtual string address to convert to a float */ + char buf[64]; + Embryo_Cell *str; + float f; + int len; + + if (params[0] != (1 * sizeof(Embryo_Cell))) return 0; + str = embryo_data_address_get(ep, params[1]); + len = embryo_data_string_length_get(ep, str); + if ((len == 0) || (len >= sizeof(buf))) return 0; + embryo_data_string_get(ep, str, buf); + f = (float)atof(buf); + return EMBRYO_FLOAT_TO_CELL(f); +} + +static Embryo_Cell +_embryo_fp_mul(Embryo_Program *ep, Embryo_Cell *params) +{ + /* params[1] = float operand 1 */ + /* params[2] = float operand 2 */ + float f; + + if (params[0] != (2 * sizeof(Embryo_Cell))) return 0; + f = EMBRYO_CELL_TO_FLOAT(params[1]) * EMBRYO_CELL_TO_FLOAT(params[2]); + return EMBRYO_FLOAT_TO_CELL(f); +} + +static Embryo_Cell +_embryo_fp_div(Embryo_Program *ep, Embryo_Cell *params) +{ + /* params[1] = float dividend (top) */ + /* params[2] = float divisor (bottom) */ + float f; + + if (params[0] != (2 * sizeof(Embryo_Cell))) return 0; + f = EMBRYO_CELL_TO_FLOAT(params[1]) / EMBRYO_CELL_TO_FLOAT(params[2]); + return EMBRYO_FLOAT_TO_CELL(f); +} + +static Embryo_Cell +_embryo_fp_add(Embryo_Program *ep, Embryo_Cell *params) +{ + /* params[1] = float operand 1 */ + /* params[2] = float operand 2 */ + float f; + + if (params[0] != (2 * sizeof(Embryo_Cell))) return 0; + f = EMBRYO_CELL_TO_FLOAT(params[1]) + EMBRYO_CELL_TO_FLOAT(params[2]); + return EMBRYO_FLOAT_TO_CELL(f); +} + +static Embryo_Cell +_embryo_fp_sub(Embryo_Program *ep, Embryo_Cell *params) +{ + /* params[1] = float operand 1 */ + /* params[2] = float operand 2 */ + float f; + + if (params[0] != (2 * sizeof(Embryo_Cell))) return 0; + f = EMBRYO_CELL_TO_FLOAT(params[1]) - EMBRYO_CELL_TO_FLOAT(params[2]); + return EMBRYO_FLOAT_TO_CELL(f); +} + +/* Return fractional part of float */ +static Embryo_Cell +_embryo_fp_fract(Embryo_Program *ep, Embryo_Cell *params) +{ + /* params[1] = float operand */ + float f; + + if (params[0] != (1 * sizeof(Embryo_Cell))) return 0; + f = EMBRYO_CELL_TO_FLOAT(params[1]); + f -= (float)(floor((double)f)); + return EMBRYO_FLOAT_TO_CELL(f); +} + +/* Return integer part of float, rounded */ +static Embryo_Cell +_embryo_fp_round(Embryo_Program *ep, Embryo_Cell *params) +{ + /* params[1] = float operand */ + /* params[2] = Type of rounding (cell) */ + float f; + + if (params[0] != (2 * sizeof(Embryo_Cell))) return 0; + f = EMBRYO_CELL_TO_FLOAT(params[1]); + switch (params[2]) + { + case 1: /* round downwards (truncate) */ + f = (float)(floor((double)f)); + break; + case 2: /* round upwards */ + f = (float)(ceil((double)f)); + break; + case 3: /* round towards zero */ + if (f >= 0.0) f = (float)(floor((double)f)); + else f = (float)(ceil((double)f)); + break; + default: /* standard, round to nearest */ + f = (float)(floor((double)f + 0.5)); + break; + } + return (Embryo_Cell)f; +} + +static Embryo_Cell +_embryo_fp_cmp(Embryo_Program *ep, Embryo_Cell *params) +{ + /* params[1] = float operand 1 */ + /* params[2] = float operand 2 */ + float f, ff; + + if (params[0] != (2 * sizeof(Embryo_Cell))) return 0; + f = EMBRYO_CELL_TO_FLOAT(params[1]); + ff = EMBRYO_CELL_TO_FLOAT(params[2]); + if (f == ff) return 0; + else if (f > ff) return 1; + return -1; +} + +static Embryo_Cell +_embryo_fp_sqroot(Embryo_Program *ep, Embryo_Cell *params) +{ + /* params[1] = float operand */ + float f; + + if (params[0] != (1 * sizeof(Embryo_Cell))) return 0; + f = EMBRYO_CELL_TO_FLOAT(params[1]); + f = (float)sqrt(f); + if (f < 0) + { + embryo_program_error_set(ep, EMBRYO_ERROR_DOMAIN); + return 0; + } + return EMBRYO_FLOAT_TO_CELL(f); +} + +static Embryo_Cell +_embryo_fp_power(Embryo_Program *ep, Embryo_Cell *params) +{ + /* params[1] = float operand 1 */ + /* params[2] = float operand 2 */ + float f, ff; + + if (params[0] != (2 * sizeof(Embryo_Cell))) return 0; + f = EMBRYO_CELL_TO_FLOAT(params[1]); + ff = EMBRYO_CELL_TO_FLOAT(params[2]); + f = (float)pow(f, ff); + return EMBRYO_FLOAT_TO_CELL(f); +} + +static Embryo_Cell +_embryo_fp_log(Embryo_Program *ep, Embryo_Cell *params) +{ + /* params[1] = float operand 1 (value) */ + /* params[2] = float operand 2 (base) */ + float f, ff; + + if (params[0] != (2 * sizeof(Embryo_Cell))) return 0; + f = EMBRYO_CELL_TO_FLOAT(params[1]); + ff = EMBRYO_CELL_TO_FLOAT(params[2]); + if ((f <= 0.0) || (ff <= 0.0)) + { + embryo_program_error_set(ep, EMBRYO_ERROR_DOMAIN); + return 0; + } + if (ff == 10.0) f = (float)log10(f); + else f = (float)(log(f) / log(ff)); + return EMBRYO_FLOAT_TO_CELL(f); +} + +static Embryo_Cell +_embryo_fp_sin(Embryo_Program *ep, Embryo_Cell *params) +{ + /* params[1] = float operand 1 (angle) */ + /* params[2] = float operand 2 (radix) */ + float f; + + if (params[0] != (2 * sizeof(Embryo_Cell))) return 0; + f = EMBRYO_CELL_TO_FLOAT(params[1]); + f = _embryo_fp_degrees_to_radians(f, params[2]); + f = sin(f); + return EMBRYO_FLOAT_TO_CELL(f); +} + +static Embryo_Cell +_embryo_fp_cos(Embryo_Program *ep, Embryo_Cell *params) +{ + /* params[1] = float operand 1 (angle) */ + /* params[2] = float operand 2 (radix) */ + float f; + + if (params[0] != (2 * sizeof(Embryo_Cell))) return 0; + f = EMBRYO_CELL_TO_FLOAT(params[1]); + f = _embryo_fp_degrees_to_radians(f, params[2]); + f = cos(f); + return EMBRYO_FLOAT_TO_CELL(f); +} + +static Embryo_Cell +_embryo_fp_tan(Embryo_Program *ep, Embryo_Cell *params) +{ + /* params[1] = float operand 1 (angle) */ + /* params[2] = float operand 2 (radix) */ + float f; + + if (params[0] != (2 * sizeof(Embryo_Cell))) return 0; + f = EMBRYO_CELL_TO_FLOAT(params[1]); + f = _embryo_fp_degrees_to_radians(f, params[2]); + f = tan(f); + return EMBRYO_FLOAT_TO_CELL(f); +} + +static Embryo_Cell +_embryo_fp_abs(Embryo_Program *ep, Embryo_Cell *params) +{ + /* params[1] = float operand */ + float f; + + if (params[0] != (1 * sizeof(Embryo_Cell))) return 0; + f = EMBRYO_CELL_TO_FLOAT(params[1]); + f = (f >= 0) ? f : -f; + return EMBRYO_FLOAT_TO_CELL(f); +} + +/* functions used by the rest of embryo */ + +void +_embryo_fp_init(Embryo_Program *ep) +{ + embryo_program_native_call_add(ep, "float", _embryo_fp); + embryo_program_native_call_add(ep, "atof", _embryo_fp_str); + embryo_program_native_call_add(ep, "float_mul", _embryo_fp_mul); + embryo_program_native_call_add(ep, "float_div", _embryo_fp_div); + embryo_program_native_call_add(ep, "float_add", _embryo_fp_add); + embryo_program_native_call_add(ep, "float_sub", _embryo_fp_sub); + embryo_program_native_call_add(ep, "fract", _embryo_fp_fract); + embryo_program_native_call_add(ep, "round", _embryo_fp_round); + embryo_program_native_call_add(ep, "float_cmp", _embryo_fp_cmp); + embryo_program_native_call_add(ep, "sqrt", _embryo_fp_sqroot); + embryo_program_native_call_add(ep, "pow", _embryo_fp_power); + embryo_program_native_call_add(ep, "log", _embryo_fp_log); + embryo_program_native_call_add(ep, "sin", _embryo_fp_sin); + embryo_program_native_call_add(ep, "cos", _embryo_fp_cos); + embryo_program_native_call_add(ep, "tan", _embryo_fp_tan); + embryo_program_native_call_add(ep, "abs", _embryo_fp_abs); +} diff --git a/legacy/embryo/src/lib/embryo_main.c b/legacy/embryo/src/lib/embryo_main.c new file mode 100644 index 0000000000..e229df91eb --- /dev/null +++ b/legacy/embryo/src/lib/embryo_main.c @@ -0,0 +1,23 @@ +#include "embryo_private.h" + +static int _embryo_init_count = 0; + +/*** EXPORTED CALLS ***/ + +int +embryo_init(void) +{ + _embryo_init_count++; + if (_embryo_init_count > 1) return _embryo_init_count; + + return _embryo_init_count; +} + +int +embryo_shutdown(void) +{ + _embryo_init_count--; + if (_embryo_init_count > 0) return _embryo_init_count; + + return _embryo_init_count; +} diff --git a/legacy/embryo/src/lib/embryo_private.h b/legacy/embryo/src/lib/embryo_private.h new file mode 100644 index 0000000000..f6bf9610d5 --- /dev/null +++ b/legacy/embryo/src/lib/embryo_private.h @@ -0,0 +1,266 @@ +#ifndef _EMBRYO_PRIVATE_H +#define _EMBRYO_PRIVATE_H + +#include "Embryo.h" + +#include +#include +#include +#include +#include +#include +#include + +typedef enum _Embryo_Opcode Embryo_Opcode; + +enum _Embryo_Opcode +{ + EMBRYO_OP_NONE, + EMBRYO_OP_LOAD_PRI, + EMBRYO_OP_LOAD_ALT, + EMBRYO_OP_LOAD_S_PRI, + EMBRYO_OP_LOAD_S_ALT, + EMBRYO_OP_LREF_PRI, + EMBRYO_OP_LREF_ALT, + EMBRYO_OP_LREF_S_PRI, + EMBRYO_OP_LREF_S_ALT, + EMBRYO_OP_LOAD_I, + EMBRYO_OP_LODB_I, + EMBRYO_OP_CONST_PRI, + EMBRYO_OP_CONST_ALT, + EMBRYO_OP_ADDR_PRI, + EMBRYO_OP_ADDR_ALT, + EMBRYO_OP_STOR_PRI, + EMBRYO_OP_STOR_ALT, + EMBRYO_OP_STOR_S_PRI, + EMBRYO_OP_STOR_S_ALT, + EMBRYO_OP_SREF_PRI, + EMBRYO_OP_SREF_ALT, + EMBRYO_OP_SREF_S_PRI, + EMBRYO_OP_SREF_S_ALT, + EMBRYO_OP_STOR_I, + EMBRYO_OP_STRB_I, + EMBRYO_OP_LIDX, + EMBRYO_OP_LIDX_B, + EMBRYO_OP_IDXADDR, + EMBRYO_OP_IDXADDR_B, + EMBRYO_OP_ALIGN_PRI, + EMBRYO_OP_ALIGN_ALT, + EMBRYO_OP_LCTRL, + EMBRYO_OP_SCTRL, + EMBRYO_OP_MOVE_PRI, + EMBRYO_OP_MOVE_ALT, + EMBRYO_OP_XCHG, + EMBRYO_OP_PUSH_PRI, + EMBRYO_OP_PUSH_ALT, + EMBRYO_OP_PUSH_R, + EMBRYO_OP_PUSH_C, + EMBRYO_OP_PUSH, + EMBRYO_OP_PUSH_S, + EMBRYO_OP_POP_PRI, + EMBRYO_OP_POP_ALT, + EMBRYO_OP_STACK, + EMBRYO_OP_HEAP, + EMBRYO_OP_PROC, + EMBRYO_OP_RET, + EMBRYO_OP_RETN, + EMBRYO_OP_CALL, + EMBRYO_OP_CALL_PRI, + EMBRYO_OP_JUMP, + EMBRYO_OP_JREL, + EMBRYO_OP_JZER, + EMBRYO_OP_JNZ, + EMBRYO_OP_JEQ, + EMBRYO_OP_JNEQ, + EMBRYO_OP_JLESS, + EMBRYO_OP_JLEQ, + EMBRYO_OP_JGRTR, + EMBRYO_OP_JGEQ, + EMBRYO_OP_JSLESS, + EMBRYO_OP_JSLEQ, + EMBRYO_OP_JSGRTR, + EMBRYO_OP_JSGEQ, + EMBRYO_OP_SHL, + EMBRYO_OP_SHR, + EMBRYO_OP_SSHR, + EMBRYO_OP_SHL_C_PRI, + EMBRYO_OP_SHL_C_ALT, + EMBRYO_OP_SHR_C_PRI, + EMBRYO_OP_SHR_C_ALT, + EMBRYO_OP_SMUL, + EMBRYO_OP_SDIV, + EMBRYO_OP_SDIV_ALT, + EMBRYO_OP_UMUL, + EMBRYO_OP_UDIV, + EMBRYO_OP_UDIV_ALT, + EMBRYO_OP_ADD, + EMBRYO_OP_SUB, + EMBRYO_OP_SUB_ALT, + EMBRYO_OP_AND, + EMBRYO_OP_OR, + EMBRYO_OP_XOR, + EMBRYO_OP_NOT, + EMBRYO_OP_NEG, + EMBRYO_OP_INVERT, + EMBRYO_OP_ADD_C, + EMBRYO_OP_SMUL_C, + EMBRYO_OP_ZERO_PRI, + EMBRYO_OP_ZERO_ALT, + EMBRYO_OP_ZERO, + EMBRYO_OP_ZERO_S, + EMBRYO_OP_SIGN_PRI, + EMBRYO_OP_SIGN_ALT, + EMBRYO_OP_EQ, + EMBRYO_OP_NEQ, + EMBRYO_OP_LESS, + EMBRYO_OP_LEQ, + EMBRYO_OP_GRTR, + EMBRYO_OP_GEQ, + EMBRYO_OP_SLESS, + EMBRYO_OP_SLEQ, + EMBRYO_OP_SGRTR, + EMBRYO_OP_SGEQ, + EMBRYO_OP_EQ_C_PRI, + EMBRYO_OP_EQ_C_ALT, + EMBRYO_OP_INC_PRI, + EMBRYO_OP_INC_ALT, + EMBRYO_OP_INC, + EMBRYO_OP_INC_S, + EMBRYO_OP_INC_I, + EMBRYO_OP_DEC_PRI, + EMBRYO_OP_DEC_ALT, + EMBRYO_OP_DEC, + EMBRYO_OP_DEC_S, + EMBRYO_OP_DEC_I, + EMBRYO_OP_MOVS, + EMBRYO_OP_CMPS, + EMBRYO_OP_FILL, + EMBRYO_OP_HALT, + EMBRYO_OP_BOUNDS, + EMBRYO_OP_SYSREQ_PRI, + EMBRYO_OP_SYSREQ_C, + EMBRYO_OP_FILE, + EMBRYO_OP_LINE, + EMBRYO_OP_SYMBOL, + EMBRYO_OP_SRANGE, + EMBRYO_OP_JUMP_PRI, + EMBRYO_OP_SWITCH, + EMBRYO_OP_CASETBL, + EMBRYO_OP_SWAP_PRI, + EMBRYO_OP_SWAP_ALT, + EMBRYO_OP_PUSHADDR, + EMBRYO_OP_NOP, + EMBRYO_OP_SYSREQ_D, + EMBRYO_OP_SYMTAG, + /* ----- */ + EMBRYO_OP_NUM_OPCODES +}; + +#define NUMENTRIES(hdr,field,nextfield) \ + (int)(((hdr)->nextfield - (hdr)->field) / (hdr)->defsize) +#define GETENTRY(hdr,table,index) \ + (Embryo_Func_Stub *)((unsigned char*)(hdr) + \ + (int)(hdr)->table + index * (hdr)->defsize) +#define GETENTRYNAME(hdr,entry) \ + (((hdr)->defsize == 2 * sizeof(unsigned int)) \ + ? (char *)((unsigned char*)(hdr) + *((unsigned int *)(entry) + 1)) \ + : (entry)->name) +#define CUR_FILE_VERSION 7 /* current file version; also the current Embryo_Program version */ +#define MIN_FILE_VERSION 7 /* lowest supported file format version for the current Embryo_Program version */ +#define MIN_AMX_VERSION 7 /* minimum Embryo_Program version needed to support the current file format */ +#define sEXPMAX 19 /* maximum name length for file version <= 6 */ +#define sNAMEMAX 31 /* maximum name length of symbol name */ +#define EMBRYO_MAGIC 0xf1e0 /* magic byte pattern */ +#define EMBRYO_FLAG_COMPACT 0x04 /* compact encoding */ +#define EMBRYO_FLAG_RELOC 0x8000 /* jump/call addresses relocated */ +#define GETPARAM(v) (v = *(Embryo_Cell *)cip++) +#define PUSH(v) (stk -= sizeof(Embryo_Cell), *(Embryo_Cell *)(data + (int)stk) = v) +#define POP(v) (v = *(Embryo_Cell *)(data + (int)stk), stk += sizeof(Embryo_Cell)) +#define ABORT(ep,v) {(ep)->stk = reset_stk; (ep)->hea = reset_hea; ep->run_count--; ep->error = v; return 0;} +#define OK(ep,v) {(ep)->stk = reset_stk; (ep)->hea = reset_hea; ep->run_count--; ep->error = v; return 1;} +#define STKMARGIN ((Embryo_Cell)(16 * sizeof(Embryo_Cell))) +#define CHKMARGIN() if ((hea + STKMARGIN) > stk) {ep->error = EMBRYO_ERROR_STACKERR; return 0;} +#define CHKSTACK() if (stk > ep->stp) {ep->run_count--; ep->error = EMBRYO_ERROR_STACKLOW; return 0;} +#define CHKHEAP() if (hea < ep->hlw) {ep->run_count--; ep->error = EMBRYO_ERROR_HEAPLOW; return 0;} + +typedef struct _Embryo_Param Embryo_Param; +typedef struct _Embryo_Header Embryo_Header; +typedef struct _Embryo_Func_Stub Embryo_Func_Stub; + +typedef Embryo_Cell (*Embryo_Native)(Embryo_Program *ep, Embryo_Cell *params); + +struct _Embryo_Param +{ + char *string; + Embryo_Cell *cell_array; + int cell_array_size; + Embryo_Cell cell; +}; + +struct _Embryo_Program +{ + unsigned char *base; /* points to the Embryo_Program header ("ephdr") plus the code, optionally also the data */ + /* for external functions a few registers must be accessible from the outside */ + Embryo_Cell cip; /* instruction pointer: relative to base + ephdr->cod */ + Embryo_Cell frm; /* stack frame base: relative to base + ephdr->dat */ + Embryo_Cell hea; /* top of the heap: relative to base + ephdr->dat */ + Embryo_Cell hlw; /* bottom of the heap: relative to base + ephdr->dat */ + Embryo_Cell stk; /* stack pointer: relative to base + ephdr->dat */ + Embryo_Cell stp; /* top of the stack: relative to base + ephdr->dat */ + int flags; /* current status */ + /* native functions can raise an error */ + int error; + /* the sleep opcode needs to store the full Embryo_Program status */ + Embryo_Cell pri; + Embryo_Cell alt; + Embryo_Cell reset_stk; + Embryo_Cell reset_hea; + Embryo_Cell *syscall_d; /* relocated value/address for the SYSCALL.D opcode */ + + /* extended stuff */ + Embryo_Native *native_calls; + int native_calls_size; + int native_calls_alloc; + + unsigned char *code; + unsigned char dont_free_code : 1; + Embryo_Cell retval; + + Embryo_Param *params; + int params_size; + int params_alloc; + + int run_count; +}; + +#pragma pack(push, 1) +struct _Embryo_Func_Stub +{ + int address; + char name[sEXPMAX+1]; +}; + +struct _Embryo_Header +{ + unsigned int size; /* size of the "file" */ + unsigned short magic; /* signature */ + char file_version; /* file format version */ + char ep_version; /* required version of the Embryo_Program */ + short flags; + short defsize; /* size of a definition record */ + int cod; /* initial value of COD - code block */ + int dat; /* initial value of DAT - data block */ + int hea; /* initial value of HEA - start of the heap */ + int stp; /* initial value of STP - stack top */ + int cip; /* initial value of CIP - the instruction pointer */ + int publics; /* offset to the "public functions" table */ + int natives; /* offset to the "native functions" table */ + int libraries; /* offset to the table of libraries */ + int pubvars; /* the "public variables" table */ + int tags; /* the "public tagnames" table */ + int nametable; /* name table, file version 7 only */ +}; + +void _embryo_fp_init(Embryo_Program *ep); + +#endif

  2. SECJYs-b|9Q5*@_B!K+=OffjbCE;5oiE8et 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

K5@fs&u&U7H5(~;!esNbm?k7{RVZo42B!;& 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 Eg86MPumAu6 literal 0 HcmV?d00001 diff --git a/legacy/embryo/doc/img/embryo_big.png b/legacy/embryo/doc/img/embryo_big.png new file mode 100644 index 0000000000000000000000000000000000000000..cd818f75b1d6aac7b03797683c85c80eff6230da GIT binary patch literal 937116 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%0DQEkHvE@L3(L4 zeDyNWFfcg=}Yg9fCj-$;#O4i={;@kM_zwIS4u#`c|2-9uD!9`22 zXR+2&wbI!ZIjB2~B+3tOw->jxQkQUh2GTt714HCXQ&1g>NR(`rP(0-C@4OF#Y5 zM?GYWG^qekFq!Rt%fYKci(!t@rfBiLJ8>#(otq+e4z-R>FQaFbiFOM_dC0a6T>IHu zdBoWdt-Owu$~QdQiiW!dYbq&JsWm|}5n72~^era1WH^j5 zv<~Sj#ZhP^PBZv?p6WWj5A?i5VE1f#wt> zQ9fQ}Bkcf6jmo7%SWmk^2RIULD}d$dciup@lF@TrPM^-mvJM~k^nRZ6gcJDKSC7zY zGLuilf)dk3xy_FTMVatJJ#I0u=S!B{`B8H^n@{H#zVb8tBi}vTMTYYIYTR^66f!`6Ghp+af&>5 zSm(%c==3tCCz>S2aKe@up7!*|bH%k^Eu8aI6=$@v43&$%1~yl?Fqj}g4;eHQ`nnPf zsS#SKGSN!ti!B~uoAzUM0Olk9yeGgmU_>sq;%(}kV$%1J_L z#bEq$6VsZ3eR=RHEjc1+83}bTiN>=OVu?a{q8?0R3e$;%24$g<`d+0*YG@=vD>XC{ z7;mO*+%U=5rYYFC5yqxqVj9e3<-19hkXIYXqf+lcaG>Zy)`4CRx;^M-(8)vLQbJlW zfjr~GpSY8(ljC%S^G=12|J#1P^u0xX=CLR8w_iI%nx^bH_js~imqg7`Ywz=See`vz z-+7Y<&SvEj);_Q~+97G!JXIZXb3<;E@ZERt<$u}3O0Hz;=bw!?6OJrddcB-1w@0;p zJpXmq|Nbf|!rmHx5A!?xK~je`c&#(i`Vjokgbo3(>L0dfcW4Gvi)y zSN*mc)o;}i8$%IQ{ldI_{~prBuxY~txebmDPOvs-cCw8T*tU6wZ{Bs7J8rniyL?AE zJ+Uv#&wz@K6_!$BFO_r~MuX>{@nVEfcS_XTHZ6B8EdwcCW~QcS7{hooVWrohRj@TK z001BWNkll}@hhel(V^CQ*tiIKH z)k~i9kB>S&#m2GoL2#h~j9f*Ee$=PLNPp_?(A{j9o*)s(a!Z~onRQH$Hvr4lO&d7n zlm}o&W@nF?%!`OK6=d$IJ+(<); zt`+KA(;=l8>q$+Z&ELH5bsX2Q+`YI=vpdh;j^UravX67l*g$)1icfy+5NR`I=eft@ zvJ7XnaM6$Pyx;sE9BoKn1t~iMn1*f5*mltrNq!?0@kcwk*rAIgO zld}5V`O6qW!`f!ka4Ngq1&3S9!`jJl;t_Qe|N)!Ide|h#79)EI+ zb`nJa>Obx(<;T7XTv{2TSTH3YOMCC2YsNTrQv>H5z1-pyCYmWmgt@s%zWlwr*|hzX zV&N*jit0e}Cwd$PL~{tavtgvYDcssk+~XjN2fWjGA~Y-Jv<(R zQHNwqZQg+GE~7n1Iz0)E6zw?{4zIAhn6cPXx-JMV(iV#=9XdTrmTS>}WmHj72k@{ZHiPDvx8rc({?5F=KMD3# zdG4PxHs)tir3o|}!CoqX);P$dPmeK;7c#`uVOk*$RMt-_U-GNpji6uFCq*r+_Yary z)mv8h{=p?qo$7Mi-UV*CH{(0^X8i2qw(++&9U(~*Uht&j$a0IbF4O{jJoh)=9^Nw_ zktG|JMH^&V)pgtsFtb5MHV!vk!#{lf2&o9o#2_fG)UdeRBg>U;&(Y0oMZKy4WN&yU z!RN;?2kjaQbKwoO&MVCDD3)?m{Xg5lkw+J-Upe8uKsfO88 z6s#hGnX919(*1iFA8T^rOcNUn{Bj4g<4yl*3&M%57Fb^Hkfw&?W?Hlw30W`4Bu#o@)Jm53$g&=d zMoOzGh_lSiG}t&h1ryES79r3wu&~bq(c}a)CVW2u)~EF*$3TK5Qm+R|2D1|&DaaT| zy8=Q-xph$rO3e`P(IG&k0f=I)DWw!?z|q1tR}h8fmO12>yLswEr}>}Xo99{2{YgIb z;TuS$!zaIbKR^5E&3yc;hxo|n?&TMsvYnNX7LLu-fBlwM@toJbX2hE827XqVSw66) zuf@0`*yb=d!(?NgWvhh;XYQ0{BO$kWxYi6JcJMRT9C1+BN&(6PAOh92;V`hO(}p$U z`VVtHM#Tz$s1$!sF12E=?lCkJXLpK!=6ub3UBZ8Lx|A2_)%=N9Db z;f0qK>%M2ODKRuS2u&J+&`1)-v?&cJ<6^*OGlsD5n|H?2@rUdfko>bYV5mTXOha!j z_fJAlCIzKQ70#wl3?^agbI!2`Yub>u`In%zf>I*uzaqCDgivhF6b$HCp_LHUB??cC zDTL3&2<}@8Xoh4)AQDWQ9-`3*5Ud3Id_=`rW7E=G#ZG-)_@z)$i8f&2Kvd+dQ=nXMgKTG@4^L;5D0}-Hs7P z0i=+Sp~3(Mn1~f3DeU^~%aiW;`oEV-h)7w#7L|Zjfe49hf$%R7#Aw*aenH0k5=ry8 z?Zmu4J|tsXtEQrXu{a1bz*n#7PCTuDN$f%PX%LWN`?&B^jAfJ zWoEWpdO+F)V5`%TFv%LypV?vyd&0h@g6uDo8G%YS@a`?2@Yt7s$^_nm9v13Zx}Z?` zY(^vR05lRTNCB)cyysDP<&!_fekHJWy)ix~;0|CH-u(qX*9L;%j zxbjQ$|KYGtUjCi+1f~vGZ^<87RmY+d$*>Pzec;+;CBj}}pd3}Lb{4tb43aU<; z6lo#`kSHTzYL~Wd%_)8nJ8pCauUW(oK zoP%qxUWIvoHxC0h-hj)0w+bQ{$6I%w4I&9C89@MqN5_H}uH5`ry?E zu1yNa{42F=0&+()ayQnz*=K^U?K`wYs4C8$swB}VS06_P-qjxY1SXxxmhM#)s8383_-$-s&|7F z!PdghnH!Rg$`(jrEaqUaV58)@JaA!}pPAj?Zeo}u92sM<8@A}J4bls^6}G2~+4O>i z(hPWPfdQcrB!CjaD1rc>1yoE36hXEu-3{3?ECB@U;R&11g{^@_BKsHymTd(_GR&Dt z%T5X3bm7;&ilp4+5@vO?vb|Dajoe}@49LeJ1RqZhp{5ZCM<(7Ee6XW>9qsB-v ze~&4+?Dn;|;M%8f!v0&B=I*u|mowO9ou^4&9`(Q{f&ed@7UQWkKoBTMEfGlx<^-c{ zBaIWAIw<$PHdX;pSxu_yzB2Yz^|dmfddY)VAGkJ7wuK7DCF(%z#CIQb%QmwFNEfaG zKd?5v(;G7ndbz(mWik7wF3;)F0|02pnx0WEOtg9+Zg*P!)%8J4AO?w?@7kQ#$x zQ}mZ0#L+<3u5t>}77i%_fAq2tCU*6K#t12^*)P^u~w~41fwr7zzUe386qkn%*nd^Tjq!i^(=I zlW8~>5P&W)9WAVb(AL0YXql8(zar1TkxTe0>xifWHc^n>rk1d+;$Y)q{b+N{83xvl z5im4}L-yJNCI$tS1AP{G?XG_fxg{JJ-uEoT*5fL zqY+{4sxb@=7}sc=aXD9c*F5-UW>s2L@~j8+>6h6YoI zAPZ;Jx0ZQfIh75*)#<=S2fB8mF$2nG1)Yz~INzyJdi zF_N~z=%~hc3)pJ22$BSTaoaK+w#O_}oe~n?zIq8hF!$wh5Xo*Sq?_wW)zv znM5eMF)g>6HJcJGl?B2g2U?u|>-|%D1+Z)AN3yktAqog;>Kd0U?YL1lkU+L^=#hFd*$RqBWVM4F<-W z0@DYY5KI`ENHEe?5K=(2f#E@c=|O}ju=e?et#38RTH!-uv5z8?+#XsvFqDRQk;_Mx z-ba6eO>qFWTjPoVR@~oE1=A|-lgdv|l7uD!7)vlZ!jKVRzc;-MPhLKPMrb5dNfJlA zb_#xVcgxgNbsBmFlh9E{VEpn<6_9Zc%3a}Th?LNpK?D*54S{u|F#^eG#{?1rLaVB4 zQr1X&y5?5)J<7fbx`c&k?{^h5uc$8>_JM0-mk7%m9J|Sc0RVZ@2?zadi)myNFUr*g zu4wA&SR$0R429BU4L6ZjTV2sO1&ygPJ&Y)jW|FXdoTD4VgOvkj;OSs9Mg`jj(eXfnetnPFrfi*S<71Y_1@auKPW zYB8|$y#Qsv2{5ikCuI`S#%*FliiV;9jVM5@G@e-(!;biZf<(fWF}5^Xtk7sHyetYq zgOOoSp)|c&LYgq!z@}j|0zkOb3k4Uql%HG^A#Z<|9$1yl7ZnBBa6^wZ2m=cOVFQW? z&89>v0k)VGVbR@d&{i_7S+?6TNQ4m5uvaOckL9LtCQCvPv8{&+G(y7Yc!KeSp|r`t z6huhauxIEjIJr<;267h5N|xjUQCUZK5zJ)a=R{vJ>;u=P4rro_M3`HxUN$Tdg{HP+ z&UPmkGA85dZLL~nu3eRd#kx8fu>lJ=W`r$kG6gc5l)!{W2!w&ak`?1fv{}qokG3GB z#Jtzc0Z1U$);wb8O~r{x*pPy7{AmlX^`Fy)|8?wKumv7AwIgyfz3k*+t-X0zc2cmx zFFTOY+Re$E1xDn?A)3Wi5FqV+But!?DXY1#U;(W)0@4V{7)i8MBBOvH1C#S7NTAsa z&NP$wA4C0o8b}btqXx6s9!r&6; z#_pty3l(yq_83%Im|_{zD&B$;z^jrBRiAbBfoo%DTV)pbTJYLo1|epV_7gj%;4>|v zLNE|>VS@>b+eMxz4|vWO!M3Sb5JB1c5vL>R&BzbM+AIt<_UUhTonr(@Cfi45+M6_M zv=a>t0U4TF*8U&8;@aYib^OOJ&fWKuFCRTu+gg|Ayfs>o0c~M#;A}N;1{6Wgfo}fB zfQ*YUlD6(4jJrj_#Cs4CBoPKei6AgLb1ex20b}}LfWbxs32O)v00&?pA*6r|0${Ld z7*!YmV{KrdVW#>`dq2>EWT;o zCkwSTEkIO2%*+b!e&K2`q;n-&U}GWDC?_}KBuM}v%x*OZ>^OSksfQqexw~y;`nT-k zux$X2m8n~q=s|%2 z1OgG6d0nn%rdUD~5L$;|AP7$TT2FA<(qB zg^@IRnUH3DJ=lVfF4VFjWU1`|GRt~csB=BP2QOa@W`*WK^MSwIgg-p68b=*cA=4d7ZS2j_fkN~8h#R~yk zPl1yJl7U!f(+GqxsVqXcK$R>|y6Cj^Bzp%~(tCr7Ovx`Y`hcZM?h8r)OL~AMDp*&) z`M3{U8>M833ZSAonQ$lqlol8WM4BFCYB5z5Xv(tWBSk5C(V%X`E8J zy|b}Vlu{XnQW^*R&DK!bPWEME-e_w(UrU>OKWRsVK(LYMjPD#w0Qj8KhXm z?lsN!a%20jjN$#6Xg0KpBH) zA_*;R-UVg!!m<(}l>kW{aQWa>cb_Pc3@6LFUa|@Dec;+S!K*46zLb4U8IYLS6lf_n z@|Cc%8M}ID7{LvQ72Fpz%*F~nc=BM&KBaMwfz80PV`blvLjkY<6hbUUh?fD_0od(8%zpZ( zz^(^k|EE{rN0;3WrA=@$YsRIwuR${!z;S!cH1peDh~wc$ptPBxrV|qqEubJ-BDRcL z*c?k}ouY_;mi^r)uJ}!Xaj^#`vcSN~ZlcHgRf)n<{Jo6MIFo(@a{t&U0Id$dD#6T6 zsR+$qPPGY@S!{-yW!h!KY-a33Ih^|1Y`Pu zfFwpE5=fNBKqMih#=4dUL4hcOAZfhu+V~pH4nPB=Z6L9x3Q|DRZNfuz2I4x&F!D+p zFC^=d0JgC=cN~W1frkMAuDJg5xOd4Y_IXt!J@+J;_teIkya3Nx1M5c7n$Xb7%2xk@7X52$*Zh@8m6f!2q49wkq8~bG+Bw+?0x&_+{$W7S9 zDX~o{Q1)wD8@7UM+%2yMfRzE0DEYtW0%QPy{r~Z&i~O%GzT|{?TTPS3d?AE!qe$~s zOdTK_&1A!K1N&mT1b7M4vn4niFd1tgbR`WpTQIgjmLRjblcz*&oX7kA^%}g-`}~S8 z91P7GQV=$u5#fy|z5p^I{s&-2qLpPhY;Pt3&q+ zXrcrVRmt^Vl^Fk$J^H})!hlpAP?brEWfw4I-O?XveL5+ zoOAb?`@KT7l~j!Bf-!fu?ZBM1Zgwb79pD?@cfV1`Xbp#h^bjY$K6GCf-jo9Y^A18$-3m@Wn_ zxJ|PIvrX#~J>oN0;fNRdN!)%LCMFW7*g6L_L$k1<%ch>`Wld+7nC9X|S~jJ!SbM57 zQ^_uB2~_}CSs!O{2wA_6tAD)UAXZ#_%Z4RYo%p0!W4xs?)DS8AQB2U9?F3>AM(lFf zEu?WK4HipXZa|j{zJ(3RJ$%pYkT9UMf>t&GU9)XCHe(!#&6F&_FgZ$RfI07mowf{< zu5RU-7}Y5Py1>4=Nrgp*B~d?VsL;f{3$_9bvnH9$7q{e_kbH>KmRz}N)h35`amG2SNQE@Ta*jg4P3FrkcT zh|*ZG%D&#JO{J&-C0QX4iW&t)RBW>9&h@e<{E`5*K5%V3AXZnW5vVb4tR0tF+X4m~ zWD3$Q8p)<$ur?-$Y{{g~Uv8zuowwTp_dc@3+$V%h6)?`bBlg@L42{S%M?sT;DlLuU zFiDUCqbVQg6tG0;c=lY~EkQotP1P{4;sskK6BZX2Sy(XYzOK5kvRrYT_WI`4#g~&G z{>)s6z{EN^X;CR-j}J8RQ;gl`j(GvV2=eo_CKuiHl06>y23q3@LP=OV#%OEPZ`f8q zOEE|jVy)0t2GHU}nN|i>x}T&HrqfH(4b?CxQNgOHW&>4r{-Fzi^?|E@Jg?x@t=83X zp^UbSY^Bq2CYicmSe3Q>a#=7y9!ESgA;{+ak#%dVYiTs3k@^G?1W5>J`(zZtfUN*# zeo1Tte;LNzWx76%gzxu|*`tl>yf@tg^D4W*WzFtZqTa2!UTn-QEVRQH{B#fEWnZ2P zl>mtVS}h=QDfs>dz3n|@WEt2fj78o(eE*WIK9&JXmt$-sK}#vL6eCW|ej!#GF)M^Z z0^0QPwUO92k-UlB=HpvGe(BXUa$!{sT6AGh-J;xz=b0b%;wXiD001BWNklSfGF@&eJ)10awjsDK`CO+{h#5O>w>chIyc8}SW1ro& zfpV$vusR@&tvyL>A~+c}ED*-{?w+tDPAlMnO;gwDd@EzJ(^-v6RotrP9dX6$S|tzG zO*Xd7G`^FOEXgV*@anfda$*`HJVQ+?IcrEm0){Ba}j8o(E|_(R0nPY^?jc&>4B1c;CkUftQ$C?m)+RY>tals z8m6JP1}ub!SDfx9IVBF9P9Ao=h+)Qgn3Qjgy?5E(m^5tkllFj72$4}aCg{W@6A&3g zM_^syxhzCB&Mm=!B(ed$@PW(u!@B_(qjNeeYUG=4O`&y`p-+as#uoSXLsJ>w%J^t?pShKDTr5Q=WNMIOOoS0S&rOcc))@;u<}N>=PR`JY_F*m6dK!DaxhZ9J1V*2HGFTfp(xOin|2 zof|L^z@D$%9Jf8ZG|OOO=PqP7+6wF%j{(c!%#M|rL7I`k^xLMCM-oEQvz6At$UerM z7aV`uYd&z{7d+td0W6sW^D1i=t(|4o19;W3v0iIq#s62aF$-k-6@cu4x%pGV4V-NB z*S1w(!uawLOtcJOv1X_Qh!aLjnHo8>SMQ>Mh6Wb+VL9yKIWx!vzNuq@_H#AcLR6cgVFKCWDzE2 zYzdU<5d<@ILY7@Ao1$UPc_`|*n*Qz+mtFfDUB}d;;?j#kQ}#VCsleSnaJ`6*r`E-I zZYJ_cP_SFfN}#m1=Q|GhRqca;^*doiZ~WFvF4 z{KJ>fapyT$xx59f6_SL&T7wlZo+x95S1`@)3?$mra+Na100cq%z9IpE=OIdwx&T=( z0M(ZZ`@r?$Jsw+`VEb7KAOe#uXeSv9Vg!N^3PwPjk8P#mfAe(}5l=t`O)Kl61LO#{ zPs}4&rfT&pZC}Z~D-MXA}S|E@5C*HLtS8p~_9z4YY#w zWMfq>#v*`CR#xPCAe&MEGM@Y52d$G4FJ6r}(dMQk60OmWO*Wy{43!WPrJ$IRC^BhV zLI67O&O-C?&`&-mY>P`i=ZgD#eT+VE^YI-(~9hJU>+y4({Y-oNJt%p z_PYfJf$waM5dVn|JhnJO=y9zcsLJ{GUfs-NXaJoaQktM4l8 z9~(V@6;JeBn#7W|ZEQ1LVz6P15R$S{CwZr@=qRKJEA_dwLPxO%)C9&v)AWJ40+t&_ zsk20SBNf`*Lz{gl(ikcGm|A2e4hL2|G&6^><7RdcjM9JEojY%6GB@jh&4g01X>9w(ukEX zLs6M9p$G{xLJ~HyUQg!Q<1QP@Dn`{yV01S?Tpz&dM?UqB=LCdkJ$7~7E(QSL|2qHb zQ@(iGq37(mWn_D<*kMUFEzdHK5h&MUh?vPp@oa$*{nd(*k3LaMGUZp%NmU zuSGTmKIK0;--PKB+@%19sf9Hmw^}P0+i(60} z13Ey$j3hA;kcl=a7;Z4BVwJXqxbZy&*l^5o< zE~YJ%F@ONZKEA|lpb~V}VcpF?Pg^A)TZMDFRdQ~( zy~izX(2A`fb@F4MarKYql!aAk-u_Kj{J-q`^uL{V)u+C+;E*rAcB@9lvV^T$S@}={ zuqnD`MPt)QECnD**gmZcSX^%5Y}v;0WB?4E4y@Gn*9#A?`o^A(`dBF=GjHh&#mcV3s>{y9 zBg@B4_8?4Cu}%_`JE%3ZCTLb*EufeH%eDlWEX{1Bl@D51^kT^9#*~WJWmSW`?()65 zMtSMR#`;oW|JW!1thn2&1gM&mUoTse;Qj%DU1vuSL^dg28@9t<$;?4V_2c10q_qOTqQ!vjBh z;qj=i=b#42>M{+hYF~uv$fxy{6T8*R>b|E}r=moC;`pQ|L2n#D_CqXP_%l4Vd<!L(nP^HA3SSY6#~GJ{n6 zQeppiUZlc0>B=o)fhQG)o>W+r39BT-=;I%p_xW93K7?(i%JjOhHnTJ>KCtN-!cL|q zHugai$3)JiUH~9Y>ts*0!n`C1GI9;MPA|u*v<1aZDUqF<(f*A2CFZ#vbjpQCcac?m zw_#O-a@BiM24HogPtIs?OibEtIu+m^Q=akk0f(VH+sn3x_si;u{TD{1GMRSnfB;T%) z3akEKb}rYsXZ=m8{~TXZHLpH!Z5(y3D#JioovZBDr~)nk(Wg&5;9uVIia|(8nGM|< zB?M`Nk{~3R6bk^*3Pd6gI^?QaoW?~7XMZQ)=~j@|#oSuQoH-Q99|XqU4%i#N%&?Yx zA0X|x^+Oi?^oSbpD%QIaR7XRV9il=)EMqY1%fvR6olT}TCeiztmW>n0Zutlvxc70a z7)!9vdk?|=7cat2C;SiYzwi|N+yCALB|^My_hCSU_~l(Ky!{QsU^b2Ri4uSSA|X3O zjKe-v%e1Owz@ikbdH}5=fOV^F_3K-G;M(L^SD8c=6u_&Dbu~(uSF><`1fcORA35YR zf49>BR>#U_6aqqMgi;_7!mu6BQAi~Wi*kTvzKe*VpukLMDaM+lkv<0J@^nOYA7xH2 z>3uJ8#sYI!p#70U7X0+^8sO@sLAe*{unx$oZe`M9H&ELUH{yn-cudCV@%#hXga3s4 zZ@wF=#@g8Xq<7=)|M>}C{r=PN)dio1ZYTKtV#eXSPsK0p9K$>JnF#^H5uf=5uKmjK z00CpIaY&ZlM#}te5}<_=8L+AyBQAhWy8@ibz^l%5R5mF=caa+Vz|}uCTDh>yU05a; zc6|Q1j~x7ozu$ELt0xo$0g)7tmT8If(&fxpk;;j>6R@D6p`k!fnh|TDZCbL>N}67; z7Fo%!Q?e!0~O%a4aBHMR+K$}S%CF3 ze@q6vHZ+o|%6i``kaf-GW9GRSI};Br{5{r9wDH<^y#pA06aM#K{}D&LaZ7yQ>{}2< zgE(~eA&5ZY7k`Oy?4H9o`k#N1KE^d)J~@h`oPscp7YncN}AeGTYOplD*_Px`^g8Nap+D17)uy|6bOZlYSLNsk`Thy zq5L?eG?@_Ej^xu!Xe&m{1VwBOio#w^8gbGrPC2%dj~S9mz>AAM6-KV1**o5P>P2%a zF8-t-wRGF9*1b=?jB6)UJNxQVGdA?LJ`AnSIk_Q8_seT|TOMt7$w&EV@TkRe} zt1lDwfoqeN3yWELz0|sD*_MC%rw<=|>XEM=M6AfB31&tM5?)=)87Vybp@xD6nepgs zVsupcJp?AUz+|JJ7#MFyDSKirq-RhT8HLW|jMQ%L%a88=hc38ie^eK?*`~oLSFUn12(XS z%pLEZzxP}g5q`Mv`mPt+HRl}bPOI$vK^F3CKG(=YumtpD&# zSy3B%)|;UxWAeD>tH-5pZNbZ*o^$g~z2s_icM?_wKljpjTyXmf?h(7Vb13&z_ZJXF>W{`hkgxs7WwvkMUVkAsxGeeWL&4ZvF z%d&vOcC-mucI7??GOK;8BNNXf%%9Dy(#3>R$r7Fkgup~#)*z9;S_KgfUvTkWT_l&J zWHFj-b7$Rn^~uPJ-Q0?kt&!z`i|_yBr72Ja-bWz-Az?bqCBF0TrZ%+IoayM8pl0RS zLr%ZsZ1iTmf3|wasBY81%=0FDv0d|(<3LouuFpI5l0_vFVUckarRZKv8Qs`c@qF!O zfq%)ftv+yVI;^W`(g+H*uBfK2Ra)zEKY#lB5BShdFAMO-t(sYx$$NS}XvGY~AUjjb zh>RNAc{mKqN-rrd8N-FmTPcwMC}XS#bCBBeMf#{#z$8}_b9wVRcZm`x>n$aK1>x^c zy=0FH$#61@0Z;OMq?*l0ovcVbFtNJLOnM*x>Es&`kO3(YKp-tp*#^BJ$Usa83tr~? ze*LYR3I-VO^)0N64B)M&FFXg`-HP3YXif^qnEAjBz33L5ZP*tH0IYM)SqomjL8l=@ z6&O%lU|ij7@KtrKBGak@tzOtxAGrF*3-Y=@Tdb=aV08c&fbhfbo_pdpa{|0|hanT) zMA@>X0K`fowrShiULr;sbV(c8j4ig8md^1PTi>$5P?`YW9#2jhS)AVc~`S6b|+zq`IyUS$5^-U_E9%RL`MO&b{3A!qhO7J!Rcn?Bh zb_{{EO%xK4u9IA50ObLdkqku!Y=H!V0KYl!CQnMMeg(MX6n^XJ7k?ekQ4bk2AM$Kn zc)vaC*c@0{86cGs4?Jz*mFR3XuF55hdjza*b*)|-j{9t@4_uop>yll7E9%0u%D^iE z5d8B=2fc5%EgRTzW?*234ZCV*4}vX_sbL04=YCm3v77 zMA?0$?Yu5nD~Xj8EyXiU%gWa2QlSx=fJ0APxKlxfQ78}PE!yRE#iGDHUPH7V^|2zL zSIq_bo_`AMnDauF~LY8Te2cZDItgv$iM)PV_z~b4wk?Jt5hPC zE|}5)SPFRFM=9~!^Z(HKM{*VW>Hx1VqP~x;YY!PSAM<=%fIb7`0ze;p#w8b_-u@nU zscjYSkI{SIR^Lh32d+(?b%~N%S5;GTR3i_T-4_X&7ZHVmk&!t+YQ-`tCO{;n=~)w@8AN8)v(M3u z24gm0npvRD??3d6i?^!z$^FWSO#{`=@d zsfOXJ7w)l%#q5 z-AtL$ItFl#`lp|5Ab@$|wcV&4bowRdO|rgKXMHca2xF8RGP>1X`@q#d zHd@w28z320)wLQGz!eo9GXNkj{MQ4IdwNV@udN2al=;gXekl+%11jmvpV4r$x-uXm zR|tbJDfA?uwa)ssTnm>k-MIP{nc9t6@U7&Z`#vrdl``+VW`>Rl15IIu5GHKDETEuq z$f*lwq0_XX3bln=0Q>#7j$~sbVfR!GdrGrM-2G-aryv_{oPw8m){;zOKgiBevyoep z47-vR)C~q1;0kQwiIhRU?j>Ns%YN?HwS+Gniaek>@UjfNG z{Zstwr@bcw4W|NwK?3;5SvUN!q$VbR^4Y_V7Q$?14445RX*{X~2xzQW8{-3C{!P~l z@~X3rP0y*!#KAcDjD=rWPpPmMwpG=x(PvwI;Cj(ZhP^Vcs6sOIf8ITA+SK})6Aw6Q z&WsRyz1$in>@HU+hSFqeVeGLj8wHhtm<`f(wnSnO1hm~XXA)rv+kzc}>5>)Q3yvfR(TToL1M>a{3vxeu?En%OGw4$az?AbMKvv4W<29OzK(nr$teS(ng_nBXs zHc|^Crb;prAW6%>U_e>Guqh$~Y!18x8K81$CkD8HKnOE1lz<=zEQ=za!eszO(y}jP z02TOV4vV_Zz=6z>c-41)*9E}x<_$Mz;GoklTHpg0^Pj(1c4~iZ!TT~+NBPMDWG83a z0d9EBHk(5bVZT!@{t4<`is`ZN-`_T0*mH#mIP%j!FTE%ieI+j;y8Y3?r(g1~U0By- zOc`~d(0#Vm2d)>5WLN|*Spi(#3>!IMyYD;m|K-n1bo$GW|L32bUj|+P;v8sc4IBSNc`1;QA4ynDl6Tg3546ljf4-OSWJ@y`(@z1X)J9Kf zP_RF3nZ1e6Bn-g98@enE0vTXp4GC!&k*8;x#WZ78=J8B&i1xyP9k7r<7E)~MSR^tw zARKrJn7_{{dqwbKJI$KR{lfk(!^D6<3OMEwN#`CU&vEEjm6Z)iWQr7Ua^ekIj@f#2c3S=Nz6BVGdrdHl9&5D#Mc&lAa`Dn_aK4< zUcKFB=`d0^81>DkF8n^~)9tGWVy^M{iZ9H6@85s=vh*9S{_3&$hJ1T29di1@Gf>@x zT*tPGjH@pb_JQj~^Ip`s42xNYb^To->K%pA{ok2?rtQYU?MssU?$#@5%$(ND?LKd~ zZv|#g6WC?;Afz-nVH|~=HV@~g&)Uh$?9Jk$JZNQ!@P)M{?Jc8}E*Wsr`3j4d5(O41 zc4@oF8H^$bmtofdTu5W9%v015Y=Dxy#PKx5m5jt`zHS_hY#E^gDk%)8WMRcNmyz7? zO}5gX0Hutq2wqvu%YYX_Kv<83&%|Ku^5%O&;Y)zBARChHhjT^^$GT+3w1mLKJx}3| zN1w*3)#F$`+QN8CgO!HXhH)pF@qc$efvxAvz*}CoW14O0_ez-_sS^r&E|CINM#LyR zrO#RLkLIjQOR569?=UN4bi|pfl?ihfEc_NaE%wv}z^bN-=kf`e`LyfKIVMYTVTUS= z15R6b;v|_?FAc|i;OYa{OQPQ8ZV|cp&$b=g9>)6I;DmT)01Tw1Q)azqRzwyA}7>kG8)_378NUM4p7q2 z-!kAb8HydiWnXpSq)9FTE_k7>cI1l#QYRO>c&bv?m1>RJvODwph%_YGY14x3jzy%= zR{|FNEJzl?i(LK7f|n3v6+dCXEAr}DPCB$TG|0e!jguCG09d*Px7@!B?U8kOY}Eut z$J^Lx>*-iM+Je#ot4Bt0&tF&KfoGbCA@P=-o0v7ViC^9^h68t-jyRq`BZ@E-5Z?WT z4|af3dE6o)&%^}2ddf*40`_>t9CJ36S9~`<7EKJqPt6!2Y#WtX1|rgX_Al z9Q_}~>*Fn_E_`>7Y^&EP27TbFID$S_Y*a^au19`V&ghFS0X%n$OYW-zNvm*qE-EAb zV~;J&H~o2O{s)*DE7y%<`fxL?9c?*#CSJzCQ_Gg)fu#borw7=6RwLWadY}dSIf!j9 zmx*m6TXV?&`T21aS&b<_ZiTCYE^@CVcYKYx?ro^Piz$;d)8u?Aj$=V;3}E(MlQt=Y zg=wsI6*?9+4$Exi4d9yZW){$7?ldx{8&%JMFoBQc>W6~C%DC+q0)a3+cR}o~cDwIU z+Vn6;ZPrvFfdu&TpPs<@+EF~VY7A>f6YR0WbW9lt@XTm{K(+9|)1$cM&Zn@=oSFFR znrS#-w+PdQ2k?u#+BkZPCJx+5pcycRqd~m;^Y663FM)G|b`l*`*n7EC*kI0rbH0un z&iz8_!65)F7$V@5X@TAA1OOOC{amrS>w;08SD1@kddsN`KZZgx@^xQ1>WAiQm(H)K zQI{o#$P#es_8d_F-ag~%ADaa8nrxn7CHuPX{3CuqUJq4q!Ds8ExP6Jrisg2Zo<60S zgA74t@rV`U{~lb1>4Orpr#Gu$u;{)v!mxp3UO$Kxt71e=fk-mm z`)|i(w)@iF;-J8~$h*%!z5V)Eh#SxOLVo{1xkRz79>&1D1s8u7)gxHeS31-s%&TZ= zFLNALv8`T4m=sep`pnB7vX2p)+=hZGm{U;#>1lZ1sq=R}CiM&m^4xc3VHOrZ=1dXT ze2T!*by+gTcq>6O3R19PZNNwnu+^+V%ouLs_YbVW%C!?%9VKq=YGZy4mO}Hvg}0iXFO$(lbS;8>&Cg~ zYrmH`_aOcV8CSnEz>{Zkj#;M9-OH0?2oNdzF)8&OIRF4407*naRLg%%%`lXCFo+3@ zm#xD+i=V+??pumK-n$Hom#o2)DY6FYc1lW7q0DpaY47c6;I38cAas9&qUcL1Y zHlNnS?;cioY;}m^-#8VUHBI{DU^BwhMu34RzyrVkD|Xsvdw7GeYD5K8tjA>6YD&e1 zZTH>}i~sND&J(}nYWV)I@A)P2#)qV)o>Z1ySti$2jl`+?h#HV7lL)BhTJN?VP=A5! z9~fXBERmJA*h*7|%P3~!9JDotyO*hS;hZsbpjQ3V z+PDrEFL@d(#|4ImBFr2PFlS1`E^xYFcyLmnk`TUwKf7vLKk#Rh>Y8)eD8WV9FJ8m@vqhm3a zkF>G#<`Hgww1q$2`4qOAGabz+z|7$R%$_=kpZ#SWj^BGWmaQ5=GZcs#AqK(_$G`s# zfRy;w*}qM*Bi(BJ@>$aX07rcKiur~dfA_M^vaHXnsHEN%6c`xehI7x%nLf0~jQy}>ab!VE*kE6srTLOfa|vDTDwXTf8W@$A z2+}$grxTy^MFs;DWYLZ6V9XS_D1Am&W~B6a7{{Ko_gljS*+hMxy?IVbCk4tJ(?a?j z4DfNv>VzP>!646GFR*y!D8@%7uw>0R#wKD+v=k;<8ar$`1rrl3Oc@CA$46Uu^wFoV zGMNS@iG5ztz?^9V_|;wG5MhX8Uq1!Ute!w43J`_@gJFP30!O}MkF1F~2mm6Sch*(# zqq~4SLw1b%LuX%ie9D9QlAo5hD3U!*fwHMDH=KKxCn3A>IbOSi{m;Aw7k?0)hNimU z-@4jTuf~n46!`?z!Ma6Td{V;#`_f?_xHjo}7i#KVvK#Aq=z^nel)@&fleQ*0LadcF z3mARLVS{4EukT!uB^hugv+c9X3=kM=CZhbf2&nB3+1_gvfrEGMhdtLBfRbdRKK|o1KJGA`jsrVb@VY6=0Qm$b3A zrLcA+hMpM5BP%B`KA|z*Y9nqbY`@J^jE}Z4ds>9+9~{T{y4ARMiNHa-O~;yv7@JKU zz?6XqSKK~|WA>VbP-rY$Gm2&uA`B%4f&gJ4aP*No+kP%vKnsE_xK{vQKkMq85STu9 zrnLI_`d4jMSYFNj`+WG4cQRl80bR2)aZz)E28s_dY1uI4qY(BMt>B9|NcIzm@ zMuekZJBX)Ok7G(RKoEo&3g zO`Vi~2bh6t zdKGx}3Se;!fK?4XEeqc5Hin1$z|}uCcJS&Y7ApGVd4GSG0HGO334U&P6k=#Fz?4RSnFG>`hRRG6oQ_P%@9=%`r&zD@O%rJ&vJYHBw?!@1u`!HWyomacv|_vA~CtpKT@3;U`AuPWDJnHePR z0%B#rRX0D*e~q54DF%Ju>K`v?z01$f>0n)d_~sG!f*2BvfiT37BnZ;D@Rns}A@LF_ z$_DLqJQD`qu+yxRQKXHso^GT8C>CHaTCEUSW_%e7@&FQyL>nMW7&zvW3$HFN9N+xd z{)arYL}4Hj7-(or83@pb1O^%n1cAoXMgxNlJ3xggHCMPHl)3`A07E96bHj~H5rRs9 zi_<?L3^M_XsZO{ZG~7dbR1)})yBwJjPXRHJ)zNVYmBxTyKX;>xUF&5 zGJ)5>oblAkF|1tE!flJ&*l|vXM^*{E=H($~3^y@zN&^?)I);Hr;%$3O!^*WIXoeC| zBry<$XbJ%lUyj2QVWM_E^(=2V|Ly2?0axM1Uad!H;xYvrP zX7yxX?~^Y15IT(yWi=kf{Oik$zKR>p{bnhf_CfM3r(AMO319^^%&XYIOr2+bt#nvs z-cTDLAJ#b_Uvko6AGltetgF;v_=oe3{;S#CD}Wf1HLks9RY6=}kXJd->CQM?;fZ_) zA7ihbXIb=g&N=d|?G6A53Gzk_fDpIBymW*NSX^ID?rRK8v>Ee1b?KslYy*@ukDl_* zedddRF<=AJqcB1gX$&<21QKY3CQ(8L0#b@JeL`6CLm)*)BiQ_nZ1V**1hi6+#DFmW z=Y+weG1g9yFreCuRvaTqG?GLiQ9!Gu(bgK{39$S2QxGSNiFSg!mPqWg9bxTQ3llAc zU*EPA(cnzHWv3>TXo5J#^nnO5N4WCNbvSCTS&(3?Tr-ZSA(xMa~!z{>ASb%U*^e$ak3Ku(KPB|jn^xJzYZF#O1CY-YJ*7y#%m|Kvpzv6zg6E-d-OU7+fP@K2!nom{W!ZV{*Je6kr2JI(3D~~7&dS<{$<&*G%--#k zLuO7#plG;+Z^EDMU74Ge1pu#m`3V?dYTX%W?F?-Iy zBkLFgjR5yPHlDMg2huP!27yU~wP_&$8wlHdhhg*gDF*2ncP^FKV{3^iA>+d0fI2V!rR8s3?dx1#}EP%STiz?AQFhAKu7`u z%>aRY$EnLDy#K4Gn2mr|#i;K^dr2BM`oQ%PU|fIt@1vh0Ha$I8-L*8g@WZP;kSEb)!L~k76*M1a zeEb_X|KN`E=f6iWnYt8nhv`88kT&^3*+1T+N<9c->Aja<#CV?v3$=ZJU@f zAT#Et3AaA9#4NfD?EcC*>Gi0Yap0*7uPTvpbWL5NYPVcmDAh5C@Aq-1&N8Q+Z*bZ8 z&V}g)WSYs$j00ai2pPDMET)%hkO(3mGuA|G_@%hls|L(qNs=k^6~aoGApGy5#p(Mi ze4DzhvkCLk;-uquHqYFpYq+r{Li!$lq|Omx*%uLR`t1WbS=pRpI(I^3614fa|3@$T z9ID-Qb&bOvi!}2uuDt%7?|P3;rEy$yPg(fh9zd&CyL{RCRqXeAHccB<;PqTg@a_Xw z|9H-Tt7=+uaQpekE?soT(%cU_U}DP6dd=ktrgaJSKW6i)&iML`>DZI|FPQ&s4PmY# zHW_*?t<$F|?BedmZ(M!%Gq#vU9U%F}oo0Etb6E;Fds5{0uN$!@5c6~I`P=EK8N%7_ z+3P8K^T`+gx(3Mni@gfObPqL{D)~lT_W8G+xxR1sk^l7b_Y@bHhkta;4_!hBS)06Y zu~E`6D9Ivgh_-DH-(R%YjX_Jrv%PklS#pYH6{5ZO-U?tlH97P0XZ>%fSwp5Q?WW(} zp9iZnlgXQl?VZW{e{|s&N*45@Ojg#QTNXr{{vp?$bLvaZ^5PSUk~6C zRRRDy86I0dqM8INo6P5Ra!#eZbMN<$ z`9`iM3Ryp!o1RQ0ARJhcF@*@ru*_Vptat7ES3L?MVDDXK7Zp4BQB3R&O>=L-KKpEw zuZ5)L1ys}h>8I?K}ANl^@pWw!pD6OG1fo-}36G1cM>N{3?56V@)KK-3<-fgA(iTxLA3zy0Zy*|;dEL-yL-B|BP4Po#Ju2^P2vU`dEHMI-BS zFzFxnJvmx^!E$3rE}(p-T~&HUS<{$Amx;hOqM0ZH~f!Z{ph~`4FC(icJrq_uqqpiE+Q$QnIXUk0s}UQ0ul}U z_RbY%vCY|{sRTpwtEOQNoDSeMW)9;>bYni;+%WbUp^1PyA6o5A%{5Q+?gv+6w^vO| zfAt=_%))DTrF7_}yKb-l#u0DxStd|u1F&Cw;E}cIr#tO1&Ey|~(zJR)o*nsxL>C?F zqP4O}CWiOPwz!3zsp(s^{o_x2yml<^8PoK30L%CN(Cd&$u?d z_o!|%a@}yrUVy7=QgSitFaQud{o`Za$LT_uo%0vny4+u@k*=S)MXr3K=RP}R_nFYz zU)$`+6b3YFDCRU2*d2E~xF+{G=hhj*Zm*bLSctRvU=AqK+`wG)QwF>~Xu0E6J50?* zM3DD`a?&doUnl15ee!^m!Pw`+S1hbz9Q=nf=0kfS$ad=HO@H`n`Z&THtXamo z0N_n0Uwmds4W~*TtV(0=RiUVw*ClEg7F7TiYHFsci*%@J7*rj@noON*_O*AHA zGt$YKE$oj8W+O|Igi;y`j6XlP+HBc{oxGKrB`HhMV79Zcocw5ECY_!k^2G}aFxq>? zAAW2EB!yr60{}eu*a!f|j@t~Gzf6>~H7blFA=ipP`H zms2L$dwic=rH)FSnji7V6YIQs8kJt|%#5A3A52+`fZvSmzXskLYAxl@tQad@FS#J+ zC($9cII4M z$oZB}9%qVgz)d$i=m8WLgfYtR#u#{$sdZ^gu1~3oDU`9Lq6Ap=J#~L;Rcb~ZXz7x# z)q&dj+ceN>cnttN^xY%oX^)*abAr#@et%zH8uXciD9B;3^4(nzuEpQ%I4%Et$X|6` zld+vj0^o@yBWOr3z!jX!KFn%Egohs+$E&s;1d%p23g?=%vLSbXyM<3t4(KUXY0laF z9mw4B@F)Oa|DA>)M3nnmVkofYv_)XIt(&;>@$sA$J)NOd(rZq6Syz|TcDSU*1A4=k ze#Eza;$48mzWeWl8*jKj+tdiJ=Ea=W)VT8;7X_eEULCA%(d`AesA6M?ni^JBD@9%V zMBRPez)hjvom%(zmjQAatJ-8)S0A`GJ&BMiPRy!-d9p(GlO+;h)owGl%e><|$D9Zv z{O;bRdHeyg#kq>hm)P>ME+%C z%CA`iM_jmY{O9jHI#X!PTWu2m39Pw80?a)=xe3+=wT zpTB1SQRHe+18@8BGCLKhje4_y7@1z}%R(ub(f@vAP@GN4i(&?)~h{`jq97TosG)83eRWDB+@zcF#= z>Ot8(ANcYOS0Z0rrZNDNg-MT#?pc$uA@WyQKXWlx@HYc7ee47Rcjr*LaxAKBxYsCpI2b}t|T>WXr z{2yPo>hgCVDFu19e*1bBYFIwQOS6P2|M%G+iF;*RWt$+{@eAkj1D`ti#$P?){X*M9 zK;E~KpXl5nU2%^xRxfg3)rPGomGu&!TX$ctz*W{WSmsi!`#<*}Bfexd)J&Y&uJ??^U01^^a$rX?5!}LCr-e zN**V!kR15`v-jokmR04I>)YqvH`hQF#iW2z4n#WIaR3DqO*FxWUEs$CSBQ&!4M3RI$w$P1}aHj5AdG2_mM z_PRZ)*ooHbzAIXu;@zr0`p4Vu=za5ZHp$rE3b7kePdT;7x$-9!e!62f)F z`i$$pz2WlZzuUXEQ!s%jWdo2)c%-NN$vHB^>^`P&8GHSgt^&YYuYc>AHh#-s(ZV6@ z+&i69Tpa4LS=J+G#tn;319dg0{gvPR^XtzmA(X000rgQHMBOiVmS z_N|(b%)$D~HQNG*3~2%7xm$u?T?Jfs_K1@5pFw%tjGqJ4$$j6?rJMV{$w0iaapcDD zXE6wOJv;$Y3PdW*3Zoq768j6HuWqm<5&keoS^#j=S=Zf>mF%)&+&$|jdQJz(Wdaf@ zD0j&+`zTD>4JwKVr=N4{ZSiYy+*_`{)j+|J0;>eZ&9&OJyVJ8L#|3rMFrYIVQ3(aY zZ@v3#*P*;wHGF^M@-Kan0o%~sW8;fQm)Pt<_NBszv>X|iy{2`GbH03{IO)mLl_@-*^Np0W|#dYYTXrD^uK4?@?*(xKsq=fLi($Xc$ zOGn=u6x;OUCdqi;A}mU6*XVoagX5Mc;P+m*`23K1l~ATi7;pW^x9=!BcpXDf6sbD` z22^I`$cO!ue$pvR-+04&zja&D0?|$)rygZ98OzI$)T6dyKZVnX8uca#1Aw2l;_}Zw zdd*w@MD@0ZXTOnGue0wrtvE}sGXa#@vYVWY^|PJP^rWtiw91SUO}?*7#weO6rYndh z-)KG8pXa|XQ&*ClA$Y=wicq~V?mrk+ALu%=YURkve*p7|8$|>be~^>twpB!0Do1WT z1V%)-^TEAt{5$2B(%H?d1#9D5&%O0_)NIa=cU?4-qq?=5Cwn5Fdj67Uht|cGaR%`F z|0|HztcCJvXI^*9j%&~OFP4Pu)h#l?reEBo9lOZm#1YODSJ5ENp3Cv8F8}n#>;CZU zBNorYww)8vp_@G~7@TuaX78uErr#!|J!()6?1!Yd!6M8xCwoms+my||(iLRa#C4b_ zFH|Vfd}+9hn3^c9LpEqvN`;3$i4~DhSq(m4hUgTO1!tm5-T!9_{;pF{GAt^8aUz!r9y{1)Th@ zuU?L3Ie0ynV^@6Pk}&Ef;(%H8wV=_%W2>`Z*EPmADF>pYG}xpBh???V)jX{Dvr$#* zYf}0&4T!MH@KI*`&^4v@s+_{I)vXh(91jwdfbNeUbt6ggHbFPC#4048lgPR4CdQjT{Hs$?u0sP)y-SX{)YkpI7_I8kZpzANgFsw14DlLW3% zs6`4**Zd9oJW=49GU_2oSXFx;f?uuIq^y^#Y!pM2fq7K}^zuDnMLl9g>GDNs^DPt` zIO-g!dH2?r007*naRIo-3!xiP|CW~L)d$>+THE9%XLP&Kz zPj$UgO=FnS21-dcEH~B#;Wj0zDq=e18FH$h^ZjsrcO?7u!cM-AjI{nNm5ktq4n4K#au_kLVi^aleGGxvFS~|nhI4`xInJkI+@c~`4N-_tFlYNfA#E$vFN{3AcVOEtoo45j>)MO>4!bA79X16}LR&P~nt{pJV){n^OT@OS%BUuCaF zRe7*#EJ&3Cnk#u#?SoYjRhFAO=!s4gW;wXyi&{1ARXTK;YhvmyUrlQmq&p9IW znl_3I6}qHs*eXzF`I2K&bE(>oE4t_s5~~}*UN@JiZo%!Rcd61{i2CTAIwjO^KNMkh zm~0XGP{T#Bi2Z>)~6RG$Qv)R0)+co(32vgHTkIW_APSy_)= z69*xLsD!wlDg;)xdCnz^Z$4&;BO;24EB`@D3Y1rs0b?$NRki=sZ)vftT-bE1dz0Ry zG7@N77Hm=?DpFr4c|WLVF;pe$>OjY{=VQmHfnuslk}o@6WzF_g(Mm-PyJZTjtOu*C z)u1Vv)miTQvA-YENf$y~0@N&8MFd9`#HT9Gp4pK?S=q)Es4dk8@iZZ?xsq63eF63R zT}}Sq4|#FL*8}av$-k~tQ9^F&B%Djxv8<$3q*jUupot32|6P$eLiee*>Vj|UN_lmU zajqjsL~RLiJ*7#kNR7omFSF5CEgnh9*=~Z_mioG~-dxBlsVOJURdw~_)|^WZ63|~$ zZ{6#RgRsEWkzSyY5o${*cd!vS`Eq|=3;ljgxd@idd`8Hkr=Q^4MC{KJSBa|k|6?OYaWh9Wl zt-4IXs*+*V*pfOIXc5UYEiFDN$Bqbb37$yuq6!i#nlP(M{$E54RSm*rI%FF}Vsi2wRyrCL& zR+9^1(DAAM^zU^NQ2Q$Uq{=LjaBC;$B&GwlDdRk?2FZs>9m%PO#|#JhY{-%0y4 zJVv7lhJPXrUed7k#b6wWAk@as=jKZ1($?@HsDkzD3tI@}`#8BKhEdv3mdDJP;!|@j z<&iq7?n(w}5yF8TAAYB;+E~aV$_iaiiJPe*f>Vy`NP4ov(&T{RYyTNhlBGBmnniDP zayoj}Ue@2h->V!d?dZ5EvIV-OwbC_3eU)r+Jz_0?7Tm$dEo$gW>`V&k_8+rASr z>%*7aS5My}wPMbw&il^AjC+jmi)xfxP)SS$EIH$$Cs@wsekY82cS6ipcjS|&JPq-K z+B5C*tj^aL1 z)Ze!NkhxxfN%BYyh{ksqkBv$Ec4dgS_lcbi3!(D+D)rpELcj6IeXEYSo zBGEO8y}1MwXTXgob5h7$LLSh?lcHRhm>&2*G%tSDw#kk;^ia8#JeOtZo+mc+Thyg5d(pAoZqnwB+7 z%@qGfW{T?4i_QODr}Fu&wumf25nfn}snNadlv_62xj8$_a8<+gK|Wm(M|<69HKZO_ zF+)4;{y8wxfy)sl^EVY4bI4xsvNi@JCslRD6_DP{hTwf!Sx+hjs)`~!kh~*SrYq*G zioC8nBJZTQ7Zi`K2+W_3=zJw3jxoYKz(n}+EGW$xN5M%tNd4(-mgG!OyO}O>_H~Gw zc_Q#6Xhl+Jh02!0=RMY_lnr+2T4RqKXHD7tds>nFMJjrhh|9ceZDQ?fSHIj0-7-JX z`QzHz*Z%I7*ME*PV`s)?p24s8@nNzCv|T~PpB2BmPY%Nrxx}=<-hW6m;M=0;M_%A# z>X}@aGNr3#z;0Pl4Wg+=%BX=7bu~gQGXx$F&w|{4ss}Yh_SRnpC-jd4uAUc^vq~gnNJOxPDNjB*2}hz=tJuEhZ*!{}C`yAg zs){Ps1KjDx7a)n=ssrgofWMHzPlf`o?;1p-x$V+{sMN z{@<6y#MHuSE)kLqc_U>#yUYGdgdm5Y0L~oI|Ah*py$4!#4(+N>&gIeqoMbdSjwIdv z`?sPFux>HIkr`$ncn(r+&xu=vcKlkcu%hwg*H@u=>9 zuRvt6XeY)2&M*;qX(22`AoLO4-Xv=(-NPk#OK8cH*w{)-Haky3Te`gr-K08{%}U@# zwWOal$Hhqh(`+ zj=^~TPoD>cZ)NEcS!`}o#=Gf*uc~%XFA&Hu$}dm+8UB)xJ`Z>J2XILd{r{R)(jZ($ zlc8FhynZ5(?rC24+lkJ+<8FT|^)8Bm+&e>_-3r;0L5NEEVlxO z&TO%>26Ho!@18_qk02lb)1>Buu_kLgw`N;`H~2jS$(hxpO(Fp8d@mpm%E(}Fj^CHX zf~;DS2C`lHk}`r}zHF<^ifhCn_1f>`=mNUC4a<8B0WZCpOVU)!>e0R{pPjx&Lx;aR z=BiHn`|lSt{r+W0qtHX3ys<#etCU?plMi3_zEzhpTs71xtlfPw%<-GkKnMiL^sE?0 zNROhRLss^kpGi`USNs;bqY_rX73}%UdN*9TvAcCI9N9&X04tYrXEoniZ0&@%C`2@B zW7lTS?Y3uN68WFXbgha+Y(hADzez2xa{wjfkFxRU&i9g)Jce}T8YN=Gk0wq2HdgOf z6(n*fEEA|K3+cmId96#kpRHDc->|c2rZlXLF1dXAG-m8+krcq*jfYa>SN>b2iq?)9 z9HH0#MaMwE$623^kyK5u{|yC$*U&Zh3%_Zw>7Wv1SFGjWC2rl0j;L1M@5Q^jDdBFn znt;&waD-_%7<&j-07RM~?N!mWakHJDx>zmgjmvglk$%dqc#RwR<7RB}{BB^ye`fa_ zQBzxSRAz_3&|h!e02Hx&U_6;OhlSYX3wo#z6E&iyX7np`z zR5e^A2)sf6{lCZbo&s?CSkTeq&o>X4)dq9b32<6W>Mb@E>aN&K>)!k0X0q;1@)oOABkrPakNJA2lQpQt* z79Udow<*UlK zK8=hdZI22gU#*~Z;o2?Re9!{60VcpnmD@pflt=9a_!1FYc9H7;c%9k6Nf(@Mq87|K zNH@p~90m%pMw{*OgvAsuEb-*iRA=jK6urM43$p`v3V)%LZj<1ulQx88LScx+Plu~H zkg!mkh_(3~N?JQvXgSTz?s${3KnTBV#cuz+7OvqN;z=f9BV+k5KSQLcb9raNEm-K< zFP-A2q8cb0!uKuMkVC=Z&^MGsp>