Make z80_types.h an internal header.

Do not pollute the global namespace by defining byte, sbyte, and word.
This commit is contained in:
Stephen Checkoway 2017-08-12 14:54:40 -05:00
parent 4d0e434589
commit 8acec1b95d
13 changed files with 35 additions and 24 deletions

View File

@ -18,7 +18,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
CPPFLAGS += -Iinclude
CPPFLAGS += -I. -Iinclude
CFLAGS += -O3
package := zel
@ -48,9 +48,9 @@ here := $(shell pwd)
dist_source := z80.c \
z80_instructions.c \
z80_types.h \
include/zel/z80.h \
include/zel/z80_instructions.h \
include/zel/z80_types.h \
include/zel/z80_instruction_types.h \
tables/gen.pl \
$(spec) \
@ -104,8 +104,8 @@ include/zel/z80_instruction_types.h: $(itables)
echo >>$@
echo '#endif' >>$@
z80.o: z80.c include/zel/z80.h include/zel/z80_instructions.h include/zel/z80_types.h include/zel/z80_instruction_types.h
z80_instructions.o: z80_instructions.c include/zel/z80_instructions.h include/zel/z80.h include/zel/z80_types.h include/zel/z80_instruction_types.h $(itables)
z80.o: z80.c z80_types.h include/zel/z80.h include/zel/z80_instructions.h include/zel/z80_instruction_types.h
z80_instructions.o: z80_instructions.c z80_types.h include/zel/z80_instructions.h include/zel/z80.h include/zel/z80_instruction_types.h $(itables)
check: all
$(MAKE) -C tests check
@ -140,14 +140,12 @@ install:
$(INSTALL) -d $(DESTDIR)$(includedir)/zel
$(INSTALL_DATA) include/zel/z80.h $(DESTDIR)$(includedir)/zel
$(INSTALL_DATA) include/zel/z80_instructions.h $(DESTDIR)$(includedir)/zel
$(INSTALL_DATA) include/zel/z80_types.h $(DESTDIR)$(includedir)/zel
$(INSTALL_DATA) include/zel/z80_instruction_types.h $(DESTDIR)$(includedir)/zel
uninstall: uninstall-doc
$(RM) $(DESTDIR)$(libdir)/libzel.a
$(RM) $(DESTDIR)$(includedir)/zel/z80.h
$(RM) $(DESTDIR)$(includedir)/zel/z80_instructions.h
$(RM) $(DESTDIR)$(includedir)/zel/z80_types.h
$(RM) $(DESTDIR)$(includedir)/zel/z80_instruction_types.h
rmdir $(DESTDIR)$(includedir)/zel

View File

