Fixing SoftReset in the multiboot version of the examples

This commit is contained in:
Rodrigo Alfonso 2025-01-04 02:01:09 -03:00
parent 6bfe90ed3e
commit 2fed290399
21 changed files with 92 additions and 7 deletions

View File

@ -176,8 +176,12 @@ LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map
# --- Multiboot ? ---
ifeq ($(strip $(bMB)), 1)
TARGET := $(PROJ).mb
CFLAGS += -DMULTIBOOT_BUILD=1
CXXFLAGS += -DMULTIBOOT_BUILD=1
else
TARGET := $(PROJ)
CFLAGS += -DMULTIBOOT_BUILD=0
CXXFLAGS += -DMULTIBOOT_BUILD=0
endif
# --- Save temporary files ? ---

View File

@ -176,8 +176,12 @@ LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map
# --- Multiboot ? ---
ifeq ($(strip $(bMB)), 1)
TARGET := $(PROJ).mb
CFLAGS += -DMULTIBOOT_BUILD=1
CXXFLAGS += -DMULTIBOOT_BUILD=1
else
TARGET := $(PROJ)
CFLAGS += -DMULTIBOOT_BUILD=0
CXXFLAGS += -DMULTIBOOT_BUILD=0
endif
# --- Save temporary files ? ---

View File

@ -166,8 +166,12 @@ LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map
# --- Multiboot ? ---
ifeq ($(strip $(bMB)), 1)
TARGET := $(PROJ).mb
CFLAGS += -DMULTIBOOT_BUILD=1
CXXFLAGS += -DMULTIBOOT_BUILD=1
else
TARGET := $(PROJ)
CFLAGS += -DMULTIBOOT_BUILD=0
CXXFLAGS += -DMULTIBOOT_BUILD=0
endif
# --- Save temporary files ? ---

View File

