From 0b0557d42d0e38dcf0e0a6ab4860e5dcea1a38e7 Mon Sep 17 00:00:00 2001 From: Eugene Lozovoy Date: Mon, 7 Aug 2023 15:12:10 +0300 Subject: [PATCH] minor refactors --- lua/include_verbose.lua | 7 +++++++ lua/screen_address.inc | 13 +++++++++++++ src/main.asm | 38 +++++++++++++++----------------------- src/vis.asm | 2 +- 4 files changed, 36 insertions(+), 24 deletions(-) create mode 100644 lua/include_verbose.lua create mode 100644 lua/screen_address.inc diff --git a/lua/include_verbose.lua b/lua/include_verbose.lua new file mode 100644 index 0000000..7f84ef3 --- /dev/null +++ b/lua/include_verbose.lua @@ -0,0 +1,7 @@ +function include_verbose(file_name) + file_name = file_name:gsub('"', '') + start = sj.current_address + _pc(string.format([[include "%s"]], file_name)) + finish = sj.current_address + _pc(string.format([[display "include file=%s start=0x%X end=0x%X size=%u"]], file_name, start, finish, finish-start)) +end diff --git a/lua/screen_address.inc b/lua/screen_address.inc new file mode 100644 index 0000000..4cae017 --- /dev/null +++ b/lua/screen_address.inc @@ -0,0 +1,13 @@ + includelua "lua/screen_address.lua" + + MACRO LD_SCREEN_ADDRESS _reg, _yyxx + lua allpass + _pc("ld _reg, " .. screen_address_pixel((_c("_yyxx")&0xff)*8, (_c("_yyxx")>>8)*8)) + endlua + ENDM + + MACRO LD_ATTR_ADDRESS _reg, _yyxx + lua allpass + _pc("ld _reg, " .. screen_address_attr((_c("_yyxx")&0xff)*8, (_c("_yyxx")>>8)*8)) + endlua + ENDM diff --git a/src/main.asm b/src/main.asm index a1e8662..c618ea4 100644 --- a/src/main.asm +++ b/src/main.asm @@ -3,29 +3,19 @@ SLDOPT COMMENT WPMEM, LOGPOINT, ASSERTION DEVICE ZXSPECTRUM128,stack_top - includelua "lua/screen_address.lua" + include "lua/screen_address.inc" include "config.inc" include "layout.inc" - MACRO LD_SCREEN_ADDRESS _reg, _yyxx - lua allpass - _pc("ld _reg, " .. screen_address_pixel((_c("_yyxx")&0xff)*8, (_c("_yyxx")>>8)*8)) - endlua - ENDM - MACRO LD_ATTR_ADDRESS _reg, _yyxx - lua allpass - _pc("ld _reg, " .. screen_address_attr((_c("_yyxx")&0xff)*8, (_c("_yyxx")>>8)*8)) - endlua - ENDM - page 0 - org int_handler-(variables0_end-begin) - assert $ >= #6000 + org int_handler-(variables_low_end-begin) + assert $ >= 0x6000 begin: db "Code begin",0 include "variables_low.asm" -variables0_end: +variables_low_end: + assert $ == 0x7f7f org #7f7f int_handler: push af ; @@ -39,26 +29,28 @@ int_handler: assert $ < 0x8000 org #8000 int_im2_vector_table: - assert int_handler == 0x7f7f - .257 db #7f ; by Z80 user manual int vector is I * 256 + (D & 0xFE) - ; but by other references and by T80/A-Z80 implementation int vector is I * 256 + D - ; so we just play safe and use symmetric int handler address and vector table with one extra byte + ; by Z80 user manual int vector is I * 256 + (D & 0xFE) + ; but by other references and by T80/A-Z80 implementation int vector is I * 256 + D + ; so we just play safe and use symmetric int handler address and vector table with one extra byte + assert low int_handler == high int_handler + .257 db low int_handler include "rle_unpack.asm" include "delay_tstate.asm" + include "math.asm" + include "draw.asm" include "input.asm" include "menu.asm" include "menugen.asm" + include "device.asm" include "file.asm" + include "settings.asm" include "uart.asm" - include "math.asm" + include "shama2695.asm" include "smf.asm" include "player.asm" - include "draw.asm" - include "device.asm" include "screen.asm" include "vis.asm" - include "settings.asm" main: diff --git a/src/vis.asm b/src/vis.asm index 6c16046..863bf0b 100644 --- a/src/vis.asm +++ b/src/vis.asm @@ -167,7 +167,7 @@ vis_process_frame: ld d, a ; ... ld a, (LAYOUT_BARS_Y + LAYOUT_BARS_HEIGHT)/2 ; B = Y coordinate sub c ; ... - sla a ; ... + add a, a ; ... ld b, a ; ... ld a, e ; C = X coordinate rlca : rlca : rlca ; ...