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
;[BEGIN]
;//MODULE: KEYINTER Keyboard Scan Codes: Set 2
@ -877,6 +876,7 @@ INPCODE: LD D,L
LD E,0
BIT LANG_L,(IX+K_LOCK)
JP NZ,RUSCODE
;
LD A,(KEYCTRL)
AND 1<<L_SHIFT | 1<<R_SHIFT
JR NZ,.SHIFT
@ -887,15 +887,17 @@ INPCODE: LD D,L
RET NZ
LD D,L
BIT CAPS_L,(IX+K_LOCK)
LD BC,CAPSTAB
LD BC,ASCII_TABLES.CAPS_ENG
JR NZ,CONVERT.NO_SET
LD BC,NORMTAB
;
LD BC,ASCII_TABLES.ENGLISH
JR CONVERT.NO_SET
;
.SHIFT: LD BC,SHIFTAB
.SHIFT: LD BC,ASCII_TABLES.SHIFT_ENG
BIT CAPS_L,(IX+K_LOCK)
JR Z,CONVERT.SET
LD BC,SHF2TAB
;
LD BC,ASCII_TABLES.CAPS_SHIFT_ENG
CONVERT: ;
.SET: SET 7,D
.NO_SET: LD H,0
@ -906,6 +908,7 @@ CONVERT: ;
RUSCODE: LD A,(KEYCTRL)
AND 1<<L_SHIFT | 1<<R_SHIFT
JR NZ,.SHIFT
;
SET 7,D
BIT X_ALT,(IX+K_SHIFT)
RET NZ
@ -913,15 +916,17 @@ RUSCODE: LD A,(KEYCTRL)
RET NZ
LD D,L
BIT CAPS_L,(IX+K_LOCK)
LD BC,CAPSRUS
LD BC,ASCII_TABLES.CAPS_RUS
JR NZ,CONVERT.NO_SET
LD BC,NORMRUS
;
LD BC,ASCII_TABLES.RUSSIAN
JR CONVERT.NO_SET
;
.SHIFT: LD BC,SHIFRUS
.SHIFT: LD BC,ASCII_TABLES.SHIFT_RUS
BIT CAPS_L,(IX+K_LOCK)
JR Z,CONVERT.SET
LD BC,SHF2RUS
;
LD BC,ASCII_TABLES.CAPS_SHIFT_RUS
JR CONVERT.SET
;-----------------------------------------------------------------------
@ -929,32 +934,32 @@ RUSCODE: LD A,(KEYCTRL)
K_SETUP: INC B
DJNZ K_SND_R
; subfunc 0
KEYMAP: LD BC,ENDNORM-NORMTAB
KEYMAP: LD BC,ASCII_TABLES.Size
BIT 7,A
JR NZ,READMAP
;
LD DE,NORMTAB
LD DE,ASCII_TABLES.ENGLISH
OR A
JR Z,.LTAB
LD DE,SHIFTAB
LD DE,ASCII_TABLES.SHIFT_ENG
DEC A
JR Z,.LTAB
LD DE,CAPSTAB
LD DE,ASCII_TABLES.CAPS_ENG
DEC A
JR Z,.LTAB
LD DE,SHF2TAB
LD DE,ASCII_TABLES.CAPS_SHIFT_ENG
DEC A
JR Z,.LTAB
LD DE,NORMRUS
LD DE,ASCII_TABLES.RUSSIAN
DEC A
JR Z,.LTAB
LD DE,SHIFRUS
LD DE,ASCII_TABLES.SHIFT_RUS
DEC A
JR Z,.LTAB
LD DE,CAPSRUS
LD DE,ASCII_TABLES.CAPS_RUS
DEC A
JR Z,.LTAB
LD DE,SHF2RUS
LD DE,ASCII_TABLES.CAPS_SHIFT_RUS
DEC A
JR Z,.LTAB
;
@ -967,28 +972,28 @@ KEYMAP: LD BC,ENDNORM-NORMTAB
RET
;
READMAP: RES 7,A
LD DE,NORMTAB
LD DE,ASCII_TABLES.ENGLISH
OR A
JR Z,.RTAB
LD DE,SHIFTAB
LD DE,ASCII_TABLES.SHIFT_ENG
DEC A
JR Z,.RTAB
LD DE,CAPSTAB
LD DE,ASCII_TABLES.CAPS_ENG
DEC A
JR Z,.RTAB
LD DE,SHF2TAB
LD DE,ASCII_TABLES.CAPS_SHIFT_ENG
DEC A
JR Z,.RTAB
LD DE,NORMRUS
LD DE,ASCII_TABLES.RUSSIAN
DEC A
JR Z,.RTAB
LD DE,SHIFRUS
LD DE,ASCII_TABLES.SHIFT_RUS
DEC A
JR Z,.RTAB
LD DE,CAPSRUS
LD DE,ASCII_TABLES.CAPS_RUS
DEC A
JR Z,.RTAB
LD DE,SHF2RUS
LD DE,ASCII_TABLES.CAPS_SHIFT_RUS
DEC A
JR Z,.RTAB
XOR A ; ????? ¬®¦¥â âãâ ­ ¤® .INVALID_COMMAND?
@ -1273,86 +1278,95 @@ Esc EQU #1B
Bcs EQU #08
Tab EQU #09
Cps EQU #00
Spc EQU #20
;Spc EQU #20
Ent EQU #0D
;Standart ASCII tables
NORMTAB 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 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,#00,Spc,#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,#00,#00,#00,#00,#00,#00,#00
ENDNORM
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 Cps,"a","s","d","f","g","h","j","k","l",";","'",Ent
DB #00,"z","x","c","v","b","n","m",",",".","/",#00,'\' ;
DB #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,#00,#00,#00,#00,#00,#00,#00
.Size EQU $-ENGLISH : ASSERT .Size = Size, '-> Error! This table has wrong size!!!'
SHIFTAB DB "~",Esc,"!","@","#","$","%","^","&","*","(",")","_","+",Bcs
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 #00,"Z","X","C","V","B","N","M","<",">","?",#00,"|"
DB #00,#00,Spc,#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,#00,#00,#00,#00,#00,#00,#00
SHIFT_ENG: DB "~",Esc,"!","@","#","$","%","^","&","*","(",")","_","+",Bcs
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 #00,"Z","X","C","V","B","N","M","<",">","?",#00,"|"
DB #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,#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
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 #00,"Z","X","C","V","B","N","M",#2C,".","/",#00,#5C
DB #00,#00,Spc,#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,#00,#00,#00,#00,#00,#00,#00
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 Cps,"A","S","D","F","G","H","J","K","L",";","'",Ent
DB #00,"Z","X","C","V","B","N","M",",",".","/",#00,'\' ;
DB #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,#00,#00,#00,#00,#00,#00,#00
.Size EQU $-CAPS_ENG : ASSERT .Size = Size, '-> Error! This table has wrong size!!!'
SHF2TAB DB "~",Esc,"!","@","#","$","%","^","&","*","(",")","_","+",Bcs
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 #00,"z","x","c","v","b","n","m","<",">","?",#00,"|"
DB #00,#00,Spc,#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,#00,#00,#00,#00,#00,#00,#00
CAPS_SHIFT_ENG: DB "~",Esc,"!","@","#","$","%","^","&","*","(",")","_","+",Bcs
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 #00,"z","x","c","v","b","n","m","<",">","?",#00,"|"
DB #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,#00,#00,#00,#00,#00,#00,#00
.Size EQU $-CAPS_SHIFT_ENG : ASSERT .Size = Size, '-> Error! This table has wrong size!!!'
;Standart Russian tables
NORMRUS 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 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,#00,Spc,#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,#00,#00,#00,#00,#00,#00,#00
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 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,'\' ;
DB #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,#00,#00,#00,#00,#00,#00,#00
.Size EQU $-RUSSIAN : ASSERT .Size = Size, '-> Error! This table has wrong size!!!'
SHIFRUS DB #F0,Esc,"!",'"',"#","%",":",",",".",";","(",")","_","+",Bcs
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 #00,#9F,#97,#91,#8C,#88,#92,#9C,#81,#9E,#2C,#00,"|"
DB #00,#00,Spc,#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,#00,#00,#00,#00,#00,#00,#00
SHIFT_RUS: DB #F0,Esc,"!",'"',"#",";","%",":","?","*","(",")","_","+",Bcs
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 #00,#9F,#97,#91,#8C,#88,#92,#9C,#81,#9E,",",#00,"/"
DB #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,#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
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 #00,#9F,#97,#91,#8C,#88,#92,#9C,#81,#9E,".",#00,#5C
DB #00,#00,Spc,#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,#00,#00,#00,#00,#00,#00,#00
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 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,'\' ;
DB #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,#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
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 #00,#EF,#E7,#E1,#AC,#A8,#E2,#EC,#A1,#EE,#2C,#00,"|"
DB #00,#00,Spc,#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,#00,#00,#00,#00,#00,#00,#00
CAPS_SHIFT_RUS: DB #F1,Esc,"!",'"',"#",";","%",":","?","*","(",")","_","+",Bcs
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 #00,#EF,#E7,#E1,#AC,#A8,#E2,#EC,#A1,#EE,",",#00,"/"
DB #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,#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
;[END]
; ENDMODULE

View File

@ -1 +1 @@
67
68