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 906f2f6..85d4ef0 100755 Binary files a/src/bios/shared/RECOVERY.IMG and b/src/bios/shared/RECOVERY.IMG differ