7cf3ed38da
Most of register fiddling routines (which is now the only thing contained in care.asm) are used by almost all userspace apps, often in inner loops. That makes the penalty of using jump tables for those a bit too high. Moreover, it burdens jump tables needlessly. Because this unit is very small (now that string routines are out), it makes sense to always include it in binaries.
45 lines
668 B
NASM
45 lines
668 B
NASM
; 8K of onboard RAM
|
|
.equ RAMSTART 0xc000
|
|
; Memory register at the end of RAM. Must not overwrite
|
|
.equ RAMEND 0xfdd0
|
|
|
|
jp init
|
|
|
|
.fill 0x66-$
|
|
retn
|
|
|
|
.inc "err.h"
|
|
.inc "ascii.h"
|
|
.inc "core.asm"
|
|
.inc "str.asm"
|
|
.inc "parse.asm"
|
|
|
|
.equ PAD_RAMSTART RAMSTART
|
|
.inc "sms/pad.asm"
|
|
|
|
.equ VDP_RAMSTART PAD_RAMEND
|
|
.inc "sms/vdp.asm"
|
|
|
|
.equ STDIO_RAMSTART VDP_RAMEND
|
|
.equ STDIO_GETC padGetC
|
|
.equ STDIO_PUTC vdpPutC
|
|
.inc "stdio.asm"
|
|
|
|
.equ SHELL_RAMSTART STDIO_RAMEND
|
|
.equ SHELL_EXTRA_CMD_COUNT 0
|
|
.inc "shell.asm"
|
|
|
|
init:
|
|
di
|
|
im 1
|
|
|
|
ld sp, RAMEND
|
|
|
|
call padInit
|
|
call vdpInit
|
|
call shellInit
|
|
jp shellLoop
|
|
|
|
.fill 0x7ff0-$
|
|
.db "TMR SEGA", 0x00, 0x00, 0xfb, 0x68, 0x00, 0x00, 0x00, 0x4c
|