RUS keys fix

This commit is contained in:
Tolik Trek 2026-06-16 02:07:38 +10:00
parent f5eacf470b
commit 9235af1a05
2 changed files with 108 additions and 94 deletions

View File

@ -1,4 +1,3 @@
; MODULE KEYINTER ; MODULE KEYINTER
;[BEGIN] ;[BEGIN]
;//MODULE: KEYINTER Keyboard Scan Codes: Set 2 ;//MODULE: KEYINTER Keyboard Scan Codes: Set 2
@ -877,6 +876,7 @@ INPCODE: LD D,L
LD E,0 LD E,0
BIT LANG_L,(IX+K_LOCK) BIT LANG_L,(IX+K_LOCK)
JP NZ,RUSCODE JP NZ,RUSCODE
;
LD A,(KEYCTRL) LD A,(KEYCTRL)
AND 1<<L_SHIFT | 1<<R_SHIFT AND 1<<L_SHIFT | 1<<R_SHIFT
JR NZ,.SHIFT JR NZ,.SHIFT
@ -887,15 +887,17 @@ INPCODE: LD D,L
RET NZ RET NZ
LD D,L LD D,L
BIT CAPS_L,(IX+K_LOCK) BIT CAPS_L,(IX+K_LOCK)
LD BC,CAPSTAB LD BC,ASCII_TABLES.CAPS_ENG
JR NZ,CONVERT.NO_SET JR NZ,CONVERT.NO_SET
LD BC,NORMTAB ;
LD BC,ASCII_TABLES.ENGLISH
JR CONVERT.NO_SET JR CONVERT.NO_SET
; ;
.SHIFT: LD BC,SHIFTAB .SHIFT: LD BC,ASCII_TABLES.SHIFT_ENG
BIT CAPS_L,(IX+K_LOCK) BIT CAPS_L,(IX+K_LOCK)
JR Z,CONVERT.SET JR Z,CONVERT.SET
LD BC,SHF2TAB ;
LD BC,ASCII_TABLES.CAPS_SHIFT_ENG
CONVERT: ; CONVERT: ;
.SET: SET 7,D .SET: SET 7,D
.NO_SET: LD H,0 .NO_SET: LD H,0
@ -906,6 +908,7 @@ CONVERT: ;
RUSCODE: LD A,(KEYCTRL) RUSCODE: LD A,(KEYCTRL)
AND 1<<L_SHIFT | 1<<R_SHIFT AND 1<<L_SHIFT | 1<<R_SHIFT
JR NZ,.SHIFT JR NZ,.SHIFT
;
SET 7,D SET 7,D
BIT X_ALT,(IX+K_SHIFT) BIT X_ALT,(IX+K_SHIFT)
RET NZ RET NZ
@ -913,15 +916,17 @@ RUSCODE: LD A,(KEYCTRL)
RET NZ RET NZ
LD D,L LD D,L
BIT CAPS_L,(IX+K_LOCK) BIT CAPS_L,(IX+K_LOCK)
LD BC,CAPSRUS LD BC,ASCII_TABLES.CAPS_RUS
JR NZ,CONVERT.NO_SET JR NZ,CONVERT.NO_SET
LD BC,NORMRUS ;
LD BC,ASCII_TABLES.RUSSIAN
JR CONVERT.NO_SET JR CONVERT.NO_SET
; ;
.SHIFT: LD BC,SHIFRUS .SHIFT: LD BC,ASCII_TABLES.SHIFT_RUS
BIT CAPS_L,(IX+K_LOCK) BIT CAPS_L,(IX+K_LOCK)
JR Z,CONVERT.SET JR Z,CONVERT.SET
LD BC,SHF2RUS ;
LD BC,ASCII_TABLES.CAPS_SHIFT_RUS
JR CONVERT.SET JR CONVERT.SET
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
@ -929,32 +934,32 @@ RUSCODE: LD A,(KEYCTRL)
K_SETUP: INC B K_SETUP: INC B
DJNZ K_SND_R DJNZ K_SND_R
; subfunc 0 ; subfunc 0
KEYMAP: LD BC,ENDNORM-NORMTAB KEYMAP: LD BC,ASCII_TABLES.Size
BIT 7,A BIT 7,A
JR NZ,READMAP JR NZ,READMAP
; ;
LD DE,NORMTAB LD DE,ASCII_TABLES.ENGLISH
OR A OR A
JR Z,.LTAB JR Z,.LTAB
LD DE,SHIFTAB LD DE,ASCII_TABLES.SHIFT_ENG
DEC A DEC A
JR Z,.LTAB JR Z,.LTAB
LD DE,CAPSTAB LD DE,ASCII_TABLES.CAPS_ENG
DEC A DEC A
JR Z,.LTAB JR Z,.LTAB
LD DE,SHF2TAB LD DE,ASCII_TABLES.CAPS_SHIFT_ENG
DEC A DEC A
JR Z,.LTAB JR Z,.LTAB
LD DE,NORMRUS LD DE,ASCII_TABLES.RUSSIAN
DEC A DEC A
JR Z,.LTAB JR Z,.LTAB
LD DE,SHIFRUS LD DE,ASCII_TABLES.SHIFT_RUS
DEC A DEC A
JR Z,.LTAB JR Z,.LTAB
LD DE,CAPSRUS LD DE,ASCII_TABLES.CAPS_RUS
DEC A DEC A
JR Z,.LTAB JR Z,.LTAB
LD DE,SHF2RUS LD DE,ASCII_TABLES.CAPS_SHIFT_RUS
DEC A DEC A
JR Z,.LTAB JR Z,.LTAB
; ;
@ -967,28 +972,28 @@ KEYMAP: LD BC,ENDNORM-NORMTAB
RET RET
; ;
READMAP: RES 7,A READMAP: RES 7,A
LD DE,NORMTAB LD DE,ASCII_TABLES.ENGLISH
OR A OR A
JR Z,.RTAB JR Z,.RTAB
LD DE,SHIFTAB LD DE,ASCII_TABLES.SHIFT_ENG
DEC A DEC A
JR Z,.RTAB JR Z,.RTAB
LD DE,CAPSTAB LD DE,ASCII_TABLES.CAPS_ENG
DEC A DEC A
JR Z,.RTAB JR Z,.RTAB
LD DE,SHF2TAB LD DE,ASCII_TABLES.CAPS_SHIFT_ENG
DEC A DEC A
JR Z,.RTAB JR Z,.RTAB
LD DE,NORMRUS LD DE,ASCII_TABLES.RUSSIAN
DEC A DEC A
JR Z,.RTAB JR Z,.RTAB
LD DE,SHIFRUS LD DE,ASCII_TABLES.SHIFT_RUS
DEC A DEC A
JR Z,.RTAB JR Z,.RTAB
LD DE,CAPSRUS LD DE,ASCII_TABLES.CAPS_RUS
DEC A DEC A
JR Z,.RTAB JR Z,.RTAB
LD DE,SHF2RUS LD DE,ASCII_TABLES.CAPS_SHIFT_RUS
DEC A DEC A
JR Z,.RTAB JR Z,.RTAB
XOR A ; ????? ¬®¦¥â âãâ ­ ¤® .INVALID_COMMAND? XOR A ; ????? ¬®¦¥â âãâ ­ ¤® .INVALID_COMMAND?
@ -1273,86 +1278,95 @@ Esc EQU #1B
Bcs EQU #08 Bcs EQU #08
Tab EQU #09 Tab EQU #09
Cps EQU #00 Cps EQU #00
Spc EQU #20 ;Spc EQU #20
Ent EQU #0D Ent EQU #0D
;Standart ASCII tables ;Standart ASCII tables
NORMTAB DB "`",Esc,"1","2","3","4","5","6","7","8","9","0","-","=",Bcs MODULE ASCII_TABLES
Size EQU 90 ; <20> §¬¥à «î¡®© â ¡«¨æë
ENGLISH: DB "`",Esc,"1","2","3","4","5","6","7","8","9","0","-","=",Bcs
DB Tab,"q","w","e","r","t","y","u","i","o","p","[","]" DB Tab,"q","w","e","r","t","y","u","i","o","p","[","]"
DB Cps,"a","s","d","f","g","h","j","k","l",";","'",Ent DB Cps,"a","s","d","f","g","h","j","k","l",";","'",Ent
DB #00,"z","x","c","v","b","n","m",#2C,".","/",#00,#5C DB #00,"z","x","c","v","b","n","m",",",".","/",#00,'\' ;
DB #00,#00,Spc,#00,#00 DB #00,#00," ",#00,#00
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00 DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
DB #00,#00,#00,"/","*","-","+",Ent,#00 DB #00,#00,#00,"/","*","-","+",Ent,#00
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00 DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00
ENDNORM .Size EQU $-ENGLISH : ASSERT .Size = Size, '-> Error! This table has wrong size!!!'
SHIFTAB DB "~",Esc,"!","@","#","$","%","^","&","*","(",")","_","+",Bcs SHIFT_ENG: DB "~",Esc,"!","@","#","$","%","^","&","*","(",")","_","+",Bcs
DB Tab,"Q","W","E","R","T","Y","U","I","O","P","{","}" DB Tab,"Q","W","E","R","T","Y","U","I","O","P","{","}"
DB Cps,"A","S","D","F","G","H","J","K","L",":",#22,Ent DB Cps,"A","S","D","F","G","H","J","K","L",":",#22,Ent
DB #00,"Z","X","C","V","B","N","M","<",">","?",#00,"|" DB #00,"Z","X","C","V","B","N","M","<",">","?",#00,"|"
DB #00,#00,Spc,#00,#00 DB #00,#00," ",#00,#00
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00 DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
DB #00,#00,#00,"/","*","-","+",Ent,#00 DB #00,#00,#00,"/","*","-","+",Ent,#00
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00 DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00
.Size EQU $-SHIFT_ENG : ASSERT .Size = Size, '-> Error! This table has wrong size!!!'
CAPSTAB DB "`",Esc,"1","2","3","4","5","6","7","8","9","0","-","=",Bcs CAPS_ENG: DB "`",Esc,"1","2","3","4","5","6","7","8","9","0","-","=",Bcs
DB Tab,"Q","W","E","R","T","Y","U","I","O","P","[","]" DB Tab,"Q","W","E","R","T","Y","U","I","O","P","[","]"
DB Cps,"A","S","D","F","G","H","J","K","L",";","'",Ent DB Cps,"A","S","D","F","G","H","J","K","L",";","'",Ent
DB #00,"Z","X","C","V","B","N","M",#2C,".","/",#00,#5C DB #00,"Z","X","C","V","B","N","M",",",".","/",#00,'\' ;
DB #00,#00,Spc,#00,#00 DB #00,#00," ",#00,#00
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00 DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
DB #00,#00,#00,"/","*","-","+",Ent,#00 DB #00,#00,#00,"/","*","-","+",Ent,#00
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00 DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00
.Size EQU $-CAPS_ENG : ASSERT .Size = Size, '-> Error! This table has wrong size!!!'
SHF2TAB DB "~",Esc,"!","@","#","$","%","^","&","*","(",")","_","+",Bcs CAPS_SHIFT_ENG: DB "~",Esc,"!","@","#","$","%","^","&","*","(",")","_","+",Bcs
DB Tab,"q","w","e","r","t","y","u","i","o","p","{","}" DB Tab,"q","w","e","r","t","y","u","i","o","p","{","}"
DB Cps,"a","s","d","f","g","h","j","k","l",":",#22,Ent DB Cps,"a","s","d","f","g","h","j","k","l",":",#22,Ent
DB #00,"z","x","c","v","b","n","m","<",">","?",#00,"|" DB #00,"z","x","c","v","b","n","m","<",">","?",#00,"|"
DB #00,#00,Spc,#00,#00 DB #00,#00," ",#00,#00
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00 DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
DB #00,#00,#00,"/","*","-","+",Ent,#00 DB #00,#00,#00,"/","*","-","+",Ent,#00
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00 DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00
.Size EQU $-CAPS_SHIFT_ENG : ASSERT .Size = Size, '-> Error! This table has wrong size!!!'
;Standart Russian tables ;Standart Russian tables
NORMRUS DB #F1,Esc,"1","2","3","4","5","6","7","8","9","0","-","=",Bcs RUSSIAN: DB #F1,Esc,"1","2","3","4","5","6","7","8","9","0","-","=",Bcs
DB Tab,#A9,#E6,#E3,#AA,#A5,#AD,#A3,#E8,#E9,#A7,#E5,#EA DB Tab,#A9,#E6,#E3,#AA,#A5,#AD,#A3,#E8,#E9,#A7,#E5,#EA
DB Cps,#E4,#EB,#A2,#A0,#AF,#E0,#AE,#AB,#A4,#A6,#ED,Ent DB Cps,#E4,#EB,#A2,#A0,#AF,#E0,#AE,#AB,#A4,#A6,#ED,Ent
DB #00,#EF,#E7,#E1,#AC,#A8,#E2,#EC,#A1,#EE,".",#00,#5C DB #00,#EF,#E7,#E1,#AC,#A8,#E2,#EC,#A1,#EE,".",#00,'\' ;
DB #00,#00,Spc,#00,#00 DB #00,#00," ",#00,#00
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00 DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
DB #00,#00,#00,"/","*","-","+",Ent,#00 DB #00,#00,#00,"/","*","-","+",Ent,#00
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00 DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00
.Size EQU $-RUSSIAN : ASSERT .Size = Size, '-> Error! This table has wrong size!!!'
SHIFRUS DB #F0,Esc,"!",'"',"#","%",":",",",".",";","(",")","_","+",Bcs SHIFT_RUS: DB #F0,Esc,"!",'"',"#",";","%",":","?","*","(",")","_","+",Bcs
DB Tab,#89,#96,#93,#8A,#85,#8D,#83,#98,#99,#87,#95,#9A DB Tab,#89,#96,#93,#8A,#85,#8D,#83,#98,#99,#87,#95,#9A
DB Cps,#94,#9B,#82,#80,#8F,#90,#8E,#8B,#84,#86,#9D,Ent DB Cps,#94,#9B,#82,#80,#8F,#90,#8E,#8B,#84,#86,#9D,Ent
DB #00,#9F,#97,#91,#8C,#88,#92,#9C,#81,#9E,#2C,#00,"|" DB #00,#9F,#97,#91,#8C,#88,#92,#9C,#81,#9E,",",#00,"/"
DB #00,#00,Spc,#00,#00 DB #00,#00," ",#00,#00
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00 DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
DB #00,#00,#00,"/","*","-","+",Ent,#00 DB #00,#00,#00,"/","*","-","+",Ent,#00
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00 DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00
.Size EQU $-SHIFT_RUS : ASSERT .Size = Size, '-> Error! This table has wrong size!!!'
CAPSRUS DB #F0,Esc,"1","2","3","4","5","6","7","8","9","0","-","=",Bcs CAPS_RUS: DB #F0,Esc,"1","2","3","4","5","6","7","8","9","0","-","=",Bcs
DB Tab,#89,#96,#93,#8A,#85,#8D,#83,#98,#99,#87,#95,#9A DB Tab,#89,#96,#93,#8A,#85,#8D,#83,#98,#99,#87,#95,#9A
DB Cps,#94,#9B,#82,#80,#8F,#90,#8E,#8B,#84,#86,#9D,Ent DB Cps,#94,#9B,#82,#80,#8F,#90,#8E,#8B,#84,#86,#9D,Ent
DB #00,#9F,#97,#91,#8C,#88,#92,#9C,#81,#9E,".",#00,#5C DB #00,#9F,#97,#91,#8C,#88,#92,#9C,#81,#9E,".",#00,'\' ;
DB #00,#00,Spc,#00,#00 DB #00,#00," ",#00,#00
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00 DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
DB #00,#00,#00,"/","*","-","+",Ent,#00 DB #00,#00,#00,"/","*","-","+",Ent,#00
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00 DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00
.Size EQU $-CAPS_RUS : ASSERT .Size = Size, '-> Error! This table has wrong size!!!'
SHF2RUS DB #F1,Esc,"!",'"',"#","%",":",",",".",";","(",")","_","+",Bcs CAPS_SHIFT_RUS: DB #F1,Esc,"!",'"',"#",";","%",":","?","*","(",")","_","+",Bcs
DB Tab,#A9,#E6,#E3,#AA,#A5,#AD,#A3,#E8,#E9,#A7,#E5,#EA DB Tab,#A9,#E6,#E3,#AA,#A5,#AD,#A3,#E8,#E9,#A7,#E5,#EA
DB Cps,#E4,#EB,#A2,#A0,#AF,#E0,#AE,#AB,#A4,#A6,#ED,Ent DB Cps,#E4,#EB,#A2,#A0,#AF,#E0,#AE,#AB,#A4,#A6,#ED,Ent
DB #00,#EF,#E7,#E1,#AC,#A8,#E2,#EC,#A1,#EE,#2C,#00,"|" DB #00,#EF,#E7,#E1,#AC,#A8,#E2,#EC,#A1,#EE,",",#00,"/"
DB #00,#00,Spc,#00,#00 DB #00,#00," ",#00,#00
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00 DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00
DB #00,#00,#00,"/","*","-","+",Ent,#00 DB #00,#00,#00,"/","*","-","+",Ent,#00
DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00 DB #00,#00,#00,#00,#00,#00,#00,#00,#00,#00
.Size EQU $-CAPS_SHIFT_RUS : ASSERT .Size = Size, '-> Error! This table has wrong size!!!'
ENDMODULE ; ASCII_TABLES
;================================ ;================================
;//MODULE: KEYINTER ;//MODULE: KEYINTER
;[END] ;[END]
; ENDMODULE ; ENDMODULE

View File

@ -1 +1 @@
67 68