Annotation of generator/cmz80/cmz80.h, revision 1.1

1.1     ! root        1: /* Multi-Z80 32 Bit emulator */
        !             2: 
        !             3: /* Copyright 1999, Neil Bradley, All rights reserved
        !             4:  *
        !             5:  * License agreement:
        !             6:  *
        !             7:  * The mZ80 emulator may be distributed in unmodified form to any medium.
        !             8:  *
        !             9:  * mZ80 May not be sold, or sold as a part of a commercial package without
        !            10:  * the express written permission of Neil Bradley ([email protected]). This
        !            11:  * includes shareware.
        !            12:  *
        !            13:  * Modified versions of mZ80 may not be publicly redistributed without author
        !            14:  * approval ([email protected]). This includes distributing via a publicly
        !            15:  * accessible LAN. You may make your own source modifications and distribute
        !            16:  * mZ80 in object only form.
        !            17:  *
        !            18:  * mZ80 Licensing for commercial applications is available. Please email
        !            19:  * [email protected] for details.
        !            20:  *
        !            21:  * Synthcom Systems, Inc, and Neil Bradley will not be held responsible for
        !            22:  * any damage done by the use of mZ80. It is purely "as-is".
        !            23:  *
        !            24:  * If you use mZ80 in a freeware application, credit in the following text:
        !            25:  *
        !            26:  * "Multi-Z80 CPU emulator by Neil Bradley ([email protected])"
        !            27:  *
        !            28:  * must accompany the freeware application within the application itself or
        !            29:  * in the documentation.
        !            30:  *
        !            31:  * Legal stuff aside:
        !            32:  *
        !            33:  * If you find problems with mZ80, please email the author so they can get
        !            34:  * resolved. If you find a bug and fix it, please also email the author so
        !            35:  * that those bug fixes can be propogated to the installed base of mZ80
        !            36:  * users. If you find performance improvements or problems with mZ80, please
        !            37:  * email the author with your changes/suggestions and they will be rolled in
        !            38:  * with subsequent releases of mZ80.
        !            39:  *
        !            40:  * The whole idea of this emulator is to have the fastest available 32 bit
        !            41:  * Multi-z80 emulator for the PC, giving maximum performance. 
        !            42:  */ 
        !            43: 
        !            44: /* General z80 based defines */
        !            45: 
        !            46: //#include "rccore/types.h"
        !            47: 
        !            48: #ifndef        _MZ80_H_
        !            49: #define        _MZ80_H_
        !            50: 
        !            51: #ifndef UINT32
        !            52: #define UINT32  unsigned long int
        !            53: #endif
        !            54: 
        !            55: #ifndef UINT16
        !            56: #define UINT16  unsigned short int
        !            57: #endif
        !            58: 
        !            59: #ifndef UINT8
        !            60: #define UINT8   unsigned char
        !            61: #endif
        !            62: 
        !            63: #ifdef __cplusplus
        !            64: extern "C" {
        !            65: #endif
        !            66: 
        !            67: #ifndef _MEMORYREADWRITEBYTE_
        !            68: #define _MEMORYREADWRITEBYTE_
        !            69: 
        !            70: struct MemoryWriteByte
        !            71: {
        !            72:        UINT32 lowAddr;
        !            73:        UINT32 highAddr;
        !            74:        void (*memoryCall)(UINT32, UINT8, struct MemoryWriteByte *);
        !            75:        void *pUserArea;
        !            76: };      
        !            77: 
        !            78: struct MemoryReadByte
        !            79: {
        !            80:        UINT32 lowAddr;
        !            81:        UINT32 highAddr;
        !            82:        UINT8 (*memoryCall)(UINT32, struct MemoryReadByte *);
        !            83:        void *pUserArea;
        !            84: };      
        !            85: 
        !            86: #endif // _MEMORYREADWRITEBYTE_
        !            87: 
        !            88: struct z80PortWrite
        !            89: {
        !            90:        UINT16 lowIoAddr;
        !            91:        UINT16 highIoAddr;
        !            92:        void (*IOCall)(UINT16, UINT8, struct z80PortWrite *);
        !            93:        void *pUserArea;
        !            94: };
        !            95: 
        !            96: struct z80PortRead
        !            97: {
        !            98:        UINT16 lowIoAddr;
        !            99:        UINT16 highIoAddr;
        !           100:        UINT16 (*IOCall)(UINT16, struct z80PortRead *);
        !           101:        void *pUserArea;
        !           102: };     
        !           103: 
        !           104: struct z80TrapRec
        !           105: {
        !           106:        UINT16 trapAddr;
        !           107:        UINT8  skipCnt;
        !           108:        UINT8  origIns;
        !           109: };
        !           110: 
        !           111: struct mz80context
        !           112: {
        !           113:        UINT8 *z80Base;
        !           114:        struct MemoryReadByte *z80MemRead;
        !           115:        struct MemoryWriteByte *z80MemWrite;
        !           116:        struct z80PortRead *z80IoRead;
        !           117:        struct z80PortWrite *z80IoWrite;
        !           118:        UINT32 z80clockticks;
        !           119:        UINT32 z80inInterrupt;
        !           120:        UINT32 z80interruptMode;
        !           121:        UINT32 z80interruptState;
        !           122:        UINT32 z80halted;
        !           123:        UINT16 z80af;
        !           124:        UINT16 z80bc;
        !           125:        UINT16 z80de;
        !           126:        UINT16 z80hl;
        !           127:        UINT16 z80afprime;
        !           128:        UINT16 z80bcprime;
        !           129:        UINT16 z80deprime;
        !           130:        UINT16 z80hlprime;
        !           131:        UINT16 z80ix;
        !           132:        UINT16 z80iy;
        !           133:        UINT16 z80sp;
        !           134:        UINT16 z80pc;
        !           135:        UINT16 z80nmiAddr;
        !           136:        UINT16 z80intAddr;
        !           137:        UINT8 z80i;
        !           138:        UINT8 z80r;
        !           139: } /* RETRO_PACKED */ ;
        !           140: 
        !           141: extern UINT8 *mz80Base;
        !           142: extern UINT32 mz80exec(unsigned long int);
        !           143: extern UINT32 mz80GetContextSize(void);
        !           144: extern UINT32 mz80GetElapsedTicks(UINT32);
        !           145: extern void mz80ReleaseTimeslice(void);
        !           146: extern void mz80GetContext(void *);
        !           147: extern void mz80SetContext(void *);
        !           148: extern void mz80reset(void);
        !           149: extern UINT32 mz80int(UINT32);
        !           150: extern UINT32 mz80nmi(void);
        !           151: extern UINT16 z80intAddr;
        !           152: extern UINT16 z80nmiAddr;
        !           153: extern UINT16 z80pc;
        !           154: 
        !           155: typedef struct mz80context CONTEXTMZ80;
        !           156: 
        !           157: #ifdef __cplusplus
        !           158: };
        !           159: #endif
        !           160: 
        !           161: #endif // _MZ80_H_

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.