fork of PCE focusing on macplus, supporting DaynaPort SCSI network emulation
at master 126 lines 4.1 kB view raw
1/***************************************************************************** 2 * pce * 3 *****************************************************************************/ 4 5/***************************************************************************** 6 * File name: src/chipset/e68901.h * 7 * Created: 2011-06-13 by Hampa Hug <hampa@hampa.ch> * 8 * Copyright: (C) 2011-2013 Hampa Hug <hampa@hampa.ch> * 9 *****************************************************************************/ 10 11/***************************************************************************** 12 * This program is free software. You can redistribute it and / or modify it * 13 * under the terms of the GNU General Public License version 2 as published * 14 * by the Free Software Foundation. * 15 * * 16 * This program is distributed in the hope that it will be useful, but * 17 * WITHOUT ANY WARRANTY, without even the implied warranty of * 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General * 19 * Public License for more details. * 20 *****************************************************************************/ 21 22 23/* MFP 68901 */ 24 25 26#ifndef PCE_CHIPSET_E68901_H 27#define PCE_CHIPSET_E68901_H 1 28 29 30typedef struct { 31 unsigned short int_mask; 32 unsigned char cr; 33 unsigned char dr[2]; 34 35 char inp; 36 char out; 37 38 unsigned clk_div_inp; 39 unsigned clk_div_set; 40 41 unsigned clk_div; 42 unsigned clk_val; 43} e68901_timer_t; 44 45 46typedef struct { 47 unsigned addr_shift; 48 49 unsigned char gpip_xor; 50 unsigned char gpip_inp; 51 unsigned char gpip_val; 52 unsigned char gpip_aer; 53 unsigned char gpip_ddr; 54 55 unsigned short irr1; 56 unsigned short irr2; 57 unsigned short ier; 58 unsigned short ipr; 59 unsigned short isr; 60 unsigned short imr; 61 unsigned char ivr; 62 unsigned char vec; 63 64 unsigned char ucr; 65 unsigned char rsr[2]; 66 unsigned char tsr[2]; 67 unsigned char rdr[2]; 68 unsigned char tdr[2]; 69 unsigned recv_clk_cnt; 70 unsigned recv_clk_max; 71 unsigned send_clk_cnt; 72 unsigned send_clk_max; 73 unsigned char usart_timer; 74 75 e68901_timer_t timer[4]; 76 77 void *recv_ext; 78 int (*recv_fct) (void *ext, unsigned char *val); 79 80 void *send_ext; 81 int (*send_fct) (void *ext, unsigned char val); 82 83 unsigned char irq_val; 84 void *irq_ext; 85 void (*irq_fct) (void *ext, unsigned char val); 86} e68901_t; 87 88 89void e68901_init (e68901_t *mfp, unsigned addr_shift); 90void e68901_free (e68901_t *mfp); 91 92void e68901_set_irq_fct (e68901_t *mfp, void *ext, void *fct); 93void e68901_set_recv_fct (e68901_t *mfp, void *ext, void *fct); 94void e68901_set_send_fct (e68901_t *mfp, void *ext, void *fct); 95 96void e68901_set_usart_timer (e68901_t *mfp, unsigned idx); 97 98void e68901_set_clk_div (e68901_t *mfp, unsigned div); 99 100unsigned e68901_inta (e68901_t *mfp); 101 102void e68901_set_inp (e68901_t *mfp, unsigned char val); 103void e68901_set_inp_n (e68901_t *mfp, unsigned idx, unsigned char val); 104void e68901_set_inp_4 (e68901_t *mfp, unsigned char val); 105void e68901_set_inp_5 (e68901_t *mfp, unsigned char val); 106 107void e68901_set_tbi (e68901_t *mfp, unsigned char val); 108 109unsigned char e68901_get_uint8 (e68901_t *mfp, unsigned long addr); 110unsigned short e68901_get_uint16 (e68901_t *mfp, unsigned long addr); 111unsigned long e68901_get_uint32 (e68901_t *mfp, unsigned long addr); 112 113void e68901_set_uint8 (e68901_t *mfp, unsigned long addr, unsigned char val); 114void e68901_set_uint16 (e68901_t *mfp, unsigned long addr, unsigned short val); 115void e68901_set_uint32 (e68901_t *mfp, unsigned long addr, unsigned long val); 116 117int e68901_receive (e68901_t *mfp, unsigned char val); 118 119void e68901_reset (e68901_t *mfp); 120 121void e68901_clock_usart (e68901_t *mfp, unsigned n); 122 123void e68901_clock (e68901_t *mfp, unsigned n); 124 125 126#endif