2a55bfd375
We use zasm's ability to use labels in .equ directive. We didn't do it before because for a while, we were in between scas and zasm (scas was used in automated tests) so we needed to use the lowest common denominator: zasm doesn't have macros and scas can't use labels in .equ directives. This forced us to add this layer of indirection. But now that we are completely cut from scas' dependency, we can use this nice zasm's ability.
42 lines
621 B
NASM
42 lines
621 B
NASM
.equ RAMSTART 0x8000
|
|
.equ RAMEND 0xffff
|
|
.equ ACIA_CTL 0x80 ; Control and status. RS off.
|
|
.equ ACIA_IO 0x81 ; Transmit. RS on.
|
|
.equ KBD_PORT 0x08
|
|
|
|
jp init
|
|
|
|
.inc "err.h"
|
|
.inc "core.asm"
|
|
.inc "parse.asm"
|
|
.equ ACIA_RAMSTART RAMSTART
|
|
.inc "acia.asm"
|
|
|
|
.equ KBD_RAMSTART ACIA_RAMEND
|
|
.inc "kbd.asm"
|
|
|
|
.equ STDIO_RAMSTART KBD_RAMEND
|
|
.equ STDIO_GETC kbdGetC
|
|
.equ STDIO_PUTC aciaPutC
|
|
.inc "stdio.asm"
|
|
|
|
.equ SHELL_RAMSTART STDIO_RAMEND
|
|
.equ SHELL_EXTRA_CMD_COUNT 0
|
|
.inc "shell.asm"
|
|
|
|
init:
|
|
di
|
|
; setup stack
|
|
ld hl, RAMEND
|
|
ld sp, hl
|
|
|
|
call aciaInit
|
|
call kbdInit
|
|
call shellInit
|
|
jp shellLoop
|
|
|
|
KBD_FETCHKC:
|
|
in a, (KBD_PORT)
|
|
ret
|
|
|