The compiler featured in z88dk is a much enhanced Small C compiler; the compiler accepts many features of ANSI C and is only deficient in a few areas where implementation on a z80 processor might prove inefficient. The compiler performs simple optimisations, but the bulk of the optimisation is achieved by a set of peep-hole rules, which will typically reduce the size of a large project by up to a third.
The libraries supplied with z88dk are designed to be as generic as possible, indeed it is possible to port to a new machine simply by supplying two library routines and some startup code. It is hoped that one day z88dk will support as many z80 based machines as there is information available and sufficient interest in. Currently z88dk supports more than twenty z80 targets with the level of library support for each target varying with interest shown by users.
New option "--list" has been added to zcc to generate list files when compiling binaries. The crt will be among the list files generated.
For windows or osx users you can simply replace your zcc binary with one from a nightly build. Other uses will have to recompile zcc from source to update.
Improved SDCC Compiles
A patch has been applied to z88dk's version of sdcc to make the peephole optimizer able to exactly determine register reference in instructions. In the current sdcc, hex constants and label names can sometimes be erroneously searched for register names which can affect whether peephole rules are applied or not. A fix in sdcc itself probably won't come until after its next release.
You can update your zsdcc executable in the usual way: http://www.z88dk.org/wiki/doku.php?id=temp:front#sdcc1
Also included in that package is an updated rules set. This rules set is regularly improved as we check the quality of code generated for test programs. The readme describes where it should be copied to.
z88dk v1.99A Released
The new version is available from sourceforge.
z88dk 1.99A 23.Dec.2015
Major changes incorporated into z88dk. This is a transition release in anticipation of v2.0.
Two C compilers are supported (sccz80 - z88dk's native C compiler - and sdcc).
Two different C libraries are present (classic - the same library as pre 1.99A - and new).
Accordingly, there are now three different compile modes:
1. Compile with sccz80 and the classic C library. This is equivalent to pre-1.99A.
2. Compile with sccz80 and the new C library. Compile lines include "-clib=new".
3. Compile with sdcc and the new C library. Compile lines include "-clib=sdcc_ix" or "-clib=sdcc_iy".
[z80asm] Sections have been introduced for generating memory maps and compiling to bankswitched memory.
[z80asm] Modern logical operators have been adopted.
z88dk v1.99A Release Candidate
The release candidate will be available for testing until December 23 when it will be replaced by an official release of v1.99A.
The download options are a binary win32 build, a binary mac osx build and a generic source tree for other platforms. Installation hints can be found here: http://www.z88dk.org/wiki/doku.php?id=t … tallation. Instructions for installing the MacOSX binary are missing so if a MacOSX user is able to submit those, it would be appreciated
z88dk has undergone some significant development in the past two years. The version number reflects this (v1.99) and anticipates a v2.0 when the development roadmap is completed.
Quite a lot and ..........
Nightly builds for Mac
I'm pleased to say that the build machine has been upgraded and is now generated Mac binary kits which can be grabbed from http://nightly.z88dk.org
Any feedback on them is much appreciated, I've not done much testing on them so it's possible the configuration isn't quite right.
If anyone has any other targets that they'd like built then let me know and if I can get a working toolchain, I can add them.
Apologies for the recent downtime - the server that z88dk.org is hosted on managed to drop off the network and it took a while to gain access to the cabinet to perform a server swapout.
The forums have now been migrated to the replacement server and hopefully things will start working again.
Not working (that I know of):
- Project hosting
- Mail list bridges
I'll update with more info as I fix things.
z88dk v1.10 bugfixed (v1.10.1 released)
z88dk v1.10 released
z88dk 1.10 is now uploaded to Sourceforge.
This snapshot aim is to consolidate all the past behaviour before trying to evolve the project seriously.
- [z80asm] Re-arranged and bugfixed
- [sccz80] Code generation size optimizations, in both standard mode and '-O3' mode
- [sccz80] Type conversion bugfixed (workaround on optimizer)
- [zcc] Skeleton to support the SDCC compiler engine (under development)
- [lib] Mono graphics lib improved and bugfixed
- [lib] simplified console input output bugfixed and optimized
- [lib] Turbo C conio and bgi emulation
- [lib] zx81, Spectrum and TS2068 console libs fixed and improved
- [lib] Sega SC3000: New target
- [lib] Memotech MTX: New target
- [lib] Canon X07: New target
- [lib] OSCA (v6z80p1): New target
- [lib] Sorcerer Exidy: New target
- [lib] SD memory card support code
- [lib] New stdio_new alternate code ready for substitution
- [appmake] New 'dumb' m ..........
z88dk v1.9 released
I think it's time we did this, so there's a new snapshot 1.9 of z88dk uploaded to Sourceforge. There's quite a few bug fixes in this release, there's quite a few changes, mostly improvements and bug fixes:
- [z80asm] Supports -I and -L directives to specify library and include paths
- [z80asm] the # include identify is no longer required
- [z80asm] Bug fixes for rabbit support
- [sccz80] Support for alternate assemblers
- [zcc] Support for alternate assembler/linkers
- [z80nm] Improvements and bug fixes
- [lib] MSX: Many improvements including lib32
- [lib] TRS80: New target
- [lib] Galaksija: New target
- [lib] CPC: Better handling of firmware calls and graphics support
- [lib] C128: Improvements
- [lib] strlcat and strlcpy are now available
- [lib] Many other improvements and bug fixes
...and probably a lot more things that I've forgotten.
As usual, documentation of the features supported ..........
z88dk v1.8 released
A little later than planned, we've released v1.8 of z88dk. Due to a lack of time, it's lacking in the major features that we originally planned, however the changes below are in this release:
- [sccz80] Bug fixes
- [cpp] DATE directive now outputs the date in a sensible format
- [lib] crt0: Different versions of the library are built to avoid index registers or alternate registers depending on the target
- [lib] A simple Xlib emulation has been imported and is available to ports with graphics capabilities
- [lib] CPC: Stability improvements
- [lib] ZX: Direct access to Opus Discovery is available
- [lib] ZX81: Stability improvements
- [lib] ZX81: High Res graphics are available
- [lib] ZX81: SP1 sprite package support
- [lib] TS2068: SP1 sprite package support
- [lib] Newbrain: fcntl support
- [lib] MSX: Improved support
- [lib] MSX: 1 bit sound
- [lib] ABC80: graphics
- [lib] TEST: New test target for ..........
z88dk v1.7 released
The first in our regular cycles of z88dk has been released. This release contains changes that have been applied over the past two years, including a number of new platforms, changes to the core libraries to make compiled programs smaller and faster and a large number of other changes. The details that can be remembered are listed below:
* [sccz80] Bug fixes, tweaks to single parameter function pointer calls
* [z80asm] Z80asm supporting Rabbit
* [zcpp] End of file fix for win32
* [zcc] -Cz flag to pass through to appmake
* [appmake] Support for most z88dk targets
* [lib/crt0] Support for Newbrain, Rabbit, Sega Master System SMS, TS2068
* [lib] Much of the library rewritten to use FASTCALL and CALLEE linkage for faster and small library function calls
* [lib] malloc library can now allocate from a scattered map of available RAM and supports multiple heaps
* [lib] balloc library introduced as a block memory allocator