From 9f472521fdb693c42be675a7510e499c7d99d922 Mon Sep 17 00:00:00 2001 From: Anatoliy Belyanskiy Date: Fri, 1 Mar 2024 03:14:33 +1000 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=BA=D0=B8=20KEYSCAN?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/bios/rom/SETUP/KEY.asm | 43 +++++++++++++++++++++++++++++++---- src/bios/shared/RECOVERY.IMG | Bin 98304 -> 98304 bytes 2 files changed, 38 insertions(+), 5 deletions(-) diff --git a/src/bios/rom/SETUP/KEY.asm b/src/bios/rom/SETUP/KEY.asm index 2d8b358..cefab4d 100644 --- a/src/bios/rom/SETUP/KEY.asm +++ b/src/bios/rom/SETUP/KEY.asm @@ -170,8 +170,16 @@ KEYSCAN: LD IX,KEYFLAG RESCANN: IN A,(Z84.SIO.Ch_A.Ctrl) - BIT 0,A - RET Z + AND 1 + RET Z + ;[ ] 18/02/2024 проверка на переполнение буфера + ; A = 1 + ; reg 1 + OUT (Z84.SIO.Ch_A.Ctrl),A + IN A,(Z84.SIO.Ch_A.Ctrl) + AND %0010'0000 ; check receiver overrun error + JP NZ,Receiver_Overrun + ; IN A,(Z84.SIO.Ch_A.Data) CP #F0 JR Z,F0_KEY @@ -186,9 +194,12 @@ RESCANN: CALL SHIFTS RES FLAG_E0,(IX+KEYFLG) RES FLAG_E1,(IX+KEYFLG) - RET Z ;IT'S SHIFT KEY + ;[ ] 29/02/2024 выгребсти весь буфер + JR Z,RESCANN ;IT'S SHIFT KEY + ; RET Z ;IT'S SHIFT KEY + ; CALL INPCODE ;L - AT POS. CODE -.PUTCODE: + ;PUTCODE LD HL,#1C00 ;Caps Lock AND A SBC HL,DE @@ -733,4 +744,26 @@ BPP2: ; LD A,#62 ; OUT (Z84.SIO.Ch_A.Ctrl),A ; RET -;------------------------------;????? разобраться \ No newline at end of file +;------------------------------;????? разобраться + +;[ ] 18/02/2024 проверка на переполнение буфера +Receiver_Overrun: + ; empty the buffer + IN A,(Z84.SIO.Ch_A.Data) + IN A,(Z84.SIO.Ch_A.Ctrl) + RRCA + JR C,Receiver_Overrun + ; reg 0 - reset errors + LD A,%0011'0000 + OUT (Z84.SIO.Ch_A.Ctrl),A + ;!TODO при детекте переполнения буфера проца снять клавиши из порта #FE спектрума + ; + LD (IX+K_SHIFT),0 + LD (IX+KEYFLG),0 + ; + ; LD A,(HOST) + ; LD (HEAD),A + ; + AND A + RET +; \ No newline at end of file diff --git a/src/bios/shared/RECOVERY.IMG b/src/bios/shared/RECOVERY.IMG index 906f2f6e589e1cd2606519ca1fd071b8c04e7071..85d4ef0a6ddd656dcd6fbc7d378ee5c633825793 100755 GIT binary patch delta 7928 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 delta 7943 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 W9j;3L?hgKB*Uk7tdtTXtXZ$aVCsYUk