diff --git a/README.md b/README.md index 9ae2153..2deeb94 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ -![al-tag](https://upload.wikimedia.org/wikipedia/commons/1/19/Zilog_Z80.jpg) +![al-tag](http://upload.wikimedia.org/wikipedia/commons/1/19/Zilog_Z80.jpg)
# Zilog Z80 CPU Emulator Copyright © 1999-2018 Manuel Sainz de Baranda y Goñi. -Released under the terms of the [GNU General Public License v3](https://www.gnu.org/copyleft/gpl.html). +Released under the terms of the [GNU General Public License v3](http://www.gnu.org/copyleft/gpl.html). -This is a very accurate [Z80](https://en.wikipedia.org/wiki/Zilog_Z80) [emulator](http://en.wikipedia.org/wiki/Emulator) I wrote many years ago. It has been used in several machine emulators by other people and it has been extensivelly tested. It is fast, small (33 KB when compiled as a x86-64 dynamic library), easy to understand, and the code is **profusely commented**. +This is a very accurate [Z80](http://en.wikipedia.org/wiki/Zilog_Z80) [emulator](http://en.wikipedia.org/wiki/Emulator) I wrote many years ago. It has been used in several machine emulators by other people and it has been extensivelly tested. It is fast, small (33 KB when compiled as a x86-64 dynamic library), easy to understand, and the code is **profusely commented**. -If you are looking for a Zilog Z80 CPU emulator for your project maybe you have found the correct one. I use this core in the [ZX Spectrum emulator](https://github.com/redcode/mZX) I started as hobby. +If you are looking for a Zilog Z80 CPU emulator for your project maybe you have found the correct one. I use this core in the [ZX Spectrum emulator](http://github.com/redcode/mZX) I started as hobby.
@@ -16,7 +16,7 @@ If you are looking for a Zilog Z80 CPU emulator for your project maybe you have You must first install [Z](http://zeta.st), a **header-only** library that provides types and macros. This is the only dependency, the emulator does not use the C standard library or its headers. Then add `Z80.h` and `Z80.c` to your project and configure its build system so that `CPU_Z80_STATIC` and `CPU_Z80_USE_LOCAL_HEADER` are predefined when compiling the sources. -If you preffer to build the emulator as a library, you can use [premake4](https://premake.github.io): +If you preffer to build the emulator as a library, you can use [premake4](http://premake.github.io): ```console $ cd building $ premake4 gmake # generate Makefile @@ -47,7 +47,7 @@ Name | Description `CPU_Z80_STATIC` | You need to define this to compile or use the emulator as a static library or if you have added `Z80.h` and `Z80.c` to your project. `CPU_Z80_USE_LOCAL_HEADER` | Use this if you have imported `Z80.h` and `Z80.c` to your project. `Z80.c` will `#include "Z80.h"` instead of ``. `CPU_Z80_WITH_ABI` | Builds the generic CPU emulator ABI and declares its prototype in `Z80.h`. -`CPU_Z80_WITH_MODULE_ABI` | Builds the generic module ABI. This macro also enables `CPU_Z80_BUILD_ABI`, so the generic CPU emulator ABI will be built too. This option is intended to be used when building a true module loadable at runtime with `dlopen()`, `LoadLibrary()` or similar. The ABI module can be accessed via the [weak symbol](https://en.wikipedia.org/wiki/Weak_symbol) `__module_abi__`. +`CPU_Z80_WITH_MODULE_ABI` | Builds the generic module ABI. This macro also enables `CPU_Z80_BUILD_ABI`, so the generic CPU emulator ABI will be built too. This option is intended to be used when building a true module loadable at runtime with `dlopen()`, `LoadLibrary()` or similar. The ABI module can be accessed via the [weak symbol](http://en.wikipedia.org/wiki/Weak_symbol) `__module_abi__`.
@@ -65,7 +65,7 @@ zusize cycles; **Description** Number of cycles executed in the current call to `z80_run`. **Details** -`z80run` sets this variable to 0 before starting to execute instructions and its value persists after returning. The callbacks can use this variable to know during what cycle they are being called. +`z80run` sets this variable to `0` before starting to execute instructions and its value persists after returning. The callbacks can use this variable to know during what cycle they are being called.
```C void *context; @@ -158,9 +158,9 @@ The value of the R register is incremented as instructions are executed, but its Z16Bit xy; ``` **Description** -Temporay IX/IY register for instructions with DDh/FDh prefix. +Temporay IX/IY register for instructions with `DDh`/`FDh` prefix. **Details** -Since instructions with prefix DD and FD behave similarly, differing only in the use of register IX or IY, for reasons of size optimization, a single register is used that acts as both. During opcode analysis, the IX or IY register is copied to this variable and, once the instruction emulation is complete, its contents are copied back to the appropriate register. +Since instructions with prefix `DDh` and `FDh` behave similarly, differing only in the use of register IX or IY, for reasons of size optimization, a single register is used that acts as both. During opcode analysis, the IX or IY register is copied to this variable and, once the instruction emulation is complete, its contents are copied back to the appropriate register.
```C Z32Bit data; @@ -229,4 +229,4 @@ This is equivalent to a change in the `INT` line of a real Z80.
## Use in Proprietary Software -This library is released under the terms of the [GNU General Public License v3](https://www.gnu.org/copyleft/gpl.html), but I can license it for non-free/propietary projects if you contact [me](mailto:contact@zxe.io?subject=Z80%20non-free%20licensing). +This library is released under the terms of the [GNU General Public License v3](http://www.gnu.org/copyleft/gpl.html), but I can license it for non-free/propietary projects if you contact [me](mailto:contact@zxe.io?subject=Z80%20non-free%20licensing).