diff --git a/DSS/DSS-MAIN.ASM b/DSS/DSS-MAIN.ASM index 68f82ab..f7e7440 100644 --- a/DSS/DSS-MAIN.ASM +++ b/DSS/DSS-MAIN.ASM @@ -132,47 +132,46 @@ RST_0x30: JP INTMOUS ; ;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; ; -; -;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; -; <[MAIN INT]> ; - _mInfoBLOCK #38-$,#FF ; -RST_38: ; - JP RST_0x38 ; Этот джамп нужен, чтоб софты могли легко менять обработчик на свой. Костыльно. -RST_0x38: ; -INT_: PUSH AF ; - EX AF,AF' ; - PUSH AF ; - PUSH BC ; - PUSH DE ; - PUSH HL ; - EXX ; - PUSH BC ; - PUSH DE ; - PUSH HL ; - PUSH IX ; - PUSH IY ; - CALL KEYSCAN ; - LD C,#80 ; - RST ToDSS.Mouse ; - IFN CLASSIC_CURSOR ; - CALL cursor_interrupt; вектор обслуж. курсора ;!!!!! VASIL - ENDIF ; - POP IY ; - POP IX ; - POP HL ; - POP DE ; - POP BC ; - EXX ; - POP HL ; - POP DE ; - POP BC ; - POP AF ; - EX AF,AF' ; - POP AF ; - EI ; - RETI ; -;' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '; -; +//////////////////////////////////////////////////////////////////////// +; <[MAIN INT]> + _mInfoBLOCK #38-$,#FF +RST_38: ;для того, чтоб софты могли менять обработчик на свой. + JP RST_0x38 +RST_0x38: +INT_: PUSH AF + EX AF,AF' + PUSH AF + PUSH BC + PUSH DE + PUSH HL + EXX + PUSH BC + PUSH DE + PUSH HL + PUSH IX + PUSH IY + CALL KEYSCAN + ; LD C,Dss.Mouse.GetPackets + ; RST ToDSS.Mouse + CALL M_INT + IFN CLASSIC_CURSOR + CALL cursor_interrupt; вектор обслуж. курсора ;!!!!! VASIL + ENDIF + POP IY + POP IX + POP HL + POP DE + POP BC + EXX + POP HL + POP DE + POP BC + POP AF + EX AF,AF' + POP AF + EI + RETI +//////////////////////////////////////////////////////////////////////// ; NMI: RETN diff --git a/DSS/INTMOUSE.ASM b/DSS/INTMOUSE.ASM index 6002636..ba6bc48 100644 --- a/DSS/INTMOUSE.ASM +++ b/DSS/INTMOUSE.ASM @@ -628,16 +628,17 @@ READ_M: IN A,(PORT_MOUSE.Ctrl) RET Z ;[x] mouse freeeeezzzz - LD BC,#2000 + LD BC,MOUSE_READ_PORT_TIMEOUT ; -TST_01: IN A,(PORT_MOUSE.Ctrl) +.TST_01: + IN A,(PORT_MOUSE.Ctrl) RRCA ;[x] mouse freeeeezzzz JR C,.NXT DEC BC LD A,B OR C - JR NZ,TST_01 + JR NZ,.TST_01 RET ;JR NC,TST_01 ; @@ -649,17 +650,17 @@ TST_01: IN A,(PORT_MOUSE.Ctrl) RET NZ ;[x] mouse freeeeezzzz - LD BC,#2000 + LD BC,MOUSE_READ_PORT_TIMEOUT ; TST_02: IN A,(PORT_MOUSE.Ctrl) RRCA ;[x] mouse freeeeezzzz - JR C,.NXT - DEC BC - LD A,B - OR C - JR NZ,TST_02 - RET + JR C,.NXT + DEC BC + LD A,B + OR C + JR NZ,TST_02 + RET ;JR NC,TST_02 ; .NXT: IN A,(PORT_MOUSE.Data) @@ -692,9 +693,9 @@ TST_02: IN A,(PORT_MOUSE.Ctrl) RLCA RLCA RES 6,A - JR NC,STBU + JR NC,.STBU SET 6,A -STBU RLCA +.STBU: RLCA RLCA AND #03 LD (MB),A @@ -821,11 +822,12 @@ M_MODE LD (MODE_M),A JR Z,S320256 CP 2 JR Z,S640256 -UNKMODE XOR A ; ????? может тут надо .INVALID_COMMAND ? +UNKMODE: + XOR A ; ????? может тут надо .INVALID_COMMAND ? SCF RET -S320256 +S320256: LD HL,0 ;MIN X LD DE,319 ;MAX X CALL MS_HORZ @@ -835,7 +837,7 @@ S320256 XOR A RET -S640256 +S640256: LD HL,0 ;MIN X LD DE,639 ;MAX X CALL MS_HORZ @@ -846,7 +848,7 @@ S640256 RET ;Mouse Interrupt -M_INT IN A,(SLOT3) +M_INT: IN A,(SLOT3) LD B,A IN A,(PORT_Y) LD C,A @@ -867,25 +869,26 @@ M_REFR CALL CONTROL CONTROL CALL READ_M RET NC CALL MCORECT - LD A,#00 - LD (REDY),A + ;LD A,#00 + ; XOR A + ; LD (REDY),A RET REFRESH: .hide+1: LD A,#01 OR A RET NZ -REDY+1: LD A,#00 - ;????? почему закомментированно в оригинале? - ;OR A - ;RET NZ + ; +; REDY+1: LD A,#01 +; OR A +; RET NZ ; CALL RESTORE LD HL,(PIX_X) LD DE,(PIX_Y) CALL MOUSE - LD A,#FF - LD (REDY),A + ; LD A,#FF + ; LD (REDY),A RET MODE_M: DB #03 diff --git a/DSS/KEYINTER.ASM b/DSS/KEYINTER.ASM index f95f3ab..b502e82 100644 --- a/DSS/KEYINTER.ASM +++ b/DSS/KEYINTER.ASM @@ -352,10 +352,10 @@ TESTKEY: K_CLEAR: LD A,(HOST) LD (HEAD),A - LD A,#2F + LD A,Dss.WaitKey - 1 CP B JR NC,.error - LD A,#34 ;R02 + LD A,Dss.EDIT ;R02 CP B JR C,.error LD C,B @@ -434,10 +434,10 @@ FULL_BF: KEYSCAN: LD IX,KEYFLAG .RESCAN: - IN A,(COM_A) + IN A,(Z84.SIO.Ch_A.Ctrl) BIT 0,A RET Z - IN A,(DAT_A) + IN A,(Z84.SIO.Ch_A.Data) CP #F0 JR Z,FULL_BF.F0_KEY CP #E0 @@ -944,27 +944,24 @@ BPP2 DEC BC JR NZ,BEEP RET -COM_A EQU #19 ;!FIXIT sp2000.inc -DAT_A EQU #18 ;!FIXIT sp2000.inc - KINIT XOR A ;LD A,0 - OUT (COM_A),A + OUT (Z84.SIO.Ch_A.Ctrl),A INC A ;LD A,1 - OUT (COM_A),A + OUT (Z84.SIO.Ch_A.Ctrl),A XOR A ;LD A,0 ;#18 - OUT (COM_A),A + OUT (Z84.SIO.Ch_A.Ctrl),A LD A,3 - OUT (COM_A),A + OUT (Z84.SIO.Ch_A.Ctrl),A LD A,#C1 - OUT (COM_A),A + OUT (Z84.SIO.Ch_A.Ctrl),A LD A,4 - OUT (COM_A),A + OUT (Z84.SIO.Ch_A.Ctrl),A LD A,#07 ;#05 - OUT (COM_A),A + OUT (Z84.SIO.Ch_A.Ctrl),A LD A,5 - OUT (COM_A),A + OUT (Z84.SIO.Ch_A.Ctrl),A LD A,#62 - OUT (COM_A),A + OUT (Z84.SIO.Ch_A.Ctrl),A RET ;//MODULE: KEYINTER diff --git a/DSS/VIDEO.ASM b/DSS/VIDEO.ASM index ca7354a..5ff6b09 100644 --- a/DSS/VIDEO.ASM +++ b/DSS/VIDEO.ASM @@ -764,18 +764,18 @@ PRINT_INIT: ; клава XOR A ;LD A,0 - OUT (COM_A),A + OUT (Z84.SIO.Ch_A.Ctrl),A ;[x] 29/9/23 INC A - OUT (COM_A),A + OUT (Z84.SIO.Ch_A.Ctrl),A DEC A ; - OUT (COM_A),A + OUT (Z84.SIO.Ch_A.Ctrl),A LD A,5 - OUT (COM_A),A + OUT (Z84.SIO.Ch_A.Ctrl),A LD A,#62 ; bit 7 - Direction for Bufer (0), Bit 1 - Bufer Enable (1) - OUT (COM_A),A + OUT (Z84.SIO.Ch_A.Ctrl),A RET ;//MODULE: VIDEO ;[END] \ No newline at end of file diff --git a/DSS/build.txt b/DSS/build.txt index 7bfae05..da77ca6 100644 --- a/DSS/build.txt +++ b/DSS/build.txt @@ -1 +1 @@ -905 \ No newline at end of file +912 \ No newline at end of file diff --git a/DSS/defines.inc b/DSS/defines.inc index f5fd687..a74de48 100644 --- a/DSS/defines.inc +++ b/DSS/defines.inc @@ -8,7 +8,8 @@ ; ; - DEFINE MOUSE_COM_BAUD_4800 0 + DEFINE MOUSE_COM_BAUD 0 ; 1 - 2404, 2 - 4807, else - 1215 (default) + DEFINE MOUSE_READ_PORT_TIMEOUT 1280 ; ; @@ -92,7 +93,12 @@ HANDBUF.SIZE EQU 32 ; ;----------------------------------------------------; - IF MOUSE_COM_BAUD_4800 + + IF MOUSE_COM_BAUD = 1 +MOUSE_BAUD: +.multiplier_1 EQU #02 ; первый множитель = 2. 875000/Мн1*Мн2=2404 +.multiplier_2 EQU #B6 ; второй множитель = 182. 875000/Мн1*Мн2=2404 + ELSEIF MOUSE_COM_BAUD = 2 MOUSE_BAUD: .multiplier_1 EQU #04 ; первый множитель = 1. 875000/Мн1*Мн2=4807 .multiplier_2 EQU #B6 ; второй множитель = 182. 875000/Мн1*Мн2=4807 diff --git a/SHELL/Commands/CLS.ASM b/SHELL/Commands/CLS.ASM index 9888897..66acef9 100644 --- a/SHELL/Commands/CLS.ASM +++ b/SHELL/Commands/CLS.ASM @@ -5,49 +5,48 @@ ; Можно задать один аргумент - цвет экрана. ; Если аргумент не задан, исп. по-умолчанию #07. ;/////////////////////////////////////////////////// -cmd_cls:ex de,hl ; hl=ком-строка - ;ld de,T9186 ; буфер под параметр - ld de,work_buffer1; - push de - ld c,Dss.GSwitch ; выделить параметр ком-строки - RST ToDSS - pop hl - jp nc,invalid_param ; "Invalid parametr" (>1 парам.) - ld b,7 ; атрибут очистки по-умолчанию - ld a,(hl) - or a - jr z,cls_clear - call ascii2byte - jp c,invalid_param ; "Invalid parametr" - and 7 - ld b,a - inc hl - ld a,(hl) - or a - jr z,cls_clear - ld a,b - rlca - rlca - rlca - rlca - ld b,a - ld a,(hl) - call ascii2byte - jp c,invalid_param ; "Invalid parametr" - or b - ld b,a -cls_clear: - ld a,b - ld (color_screen),a ; атрибут - ld de,0 ; Y/X полож. - ld hl,#2050 ; Y/X размер - ld c,BIOS.LP_CLS_WIN ; очистить окно (выводом пробелов) - RST ToBIOS - ; уст. курсор в Home - ld de,0 ; Y/X полож. - ld c,Dss.Locate - RST ToDSS - ret +cmd_cls: ex de,hl ; hl=ком-строка + ;ld de,T9186 ; буфер под параметр + ld de,work_buffer1; + push de + ld c,Dss.GSwitch ; выделить параметр ком-строки + RST ToDSS + pop hl + jp nc,invalid_param ; "Invalid parametr" (>1 парам.) + ld b,7 ; атрибут очистки по-умолчанию + ld a,(hl) + or a + jr z,cls_clear + call ascii2byte + jp c,invalid_param ; "Invalid parametr" + and 7 + ld b,a + inc hl + ld a,(hl) + or a + jr z,cls_clear + ld a,b + rlca + rlca + rlca + rlca + ld b,a + ld a,(hl) + call ascii2byte + jp c,invalid_param ; "Invalid parametr" + or b + ld b,a +cls_clear: ld a,b + ld (color_screen),a ; атрибут + ld de,0 ; Y/X полож. + ld hl,#2050 ; Y/X размер + ld c,BIOS.LP_CLS_WIN ; очистить окно (выводом пробелов) + RST ToBIOS + ; уст. курсор в Home + ld de,0 ; Y/X полож. + ld c,Dss.Locate + RST ToDSS + ret ; ascii -> int diff --git a/SHELL/EDLINE.ASM b/SHELL/EDLINE.ASM index 7b8087f..60bfa00 100644 --- a/SHELL/EDLINE.ASM +++ b/SHELL/EDLINE.ASM @@ -471,10 +471,10 @@ EvComComb: cp #50 ; Ins, смена режима ввода jr z,change_insert_mode bit 5,b ; Ctrl бит - jr z,$+7 + jr z,.exit cp #4F+#80 ; Ctrl+Del, очистить историю команд jp z,clear_history - pop de +.exit: pop de ret ; Смена режима ввода diff --git a/SHELL/SHELL.ASM b/SHELL/SHELL.ASM index 4a5593e..8a37ce2 100644 --- a/SHELL/SHELL.ASM +++ b/SHELL/SHELL.ASM @@ -492,14 +492,14 @@ PDIGIT: ld de,10000 Restore_Screen: - PUSH AF - LD C,Dss.GetVMod - RST ToDSS - AND #80 - JR Z,.exit - LD BC,1 * 256 + Dss.SetVMod - LD A,Dss.SetVMod.txt80x32 - RST ToDSS + PUSH AF + LD C,Dss.GetVMod + RST ToDSS + CP #80 + JR C,.exit + LD BC,1 * 256 + Dss.SetVMod + LD A,Dss.SetVMod.txt80x32 + RST ToDSS .exit: POP AF RET diff --git a/Shared_Includes b/Shared_Includes index 9b22b7b..9a8cc2f 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit 9b22b7b05ab2b344b1778419d28da83ee74fb297 +Subproject commit 9a8cc2fa8438c6e27c72b60a7cfd3a2e3470b314