fork of PCE focusing on macplus, supporting DaynaPort SCSI network emulation
at master 130 lines 4.4 kB view raw
1/***************************************************************************** 2 * pce * 3 *****************************************************************************/ 4 5/***************************************************************************** 6 * File name: src/chipset/e6522.h * 7 * Created: 2007-11-09 by Hampa Hug <hampa@hampa.ch> * 8 * Copyright: (C) 2007-2023 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/* VIA 6522 */ 24 25 26#ifndef PCE_CHIPSET_E6522_H 27#define PCE_CHIPSET_E6522_H 1 28 29 30typedef struct { 31 unsigned addr_shift; 32 33 unsigned char ora; 34 unsigned char orb; 35 36 unsigned char ira; 37 unsigned char irb; 38 39 unsigned char ddra; 40 unsigned char ddrb; 41 42 unsigned char shift_val; 43 unsigned char shift_cnt; 44 45 unsigned char acr; 46 unsigned char pcr; 47 48 unsigned char ifr; 49 unsigned char ier; 50 51 char t1_reload; 52 char t1_timeout; 53 char t1_hot; 54 unsigned short t1_latch; 55 unsigned short t1_val; 56 57 char t2_timeout; 58 char t2_hot; 59 unsigned short t2_latch; 60 unsigned short t2_val; 61 62 unsigned char ca1_inp; 63 unsigned char ca2_inp; 64 65 unsigned char cb1_inp; 66 unsigned char cb2_inp; 67 68 void *set_ora_ext; 69 void (*set_ora) (void *ext, unsigned char val); 70 unsigned char set_ora_val; 71 72 void *set_orb_ext; 73 void (*set_orb) (void *ext, unsigned char val); 74 unsigned char set_orb_val; 75 76 void *set_ca2_ext; 77 void (*set_ca2) (void *ext, unsigned char val); 78 unsigned char set_ca2_val; 79 80 void *set_cb2_ext; 81 void (*set_cb2) (void *ext, unsigned char val); 82 unsigned char set_cb2_val; 83 84 void *set_shift_out_ext; 85 void (*set_shift_out) (void *ext, unsigned char val); 86 87 void *irq_ext; 88 void (*irq) (void *ext, unsigned char val); 89 unsigned char irq_val; 90} e6522_t; 91 92 93void e6522_init (e6522_t *via, unsigned addr_shift); 94void e6522_free (e6522_t *via); 95 96void e6522_set_ora_fct (e6522_t *via, void *ext, void *fct); 97void e6522_set_orb_fct (e6522_t *via, void *ext, void *fct); 98void e6522_set_ca2_fct (e6522_t *via, void *ext, void *fct); 99void e6522_set_cb2_fct (e6522_t *via, void *ext, void *fct); 100void e6522_set_shift_out_fct (e6522_t *via, void *ext, void *fct); 101void e6522_set_irq_fct (e6522_t *via, void *ext, void *fct); 102 103unsigned char e6522_shift_out (e6522_t *via); 104void e6522_shift_in (e6522_t *via, unsigned char val); 105 106void e6522_set_ca1_inp (e6522_t *via, unsigned char val); 107void e6522_set_ca2_inp (e6522_t *via, unsigned char val); 108 109void e6522_set_cb1_inp (e6522_t *via, unsigned char val); 110void e6522_set_cb2_inp (e6522_t *via, unsigned char val); 111 112void e6522_set_ira_inp (e6522_t *via, unsigned char val); 113void e6522_set_irb_inp (e6522_t *via, unsigned char val); 114 115void e6522_set_shift_inp (e6522_t *via, unsigned char val); 116 117unsigned char e6522_get_uint8 (e6522_t *via, unsigned long addr); 118unsigned short e6522_get_uint16 (e6522_t *via, unsigned long addr); 119unsigned long e6522_get_uint32 (e6522_t *via, unsigned long addr); 120 121void e6522_set_uint8 (e6522_t *via, unsigned long addr, unsigned char val); 122void e6522_set_uint16 (e6522_t *via, unsigned long addr, unsigned short val); 123void e6522_set_uint32 (e6522_t *via, unsigned long addr, unsigned long val); 124 125void e6522_reset (e6522_t *via); 126 127void e6522_clock (e6522_t *via, unsigned n); 128 129 130#endif