From e17ef7d91889849c475613fdee15f79d344d2e4a Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Tue, 25 Mar 2025 01:05:24 +1000 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=BE=D0=B4=D0=BF=D0=B8=D0=BB=D0=B8?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=81=D0=BE=D0=B2=D0=BC=D0=B5?= =?UTF-8?q?=D1=81=D1=82=D0=B8=D0=BC=D0=BE=D1=81=D1=82=D0=B8=20=D0=BA=D1=83?= =?UTF-8?q?=D1=80=D1=81=D0=BE=D1=80=D0=B0=20=D1=81=20txt=2040x32?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DSS/API/SetVMod.asm | 8 +++++++- DSS/KEYINTER.ASM | 42 ++++++++++++++++++++++++++++-------------- DSS/build.txt | 2 +- SHELL/build.txt | 2 +- 4 files changed, 37 insertions(+), 17 deletions(-) diff --git a/DSS/API/SetVMod.asm b/DSS/API/SetVMod.asm index 1a85fa6..46b49fc 100644 --- a/DSS/API/SetVMod.asm +++ b/DSS/API/SetVMod.asm @@ -139,16 +139,22 @@ SETMODE: PUSH DE ;+6 X полож. в поле графики (в знакоместах) ;+7 Y полож. в поле графики (в знакоместах) ScreenDescriptorTable EQU $ + ; 80x32. текстовое, знакоместо 16x8, #0B - номер знакоген. TAB_80x32 DB 40,32,0,0,%0001'1011,0,0,0 ;1 + ; 40x32. текстовое, знакоместо 8x8, #0B - номер знакоген. TAB_40x32 DB 40,32,0,0,%0011'1011,0,0,0 ;2 + ; 640x256. графическое, 0-й экран TAB_640x256_0 DB 40,32,0,0,%0000'0000,0,0,0 ;3 + ; 320x256. графическое, 0-й экран TAB_320x256_0 DB 40,32,0,0,%0010'0000,0,0,0 ;4 + ; 640x256. графическое, 1-й экран TAB_640x256_1 DB 40,32,0,0,%0100'0000,0,40,0 ;5 + ; 320x256. графическое, 1-й экран TAB_320x256_1 DB 40,32,0,0,%0110'0000,0,40,0 ;6 ScreenDescriptorTable.Size EQU ($ - ScreenDescriptorTable)/6 @@ -182,7 +188,7 @@ SAVETXT: PUSH AF LD (BACKTXT.CURS),DE POP AF LD IX,#C000 - LD HL,#2050 + LD HL,#2050 ;!FIXIT если текстовое 40x32? OR A JR NZ,.SVTEXT1 LD L,#28 diff --git a/DSS/KEYINTER.ASM b/DSS/KEYINTER.ASM index ab2b08b..934dbf9 100644 --- a/DSS/KEYINTER.ASM +++ b/DSS/KEYINTER.ASM @@ -186,7 +186,7 @@ ECHOKEY: ;R01 ;------; !FIXIT брать значения для знакогенератора из биоса? -delay_curs: EQU 11 ; частота мигания курсора +delay_curs: EQU 11 ; частота мигания курсора INS_CUR_ZG: EQU #9B ; [x] 14/03/2025 был баг для графических экранов режима спектрума CURSOR_ZG: EQU #5B ; [x] 14/03/2025 был баг для графических экранов режима спектрума NORM_ZG: EQU #1B @@ -210,7 +210,7 @@ ECHOKEY: CALL Cursor_On ; AND A RET -Cursor: +Cursor: ;!TODO логичнее курсором моргать и шрифты менять из биоса же? .Flag+1: LD A,0 ; флаг курсора 00-нет/01-есть CPL LD (.Flag),A @@ -221,17 +221,26 @@ Cursor_On: LD C,BIOS.LP_GET_PLACE ; узн XOR A LD C,BIOS.WIN_GET_SYM ; получить символ RST ToBIOS + ; + LD A,%0010'0000 + AND B + LD (.char_size),A ; [ ] 24/03/2025 сохраняем тип квадратика 80/40 символов + ; LD BC,NORM_ZG*256+BIOS.WIN_PUT_SYM ; b=знакоген., с=символ на экран LD A,(Cursor.Flag) OR A - JR Z,.put_ + JR Z,.put LD B,INS_CUR_ZG ; блок LD A,(KEYFLAG) ; флаги клавы AND 1<