pato-z80-home-computer/assembly/bios/monitor.asm

77 lines
2.0 KiB
NASM
Raw Normal View History

2020-11-23 08:47:23 +01:00
; Pat80 Memory Monitor
; @author Daniele Verducci
;
; Monitor commands (CMD $arg):
2020-11-25 08:53:41 +01:00
; H (HELP) Shows available commands
; D (DUMP) $pos Dumps first 100 bytes of memory starting at $pos
; S (SET) $pos $val Replaces byte at $pos with $val
; L (LOAD) $pos $val Loads all the incoming bytes in memory starting from $pos
; R (RUN) $pos Starts executing code from $pos
; The commands are entered with a single letter and the program completes the command
2020-11-23 08:47:23 +01:00
; CONSTANTS
; All monitor commands are 3 chars long.
2020-11-25 08:53:41 +01:00
MON_WELCOME: DB "PAT80 MEmory MOnitor 0.1"
MON_COMMAND_HELP: DB "HELP",0 ; null terminated strings
MON_COMMAND_DUMP: DB "DUMP",0 ; null terminated strings
MON_COMMAND_SET: DB "SET",0
MON_COMMAND_LOAD: DB "LOAD",0
MON_COMMAND_RUN: DB "RUN",0
MON_ARG_HEX: DB "0x",0
MON_HELP: DB "Available commands: HELP, DUMP, SET, LOAD, RUN"
2020-11-23 08:47:23 +01:00
Monitor_main:
2020-11-25 08:53:41 +01:00
; Print welcome string
ld bc, MON_WELCOME
call Print
monitor_main_loop:
; Draw prompt char
ld a, 62 ; >
call Printc
; Read char from command line
call Readc: ; blocking: returns when a character was read and placed in A reg
; Switch case
cp (MON_COMMAND_HELP) ; check incoming char is equal to command's first char
jp z, monitor_help
cp (MON_COMMAND_DUMP)
jp z, monitor_dump
cp (MON_COMMAND_SET)
jp z, monitor_set
cp (MON_COMMAND_LOAD)
jp z, monitor_load
cp (MON_COMMAND_RUN)
jp z, monitor_run
jp monitor_main_loop
monitor_help:
ld bc, MON_COMMAND_HELP + 1 ; autocomplete command
call Print
ld bc, MON_HELP
call Print
ret
monitor_dump:
ld bc, MON_COMMAND_DUMP + 1 ; autocomplete command
call Print
ret
monitor_set:
ld bc, MON_COMMAND_SET + 1 ; autocomplete command
call Print
2020-11-23 08:47:23 +01:00
ret
2020-11-25 08:53:41 +01:00
monitor_load:
ld bc, MON_COMMAND_LOAD + 1 ; autocomplete command
call Print
2020-11-23 08:47:23 +01:00
ret
2020-11-25 08:53:41 +01:00
monitor_run:
ld bc, MON_COMMAND_RUN + 1 ; autocomplete command
call Print
jp APP_VAR_SPACE ; Start executing code
ret