Softools Development Tools

Home Contact Softools Support

Z80/Z180/8085 C Compiler

Z80/Z180/8085 C Compiler
Z80/Z180/8085 Assembler
Z80/Z180/8085 Downloads
Order Online
Did you know...
Softools excels in bank-switching support for transparent support for the Z180 1MB address space for code and data!
Softools has customers with 300k and even 400k programs!
Softools 8085 C compiler has the same features as our Z80/Z180 version!

bulletControl Cross-C generates about the same or less code than other compilers and the integer and floating point math libraries are the fastest available.
bulletSupports 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!
bulletSupports '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.
bulletContains 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__.
bulletSupports unlimited memory for compilation, including increased buffer sizes for all aspects of compiling.
bulletDefine preprocessor macros from the command line.
bulletFile search paths and output path may be specified.
bulletControl Cross C is a full Standard C compiler (C90 - partial C99) which also compiles K&R legacy C code.
bulletMany more warnings for questionable code and more warnings for code which is not ANSI or standard C.
bulletCompletely supports prototypes, and the enum, const and volatile keywords. Constant folding, strength reduction and operation and register optimizations are automatically done at compile time.
bulletTo 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.
bulletGenerates fully ROMable and reentrant code.
bulletC language extensions are provided for writing interrupt service routines completely in C.
bulletStrings and const objects are located in a ROM segment but can be moved into the code segment.
bulletSupports 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.
bulletScalars with initializers of 0 may be grouped in their own segment and zeroed at runtime eliminating wasted bytes of 0 in ROM.
bulletCode and data may be compiled into any pre-defined compiler segment or any user-defined segment at any time.
bulletOptionally generates assembly output optionally including C source code as comments.
bulletGenerates complete source-level debugging information including complete type information for the Softools ICE-Cube and other emulators and debuggers.
bulletHas 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.
bulletInline _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.
bulletA 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.
bulletUses full SASM180 assembler allowing support of all SASM180 features in C including macros which were not previously supported.
bulletThe 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.
bulletUses specific and fast processor instructions for variable loading and storing, multiplication, division, shifting, bit testing, setting, and clearing.
bulletChar 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.
bulletOptionally 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.
bulletEnum can be represented by the smallest size required to do so (unsigned char or int).
bulletThe processor's byte-specific opcodes are used wherever possible, generating smaller and faster code sequences.
bulletThe char type may be set to default to signed char or unsigned char.
bulletLibraries for int, long and float operations are extremely space and time efficient.
bulletSupports 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.
bulletAll operations for *, /, %, <<, >>, etc. are computed entirely in processor registers.
bulletSupplied 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.
bulletSystem requirements: PC or compatible system or emulator running Win32 (minimum for command line tools), Windows 95, 98, 2000, ME, NT or XP.
Copyright 2005-2023, Softools. All rights reserved.