;; BEGIN BOOTSTRAP @opt stack_pointer RG @opt csr_scratch RH @use ext_std:* @let vector_table 0x10 @let vt_ISR0 0x10 ; ISR0 @let vt_ISR1 0x11 ; ISR1 @let vt_ISR2 0x12 ; ISR2 @let vt_ISR3 0x13 ; ISR3 @let vt_stack_addr 0x14 ; Stack address @let vt_term_pp_addr 0x15 ; Terminal peripheral address @let vt_kb_pp_addr 0x16 ; Keyboard peripheral address @let vt_gr_mode_addr 0x17 ; Graphics mode setting address @let vt_sprite_mem 0x18 ; Sprite memory address @let vt_text_mem 0x19 ; Text memory buffer address @let stack_segment 0x8000 @let mmio_segment 0xE000 @let terminal_addr 0xE000 @let keyboard_addr 0xE001 @let gr_mode_addr 0xE002 @let sprite_mem 0xE800 @let text_mem 0xF800 @let gr_disabled_mode 0b00 @let gr_text_mode 0b01 @let gr_sprite_mode 0b10 @address 0x0 ldi vt_stack_addr RA ldr RA __STACK_POINTER jpi program_segment @address vector_table keyboard_isr ; 0x10 hlt_isr ; 0x11 hlt_isr ; 0x12 hlt_isr ; 0x13 stack_segment ; 0x14 terminal_addr ; 0x15 keyboard_addr ; 0x16 gr_mode_addr ; 0x17 sprite_mem ; 0x18 text_mem ; 0x19 @label hlt_isr ldi 0x55 RE hlt @label keyboard_isr spu RA spu RB ldi vt_kb_pp_addr RA ldr RA RA ldr RA RA ldi vt_term_pp_addr RB ldr RB RB str RA RB spo RB spo RA rti @label program_segment ldi vt_gr_mode_addr RA ldr RA RA ldi gr_disabled_mode RB str RB RA jpi main ;; END BOOTSTRAP @label TEXT_MODE 1 @label int_0 23 @label int_1 63488 @label int_2 72 @label int_3 63489 @label int_4 69 @label int_5 63490 @label int_6 76 @label int_7 63491 @label int_8 76 @label int_9 63492 @label int_10 79 @label main ; builtin call store [, ] ldi int_0 RA ldr RA RA spu RA spo RB spo RA str RB RA ; builtin call store [, ] ldi int_1 RA ldr RA RA spu RA ldi int_2 RA ldr RA RA spu RA spo RB spo RA str RB RA ; builtin call store [, ] ldi int_3 RA ldr RA RA spu RA ldi int_4 RA ldr RA RA spu RA spo RB spo RA str RB RA ; builtin call store [, ] ldi int_5 RA ldr RA RA spu RA ldi int_6 RA ldr RA RA spu RA spo RB spo RA str RB RA ; builtin call store [, ] ldi int_7 RA ldr RA RA spu RA ldi int_8 RA ldr RA RA spu RA spo RB spo RA str RB RA ; builtin call store [, ] ldi int_9 RA ldr RA RA spu RA ldi int_10 RA ldr RA RA spu RA spo RB spo RA str RB RA ; builtin call asm [] ldi 1 RA