refactoring

This commit is contained in:
Роман Бойков 2026-02-19 19:21:24 +03:00
parent 5dee7d555c
commit e54099e44a

View File

@ -15,7 +15,6 @@
OUTPUT mon_E000.bin OUTPUT mon_E000.bin
MODULE MONITOR MODULE MONITOR
ORG 0xe000 ORG 0xe000
@ -188,8 +187,8 @@ msg_hw_mon:
; --------------------------------------------------- ; ---------------------------------------------------
reset_m_stack: reset_m_stack:
LD HL,M_VARS.stor_e LD HL, M_VARS.stor_e
LD SP,HL LD SP, HL
CALL get_cmd_letter CALL get_cmd_letter
INC HL INC HL
@ -197,41 +196,41 @@ reset_m_stack:
; Monitor entry point ; Monitor entry point
; --------------------------------------------------- ; ---------------------------------------------------
m_cold_start: m_cold_start:
LD HL,M_VARS.stor_e LD HL, M_VARS.stor_e
LD SP,HL LD SP, HL
DI DI
CALL get_a_ref_sp CALL get_a_ref_sp
CALL get_cmd_letter CALL get_cmd_letter
LD L,205 LD L, 205
DB 0xdd DB 0xdd
PUSH AF PUSH AF
CP ASCII_CR CP ASCII_CR
JP Z,m_cold_start JP Z, m_cold_start
LD HL,cmd_handlers LD HL, cmd_handlers
LD C,11 LD C, 11
seek_cmd: seek_cmd:
CP (HL) CP (HL)
JP Z,cmd_found JP Z, cmd_found
INC HL INC HL
INC HL INC HL
INC HL INC HL
DEC C DEC C
JP NZ,seek_cmd JP NZ, seek_cmd
JP reset_m_stack JP reset_m_stack
cmd_found: cmd_found:
INC HL INC HL
; get cmd handler address ; get cmd handler address
LD A,(HL) LD A, (HL)
INC HL INC HL
LD H,(HL) LD H, (HL)
LD L,A LD L, A
; RET to cold_start ; RET to cold_start
LD DE,m_cold_start LD DE, m_cold_start
PUSH DE PUSH DE
; Jump to cmd handler ; Jump to cmd handler
LD C,2 LD C, 2
JP (HL) JP (HL)
; --------------------------------------------------- ; ---------------------------------------------------
@ -279,7 +278,7 @@ cmd_A:
DEC C DEC C
CALL get_address CALL get_address
POP DE POP DE
LD HL,256 LD HL, 256
CALL m_ramdisk_write CALL m_ramdisk_write
RET RET
@ -290,23 +289,23 @@ cmd_D:
DEC C DEC C
CALL get_address CALL get_address
POP HL POP HL
LD DE,127 LD DE, 127
EX DE,HL EX DE, HL
ADD HL,DE ADD HL, DE
EX DE,HL EX DE, HL
d_next_line: d_next_line:
CALL get_a_ref_sp CALL get_a_ref_sp
CALL out_sp_key CALL out_sp_key
CALL out_hex_word CALL out_hex_word
d_next_byte: d_next_byte:
CALL out_sp_key CALL out_sp_key
LD A,(HL) LD A, (HL)
CALL out_hex_byte CALL out_hex_byte
CALL next_hl_de CALL next_hl_de
RET C RET C
LD A,L LD A, L
AND 0x7 AND 0x7
JP NZ,d_next_byte JP NZ, d_next_byte
JP d_next_line JP d_next_line
; --------------------------------------------------- ; ---------------------------------------------------
@ -319,9 +318,9 @@ cmd_F:
POP DE POP DE
POP HL POP HL
f_next_b: f_next_b:
LD (HL),C LD (HL), C
CALL next_hl_de CALL next_hl_de
JP NC,f_next_b JP NC, f_next_b
RET RET
; --------------------------------------------------- ; ---------------------------------------------------
@ -334,11 +333,11 @@ cmd_M:
POP DE POP DE
POP HL POP HL
m_next_b: m_next_b:
LD A,(HL) LD A, (HL)
LD (BC),A LD (BC), A
INC BC INC BC
CALL next_hl_de CALL next_hl_de
JP NC,m_next_b JP NC, m_next_b
RET RET
; --------------------------------------------------- ; ---------------------------------------------------
@ -346,42 +345,44 @@ m_next_b:
; --------------------------------------------------- ; ---------------------------------------------------
cmd_L: cmd_L:
CALL get_key_with_check CALL get_key_with_check
JP NC,reset_m_stack JP NC, reset_m_stack
CALL get_a_ref_sp CALL get_a_ref_sp
; wait for hex line start ; wait for hex line start
l_wait_colon: l_wait_colon:
CALL m_serial_in CALL m_serial_in
CP ':' CP ':'
JP NZ,l_wait_colon JP NZ, l_wait_colon
XOR A XOR A
LD D,A LD D,A
CALL read_hex_serial CALL read_hex_serial
JP Z,l_exit JP Z, l_exit
; read line len and addr ; read line len and addr
LD E,A LD E, A
CALL read_hex_serial CALL read_hex_serial
LD H,A LD H, A
CALL read_hex_serial CALL read_hex_serial
LD L,A LD L, A
CALL read_hex_serial CALL read_hex_serial
LD C,E LD C, E
l_next_byte: l_next_byte:
CALL read_hex_serial CALL read_hex_serial
LD (HL),A LD (HL), A
INC HL INC HL
DEC E DEC E
JP NZ,l_next_byte JP NZ, l_next_byte
CALL read_hex_serial CALL read_hex_serial
JP NZ,reset_m_stack JP NZ, reset_m_stack
JP l_wait_colon JP l_wait_colon
; read and ignore final 4 hex bytes in las ; read and ignore final 4 hex bytes in las
l_exit: l_exit:
CALL read_hex_serial CALL read_hex_serial
CALL read_hex_serial CALL read_hex_serial
CALL read_hex_serial CALL read_hex_serial
CALL read_hex_serial CALL read_hex_serial
JP NZ,reset_m_stack JP NZ, reset_m_stack
RET RET
; --------------------------------------------------- ; ---------------------------------------------------
@ -391,18 +392,18 @@ cmd_S:
CALL s_get_hex_addr CALL s_get_hex_addr
RET C RET C
s_next_byte: s_next_byte:
LD A,(HL) LD A, (HL)
CALL out_hex_byte CALL out_hex_byte
CALL get_cmd_letter CALL get_cmd_letter
DEC L DEC L
; get new value ; get new value
CALL get_key_with_check CALL get_key_with_check
RET C RET C
JP Z,s_next_in JP Z, s_next_in
EX DE,HL EX DE, HL
CALL hex_keys_to_addr CALL hex_keys_to_addr
EX DE,HL EX DE, HL
LD (HL),E LD (HL), E
RET C RET C
s_next_in: s_next_in:
INC HL INC HL
@ -412,18 +413,18 @@ s_next_in:
; X[r] - Out and modify register value ; X[r] - Out and modify register value
; --------------------------------------------------- ; ---------------------------------------------------
cmd_X: cmd_X:
LD HL,registers_tab LD HL, registers_tab
CALL get_key_with_check CALL get_key_with_check
JP C,x_ret JP C, x_ret
LD C,9 LD C, 9
x_seek_reg: x_seek_reg:
CP (HL) CP (HL)
JP Z,x_reg_found JP Z, x_reg_found
INC HL INC HL
INC HL INC HL
INC HL INC HL
DEC C DEC C
JP NZ,x_seek_reg JP NZ, x_seek_reg
JP reset_m_stack JP reset_m_stack
x_reg_found: x_reg_found:
CALL out_sp_key CALL out_sp_key
@ -432,21 +433,22 @@ x_reg_found:
DEC L DEC L
CALL get_key_with_check CALL get_key_with_check
RET C RET C
JP Z,reset_m_stack JP Z, reset_m_stack
PUSH BC PUSH BC
; get new reg value and store ; get new reg value and store
CALL hex_keys_to_addr CALL hex_keys_to_addr
LD A,L LD A, L
LD (DE),A LD (DE), A
POP AF POP AF
OR A OR A
JP M,x_wreg JP M, x_wreg
INC DE INC DE
LD A,H LD A,H
LD (DE),A LD (DE), A
x_wreg: x_wreg:
CALL get_a_ref_sp CALL get_a_ref_sp
RET RET
x_ret: x_ret:
CALL get_a_ref_sp CALL get_a_ref_sp
x_next_reg: x_next_reg:
@ -454,9 +456,9 @@ x_next_reg:
OR (HL) OR (HL)
RET M RET M
CP 'M' CP 'M'
CALL Z,get_a_ref_sp CALL Z, get_a_ref_sp
CALL out_sp_key CALL out_sp_key
LD C,(HL) LD C, (HL)
CALL get_key_out CALL get_key_out
CALL get_cmd_letter CALL get_cmd_letter
DEC A DEC A
@ -551,17 +553,17 @@ get_a_ref_sp:
CALL get_cmd_letter CALL get_cmd_letter
DEC C DEC C
CALL get_cmd_letter CALL get_cmd_letter
LD A,(BC) LD A, (BC)
RET RET
; ------------------------------------------------------ ; ------------------------------------------------------
; ;
; ------------------------------------------------------ ; ------------------------------------------------------
get_cmd_letter: get_cmd_letter:
EX (SP),HL EX (SP), HL
LD C,(HL) LD C, (HL)
INC HL INC HL
EX (SP),HL EX (SP), HL
JP get_key_out JP get_key_out
; ------------------------------------------------------ ; ------------------------------------------------------
@ -1497,15 +1499,15 @@ m2_lf:
XOR A XOR A
.cas_l8: .cas_l8:
LD (DE),A LD (DE), A
INC D INC D
DEC B DEC B
JP NZ,.cas_l8 JP NZ, .cas_l8
INC E INC E
DEC C DEC C
JP NZ,.cas_l7 JP NZ, .cas_l7
LD A,0x0 LD A, 0
OUT (SYS_DD17PB),A OUT (SYS_DD17PB), A
RET RET