IRQ work in BIOS
This commit is contained in:
parent
e562ef8dab
commit
3e888ffa65
|
@ -23,9 +23,7 @@
|
|||
long_i \
|
||||
pha \
|
||||
phx \
|
||||
phy \
|
||||
short_a \
|
||||
long_i
|
||||
phy
|
||||
|
||||
#define restore_registers \
|
||||
long_a \
|
||||
|
@ -33,6 +31,4 @@
|
|||
ply \
|
||||
plx \
|
||||
pla \
|
||||
plp \
|
||||
short_a \
|
||||
long_i
|
||||
plp
|
|
@ -16,7 +16,7 @@
|
|||
.extern _NearBaseAddress
|
||||
#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>
|
||||
|
||||
#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>
|
||||
|
||||
#include "macros.h"
|
||||
#include "sentinel65x.h"
|
||||
|
||||
.extern _Dp
|
||||
|
||||
.extern irq_handler
|
||||
|
||||
; This section gets copied to 0x00F000
|
||||
.section irq_trampolines
|
||||
|
||||
reserved_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
timer0_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
timer1_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
timer2_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
timer3_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
timer4_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
timer5_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
timer6_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
timer7_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
pe56_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
ne57_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
pe60_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
pe62_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
ne64_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
ne66_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
pib_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
level_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
|
||||
call long:irq_handler
|
||||
jump interrupt_return
|
||||
|
||||
|
||||
uart_0_rx_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
uart_0_tx_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
uart_1_rx_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
uart_1_tx_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
uart_2_rx_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
uart_2_tx_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
uart_3_rx_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
uart_3_tx_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
cop_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
brk_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
abort_irq:
|
||||
rti
|
||||
phb
|
||||
phd
|
||||
rep #0b00110000
|
||||
pha
|
||||
phx
|
||||
phy
|
||||
jump interrupt_return
|
||||
|
||||
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
|
||||
.section irq_vectors
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
//;
|
||||
//; Copyright © 2024 Kyle J Cardoza <Kyle.Cardoza@icloud.com>
|
||||
|
||||
#include "boot/sentinel65x.h"
|
||||
#include "sentinel65x.h"
|
||||
|
||||
.section code, noreorder
|
||||
.pubweak __program_root_section
|
||||
|
|
Loading…
Reference in New Issue