ti83-sdk/tool/tilem-src/emu/x4/x4.h

106 lines
3.6 KiB
C
Raw Normal View History

2023-10-08 16:33:37 +00:00
/*
* libtilemcore - Graphing calculator emulation library
*
* Copyright (C) 2009-2011 Benjamin Moody
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, see
* <http://www.gnu.org/licenses/>.
*/
#ifndef _TILEM_X4_H
#define _TILEM_X4_H
enum {
PORT3, /* mask of enabled interrupts */
PORT4, /* interrupt timer speed */
PORT5, /* memory mapping bank C */
PORT6, /* memory mapping bank A */
PORT7, /* memory mapping bank B */
PORT8, /* link assist mode flags */
PORT9, /* unknown (link assist settings?) */
PORTA, /* unknown (timeout value?) */
PORTB, /* unknown (timeout value?) */
PORTC, /* unknown (timeout value?) */
PORTD, /* unknown */
PORTE, /* unknown */
PORTF, /* unknown */
PORT20, /* CPU speed control */
PORT21, /* hardware type / RAM no-exec control */
PORT22, /* Flash no-exec lower limit */
PORT23, /* Flash no-exec upper limit */
PORT25, /* RAM no-exec lower limit */
PORT26, /* RAM no-exec upper limit */
PORT27, /* bank C forced-page-0 limit */
PORT28, /* bank B forced-page-1 limit */
PORT29, /* LCD port delay (6 MHz) */
PORT2A, /* LCD port delay (mode 1) */
PORT2B, /* LCD port delay (mode 2) */
PORT2C, /* LCD port delay (mode 3) */
PORT2D, /* unknown */
PORT2E, /* memory delay */
PORT2F, /* Duration of LCD wait timer */
CLOCK_MODE, /* clock mode */
CLOCK_INPUT, /* clock input register */
CLOCK_DIFF, /* clock value minus actual time */
RAM_READ_DELAY,
RAM_WRITE_DELAY,
RAM_EXEC_DELAY,
FLASH_READ_DELAY,
FLASH_WRITE_DELAY,
FLASH_EXEC_DELAY,
LCD_PORT_DELAY,
NO_EXEC_RAM_MASK,
NO_EXEC_RAM_LOWER,
NO_EXEC_RAM_UPPER,
LCD_WAIT, /* LCD wait timer active */
PROTECTSTATE, /* port protection state */
NUM_HW_REGS
};
#define HW_REG_NAMES \
{ "port3", "port4", "port5", "port6", "port7", "port8", "port9", \
"portA", "portB", "portC", "portD", "portE", "portF", "port20", \
"port21", "port22", "port23", "port25", "port26", "port27", \
"port28", "port29", "port2A", "port2B", "port2C", "port2D", \
"port2E", "port2F", "clock_mode", "clock_input", "clock_diff", \
"ram_read_delay", "ram_write_delay", "ram_exec_delay", \
"flash_read_delay", "flash_write_delay", "flash_exec_delay", \
"lcd_port_delay", "no_exec_ram_mask", "no_exec_ram_lower", \
"no_exec_ram_upper", "lcd_wait", "protectstate" }
#define TIMER_INT1 (TILEM_NUM_SYS_TIMERS + 1)
#define TIMER_INT2A (TILEM_NUM_SYS_TIMERS + 2)
#define TIMER_INT2B (TILEM_NUM_SYS_TIMERS + 3)
#define TIMER_LCD_WAIT (TILEM_NUM_SYS_TIMERS + 4)
#define NUM_HW_TIMERS 4
#define HW_TIMER_NAMES { "int1", "int2a", "int2b", "lcd_wait" }
void x4_reset(TilemCalc* calc);
void x4_stateloaded(TilemCalc* calc, int savtype);
byte x4_z80_in(TilemCalc* calc, dword port);
void x4_z80_out(TilemCalc* calc, dword port, byte value);
void x4_z80_ptimer(TilemCalc* calc, int id);
void x4_z80_wrmem(TilemCalc* calc, dword addr, byte value);
byte x4_z80_rdmem(TilemCalc* calc, dword addr);
byte x4_z80_rdmem_m1(TilemCalc* calc, dword addr);
dword x4_mem_ltop(TilemCalc* calc, dword addr);
dword x4_mem_ptol(TilemCalc* calc, dword addr);
#endif