CCL Home Page
Up Directory CCL c50lib.h
/* =======================================================================
    C50LIB.H - Library of routines for building TMS320C50 simulators
    Copyright (C) 1996 Will Ware

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

   ======================================================================= */

typedef struct sGLOB
    {
    char name[40];
    int value;
    struct sGLOB *next;
    } symbol;

typedef unsigned int uint;
typedef int (*iufunc) (uint);

/* Interrupt types */
enum int_type { RS, INT0, INT1, INT2, TINT, RINT, XINT, TRAP };

extern int arp, ov, ovm, intm, dp;
extern int arb, cnf, tc, sxm, c, hm, fsm, xf, fo, txm, pm;
extern long int accumulator, p_register;
extern unsigned int pc;
extern int t_register, _stack[8], _sp, ar[8];
extern int mp_mc_mode;
extern int ports[16], bio;
extern int drr, dxr, tim, prd, imr, greg;

extern unsigned long int steps_taken, cycles;

extern char error_string[100];

/* ======================================================================= */
/*                           Public Functions                              */
/* ======================================================================= */

extern void c50_reset (void);
extern void c50_interrupt (enum int_type n);
extern char * disassemble (int instruc);
extern void advance (void);

extern void write_program_memory (uint address, int data);
extern int read_program_memory (uint address);
extern void write_data_memory (uint address, int data);
extern int read_data_memory (uint address);

/* We expect the user to define off-chip-memory writes and reads to program
 * and data memory, by providing these functions for us. We also expect the
 * user to define how warnings and errors are handled.
 */

extern void write_program_off_chip (uint address, int data);
extern int  read_program_off_chip  (uint address);
extern void write_data_off_chip (uint address, int data);
extern int  read_data_off_chip  (uint address);
extern void write_io_port (uint address, int data);
extern int  read_io_port  (uint address);

extern void handle_error(void);

Modified: Sat Mar 30 17:00:00 1996 GMT
Page accessed 5165 times since Sat Apr 17 22:02:48 1999 GMT