From 4d14c951c21a9e98b8c301bece3f16bd5d5e5cfc Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Wed, 31 Jan 2024 23:10:23 +1000 Subject: [PATCH] ... --- constants/SP2000.inc | 256 +----------------------------------------- constants/ZX_VARS.INC | 169 ++++++++++++++++++++++++++++ macroses/macros.z80 | 87 +++++++++++++- 3 files changed, 259 insertions(+), 253 deletions(-) create mode 100644 constants/ZX_VARS.INC diff --git a/constants/SP2000.inc b/constants/SP2000.inc index d29e1e9..95f6a2a 100644 --- a/constants/SP2000.inc +++ b/constants/SP2000.inc @@ -1056,14 +1056,14 @@ WIN_ID_0 Window_Variables = SYS_PAGE.WIN_MAP_IX + Window_Variables * 0 ; WIN_GR_X EQU 6 ; положение по X в поле графики (по знакомест) ; WIN_GR_Y EQU 7 ; положение по Y в поле графики (по знакомест) -; WIN_HL EQU 8 ; сохранение HL -; WIN_BC EQU 10 ; сохранение BC -; WIN_DE EQU 12 ; сохранение DE +; WIN_HL EQU 8 ; сохранение HL +; WIN_BC EQU 10 ; сохранение BC +; WIN_DE EQU 12 ; сохранение DE ; WIN_V_BEG EQU 14 ; начало окна по вертикали ; WIN_V_END EQU 15 ; конец окна по вертикали ; WIN_H_BEG EQU 16 ; начало окна по горизонтали ; WIN_H_END EQU 17 ; конец окна по горизонтали -; WIN_SIZE_REL EQU 18 ; реальный размер в символах +; WIN_SIZE_REL EQU 18 ; реальный размер в символах ; WIN_MODE_E EQU 19 ; дополнительный режим экрана ; WIN_WORK_1 EQU 20 ; рабочая переменная 1 ; WIN_WORK_2 EQU 21 ; рабочая переменная 2 @@ -1093,254 +1093,6 @@ WIN_ID_0 Window_Variables = SYS_PAGE.WIN_MAP_IX + Window_Variables * 0 ;ALTERA EQU #1400 ;адрес в ПЗУ сжатой страницы DCP - -;!FIXIT ----------------------------------------------------------------; -;Переменные спектрума - MODULE ZX_VARS -;ZX_VARS EQU #5C00 -; -SWAP_ROM EQU #5B00 -PRINTER_BUFFER EQU #5B00 -AUTO_5B08 EQU #5B08 -AUTO_5B5C EQU #5B5C -COPY_P128 EQU #5B5C -AUTO_5BFF EQU #5BFF -; -K_STATE EQU #5C00 -KEY_TIME EQU #5C09 -REP_K_TYME EQU #5C10 -ZG EQU #5C36 -ERR_BEEP EQU #5C38 -KEY_BEEP EQU #5C39 -ERR_NR EQU #5C3A -FLAGS EQU #5C3B -TV_FLAG EQU #5C3C -ERR_SP EQU #5C3D -LIST_SP EQU #5C3F -MODE EQU #5C41 -NEW_PPC EQU #5C42 -NEW_S_PPC EQU #5C44 -PPC EQU #5C45 -SUB_PPC EQU #5C47 -BORDER EQU #5C48 -EDIT_PPC EQU #5C49 -BAS_VARS EQU #5C4B -WORK_VAR EQU #5C4D -CHANS EQU #5C4F -CUR_CHL EQU #5C51 -BAS_PROG EQU #5C53 -NEXT_LINE EQU #5C55 -DATA_ADR EQU #5C57 -E_LINE EQU #5C59 -K_CUR EQU #5C5B -CH_ADR EQU #5C5D -SINT_ER_AD EQU #5C5F -WORK_SPACE EQU #5C61 -STK_BOT EQU #5C63 -STK_END EQU #5C65 -B_REG EQU #5C67 -MEM_CALC EQU #5C68 -FLAGS_2 EQU #5C6A -L_SCR_SIZE EQU #5C6B -AUTO_LST_L EQU #5C6C -OLD_PPC EQU #5C6E -OLD_S_PPC EQU #5C70 -FLG_INPUT EQU #5C71 -S_VAR_LEN EQU #5C72 -SINT_TB_ADR EQU #5C74 -RAND_SEED EQU #5C76 -FRAMES EQU #5C78 -UDG EQU #5C7B -X_Y_COORD EQU #5C7D -PRN_POS EQU #5C7F -ADR_PR_BUF EQU #5C80 -ECHO_E EQU #5C82 -SCR_PL_M EQU #5C84 -SCR_PL_L EQU #5C86 -SCR_POS_M EQU #5C88 -SCR_POS_L EQU #5C8A -SCROLL_ST EQU #5C8C -ATTR_P EQU #5C8D -MASK_P EQU #5C8E -ATTR_T EQU #5C8F -MASK_E EQU #5C90 -FLAGS_ATR EQU #5C91 -MEM_BOT EQU #5C92 -AUTO_5C9A EQU #5C9A -NMI_ADR EQU #5CB0 -TOP_CLEAR EQU #5CB2 -P_RAMTOP EQU #5CB4 -BEG_ADRESS EQU #5CB6 -RET_INS EQU #5CC2 -AUTO_5CC3 EQU #5CC3 -DISK_A EQU #5CC8 -DISK_B EQU #5CC9 -DISK_C EQU #5CCA -DISK_D EQU #5CCB -CAT_SEC EQU #5CCC -DRV_READY EQU #5CCD -RD_WR_COM EQU #5CCE -VAR_1 EQU #5CCF -AUTO_5CD1 EQU #5CD1 -AUTO_5CD2 EQU #5CD2 -AUTO_5CD3 EQU #5CD3 -AUTO_5CD5 EQU #5CD5 -DOS_ERROR EQU #5CD6 -MED_START EQU #5CD7 -DOS_CH_ADR EQU #5CD9 -MED_LEN EQU #5CDB -FL_NAME EQU #5CDD -FL_N_2 EQU #5CDF -FL_N_4 EQU #5CE1 -FL_N_6 EQU #5CE3 -FL_N_7 EQU #5CE4 -FL_TYPE EQU #5CE5 -FL_START EQU #5CE6 -FL_LEN EQU #5CE8 -START_CLUSTER EQU ZX_VARS.FL_LEN -FL_SIZE EQU #5CEA -FL_PLACE EQU #5CEB -VAR_2 EQU #5CED -INTERF_I EQU #5CEF -VAR_2_0 EQU #5CF1 -VAR_2_1 EQU #5CF2 -CONT_SEC EQU #5CF4 -CONT_TRK EQU #5CF5 -OPER_DISK EQU #5CF6 -DOS_FLAG EQU #5CF7 -DISK_1_FLG EQU #5CF8 -DISK_2_FLG EQU #5CF9 -TIME_A EQU #5CFA -TIME_B EQU #5CFB -TIME_C EQU #5CFC -TIME_D EQU #5CFD -COMAND_WG EQU #5CFE -SEC_NUM EQU #5CFF -CONT_BUF_ADR EQU #5D00 -WORK_2 EQU #5D02 -WORK_4 EQU #5D04 -S_NAME_NUM EQU #5D06 -N_DEL_FLS EQU #5D07 -FST_SYM_NAME EQU #5D08 -VAR_3 EQU #5D09 -BUF_FLAG EQU #5D0C -BAS_DOS_FLG EQU #5D0E -DOS_ERR_2 EQU #5D0F -ERR_3D00 EQU #5D10 -ADR_DOS_COM EQU #5D11 -ERR_SP_COPY EQU #5D13 -MSG_FLAG EQU #5D15 -PDOS_COPY EQU #5D16 -FLAG_BOOT EQU #5D17 -INT_1_VAR EQU #5D18 -CONT_DISK EQU #5D19 -ADR_RET EQU #5D1A -DOS_SP EQU #5D1C -FL_NUMBER EQU #5D1E -COM_LN_COPY EQU #5D20 -L_5D23 EQU #5D23 -BUFFER EQU #5D25 -AUTO_5D33 EQU #5D33 -CLEAR_SEC EQU #5E06 -CLEAR_TRK EQU #5E07 -TYPE_DISK EQU #5E08 -N_FILES EQU #5E09 -FREE_SEC EQU #5E0A -CODE_10H EQU #5E0C -DISK_MRK_1 EQU #5E0F -DISK_ALT_NM EQU #5E10 -N_DEL_FL EQU #5E19 -DISK_NAME EQU #5E1A -; -BUFER_RD EQU ZX_VARS.BUFFER ; tr-dos buffer -; -MENU_TBL: -.JUMP EQU #F6EA -.TEXT EQU #F6EC - ENDMODULE -;-----------------------------------------------------------------------; - - - MACRO RET_SLOT0 - LD A,0 - OUT (SLOT0),A - ENDM - - MACRO RET_SLOT1 - LD A,5 - OUT (SLOT1),A - ENDM - - MACRO RET_SLOT2 - LD A,2 - OUT (SLOT2),A - ENDM -; - MACRO RET_SLOT3 - LD A, 0 - OUT (SLOT3), A - ENDM -; - - MACRO CALL_48 adr - PUSH HL - LD HL, .ADR_R - PUSH HL - LD HL,SW_ROM - PUSH HL - LD HL,adr - JP JP_HL_48 -.ADR_R: - POP HL - ENDM - - MACRO CALL_48X adr - PUSH HL - LD HL,.ADR_R - EX (SP),HL - PUSH HL - LD HL,SW_ROM - EX (SP),HL - PUSH HL - LD HL,adr - EX (SP),HL - JP SW_ROM -.ADR_R: - ENDM - - MACRO RAMD_KEY - SUB 4 - DI - LD B,SYS_PAGE - LD C,SLOT3 - OUT (C),B - LD HL,RAMD_KEYS - ADD A,L - LD L,A - DEC L - LD (A_RAMD_VARS),HL - INC L - LD L, (HL) - RET_SLOT3 - EI - LD A, L - ENDM - -; MACRO DSS adr, dt -; IF (adr >= $) -; DUP ((adr - $) / 16) -; DB dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt -; EDUP -; DUP (adr - $) -; DB dt -; EDUP -; ELSE -; ASSERT 0, "Error memory relocation." -; ENDIF -; ENDM -; - - //////////////////////////////////////////////////////////////////////// MODULE ACEX DEFINE ACEX.RELOAD_STRING 'ACEX_30K_LOADING' diff --git a/constants/ZX_VARS.INC b/constants/ZX_VARS.INC new file mode 100644 index 0000000..299f274 --- /dev/null +++ b/constants/ZX_VARS.INC @@ -0,0 +1,169 @@ +;!FIXIT ----------------------------------------------------------------; +;Переменные спектрума + MODULE ZX_VARS +;ZX_VARS EQU #5C00 +PRINTER_BUFFER EQU #5B00 +SWAP_ROM_PRESENCE EQU #5B08 +COPY_P128 EQU #5B5C +TSTACK EQU #5BFF +; +K_STATE EQU #5C00 +KEY_TIME EQU #5C09 +REP_K_TYME EQU #5C10 +ZG EQU #5C36 +ERR_BEEP EQU #5C38 +KEY_BEEP EQU #5C39 +ERR_NR EQU #5C3A +FLAGS EQU #5C3B +TV_FLAG EQU #5C3C +ERR_SP EQU #5C3D +LIST_SP EQU #5C3F +MODE EQU #5C41 +NEW_PPC EQU #5C42 +NEW_S_PPC EQU #5C44 +PPC EQU #5C45 +SUB_PPC EQU #5C47 +BORDER EQU #5C48 +EDIT_PPC EQU #5C49 +BAS_VARS EQU #5C4B +WORK_VAR EQU #5C4D +CHANS EQU #5C4F +CUR_CHL EQU #5C51 +BAS_PROG EQU #5C53 +NEXT_LINE EQU #5C55 +DATA_ADR EQU #5C57 +E_LINE EQU #5C59 +K_CUR EQU #5C5B +CH_ADR EQU #5C5D +SINT_ER_AD EQU #5C5F +; +WORK_SPACE EQU #5C61 +.Size EQU #5D23 +; +STK_BOT EQU #5C63 +STK_END EQU #5C65 +B_REG EQU #5C67 +MEM_CALC EQU #5C68 +FLAGS_2 EQU #5C6A +SCR_SIZE EQU #5C6B +OLD_PPC EQU #5C6E +OLD_S_PPC EQU #5C70 +FLG_INPUT EQU #5C71 +S_VAR_LEN EQU #5C72 +SINT_TB_ADR EQU #5C74 +RAND_SEED EQU #5C76 +FRAMES EQU #5C78 +UDG EQU #5C7B +X_Y_COORD EQU #5C7D +PRN_POS EQU #5C7F +ADR_PR_BUF EQU #5C80 +ECHO_E EQU #5C82 +SCR_PL_M EQU #5C84 +SCR_PL_L EQU #5C86 +SCR_POS_M EQU #5C88 +SCR_POS_L EQU #5C8A +SCROLL_ST EQU #5C8C +ATTR_P EQU #5C8D +MASK_P EQU #5C8E +ATTR_T EQU #5C8F +MASK_E EQU #5C90 +FLAGS_ATR EQU #5C91 +MEM_BOT EQU #5C92 +AUTO_5C9A EQU #5C9A +NMI_ADR EQU #5CB0 +TOP_CLEAR EQU #5CB2 +P_RAMTOP EQU #5CB4 +BEG_ADRESS EQU #5CB6 +RET_INS EQU #5CC2 +AUTO_5CC3 EQU #5CC3 +DISK_A EQU #5CC8 +DISK_B EQU #5CC9 +DISK_C EQU #5CCA +DISK_D EQU #5CCB +CAT_SEC EQU #5CCC +DRV_READY EQU #5CCD +RD_WR_COM EQU #5CCE +VAR_1 EQU #5CCF +AUTO_5CD1 EQU #5CD1 +AUTO_5CD2 EQU #5CD2 +AUTO_5CD3 EQU #5CD3 +AUTO_5CD5 EQU #5CD5 +DOS_ERROR EQU #5CD6 +MED_START EQU #5CD7 +DOS_CH_ADR EQU #5CD9 +MED_LEN EQU #5CDB +FL_NAME EQU #5CDD +FL_N_2 EQU #5CDF +FL_N_4 EQU #5CE1 +FL_N_6 EQU #5CE3 +FL_N_7 EQU #5CE4 +FL_TYPE EQU #5CE5 +FL_START EQU #5CE6 +FL_LEN EQU #5CE8 +START_CLUSTER EQU ZX_VARS.FL_LEN +FL_SIZE EQU #5CEA +FL_PLACE EQU #5CEB +VAR_2 EQU #5CED +INTERF_I EQU #5CEF +VAR_2_0 EQU #5CF1 +VAR_2_1 EQU #5CF2 +CONT_SEC EQU #5CF4 +CONT_TRK EQU #5CF5 +OPER_DISK EQU #5CF6 +DOS_FLAG EQU #5CF7 +DISK_1_FLG EQU #5CF8 +DISK_2_FLG EQU #5CF9 +TIME_A EQU #5CFA +TIME_B EQU #5CFB +TIME_C EQU #5CFC +TIME_D EQU #5CFD +COMAND_WG EQU #5CFE +SEC_NUM EQU #5CFF +CONT_BUF_ADR EQU #5D00 +WORK_2 EQU #5D02 +WORK_4 EQU #5D04 +S_NAME_NUM EQU #5D06 +N_DEL_FLS EQU #5D07 +FST_SYM_NAME EQU #5D08 +VAR_3 EQU #5D09 +BUF_FLAG EQU #5D0C +BAS_DOS_FLG EQU #5D0E +DOS_ERR_2 EQU #5D0F +ERR_3D00 EQU #5D10 +ADR_DOS_COM EQU #5D11 +ERR_SP_COPY EQU #5D13 +MSG_FLAG EQU #5D15 +PDOS_COPY EQU #5D16 +FLAG_BOOT EQU #5D17 +INT_1_VAR EQU #5D18 +CONT_DISK EQU #5D19 +ADR_RET EQU #5D1A +DOS_SP EQU #5D1C +FL_NUMBER EQU #5D1E +COM_LN_COPY EQU #5D20 +BUFFER EQU #5D25 +AUTO_5D33 EQU #5D33 +CLEAR_SEC EQU #5E06 +CLEAR_TRK EQU #5E07 +TYPE_DISK EQU #5E08 +N_FILES EQU #5E09 +FREE_SEC EQU #5E0A +CODE_10H EQU #5E0C +DISK_MRK_1 EQU #5E0F +DISK_ALT_NM EQU #5E10 +N_DEL_FL EQU #5E19 +DISK_NAME EQU #5E1A +; +BUFER_RD EQU ZX_VARS.BUFFER ; tr-dos buffer +; +MENU_TBL: +.JUMP EQU #F6EA +.TEXT EQU #F6EC +; +; +PROG: +.SWAP_ROM EQU #5B00 +.MAKE_ROOM EQU #1655 +.TSTACK EQU #5BFF + ENDMODULE +;-----------------------------------------------------------------------; \ No newline at end of file diff --git a/macroses/macros.z80 b/macroses/macros.z80 index ce455f4..0b630ae 100644 --- a/macroses/macros.z80 +++ b/macroses/macros.z80 @@ -1,3 +1,86 @@ +/////////////////////////////// IVAN_MAK /////////////////////////////// + + MACRO RET_SLOT0 + LD A,0 + OUT (SLOT0),A + ENDM + + MACRO RET_SLOT1 + LD A,5 + OUT (SLOT1),A + ENDM + + MACRO RET_SLOT2 + LD A,2 + OUT (SLOT2),A + ENDM +; + MACRO RET_SLOT3 + LD A, 0 + OUT (SLOT3), A + ENDM +; + + MACRO CALL_48 adr + PUSH HL + LD HL, .ADR_R + PUSH HL + LD HL,SW_ROM + PUSH HL + LD HL,adr + JP JP_HL_48 +.ADR_R: + POP HL + ENDM + + MACRO CALL_48X adr + PUSH HL + LD HL,.ADR_R + EX (SP),HL + PUSH HL + LD HL,SW_ROM + EX (SP),HL + PUSH HL + LD HL,adr + EX (SP),HL + JP SW_ROM +.ADR_R: + ENDM + + MACRO RAMD_KEY + SUB 4 + DI + LD B,SYS_PAGE + LD C,SLOT3 + OUT (C),B + LD HL,RAMD_KEYS + ADD A,L + LD L,A + DEC L + LD (A_RAMD_VARS),HL + INC L + LD L, (HL) + RET_SLOT3 + EI + LD A, L + ENDM + +; MACRO DSS adr, dt +; IF (adr >= $) +; DUP ((adr - $) / 16) +; B dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt,dt +; EDUP +; DUP (adr - $) +; DB dt +; EDUP +; ELSE +; ASSERT 0, "Error memory relocation." +; ENDIF +; ENDM +; +//////////////////////////////////////////////////////////////////////// + + ;======================================= ; склеивает строку пути к файлу со строкой имени файла ; retname - имя дефайна содержащее путь и имя файла @@ -23,7 +106,9 @@ ;======================================= MACRO _mInfoBLOCK endAddr, filler - DISPLAY " Free ",/D,endAddr, " bytes at ",/H, $, " address." + IF endAddr > 0 + DISPLAY " Free bytes: ",/D,endAddr, " From ",/H, $, " to ",/H, endAddr+$," address." + ENDIF BLOCK endAddr,filler ENDM ;=======================================