AUTOCONF = autoconf
PRJDIR = .
-PKGS = support/gc support/cpp \
- src as/mcs51 as/z80 link/z80 debugger/mcs51 \
- device/include device/lib sim/ucsim
+PKGS = debugger/mcs51 sim/ucsim
+SDCC_LIBS = support/gc support/cpp
+SDCC_ASLINK = as/mcs51 as link
+
PRJS = sim/ucsim
PORTS = mcs51 z80
srcdir = .
-
# Compiling entire program or any subproject
# ------------------------------------------
-all: checkconf
+all: checkconf sdcc
+
+sdcc-libs:
+ for lib in $(SDCC_LIBS); do $(MAKE) -C $$lib; done
+
+sdcc-cc: sdcc-libs
+ $(MAKE) -C src
+
+sdcc-aslink:
+ for as in $(SDCC_ASLINK); do $(MAKE) -C $$as; done
+
+sdcc-misc:
for pkg in $(PKGS); do $(MAKE) -C $$pkg; done
+ $(MAKE) -C sim/ucsim
+
+sdcc-device:
+ $(MAKE) -C device/include
+ $(MAKE) -C device/lib
+
+sdcc: sdcc-cc sdcc-aslink sdcc-misc sdcc
$(MAKE) -f main.mk all
+# Some interesting sub rules
+sdcc-bin: sdcc-cc sdcc-aslink
# Compiling and installing everything and runing test
# ---------------------------------------------------
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <TITLE>SDCC Compiler User Guide: Acknowledgments</TITLE>
+ <LINK HREF="SDCCUdoc-31.html" REL=next>
+ <LINK HREF="SDCCUdoc-29.html" REL=previous>
+ <LINK HREF="SDCCUdoc.html#toc30" REL=contents>
+</HEAD>
+<BODY>
+<A HREF="SDCCUdoc-31.html">Next</A>
+<A HREF="SDCCUdoc-29.html">Previous</A>
+<A HREF="SDCCUdoc.html#toc30">Contents</A>
+<HR>
+<H2><A NAME="Acknowledgements"></A> <A NAME="s30">30. Acknowledgments</A> </H2>
+
+<P>Alan Baldwin (baldwin@shop-pdp.kent.edu) - Initial version of ASXXXX &
+ASLINK.
+<P>John Hartman (jhartman@compuserve.com) - Porting ASXXX & ASLINK for
+8051
+<P>Dmitry S. Obukhov (dso@usa.net) - malloc & serial i/o routines.
+<P>Daniel Drotos <drdani@mazsola.iit.uni-miskolc.hu> - for his Freeware
+simulator
+<P>Jans J Boehm(boehm@sgi.com) and Alan J Demers - Conservative garbage collector
+for C & C++.
+<P>Malini Dutta(malini_dutta@hotmail.com) - my wife for her patience and support.
+<P>Unknown - for the GNU C - preprocessor.
+<HR>
+<A HREF="SDCCUdoc-31.html">Next</A>
+<A HREF="SDCCUdoc-29.html">Previous</A>
+<A HREF="SDCCUdoc.html#toc30">Contents</A>
+</BODY>
+</HTML>
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+ <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.7">
+ <TITLE>SDCC Compiler User Guide: Appendix A: The Z80 and gbz80 port</TITLE>
+ <LINK HREF="SDCCUdoc-30.html" REL=previous>
+ <LINK HREF="SDCCUdoc.html#toc31" REL=contents>
+</HEAD>
+<BODY>
+Next
+<A HREF="SDCCUdoc-30.html">Previous</A>
+<A HREF="SDCCUdoc.html#toc31">Contents</A>
+<HR>
+<H2><A NAME="s31">31. Appendix A: The Z80 and gbz80 port</A> </H2>
+
+<P>2.2.0 can target both the Zilog Z80 and the Nintendo Gameboy's Z80-like
+gbz80. The port is incomplete - long support is incomplete (mul, div and mod
+are unimplimented), and both float and bitfield support is missing, but apart
+from that the code generated is correct.
+<P>As always, the code is the authoritave reference - see z80/ralloc.c and
+z80/gen.c. The stack frame is similar to that generated by the IAR Z80 compiler.
+IX is used as the base pointer, HL is used as a temporary register, and BC
+and DE are available for holding varibles. IY is currently unusued. Return
+values are stored in HL. One bad side effect of using IX as the base pointer
+is that a functions stack frame is limited to 127 bytes - this will be fixed
+in a later version.bc
+<P>9
+<P>
+<HR>
+Next
+<A HREF="SDCCUdoc-30.html">Previous</A>
+<A HREF="SDCCUdoc.html#toc31">Contents</A>
+</BODY>
+</HTML>
--- /dev/null
+# Makefile to get and build all the parts of GBDK
+
+CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
+ else if [ -x /bin/bash ]; then echo /bin/bash; \
+ else echo sh; fi ; fi)
+
+TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
+
+BUILD = $(TOPDIR)/build/sdcc
+SDCCLIB = $(BUILD)
+CVSFLAGS = -z5
+CVS = cvs
+DIR = .
+VER = 2.94
+# Used as a branch name.
+SHORTVER = 294
+
+ROOT_GBDK = :pserver:anonymous@cvs.gbdk.sourceforge.net:/cvsroot/gbdk
+ROOT_SDCC = :pserver:anonymous@cvs.sdcc.sourceforge.net:/cvsroot/sdcc
+
+# For mingw32 hosted on Linux
+# Source extension - what the gcc generated files have appended
+#SE =
+# Dest extenstion - what extension we want them to have.
+#E = .exe
+#SDCC_ROOT = \\\\gbdk
+
+# For mingw32 on win32
+# Source extension - what the gcc generated files have appended
+#SE = .exe
+# Dest extenstion - what extension we want them to have.
+#E = .exe
+#SDCC_ROOT = \\\\gbdk
+
+# For Linux
+SE =
+E =
+SDCC_ROOT = /usr/lib/sdcc
+
+#all: logged_in dist
+all: dist
+
+clean:
+ for i in sdcc gbdk-lib gbdk-support/lcc; do make -C $$i clean; done
+ rm -f *~
+ rm -rf $(BUILD) gbdk-lib gbdk-support sdcc logged_in
+
+update: logged_in
+ cd $(DIR); cvs $(CVSFLAGS) -d$(ROOT_SDCC) co -r gbdk-$(SHORTVER) sdcc
+ cd $(DIR); cvs $(CVSFLAGS) -d$(ROOT_GBDK) co -r gbdk-$(SHORTVER) gbdk-lib
+ cd $(DIR); cvs $(CVSFLAGS) -d$(ROOT_GBDK) co -r gbdk-$(SHORTVER) gbdk-support
+
+_sdcc: sdcc-bin sdcc-lib sdcc-doc
+
+tidy:
+ rm -rf `find $(BUILD) -name "CVS"`
+ rm -rf `find $(BUILD)/lib -name "*.asm"`
+ -strip $(BUILD)/bin/*
+
+sdcc-bin: sdcc/sdccconf.h
+ make -C sdcc sdcc-bin
+ mkdir -p $(BUILD)/bin
+ for i in \
+ sdcc sdcpp link-gbz80 as-gbz80 aslink asx8051 sdcdb; \
+ do cp sdcc/bin/$$i$(SE) $(BUILD)/bin/$$i$(E); done
+ cp sdcc/sim/ucsim/s51.src/s51$(E) $(BUILD)/bin
+ cp sdcc/sim/ucsim/z80.src/sz80$(E) $(BUILD)/bin
+ cp sdcc/sim/ucsim/avr.src/savr$(E) $(BUILD)/bin
+ cp sdcc/debugger/mcs51/*.el $(BUILD)/bin
+
+sdcc-doc:
+ (cd sdcc; tar cf - doc) | (cd $(BUILD); tar xf -)
+ cp sdcc/README sdcc/COPYING $(BUILD)
+ mkdir -p $(BUILD)/sim
+ for i in COPYING INSTALL README TODO; \
+ do cp sdcc/sim/ucsim/$$i $(BUILD)/sim; done
+ (cd sdcc/sim/ucsim; tar cf - doc) | (cd $(BUILD)/sim; tar xf -)
+
+sdcc-lib: sdcc-lib-z80 sdcc-lib-gen
+ mkdir -p $(BUILD)/lib
+ (cd sdcc/device/lib; tar cf - small large) | (cd $(BUILD)/lib; tar xf -)
+ (cd sdcc/device; tar cf - examples include) | (cd $(BUILD); tar xf -)
+
+sdcc-lib-z80:
+ make -C gbdk-lib/libc SDCCLIB=$(BUILD) PORTS=z80 PLATFORMS=consolez80
+ (cd gbdk-lib/build; tar cf - consolez80 z80) | (cd $(BUILD)/lib; tar xf -)
+
+sdcc-lib-gen:
+ make -C sdcc sdcc-device
+
+sdcc/sdccconf.h: sdcc/configure
+ cd sdcc; \
+ ./configure --datadir=$(SDCC_ROOT)
+
+_gbdk-lib: _sdcc-min _gbdk-support
+ cp -r gbdk-lib/include $(BUILD)
+ make -C gbdk-lib SDCCLIB=$(SDCCLIB) PORTS=gbz80 PLATFORMS=gb
+
+_gbdk-support:
+ make -C gbdk-support/lcc clean
+ make -C gbdk-support/lcc SDCCLIB=$(SDCC_ROOT)/
+ mkdir -p $(BUILD)/bin
+ cp gbdk-support/lcc/lcc$(SE) $(BUILD)/bin/lcc$(E)
+
+dist: _sdcc-min _gbdk-lib _gbdk-support
+ mkdir -p $(BUILD)/bin
+ mkdir -p $(BUILD)/lib
+ cp -r gbdk-lib/build/gbz80 $(BUILD)/lib
+ cp -r gbdk-lib/build/gb $(BUILD)/lib
+ make -C gbdk-lib/libc clean
+ make -C gbdk-lib/examples/gb make.bat
+ cp -r gbdk-lib/examples $(BUILD)
+ cp -r gbdk-lib/libc $(BUILD)
+ cp -r sdcc/doc $(BUILD)
+ cp gbdk-support/README $(BUILD)
+ strip $(BUILD)/bin/*
+ rm -rf `find gbdk -name "CVS"`
+
+zdist: dist
+ tar czf gbdk-$(VER).tar.gz gbdk
+
+logged_in:
+ cvs -d$(ROOT_GBDK) login
+ cvs -d$(ROOT_SDCC) login
+ touch logged_in
+ make -f update.mak update
Boolean Func_2 (char *Str_1_Par_Ref, char *Str_2_Par_Ref);
Boolean Func_3 (Enumeration Enum_Par_Val);
+unsigned getsp(void);
+
int main(void)
{
One_Fifty Int_1_Loc;
Next_Ptr_Glob = &_r[0];
Ptr_Glob = &_r[1];
-
Ptr_Glob->Ptr_Comp = Next_Ptr_Glob;
Ptr_Glob->Discr = Ident_1;
Ptr_Glob->variant.var_1.Enum_Comp = Ident_3;
/* overflow may occur for this array element. */
/* 32766 is the highest value for a 16 bitter */
- Number_Of_Runs = 32766;
+ Number_Of_Runs = 10000;
runTime = clock();
/* Main test loop */
for (Run_Index = 1; Run_Index <= Number_Of_Runs; ++Run_Index) {
DPRINTF(("Run_Index = %d\n", Run_Index));
+ if (!(Run_Index & 1023))
+ printf("Loops: %u\r", Run_Index);
Proc_5();
Proc_4();
/* Ch_1_Glob == 'A', Ch_2_Glob == 'B', Bool_Glob == true */