@ -36,8 +36,6 @@ extern "C" {
#include <stdbool.h>
#endif
#include <zel/z80_types.h>
/*! Opaque type representing a z80 processor. */
typedef struct Z80_t *Z80;
@ -91,32 +89,32 @@ typedef struct
* \param cpu The \c Z80 instance making the read call.
* \return The byte from memory.
*/
byte (*ReadMem)(word addr, bool inst, Z80 cpu);
uint8_t (*ReadMem)(uint16_t addr, bool inst, Z80 cpu);
/*! Write a byte of memory.
* \param addr The address to write.
* \param val The byte to write.
* \param cpu The \c Z80 instance making the write call.
*/
void (*WriteMem)(word addr, byte val, Z80 cpu);
void (*WriteMem)(uint16_t addr, uint8_t val, Z80 cpu);
/*! Read the interrupt data.
* \param n Read the \a n th byte of data.
* \param cpu The \c Z80 instance making the read call.
*/
byte (*ReadInterruptData)(word n, Z80 cpu);
uint8_t (*ReadInterruptData)(uint16_t n, Z80 cpu);
/*! Read a byte from an I/O port.
* \param addr The contents of the address bus during the
* request. The low 8 bits specify the port.
* \param cpu The \c Z80 instance making the read call.
* \return The byte from the I/O port.
*/
byte (*ReadIO)(word addr, Z80 cpu);
uint8_t (*ReadIO)(uint16_t addr, Z80 cpu);
/*! Write a byte from an I/O port.
* \param addr The contents of the address bus during the
* request. The low 8 bits specify the port.
* \param val The byte to write.
* \param cpu The \c Z80 instance making the read call.
*/
void (*WriteIO)(word addr, byte val, Z80 cpu);
void (*WriteIO)(uint16_t addr, uint8_t val, Z80 cpu);
/*! Notify the peripherials that a return from interrupt
* instruction has occured.
* \param cpu The \c Z80 instance performing the notification.
@ -130,7 +128,7 @@ typedef struct
* \param type The type of control flow.
* \param cpu The \c Z80 instance performing the notification.
*/
void (*ControlFlow)(word pc, word target, ControlFlowType type, Z80 cpu);
void (*ControlFlow)(uint16_t pc, uint16_t target, ControlFlowType type, Z80 cpu);
} Z80FunctionBlock;
/*! Create a new \c Z80 instance using the callbacks specified in \a blk.
@ -152,7 +150,7 @@ void Z80_Free( Z80 cpu );
* \return The number of clock ticks that have elapsed while executing
* the instruction.
*/
int Z80_Step( word *outPC, Z80 cpu );
int Z80_Step( uint16_t *outPC, Z80 cpu );
/*! Check if \a cpu has halted.
* \param cpu The \c Z80 instance.
@ -165,14 +163,14 @@ bool Z80_HasHalted( Z80 cpu );
* \param cpu The \c Z80 instance.
* \return The contents of the register specified by \a reg.
*/
word Z80_GetReg( int reg, Z80 cpu );
uint16_t Z80_GetReg( int reg, Z80 cpu );
/*! Set a 16 bit paired register.
* \param reg The register to set.
* \param value The value to assign to the register.
* \param cpu The \c Z80 instance.
*/
void Z80_SetReg( int reg, word value, Z80 cpu );
void Z80_SetReg( int reg, uint16_t value, Z80 cpu );
/*! Disassemble the z80 instruction pointed to by \a address into \a buffer.
* \param address The address of the beginning the instruction.
@ -183,7 +181,7 @@ void Z80_SetReg( int reg, word value, Z80 cpu );
* function will be called to read the instructions.
* \return The length of the instruction in bytes.
*/
int Z80_Disassemble( word address, char *buffer, Z80 cpu );
int Z80_Disassemble( uint16_t address, char *buffer, Z80 cpu );
/*! Simulate the NMI pin going active. This causes the z80 to jump to
* the nmi handler.

View File

@ -41,7 +41,6 @@ extern "C" {
#include <stdbool.h>
#endif
#include <zel/z80_types.h>
#include <zel/z80_instruction_types.h>
/*! The type of a z80 instruction. Many z80 instructions are similar
@ -220,7 +219,7 @@ extern const InstructionTemplate FDCB_Prefixed[256];
* \param data Callback data from IF_ID().
* \return The value at address \a addr.
*/
typedef byte (*ReadMemFunction)(word addr, void *data);
typedef uint8_t (*ReadMemFunction)(uint16_t addr, void *data);
/*! Instruction fetch and instruction decode. Fetchs and decodes the
* instruction pointed to by \a address into \a *inst.
@ -232,7 +231,7 @@ typedef byte (*ReadMemFunction)(word addr, void *data);
* \param data Arbitrary data passed to the \a ReadMem callback.
* \return The length of the instruction.
*/
int IF_ID( Instruction *inst, word address, ReadMemFunction ReadMem, void *data );
int IF_ID( Instruction *inst, uint16_t address, ReadMemFunction ReadMem, void *data );
/*! Disassemble the instruction pointed to by \a inst into \a buffer.
* \param inst Pointer to an \c Instruction.

View File

@ -22,7 +22,7 @@ sources = $(wildcard test_*.c)
tests = $(sources:.c=)
itests = $(subst test,itest,$(tests))
CPPFLAGS += -I../include
CPPFLAGS += -I.. -I../include
CFLAGS += -O3 -Wall -Werror
LDFLAGS += -L..
LIBS += -lzel

View File

@ -22,6 +22,8 @@
#include <string.h>
#include <zel/z80_instructions.h>
#include "z80_types.h"
extern const char *disasm[];
extern byte data[];

View File

@ -2,6 +2,8 @@
#include <stdlib.h>
#include <z80.h>
#include "z80_types.h"
byte data[] = {};
const byte interrupt_data [] = {};
const byte input_data[] = {};

View File

@ -23,6 +23,8 @@
#include <assert.h>
#include <zel/z80.h>
#include "z80_types.h"
extern byte data[];
extern const size_t size;
extern const byte interrupt_data[];

View File

@ -2,6 +2,8 @@
#include <stdlib.h>
#include <zel/z80.h>
#include "z80_types.h"
const char *disasm[] = {
"add a,b",
"sub c",

View File

@ -2,6 +2,8 @@
#include <stdlib.h>
#include <zel/z80.h>
#include "z80_types.h"
const char *disasm[] = {
"ld a,15h",
"ld b,a",

View File

@ -2,6 +2,8 @@
#include <stdlib.h>
#include <zel/z80.h>
#include "z80_types.h"
const char *disasm[] = {
"ld ix,0020h",
"set 0,(ix-10h)",

2
z80.c
View File

@ -23,6 +23,8 @@
#include <zel/z80.h>
#include <zel/z80_instructions.h>
#include "z80_types.h"
struct Z80_t
{
/* C guarantees consecutive layout */

View File

@ -23,6 +23,8 @@
#include <zel/z80.h> /* Need registers */
#include <zel/z80_instructions.h>
#include "z80_types.h"
const InstructionTemplate Unprefixed[] =
{
#include "tables/no_prefix.tab"

View File

@ -1,4 +1,4 @@
/* Copyright (c) 2008 Steve Checkoway
/* Copyright (c) 2008, 2017 Stephen Checkoway
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
@ -22,7 +22,7 @@
/*! \file
*
* Types used by the z80.
* \author Steve Checkoway
* \author Stephen Checkoway
* \version 0.1
* \date 2008
*/