diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2023-11-03 10:55:00 +0200 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2023-11-03 10:55:32 +0200 |
| commit | 7acb987b0796ab0e93b5422de9b88a4eb7755443 (patch) | |
| tree | d8de36197d26b32b7f9378ed32cbe66b5ae47fb9 /asm/bootstrap.atk16 | |
| parent | 02cbabcd735e6367b87fa4401f7a5df89813a6f7 (diff) | |
Start working on reading custom charset
Diffstat (limited to 'asm/bootstrap.atk16')
| -rw-r--r-- | asm/bootstrap.atk16 | 33 |
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 |
