|
|
|
|
|
Did you know...
Softools excels in
bank-switching support for transparent support for the
Z180 1MB address space for code and data! |
|
|
|
|
|
And...
Softools has customers with
300k and even 400k programs! |
|
|
|
|
|
SC8085-WIN
Softools 8085 C compiler has
the same features as our Z80/Z180 version! |
|
|
|
|
|
|
|
|
|
Details:
| Control Cross-C
generates about the same or less code than other compilers and the integer and floating
point math libraries are the fastest available. |
| Supports banked
function calls into segments which are not mapped into the logical address space. The
linker automatically provides this and is handled by the mapping runtime code. External
hardware (Z80, Z84C15 etc.) or the Z180 processor MMU can be used to bank switch a
program. No source code changes are required! No registers are affected. Only Softools can
fully and automatically bank switch an assembly language program without any changes to
the code! |
| Supports 'far'
keyword and far data and pointers for full access to the Z180 1MB address space for both
code and data. Automatic conversion from near to far pointers is provided when required.
Far pointers are represented as true 24- or 32-bit physical addresses allowing
manipulation and far pointer math to map to the hardware address space.
|
| Contains a fully
integrated 100% Standard C preprocessor. Directives supported: #asm, #define, #elif,
#else, #endasm, #endif, #error, #if, #ifdef, #ifndef, #include, #line, #pragma, and
#undef. Also supported are the 'defined' operator and the macros __DATE__, __FILE__,
__LINE__, __STDC__, __TIME__, and __SC180__. |
| Supports unlimited
memory for compilation, including increased buffer sizes for all aspects of compiling.
|
| Define preprocessor
macros from the command line. |
| File search paths and
output path may be specified. |
| Control Cross C is a
full Standard C compiler (C90 - partial C99) which also compiles K&R legacy C code.
|
| Many more warnings
for questionable code and more warnings for code which is not ANSI or standard C.
|
| Completely supports
prototypes, and the enum, const and volatile keywords. Constant folding, strength
reduction and operation and register optimizations are automatically done at compile time.
|
| To generate the
fastest and smallest code possible, Softools was extremely careful when choosing
instructions and addressing modes in order to generate the fastest and smallest code
possible. |
| Generates fully
ROMable and reentrant code. |
| C language extensions
are provided for writing interrupt service routines completely in C.
|
| Strings and const
objects are located in a ROM segment but can be moved into the code segment.
|
| Supports inline
assembler functions for: inp, in0, outp, out0, ei, di, nop, slp allowing full support for
constant and calculated port addresses. Optimization is not interrupted because these are
no longer assembly instructions inserted by macros. I/O is compiled inline and not as a
function call. |
| Scalars with
initializers of 0 may be grouped in their own segment and zeroed at runtime eliminating
wasted bytes of 0 in ROM. |
| Code and data may be
compiled into any pre-defined compiler segment or any user-defined segment at any time.
|
| Optionally generates
assembly output optionally including C source code as comments.
|
| Generates complete
source-level debugging information including complete type information for the Softools
ICE-Cube and other emulators and debuggers. |
| Has full support for
mixing C and Assembly code. Use either #asm ... #endasm or compiler extension _asm to add
assembly code to C functions. #asm... #endasm adds assembly source as-is to the output,
and allows conditional directives and #include to customize the assembly code for specific
applications. In-line assembly code can use labels and all opcodes and addressing modes
available for the selected CPU with Control Cross-C's built in SASM assembler. Generate
one or more lines of assembly code with the built-in compiler extension _asm. With this
extension, use C variable names and automatically generate code to load and store the
variable, eliminating stack frame details when loading a parameter or local variable.
|
| Inline _asm
expressions can optionally list registers to be used by the inline assembly code. If any
of these registers are used by SC180 to store expression values, they will be preserved by
SC180. Prior versions couldn't know to do this and the user's code had to save them
whether it was needed or not. Now SC180 saves them only when necessary.
|
| A full set of SASM
macros is provided to create C callable functions in assembly. Macros allow the easy
loading and storing of both C named parameters and assembly named local variables. A stack
frame is automatically created when locals or parameters are used. Automatically saves
compiler temporaries in registers before a function call. C and assembly functions never
have to save any registers, and only those that are used are saved by the caller.
|
| Uses full SASM180
assembler allowing support of all SASM180 features in C including macros which were not
previously supported. |
| The first (or only)
function argument is always passed in registers as well as the stack. A function like
toupper( ) can be efficient because the stack frame need not be referenced.
|
| Uses specific and
fast processor instructions for variable loading and storing, multiplication, division,
shifting, bit testing, setting, and clearing. |
| Char expressions
conform to ANSI int promotion rules but only when the result is not a char result.
Complete char expressions are not penalized. The original SC180 "always use
chars" mode can be enabled. Warnings about potentially wasteful char promotions to
int type are issued allowing you to "fix" code either to use int types or to
cast to char to generate better non-promoting code. |
| Optionally generates
explicit code for the char data type in that it will not promote to int for expression
evaluation and then convert back to char. |
| Enum can be
represented by the smallest size required to do so (unsigned char or int).
|
| The processor's
byte-specific opcodes are used wherever possible, generating smaller and faster code
sequences. |
| The char type may be
set to default to signed char or unsigned char. |
| Libraries for int,
long and float operations are extremely space and time efficient.
|
| Supports a float type
with is represented as a floating point BCD allowing 13 decimal digits of precision and no
rounding errors when calculations can be computed in 13 digits. Range supported is +/-
9.999999999999E-64 to +/- 9.999999999999E63. |
| All operations for *,
/, %, <<, >>, etc. are computed entirely in processor registers.
|
| Supplied with the
following ANSI header files and libraries: assert.h - Contains macros for diagnostics.
ctype.h - Contains prototypes for ctype function versions and fast and efficient macro
versions of: isalnum(), isalpha(), iscntrl(), isdigit(), isgraph(), islower(), isprint(),
ispunct(), isspace(), isupper(), and isxdigit(), toascii(), tolower(), and toupper().
errno.h - Contains macros for error values. float.h - Contains macros for float
characteristics. limits.h - Contains macros for integer characterostics. math.h - Contains
prototypes for floating point math functions: acos(), asin(), atan(), atan2(), ceil(),
cos(), cosh(), exp(), fabs(), floor(), fmod(), frexp(), ldexp(), log(), log10(), modf(),
pow(), sin(), sinh(), sqrt(), tan(), and tanh(). stdarg.h - Contains macros for accesing
variable argument lists: va_arg, va_end, va_start. stddef.h - Contains macros for standard
definitions. stdio.h - Contains prototypes for I/O and formatting functions: _ecvt(),
fassign(), _fcvt(), fgetc(), fgets(), _format(), fprintf(), fputc(), fputs(), fread(),
fscanf(), fwrite(), _gcvt(), getc(), gets(), printf(), putc(), puts(), scanf(), sprintf(),
sscanf(), ungetc(), vfprintf(), vprintf(), and vsprintf(). stdlib.h - Contains prototypes
and macros for general functions: abort (), abs(), atexit(), atof(), atoi(), atol(),
bsearch(), calloc(), div(), exit(), free(), abs(), ldiv(), malloc(), qsort(), rand(),
realloc(), srand(), strtod(), strtol(), strtoul(). setjmp.h - Contains prototypes for the
non-local jump functions: setjmp(), and longjmp(). string.h - Contains prototypes for
string and memory functions: memchr(), memcmp(), memcpy(), memmove(), memset(), memswap(),
strcat(), strchr(), strcmp(), strcoll(), strcpy(), strcspn(), stricmp(), stristr(),
strnicmp(), strlen(), strlwr(), strncat(), strncmp(), strncpy(), strpbrk(), strrchr(),
strspn(), strstr(), strtok(), and strxfrm(). Additionally, one or more processor specific
header files are provided depending on the version of Control Cross-C.
|
| System requirements:
PC or compatible system or emulator running Win32 (minimum for command line tools),
Windows 95, 98, 2000, ME, NT or XP. |
|
|
|
|