aboutsummaryrefslogtreecommitdiffstats
path: root/asm/bootstrap.atk16
diff options
context:
space:
mode:
authorJan Tuomi <jans.tuomi@gmail.com>2023-11-03 10:55:00 +0200
committerJan Tuomi <jans.tuomi@gmail.com>2023-11-03 10:55:32 +0200
commit7acb987b0796ab0e93b5422de9b88a4eb7755443 (patch)
treed8de36197d26b32b7f9378ed32cbe66b5ae47fb9 /asm/bootstrap.atk16
parent02cbabcd735e6367b87fa4401f7a5df89813a6f7 (diff)
Start working on reading custom charset
Diffstat (limited to 'asm/bootstrap.atk16')
-rw-r--r--asm/bootstrap.atk1633
1 files changed, 16 insertions, 17 deletions
diff --git a/asm/bootstrap.atk16 b/asm/bootstrap.atk16
index 2aa5d88..31b61f2 100644
--- a/asm/bootstrap.atk16
+++ b/asm/bootstrap.atk16
@@ -1,6 +1,6 @@
; vector table fields
@let vector_table 0x10
-@let vt_ISRO 0x10 ; ISR0
+@let vt_ISR0 0x10 ; ISR0
@let vt_ISR1 0x11 ; ISR1
@let vt_ISR2 0x12 ; ISR2
@let vt_ISR3 0x13 ; ISR3
@@ -10,6 +10,7 @@
@let vt_gr_mode_addr 0x17 ; Graphics mode setting address
; memory segments
+@let charmem_segment 0x0100
@let stack_segment 0x8000
@let mmio_segment 0xE000
@let terminal_addr 0xE000
@@ -37,30 +38,28 @@
hlt
@label keyboard_isr
- spu RA ; use RA, RB
- spu RB
- ldi vt_kb_pp_addr RA ; RA := 0x17 Keyboard peripheral address pointer
- ldr RA RA ; RA := 0xE001 Keyboard peripheral address deref
+ stack_stash RA RB
+ ldi vt_kb_pp_addr RA ; RA := Keyboard peripheral address pointer
+ ldr RA RA ; RA := Keyboard peripheral address deref
ldr RA RA ; RA := <16-bit keyboard character code> from MMIO register
- ldi vt_term_pp_addr RB ; RB := 0x16 Terminal peripheral address pointer
- ldr RB RB ; RB := 0xE000 Terminal peripheral address deref
- str RA RB ; terminal <- character code
- spo RB ; restore RA, RB
- spo RA
+ ldi vt_term_pp_addr RB ; RB := Terminal peripheral address pointer
+ ldr RB RB ; RB := Terminal peripheral address deref
+ str RA RB ; terminal <- character code (ASCII?)
+ mov RA RE ; RE := character code (for debugging)
+ stack_restore RA RB
rti
@label program_segment
+; define short prelude that sets up vital instructions
+; NOTE: must be shorter than the vector table offset
@address 0x0
; set up stack pointer to point to beginning of stack segment
ldi vt_stack_addr RA
ldr RA RF
+ jpi program_segment
+
+@address program_segment
; set graphics mode to disabled
- ldi vt_gr_mode_addr RA
- ldr RA RA
- ldi gr_disabled_mode RB
- str RB RA
+ set_graphics_mode gr_disabled_mode
; jump to main (user defined)
jpi main
-
-@address program_segment
-; set up address for program code