add system struct and modify functions
This commit is contained in:
parent
650b182ab4
commit
1d0eae3aec
@ -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;
|
||||||
|
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user