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