IRQ work in BIOS
This commit is contained in:
parent
e562ef8dab
commit
3e888ffa65
|
@ -23,9 +23,7 @@
|
||||||
long_i \
|
long_i \
|
||||||
pha \
|
pha \
|
||||||
phx \
|
phx \
|
||||||
phy \
|
phy
|
||||||
short_a \
|
|
||||||
long_i
|
|
||||||
|
|
||||||
#define restore_registers \
|
#define restore_registers \
|
||||||
long_a \
|
long_a \
|
||||||
|
@ -33,6 +31,4 @@
|
||||||
ply \
|
ply \
|
||||||
plx \
|
plx \
|
||||||
pla \
|
pla \
|
||||||
plp \
|
plp
|
||||||
short_a \
|
|
||||||
long_i
|
|
|
@ -16,7 +16,7 @@
|
||||||
.extern _NearBaseAddress
|
.extern _NearBaseAddress
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "bios/macros.h"
|
#include "macros.h"
|
||||||
|
|
||||||
;;; ***************************************************************************
|
;;; ***************************************************************************
|
||||||
;;;
|
;;;
|
||||||
|
|
126
src/bios/irq.c
126
src/bios/irq.c
|
@ -5,3 +5,129 @@
|
||||||
//
|
//
|
||||||
// Copyright © 2024 Kyle J Cardoza <Kyle.Cardoza@icloud.com>
|
// Copyright © 2024 Kyle J Cardoza <Kyle.Cardoza@icloud.com>
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
// Return values from handlers, if any, should be stored in
|
||||||
|
// DP[0] for the C register, DP[4] for the X register, and
|
||||||
|
// DP[6] for the Y register.
|
||||||
|
extern uint16_t Dp[4];
|
||||||
|
|
||||||
|
void irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void brk_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void abort_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void nmi_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void timer0_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void timer1_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void timer2_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void timer3_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void timer4_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void timer5_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void timer6_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void timer7_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void pe56_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ne57_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void pe60_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void pe62_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ne64_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ne66_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void pib_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void level_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void uart_0_rx_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void uart_0_tx_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void uart_1_rx_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void uart_1_tx_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void uart_2_rx_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void uart_2_tx_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void uart_3_rx_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void uart_3_tx_irq_handler(void) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void cop_handler(uint16_t arg_c, uint16_t arg_x, uint16_t arg_y) {
|
||||||
|
(void) arg_c;
|
||||||
|
(void) arg_x;
|
||||||
|
(void) arg_y;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,95 +10,291 @@
|
||||||
//;
|
//;
|
||||||
//; Copyright © 2024 Kyle J Cardoza <Kyle.Cardoza@icloud.com>
|
//; Copyright © 2024 Kyle J Cardoza <Kyle.Cardoza@icloud.com>
|
||||||
|
|
||||||
|
#include "macros.h"
|
||||||
|
#include "sentinel65x.h"
|
||||||
|
|
||||||
|
.extern _Dp
|
||||||
|
|
||||||
|
.extern irq_handler
|
||||||
|
|
||||||
; This section gets copied to 0x00F000
|
; This section gets copied to 0x00F000
|
||||||
.section irq_trampolines
|
.section irq_trampolines
|
||||||
|
|
||||||
reserved_irq:
|
reserved_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
timer0_irq:
|
timer0_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
timer1_irq:
|
timer1_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
timer2_irq:
|
timer2_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
timer3_irq:
|
timer3_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
timer4_irq:
|
timer4_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
timer5_irq:
|
timer5_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
timer6_irq:
|
timer6_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
timer7_irq:
|
timer7_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
pe56_irq:
|
pe56_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
ne57_irq:
|
ne57_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
pe60_irq:
|
pe60_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
pe62_irq:
|
pe62_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
ne64_irq:
|
ne64_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
ne66_irq:
|
ne66_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
pib_irq:
|
pib_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
level_irq:
|
level_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
|
||||||
|
call long:irq_handler
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
|
|
||||||
uart_0_rx_irq:
|
uart_0_rx_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
uart_0_tx_irq:
|
uart_0_tx_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
uart_1_rx_irq:
|
uart_1_rx_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
uart_1_tx_irq:
|
uart_1_tx_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
uart_2_rx_irq:
|
uart_2_rx_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
uart_2_tx_irq:
|
uart_2_tx_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
uart_3_rx_irq:
|
uart_3_rx_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
uart_3_tx_irq:
|
uart_3_tx_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
cop_irq:
|
cop_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
brk_irq:
|
brk_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
abort_irq:
|
abort_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
nmi_irq:
|
nmi_irq:
|
||||||
rti
|
phb
|
||||||
|
phd
|
||||||
|
rep #0b00110000
|
||||||
|
pha
|
||||||
|
phx
|
||||||
|
phy
|
||||||
|
.extern nmi_handler
|
||||||
|
long_a
|
||||||
|
call long:nmi_handler
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
|
interrupt_return:
|
||||||
|
rep #0b00110000
|
||||||
|
ply
|
||||||
|
plx
|
||||||
|
pla
|
||||||
|
pld
|
||||||
|
plb
|
||||||
|
jump interrupt_return
|
||||||
|
|
||||||
; This section gets copied to 0x00FF80
|
; This section gets copied to 0x00FF80
|
||||||
.section irq_vectors
|
.section irq_vectors
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
//;
|
//;
|
||||||
//; Copyright © 2024 Kyle J Cardoza <Kyle.Cardoza@icloud.com>
|
//; Copyright © 2024 Kyle J Cardoza <Kyle.Cardoza@icloud.com>
|
||||||
|
|
||||||
#include "boot/sentinel65x.h"
|
#include "sentinel65x.h"
|
||||||
|
|
||||||
.section code, noreorder
|
.section code, noreorder
|
||||||
.pubweak __program_root_section
|
.pubweak __program_root_section
|
||||||
|
|
Loading…
Reference in New Issue