add system struct and modify functions

This commit is contained in:
optixx 2009-10-14 17:39:35 +02:00
parent 650b182ab4
commit 1d0eae3aec
2 changed files with 34 additions and 7 deletions

View File

@ -56,11 +56,6 @@ extern FILE uart_stdout;
uint8_t debug_level = (DEBUG | DEBUG_USB | DEBUG_CRC | DEBUG_SHM ); uint8_t debug_level = (DEBUG | DEBUG_USB | DEBUG_CRC | DEBUG_SHM );
typedef struct system_t {
uint8_t bus_mode;
uint8_t rom_mode;
uint8_t req_bank;
} system_t;
usb_transaction_t usb_trans; usb_transaction_t usb_trans;

View File

@ -33,14 +33,40 @@
#include "debug.h" #include "debug.h"
#include "info.h" #include "info.h"
#include "requests.h" #include "requests.h"
#include "irq.h"
typedef struct system_t {
enum bus_mode_e { MODE_AVR, MODE_SNES } bus_mode;
enum rom_mode_e { LOROM, HOROM } rom_mode;
enum reset_line_e { RESET_OFF, RESET_ON } reset_line;
enum irq_line_e { IRQ_ON, IRQ_OFF } irq_line;
enum wr_line_e { WR_DISABLE, WR_ENABLE } wr_line;
uint8_t reset_count;
} system_t;
system_t system;
void system_init(void) void system_init(void)
{ {
snes_reset_hi(); snes_reset_hi();
snes_reset_off(); snes_reset_off();
system.reset_line = RESET_OFF;
snes_irq_hi(); snes_irq_hi();
snes_irq_off(); snes_irq_off();
system.irq_line = IRQ_OFF;
system.reset_count = 0;
snes_wr_disable();
system.wr_line = WR_DISABLE;
avr_bus_active();
system.bus_mode = MODE_AVR;
} }
@ -54,6 +80,7 @@ void system_reset()
snes_reset_hi(); snes_reset_hi();
snes_reset_off(); snes_reset_off();
sei(); sei();
system.reset_count++;
} }
void system_send_irq() void system_send_irq()
@ -67,19 +94,24 @@ void system_send_irq()
void system_bus_avr() void system_bus_avr()
{ {
info_P(PSTR("Activate AVR bus\n"));
avr_bus_active(); avr_bus_active();
info_P(PSTR("Disable SNES WR\n")); info_P(PSTR("Activate AVR bus\n"));
system.bus_mode = MODE_AVR;
snes_wr_disable(); snes_wr_disable();
system.wr_line = WR_DISABLE;
info_P(PSTR("Disable SNES WR\n"));
} }
void system_bus_snes() void system_bus_snes()
{ {
snes_wr_disable(); snes_wr_disable();
system.wr_line = WR_DISABLE;
info_P(PSTR("Disable SNES WR\n")); info_P(PSTR("Disable SNES WR\n"));
snes_bus_active(); snes_bus_active();
system.bus_mode = MODE_SNES;
info_P(PSTR("Activate SNES bus\n")); info_P(PSTR("Activate SNES bus\n"));
irq_stop(); irq_stop();
} }
void system_rom_mode(usb_transaction_t *usb_trans) void system_rom_mode(usb_transaction_t *usb_trans)