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

1.1     ! root        1: #include "config.h"
        !             2: #include "machine.h"
        !             3: 
        !             4: #define VERSTRING "v0.15"
        !             5: #define PROGNAME generator
        !             6: #define FNAME_TCLSCRIPT SHAREDIR "/gen.tcl"
        !             7: #define FNAME_GEN68K_CPU_OUT "out/cpu68k-%x.c"
        !             8: #define GEN_RAMLENGTH 64*1024
        !             9: 
        !            10: #define LEN_IPCLISTTABLE 16*1024
        !            11: 
        !            12: char *gen_loadimage(const char *filename);
        !            13: char *gen_loadsavepos(const char *filename);
        !            14: void gen_reset(void);
        !            15: 
        !            16: extern unsigned int gen_quit;
        !            17: extern unsigned int gen_debugmode;
        !            18: extern unsigned int gen_loglevel;
        !            19: 
        !            20: #ifdef WORDS_BIGENDIAN
        !            21: #define LOCENDIAN16(y) (y)
        !            22: #define LOCENDIAN32(y) (y)
        !            23: #else
        !            24: #define LOCENDIAN16(y) ((((y)>>8)&0x00FF)+((((y)<<8)&0xFF00)))
        !            25: #define LOCENDIAN32(y) ( (((y)>>24) & 0x000000FF) + \
        !            26:                         (((y)>>8)  & 0x0000FF00) + \
        !            27:                         (((y)<<8)  & 0x00FF0000) + \
        !            28:                         (((y)<<24) & 0xFF000000) )
        !            29: #endif
        !            30: 
        !            31: #define SWAP16(y) ((((y)>>8)&0x00FF)+((((y)<<8)&0xFF00)))
        !            32: 
        !            33: typedef enum {
        !            34:   tp_src, tp_dst
        !            35: } t_type;
        !            36: 
        !            37: typedef enum {
        !            38:   sz_none, sz_byte, sz_word, sz_long
        !            39: } t_size;
        !            40: 
        !            41: typedef enum {
        !            42:   dt_Dreg, dt_Areg, dt_Aind, dt_Ainc, dt_Adec, dt_Adis, dt_Aidx,
        !            43:   dt_AbsW, dt_AbsL, dt_Pdis, dt_Pidx,
        !            44:   dt_ImmB, dt_ImmW, dt_ImmL, dt_ImmS,
        !            45:   dt_Imm3, dt_Imm4, dt_Imm8, dt_Imm8s, dt_ImmV,
        !            46:   dt_Ill
        !            47: } t_datatype;
        !            48: 
        !            49: typedef enum {
        !            50:   ea_Dreg, ea_Areg, ea_Aind, ea_Ainc, ea_Adec, ea_Adis, ea_Aidx,
        !            51:   ea_AbsW, ea_AbsL, ea_Pdis, ea_Pidx, ea_Imm
        !            52: } t_eatypes;
        !            53: 
        !            54: typedef enum {
        !            55:   i_ILLG,
        !            56:   i_OR, i_ORSR,
        !            57:   i_AND, i_ANDSR,
        !            58:   i_EOR, i_EORSR,
        !            59:   i_SUB, i_SUBA, i_SUBX,
        !            60:   i_ADD, i_ADDA, i_ADDX,
        !            61:   i_MULU, i_MULS,
        !            62:   i_CMP, i_CMPA,
        !            63:   i_BTST, i_BCHG, i_BCLR, i_BSET,
        !            64:   i_MOVE, i_MOVEA,
        !            65:   i_MOVEPMR, i_MOVEPRM,
        !            66:   i_MOVEFSR, i_MOVETSR,
        !            67:   i_MOVEMRM, i_MOVEMMR,
        !            68:   i_MOVETUSP, i_MOVEFUSP,
        !            69:   i_NEG, i_NEGX, i_CLR, i_NOT,
        !            70:   i_ABCD, i_SBCD, i_NBCD,
        !            71:   i_SWAP,
        !            72:   i_PEA, i_LEA,
        !            73:   i_EXT, i_EXG,
        !            74:   i_TST, i_TAS, i_CHK,
        !            75:   i_TRAPV, i_TRAP, i_RESET, i_NOP, i_STOP,
        !            76:   i_LINK, i_UNLK,
        !            77:   i_RTE, i_RTS, i_RTR,
        !            78:   i_JSR, i_JMP, i_Scc, i_SF, i_DBcc, i_DBRA, i_Bcc, i_BSR,
        !            79:   i_DIVU, i_DIVS,
        !            80:   i_ASR, i_LSR, i_ROXR, i_ROR,
        !            81:   i_ASL, i_LSL, i_ROXL, i_ROL,
        !            82:   i_LINE10, i_LINE15
        !            83: } t_mnemonic;
        !            84: 
        !            85: typedef struct {
        !            86:   uint16 mask;              /* mask of bits that are static */
        !            87:   uint16 bits;              /* bit values corresponding to bits in mask */
        !            88:   t_mnemonic mnemonic;      /* instruction mnemonic */
        !            89:   struct {
        !            90:     int priv:1;             /* instruction is privileged if set */
        !            91:     int endblk:1;           /* instruction ends a block if set */
        !            92:     int imm_notzero:1;      /* immediate data cannot be 0 (if applicable) */
        !            93:     int used:5;             /* bitmap of XNZVC flags inspected */
        !            94:     int set:5;              /* bitmap of XNZVC flags altered */
        !            95:   } flags;
        !            96:   t_size size;              /* size of instruction */
        !            97:   t_datatype stype;         /* type of source */
        !            98:   t_datatype dtype;         /* type of destination */
        !            99:   unsigned int sbitpos:4;   /* bit pos of imm data or reg part of EA */
        !           100:   unsigned int dbitpos:4;   /* reg part of EA */
        !           101:   unsigned int immvalue;    /* if stype is ImmS this is the value */
        !           102:   unsigned int cc;          /* condition code if mnemonic is Scc/Dbcc/Bcc */
        !           103:   unsigned int funcnum;     /* function number for this instruction */
        !           104:   unsigned int wordlen;     /* length in words of this instruction */
        !           105:   unsigned int clocks;      /* number of external clock periods */
        !           106: } t_iib;                    /* instruction information block */
        !           107: 
        !           108: #define IIB_FLAG_X 1<<0
        !           109: #define IIB_FLAG_N 1<<1
        !           110: #define IIB_FLAG_Z 1<<2
        !           111: #define IIB_FLAG_V 1<<3
        !           112: #define IIB_FLAG_C 1<<4
        !           113: 
        !           114: typedef struct {
        !           115:   t_mnemonic mnemonic;
        !           116:   const char *name;
        !           117: } t_mnemonic_table;
        !           118: 
        !           119: extern t_mnemonic_table mnemonic_table[];
        !           120: 
        !           121: extern char *condition_table[];
        !           122: 
        !           123: typedef union {
        !           124:   struct {
        !           125: #ifndef BYTES_HIGHFIRST
        !           126:     unsigned int c:1;
        !           127:     unsigned int v:1;
        !           128:     unsigned int z:1;
        !           129:     unsigned int n:1;
        !           130:     unsigned int x:1;
        !           131:     unsigned int :3;
        !           132:     unsigned int i0:1;
        !           133:     unsigned int i1:1;
        !           134:     unsigned int i2:1;
        !           135:     unsigned int :2;
        !           136:     unsigned int s:1;
        !           137:     unsigned int :1;
        !           138:     unsigned int t:1;
        !           139: #else
        !           140:     unsigned int t:1;
        !           141:     unsigned int :1;
        !           142:     unsigned int s:1;
        !           143:     unsigned int :2;
        !           144:     unsigned int i2:1;
        !           145:     unsigned int i1:1;
        !           146:     unsigned int i0:1;
        !           147:     unsigned int :3;
        !           148:     unsigned int x:1;
        !           149:     unsigned int n:1;
        !           150:     unsigned int z:1;
        !           151:     unsigned int v:1;
        !           152:     unsigned int c:1;
        !           153: #endif
        !           154:   } sr_struct;
        !           155:   uint16 sr_int;
        !           156: } t_sr;
        !           157: 
        !           158: typedef struct {
        !           159:   uint32 pc;
        !           160:   uint32 sp;
        !           161:   t_sr sr;
        !           162:   uint16 stop;
        !           163:   uint32 regs[16];
        !           164: } t_regs;
        !           165: 
        !           166: #define SR_CFLAG (1<<0)
        !           167: #define SR_VFLAG (1<<1)
        !           168: #define SR_ZFLAG (1<<2)
        !           169: #define SR_NFLAG (1<<3)
        !           170: #define SR_XFLAG (1<<4)
        !           171: #define SR_SFLAG (1<<13)
        !           172: #define SR_TFLAG (1<<15)
        !           173: 
        !           174: #define LOG_DEBUG3(x)   /* */
        !           175: #define LOG_DEBUG2(x)   /* */
        !           176: #define LOG_DEBUG1(x)   /* */
        !           177: #define LOG_USER(x)     ui_log_user ## x
        !           178: #define LOG_VERBOSE(x)  ui_log_verbose ## x
        !           179: #define LOG_NORMAL(x)   ui_log_normal ## x
        !           180: #define LOG_CRITICAL(x) ui_log_critical ## x
        !           181: #define LOG_REQUEST(x)  ui_log_request ## x
        !           182: 
        !           183: typedef struct {
        !           184:   uint8 *sprite;       /* pointer to sprite data or NULL for end of list */
        !           185:   uint8 hplot;         /* number of cells to plot */
        !           186:   sint16 hpos, vpos;   /* -128 upwards, top left position */
        !           187:   uint16 hsize, vsize; /* 1 to 4 for 8 to 32 pixels */
        !           188:   sint16 hmax, vmax;   /* bottom right position */
        !           189: } t_spriteinfo;
        !           190: 
        !           191: typedef enum {
        !           192:   pt_unknown, pt_game, pt_education
        !           193: } t_prodtype;
        !           194: 
        !           195: typedef struct {
        !           196:   char console[17];
        !           197:   char copyright[17];
        !           198:   char name_domestic[49];
        !           199:   char name_overseas[49];
        !           200:   t_prodtype prodtype;
        !           201:   char version[13];
        !           202:   uint16 checksum;
        !           203:   char memo[29];
        !           204:   char country[17];
        !           205:   uint8 flag_japan;  /* old style JUE flags */
        !           206:   uint8 flag_usa;
        !           207:   uint8 flag_europe;
        !           208:   uint8 hardware;    /* new style 4-bit bitmap, 0=japan,2=us,3=europe */
        !           209: } t_cartinfo;
        !           210: 
        !           211: extern t_cartinfo gen_cartinfo;

unix.superglobalmegacorp.com

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