From 82638cabee2e8b102c781f68eda77d78fbb502a6 Mon Sep 17 00:00:00 2001 From: Tolik <85737314+Tolik-Trek@users.noreply.github.com> Date: Fri, 14 Mar 2025 01:19:42 +1000 Subject: [PATCH] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=B1=D0=B0=D0=B3=20=D0=BF=D0=BE=D1=80=D1=87?= =?UTF-8?q?=D0=B8=20=D1=88=D1=80=D0=B8=D1=84=D1=82=D0=BE=D0=B2=20=D0=BF?= =?UTF-8?q?=D0=BE=D1=81=D0=BB=D0=B5=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=B3=D1=80=D0=B0?= =?UTF-8?q?=D1=84=D0=B8=D1=87=D0=B5=D1=81=D0=BA=D0=BE=D0=B3=D0=BE=20=D0=BE?= =?UTF-8?q?=D0=BA=D0=BD=D0=B0=20=D0=B2=20=D1=81=D1=82=D0=B0=D1=80=D0=BE?= =?UTF-8?q?=D0=B9=20(=D1=81=D0=BF=D0=B5=D0=BA=D1=82=D1=80=D1=83=D0=BC?= =?UTF-8?q?=D0=BE=D0=B2=D1=81=D0=BA=D0=BE=D0=B9)=20=D0=B0=D0=B4=D1=80?= =?UTF-8?q?=D0=B5=D1=81=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B2=20=D1=8D=D0=BA?= =?UTF-8?q?=D1=80=D0=B0=D0=BD=D0=B5=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DSS/API/SetVMod.asm | 35 ++++++++++++++++++++--------------- DSS/KEYINTER.ASM | 14 ++++++++------ DSS/build.txt | 2 +- Shared_Includes | 2 +- 4 files changed, 30 insertions(+), 23 deletions(-) diff --git a/DSS/API/SetVMod.asm b/DSS/API/SetVMod.asm index aef9699..1a85fa6 100644 --- a/DSS/API/SetVMod.asm +++ b/DSS/API/SetVMod.asm @@ -36,14 +36,14 @@ SETVMOD: CP %1000'0000 ; Установка граф. режимов .GRAPH: CALL SAVETXT AND #7F - JR Z,.G320_16 ; !TODO ? - пока отрабатывает как ошибка + JR Z,.G320_16c ; !TODO заменить на существующий режим DEC A - JR Z,.G320_56 + JR Z,.G320_256c DEC A - JR Z,.G640_16 + JR Z,.G640_16c ;DEC A - ;JP Z,.G640_56 ; !TODO ? - пока отрабатывает как ошибка -.G320_16: LD A,DSS_Error.sys.INVALID_VIDEO_MODE + ;JP Z,.G640_256c ; !TODO заменить на существующий режим +.G320_16c: LD A,DSS_Error.sys.INVALID_VIDEO_MODE SCF RET ; @@ -71,7 +71,7 @@ SETVMOD: CP %1000'0000 XOR A RET ; -.G320_56: PUSH BC +.G320_256c: PUSH BC LD HL,TAB_320x256_0 LD E,#11 CALL SETMODE @@ -79,7 +79,7 @@ SETVMOD: CP %1000'0000 LD E,#00 JP .SETMODE_END ; -.G640_16: PUSH BC +.G640_16c: PUSH BC LD HL,TAB_640x256_0 LD E,#11 CALL SETMODE @@ -96,10 +96,10 @@ VMODE: DB #03 ; ;02h - TEXT 40 x 32 (16 colors) ;03h - TEXT 80 x 32 (16 colors) -;80h - GRAF 320 x 256 (16 colors) +;80h - GRAF 320 x 256 (16 colors) ;!TODO занять другим ;81h - GRAF 320 x 256 (256 colors) ;82h - GRAF 640 x 256 (16 colors) -;83h - GRAF 640 x 256 (256 colors) UNUSED +;83h - GRAF 640 x 256 (256 colors) ;!TODO занять другим ;----------------------------------------------------------------------- SETMODE: PUSH DE LD DE,SYS_PAGE.SHARED_BUFFER_32b ; грязный хак. кидает данные в буфер служебной страницы биоса. @@ -140,20 +140,25 @@ SETMODE: PUSH DE ;+7 Y полож. в поле графики (в знакоместах) ScreenDescriptorTable EQU $ ; 80x32. текстовое, знакоместо 16x8, #0B - номер знакоген. -TAB_80x32 DB #28,#20,#00,#00,#1B,#00,#00,#00 ;1 +TAB_80x32 DB 40,32,0,0,%0001'1011,0,0,0 ;1 ; 40x32. текстовое, знакоместо 8x8, #0B - номер знакоген. -TAB_40x32 DB #28,#20,#00,#00,#3B,#00,#00,#00 ;2 +TAB_40x32 DB 40,32,0,0,%0011'1011,0,0,0 ;2 ; 640x256. графическое, 0-й экран -TAB_640x256_0 DB #28,#20,#00,#00,#00,#00,#00,#00 ;3 +TAB_640x256_0 DB 40,32,0,0,%0000'0000,0,0,0 ;3 ; 320x256. графическое, 0-й экран -TAB_320x256_0 DB #28,#20,#00,#00,#20,#00,#00,#00 ;4 +TAB_320x256_0 DB 40,32,0,0,%0010'0000,0,0,0 ;4 ; 640x256. графическое, 1-й экран -TAB_640x256_1 DB #28,#20,#00,#00,#40,#00,#28,#00 ;5 +TAB_640x256_1 DB 40,32,0,0,%0100'0000,0,40,0 ;5 ; 320x256. графическое, 1-й экран -TAB_320x256_1 DB #28,#20,#00,#00,#60,#00,#28,#00 ;6 +TAB_320x256_1 DB 40,32,0,0,%0110'0000,0,40,0 ;6 ScreenDescriptorTable.Size EQU ($ - ScreenDescriptorTable)/6 ;....................................................................... ; +/* +PIC_320X256_1: + DB 40,32,0,0,32,0,8,0 + DB 0, 0,0,0, 0,0,0,0 +*/ ;----------------------------------------------------------------------- ; Сохранить экран текст. режима. diff --git a/DSS/KEYINTER.ASM b/DSS/KEYINTER.ASM index 18535e4..ab2b08b 100644 --- a/DSS/KEYINTER.ASM +++ b/DSS/KEYINTER.ASM @@ -184,11 +184,13 @@ ECHOKEY: ;R01 ELSE ;------------------------------; -delay_curs: EQU 11 ; частота мигания курсора -INS_CUR_ZG: EQU #19 -CURSOR_ZG: EQU #1A -NORM_ZG: EQU #1B +;------; !FIXIT брать значения для знакогенератора из биоса? +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 +;------; ECHOKEY: CALL Cursor_On ; вкл. курсор, установить фокус на "Input Line" EI @@ -314,8 +316,8 @@ SETUP_CURSORS: ldir ld de,.buffer ; знакоген. ld c,BIOS.WIN_SET_ZG ; уст. знакоген. - rst ToBIOS - ret + jp ToBIOS + ;ret ; ENDIF ;------------------------------; diff --git a/DSS/build.txt b/DSS/build.txt index 978b4e8..a5c750f 100644 --- a/DSS/build.txt +++ b/DSS/build.txt @@ -1 +1 @@ -26 \ No newline at end of file +27 \ No newline at end of file diff --git a/Shared_Includes b/Shared_Includes index d22e7b9..7c03abc 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit d22e7b9aae7efe3d24bdf767e057abc51e37ea2d +Subproject commit 7c03abc82040df54cec2bc6701b0f602fa08fd26