All Projects → z88dk → Z88dk

z88dk / Z88dk

Licence: other
The development kit for over a hundred z80 family machines - c compiler, assembler, linker, libraries.

Programming Languages

c
50402 projects - #5 most used programming language
assembly
5116 projects
assembler
53 projects

Projects that are alternatives of or similar to Z88dk

Printf
Tiny, fast, non-dependent and fully loaded printf implementation for embedded systems. Extensive test suite passing.
Stars: ✭ 1,157 (+136.12%)
Mutual labels:  libc, embedded
Cosmopolitan
build-once run-anywhere c library
Stars: ✭ 6,324 (+1190.61%)
Mutual labels:  libc
Azure Iot Sdk C
A C99 SDK for connecting devices to Microsoft Azure IoT services
Stars: ✭ 412 (-15.92%)
Mutual labels:  embedded
Odas
ODAS: Open embeddeD Audition System
Stars: ✭ 435 (-11.22%)
Mutual labels:  embedded
Codeguide
📚 本代码库是作者小傅哥多年从事一线互联网 Java 开发的学习历程技术汇总,旨在为大家提供一个清晰详细的学习教程,侧重点更倾向编写Java核心内容。如果本仓库能为您提供帮助,请给予支持(关注、点赞、分享)!
Stars: ✭ 6,750 (+1277.55%)
Mutual labels:  asm
Kitdb
KitDB是一个内嵌式持久型的 高速NoSQL存储 lib
Stars: ✭ 439 (-10.41%)
Mutual labels:  embedded
Tf Pose Estimation
Deep Pose Estimation implemented using Tensorflow with Custom Architectures for fast inference.
Stars: ✭ 3,856 (+686.94%)
Mutual labels:  embedded
Laziertracker
本项目通过Android字节码插桩插件实现Android端无埋点(或自动埋点),并且支持根据配置文件实现业务数据的自动采集。
Stars: ✭ 485 (-1.02%)
Mutual labels:  asm
Invaders
Invaders game in 512 bytes (boot sector)
Stars: ✭ 461 (-5.92%)
Mutual labels:  asm
Jabberd2
JabberD XMPP Server
Stars: ✭ 428 (-12.65%)
Mutual labels:  embedded
Nar
node.js application archive - create self-contained binary like executable applications that are ready to ship and run
Stars: ✭ 428 (-12.65%)
Mutual labels:  embedded
Xkcptun
xkcptun is kcp tunnel for OpenWRT&LEDE, implemented in c language
Stars: ✭ 419 (-14.49%)
Mutual labels:  embedded
Collapseos
Bootstrap post-collapse technology
Stars: ✭ 4,263 (+770%)
Mutual labels:  asm
Tslib
Touchscreen access library
Stars: ✭ 416 (-15.1%)
Mutual labels:  embedded
Zephyr
Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
Stars: ✭ 5,335 (+988.78%)
Mutual labels:  embedded
Guilitesamples
✨Small interesting GUI effects could be reused everywhere
Stars: ✭ 409 (-16.53%)
Mutual labels:  embedded
Tiny Compiler
A tiny compiler for a language featuring LL(2) with Lexer, Parser, ASM-like codegen and VM. Complex enough to give you a flavour of how the "real" thing works whilst not being a mere toy example
Stars: ✭ 425 (-13.27%)
Mutual labels:  asm
Vedis
An Embedded Implementation of Redis
Stars: ✭ 436 (-11.02%)
Mutual labels:  embedded
Embedded Notes
嵌入式linux软件开发、嵌入式linux驱动开发、c语言、单片机开发、IOT开发等面试要点记录
Stars: ✭ 487 (-0.61%)
Mutual labels:  embedded
Platformio Atom Ide
PlatformIO IDE for Atom: The next generation integrated development environment for IoT
Stars: ✭ 475 (-3.06%)
Mutual labels:  embedded

Z88DK - The Development Kit for Z80 Computers

WinXP+ MacOSX Linux and Other Build Status

Z88DK is a collection of software development tools that targets the 8080 and z80 family of machines. It allows development of programs in C, assembly language or any mixture of the two. What makes z88dk unique is its ease of use, built-in support for many z80 machines and its extensive set of assembly language library subroutines implementing the C standard and extensions.

INSTALLATION

There are several ways to install z88dk.

  1. Use the Most Recent Official Release currently 2.1 dated 7 Feb 2021. Follow these installation instructions.
  2. Get the Nightly Build. Every night we build complete binary packages for windows and osx and generate source packages for everyone else. The same installation instructions apply. Using a nightly build means you can keep up with bugfixes and new features rather than having to wait an entire year for a release to occur.
  3. Use the Nightly Docker image
  4. Use the Snap package on Linux
  5. Use GitHub and build it yourself. The z88dk repository uses git submodules, these are not automatically downloaded by git by default so you will have to either adjust your clone line, or retrieve them manually. To clone with submodules use git clone --recursive https://github.com/z88dk/z88dk.git. To add the submodules to an already existing clone use git submodule update --init --recursive. To build, the following instructions should be followed.