@ -62,7 +62,11 @@ int main() {
}
inline void ISR_reset() {
REG_IME = 0;
RegisterRamReset(RESET_REG | RESET_VRAM);
#if MULTIBOOT_BUILD == 1
*(vu8*)0x03007FFA = 0x01;
#endif
SoftReset();
}
@ -87,7 +91,7 @@ inline void setUpInterrupts() {
interrupt_enable(INTR_TIMER3);
#endif
// A+B+START+SELECT
// A+B+START+SELECT = SoftReset
REG_KEYCNT = 0b1100000000001111;
interrupt_set_handler(INTR_KEYPAD, ISR_reset);
interrupt_enable(INTR_KEYPAD);

View File

@ -176,8 +176,12 @@ LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map
# --- Multiboot ? ---
ifeq ($(strip $(bMB)), 1)
TARGET := $(PROJ).mb
CFLAGS += -DMULTIBOOT_BUILD=1
CXXFLAGS += -DMULTIBOOT_BUILD=1
else
TARGET := $(PROJ)
CFLAGS += -DMULTIBOOT_BUILD=0
CXXFLAGS += -DMULTIBOOT_BUILD=0
endif
# --- Save temporary files ? ---

View File

@ -176,8 +176,12 @@ LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map
# --- Multiboot ? ---
ifeq ($(strip $(bMB)), 1)
TARGET := $(PROJ).mb
CFLAGS += -DMULTIBOOT_BUILD=1
CXXFLAGS += -DMULTIBOOT_BUILD=1
else
TARGET := $(PROJ)
CFLAGS += -DMULTIBOOT_BUILD=0
CXXFLAGS += -DMULTIBOOT_BUILD=0
endif
# --- Save temporary files ? ---

View File

@ -176,8 +176,12 @@ LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map
# --- Multiboot ? ---
ifeq ($(strip $(bMB)), 1)
TARGET := $(PROJ).mb
CFLAGS += -DMULTIBOOT_BUILD=1
CXXFLAGS += -DMULTIBOOT_BUILD=1
else
TARGET := $(PROJ)
CFLAGS += -DMULTIBOOT_BUILD=0
CXXFLAGS += -DMULTIBOOT_BUILD=0
endif
# --- Save temporary files ? ---

View File

@ -176,8 +176,12 @@ LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map
# --- Multiboot ? ---
ifeq ($(strip $(bMB)), 1)
TARGET := $(PROJ).mb
CFLAGS += -DMULTIBOOT_BUILD=1
CXXFLAGS += -DMULTIBOOT_BUILD=1
else
TARGET := $(PROJ)
CFLAGS += -DMULTIBOOT_BUILD=0
CXXFLAGS += -DMULTIBOOT_BUILD=0
endif
# --- Save temporary files ? ---

View File

@ -176,8 +176,12 @@ LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map
# --- Multiboot ? ---
ifeq ($(strip $(bMB)), 1)
TARGET := $(PROJ).mb
CFLAGS += -DMULTIBOOT_BUILD=1
CXXFLAGS += -DMULTIBOOT_BUILD=1
else
TARGET := $(PROJ)
CFLAGS += -DMULTIBOOT_BUILD=0
CXXFLAGS += -DMULTIBOOT_BUILD=0
endif
# --- Save temporary files ? ---

View File

@ -176,8 +176,12 @@ LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map
# --- Multiboot ? ---
ifeq ($(strip $(bMB)), 1)
TARGET := $(PROJ).mb
CFLAGS += -DMULTIBOOT_BUILD=1
CXXFLAGS += -DMULTIBOOT_BUILD=1
else
TARGET := $(PROJ)
CFLAGS += -DMULTIBOOT_BUILD=0
CXXFLAGS += -DMULTIBOOT_BUILD=0
endif
# --- Save temporary files ? ---

View File

@ -12,7 +12,12 @@ inline void TIMER() {}
// (1) Create a LinkPS2Mouse instance
LinkPS2Mouse* linkPS2Mouse = new LinkPS2Mouse(2);
inline void KEYPAD() {
inline void ISR_reset() {
REG_IME = 0;
RegisterRamReset(RESET_REG | RESET_VRAM);
#if MULTIBOOT_BUILD == 1
*(vu8*)0x03007FFA = 0x01;
#endif
SoftReset();
}
@ -27,9 +32,9 @@ void init() {
interrupt_set_handler(INTR_TIMER2, TIMER);
interrupt_enable(INTR_TIMER2);
// Interrupt to handle B event (to reset)
// B = SoftReset
REG_KEYCNT = 0b10 | (1 << 14);
interrupt_set_handler(INTR_KEYPAD, KEYPAD);
interrupt_set_handler(INTR_KEYPAD, ISR_reset);
interrupt_enable(INTR_KEYPAD);
}

View File

@ -176,8 +176,12 @@ LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map
# --- Multiboot ? ---
ifeq ($(strip $(bMB)), 1)
TARGET := $(PROJ).mb
CFLAGS += -DMULTIBOOT_BUILD=1
CXXFLAGS += -DMULTIBOOT_BUILD=1
else
TARGET := $(PROJ)
CFLAGS += -DMULTIBOOT_BUILD=0
CXXFLAGS += -DMULTIBOOT_BUILD=0
endif
# --- Save temporary files ? ---

View File

@ -166,8 +166,12 @@ LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map
# --- Multiboot ? ---
ifeq ($(strip $(bMB)), 1)
TARGET := $(PROJ).mb
CFLAGS += -DMULTIBOOT_BUILD=1
CXXFLAGS += -DMULTIBOOT_BUILD=1
else
TARGET := $(PROJ)
CFLAGS += -DMULTIBOOT_BUILD=0
CXXFLAGS += -DMULTIBOOT_BUILD=0
endif
# --- Save temporary files ? ---

View File

@ -30,7 +30,11 @@ int main() {
}
inline void ISR_reset() {
REG_IME = 0;
RegisterRamReset(RESET_REG | RESET_VRAM);
#if MULTIBOOT_BUILD == 1
*(vu8*)0x03007FFA = 0x01;
#endif
SoftReset();
}
@ -40,7 +44,7 @@ inline void setUpInterrupts() {
interrupt_set_handler(INTR_VBLANK, [] {});
interrupt_enable(INTR_VBLANK);
// A+B+START+SELECT
// A+B+START+SELECT = SoftReset
REG_KEYCNT = 0b1100000000001111;
interrupt_set_handler(INTR_KEYPAD, ISR_reset);
interrupt_enable(INTR_KEYPAD);

View File

@ -176,8 +176,12 @@ LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map
# --- Multiboot ? ---
ifeq ($(strip $(bMB)), 1)
TARGET := $(PROJ).mb
CFLAGS += -DMULTIBOOT_BUILD=1
CXXFLAGS += -DMULTIBOOT_BUILD=1
else
TARGET := $(PROJ)
CFLAGS += -DMULTIBOOT_BUILD=0
CXXFLAGS += -DMULTIBOOT_BUILD=0
endif
# --- Save temporary files ? ---

View File

@ -176,8 +176,12 @@ LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map
# --- Multiboot ? ---
ifeq ($(strip $(bMB)), 1)
TARGET := $(PROJ).mb
CFLAGS += -DMULTIBOOT_BUILD=1
CXXFLAGS += -DMULTIBOOT_BUILD=1
else
TARGET := $(PROJ)
CFLAGS += -DMULTIBOOT_BUILD=0
CXXFLAGS += -DMULTIBOOT_BUILD=0
endif
# --- Save temporary files ? ---

View File

@ -176,8 +176,12 @@ LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map
# --- Multiboot ? ---
ifeq ($(strip $(bMB)), 1)
TARGET := $(PROJ).mb
CFLAGS += -DMULTIBOOT_BUILD=1
CXXFLAGS += -DMULTIBOOT_BUILD=1
else
TARGET := $(PROJ)
CFLAGS += -DMULTIBOOT_BUILD=0
CXXFLAGS += -DMULTIBOOT_BUILD=0
endif
# --- Save temporary files ? ---

View File

@ -19,7 +19,11 @@ void init() {
}
inline void ISR_reset() {
REG_IME = 0;
RegisterRamReset(RESET_REG | RESET_VRAM);
#if MULTIBOOT_BUILD == 1
*(vu8*)0x03007FFA = 0x01;
#endif
SoftReset();
}
@ -77,7 +81,7 @@ int main() {
interrupt_set_handler(INTR_TIMER3, LINK_UNIVERSAL_ISR_TIMER);
interrupt_enable(INTR_TIMER3);
// B+START+SELECT = Reset
// B+START+SELECT = SoftReset
REG_KEYCNT = 0b1100000000001110;
interrupt_set_handler(INTR_KEYPAD, ISR_reset);
interrupt_enable(INTR_KEYPAD);

View File

@ -166,8 +166,12 @@ LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map
# --- Multiboot ? ---
ifeq ($(strip $(bMB)), 1)
TARGET := $(PROJ).mb
CFLAGS += -DMULTIBOOT_BUILD=1
CXXFLAGS += -DMULTIBOOT_BUILD=1
else
TARGET := $(PROJ)
CFLAGS += -DMULTIBOOT_BUILD=0
CXXFLAGS += -DMULTIBOOT_BUILD=0
endif
# --- Save temporary files ? ---

View File

@ -29,7 +29,11 @@ int main() {
}
inline void ISR_reset() {
REG_IME = 0;
RegisterRamReset(RESET_REG | RESET_VRAM);
#if MULTIBOOT_BUILD == 1
*(vu8*)0x03007FFA = 0x01;
#endif
SoftReset();
}
@ -39,7 +43,7 @@ inline void setUpInterrupts() {
interrupt_set_handler(INTR_VBLANK, [] {});
interrupt_enable(INTR_VBLANK);
// A+B+START+SELECT
// A+B+START+SELECT = SoftReset
REG_KEYCNT = 0b1100000000001111;
interrupt_set_handler(INTR_KEYPAD, ISR_reset);
interrupt_enable(INTR_KEYPAD);

View File

@ -176,8 +176,12 @@ LDFLAGS := $(ARCH) -Wl,--print-memory-usage,-Map,$(PROJ).map
# --- Multiboot ? ---
ifeq ($(strip $(bMB)), 1)
TARGET := $(PROJ).mb
CFLAGS += -DMULTIBOOT_BUILD=1
CXXFLAGS += -DMULTIBOOT_BUILD=1
else
TARGET := $(PROJ)
CFLAGS += -DMULTIBOOT_BUILD=0
CXXFLAGS += -DMULTIBOOT_BUILD=0
endif
# --- Save temporary files ? ---