refactoring

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

View File

@ -13,8 +13,7 @@
INCLUDE "ram.inc" INCLUDE "ram.inc"
INCLUDE "bios_entries.inc" INCLUDE "bios_entries.inc"
OUTPUT mon_E000.bin OUTPUT mon_E000.bin
MODULE MONITOR MODULE MONITOR
@ -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
@ -2676,93 +2678,93 @@ m_set_color:
; C - character or sprite_no to draw ; C - character or sprite_no to draw
;--------------------------------------------------- ;---------------------------------------------------
m_print_at_xy: m_print_at_xy:
LD A,(M_VARS.screen_mode) LD A,(M_VARS.screen_mode)
AND 0x7 AND 0x7
JP NZ,esc_exit JP NZ,esc_exit
LD A,C LD A,C
AND 0x7f AND 0x7f
LD C,A LD C,A
CP 0x20 CP 0x20
JP M,esc_exit JP M,esc_exit
LD HL,M_VARS.esc_param LD HL,M_VARS.esc_param
LD A,(HL) LD A,(HL)
LD E,A LD E,A
ADD A,0x8 ADD A,0x8
JP C,esc_exit JP C,esc_exit
LD (HL),A LD (HL),A
INC HL INC HL
LD A,0xf7 LD A,0xf7
CP (HL) CP (HL)
JP C,esc_exit JP C,esc_exit
LD D,(HL) LD D,(HL)
CALL calc_px_addr CALL calc_px_addr
LD A,L LD A,L
SUB 0x7 SUB 0x7
LD L,A LD L,A
PUSH HL PUSH HL
LD A,C LD A,C
CALL m_get_glyph CALL m_get_glyph
POP DE POP DE
LD C,0x7 LD C,0x7
.l1: .l1:
PUSH HL PUSH HL
LD A,0x1 LD A,0x1
OUT (SYS_DD17PB),A OUT (SYS_DD17PB),A
LD L,(HL) LD L,(HL)
LD H,0x0 LD H,0x0
LD A,B LD A,B
OR A OR A
JP Z,.l3 JP Z,.l3
.l2: .l2:
ADD HL,HL ADD HL,HL
DEC A DEC A
JP NZ,.l2 JP NZ,.l2
.l3: .l3:
EX DE,HL EX DE,HL
PUSH BC PUSH BC
LD A,(M_VARS.curr_color) LD A,(M_VARS.curr_color)
CPL CPL
LD B,A LD B,A
LD A,(HL) LD A,(HL)
XOR B XOR B
OR E OR E
XOR B XOR B
LD (HL),A LD (HL),A
INC H INC H
INC H INC H
LD A,(HL) LD A,(HL)
XOR B XOR B
OR D OR D
XOR B XOR B
LD (HL),A LD (HL),A
DEC H DEC H
LD A,(M_VARS.curr_color+1) LD A,(M_VARS.curr_color+1)
CPL CPL
LD B,A LD B,A
LD A,(HL) LD A,(HL)
XOR B XOR B
OR E OR E
XOR B XOR B
LD (HL),A LD (HL),A
INC H INC H
INC H INC H
LD A,(HL) LD A,(HL)
XOR B XOR B
OR D OR D
XOR B XOR B
LD (HL),A LD (HL),A
DEC H DEC H
DEC H DEC H
DEC H DEC H
INC L INC L
EX DE,HL EX DE,HL
POP BC POP BC
LD A,0x0 LD A,0x0
OUT (SYS_DD17PB),A OUT (SYS_DD17PB),A
POP HL POP HL
INC HL INC HL
DEC C DEC C
JP NZ,.l1 JP NZ,.l1
RET RET
; -------------------------------------------------- ; --------------------------------------------------