THE TOOLS

Many tools have a z88dk- prefix to distinguish them from tools from other packages that may be installed with the same name. The documentation generally omits the prefix when referring to them.

  • ZCC is the toolchain's front end. zcc can generate an output binary out of any set of input source files.
  • SCCZ80 is z88dk's native c compiler. sccz80 is derived from small c but has seen much development to the point that it is nearly c90 compliant.
  • ZSDCC is z88dk's customization of the sdcc compiler. Our patch makes sdcc compatible with the z88dk toolchain, gives it access to z88dk's extensive assembly language libraries and ready-made crts, addresses code generation bugs where present and improves on sdcc's generated code.
  • Z88DK-Z80ASM (not to be confused with several external projects called z80asm) is a fully featured assembler / linker / librarian implementing sections.
  • Z88DK-Z80NM is z80asm's companion archiver. It can provide a listing of functions or data encoded in an object or library file.
  • Z88DK-APPMAKE processes the raw binaries generated by the toolkit into a form suitable for specific target machines. For example, it can generate intel hex files, tapes, ROMs, etc.
  • Z88DK-TICKS is a command line z80 emulator that can be used to time execution speed of code fragments. Ticks includes a debugger and disassembler in addition to supporting some of the ZX Next Z80N extension instructions.
  • Z88DK-DIS is a command line disassembler for Z80, Z180, Z80N and Rabbit 2000/3000. It can additionally read map files generated by z80asm to provide a more symbolic output.
  • Z88DK-LIB is an installer for third party libraries. It manages installation, removal and listing of available libraries.
  • Z88DK-ZX0 and Z88DK-ZX7 are PC side data compression tools with companion decompression functions in the z80 library.
  • Z88DK-ZX0 and Z88DK-ZX7 are PC-side decompressor counterpartys to the z88dk-zx0 and z88dk-zx7.

These tools are not normally directly invoked by the user:

  • M4 acts as z88dk's macro preprocessor and can optionally process files ahead of the c preprocessor or assembler.
  • Z88DK-UCPP is the c preprocessor invoked for sccz80.
  • ZSDCPP is the c preprocessor invoked for zsdcc.
  • Z88DK-ZPRAGMA is used by the toolchain to process pragmas embedded in c source.
  • Z88DK-COPT is a regular expression engine that is used as peephole optimizer for sccz80 and as a post-processing tool for both sccz80 and zsdcc.

BENCHMARKS

The assembly language libraries supplied by z88dk give it performance advantages over other z80 compilers. For details please look at the Benchmarks section in the Wiki.

  • Dhrystone 2.1 Dhrystone was a common synthetic benchmark for measuring the integer performance of compilers in the 1980s until more modern benchmarks replaced it. It attempts to simulate typical programs by executing a set of statements statistically determined from common programs.
  • Pi Mainly measures 32-bit integer performance.
  • Sieve of Eratosthenes Popular benchmark for small machine compilers because just about everything is able to compile it. As a benchmark it doesn't reveal much more than loop overhead.
  • Whetstone 1.2 Whetstone is a common synthetic floating point benchmark.
  • Program Size Program size has great importance for small machines. A collection of test programs were compiled for the common cp/m target and resulting binary sizes were compared.

USING Z88DK

Unfortunately, like a lot of open source projects, we could use a lot of help with the documentation.

Some things to know:

  • There are two c librariesin z88dk. These are referred to as the classic c library and the new c library.
  • There are two c compiler in z88dk. Projects built using the classic library can mix object files generated by the both compilers. Projects built with newlib must use only one of the compilers.
  • Thankfully there is only one assembler so we only need to deal with 2*2 combinations :)

When you form a compile line you must decide which compiler you will use and which c library you will link against. You will make that decision based on which targets you want to compile for and what features you need.

The classic c library is z88dk's original c library and it has crts that allow generation of programs for 80+ different z80 machines. The level of support for each is historically determined by user interest. Documentation begins here and example programs can be found in z88dk/examples with compile lines most often appearing at the top of .c files.

The new c library is z88dk's rewrite aiming for a large subset of C11 conformance. It directly supports eleven targets currently (cpm, hbios, rc2014, scz180, sega master system, vgl, yaz180, z180, z80, zx spectrum, and zx spectrum next) but the z80 target (aka embedded target) can also be used to compile programs for any z80 machine. Documentation begins here and example programs can be found in z88dk/libsrc/_DEVELOPMENT/EXAMPLES with compile lines most often appearing at the top of .c files.

QUICK LINKS

Z88DK Home Page Includes a link to the nightly builds where you can get an up-to-date package.

Install Instructions

Bug Reporting (old bugs in the forum)

Introduction to Compiling Using the Classic C Library Examples in z88dk/examples

Introduction to Compiling Using the New C Library Examples in z88dk/libsrc/_DEVELOPMENT/EXAMPLES

Using z88dk with the rc2014 target, covers cpm, hbios, and rc2014 subtypes.

Using z88dk with zx, covers the zx target, and by extension the zxn target.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].