mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31:47 +03:00
параметр компиляции для сочетания клавиш на переключение языка раскладки ctrl+space или shift+ctrl
This commit is contained in:
parent
32a1547722
commit
ff2f2b9941
@ -148,7 +148,7 @@ confirm_flag+*: ld a,0
|
|||||||
; § ¯à®á¨âì æ¥«¥¢®© ¤¨áª
|
; § ¯à®á¨âì æ¥«¥¢®© ¤¨áª
|
||||||
ld a,(disk) ; § ¤ ë© ®¬¥à ¤¨áª
|
ld a,(disk) ; § ¤ ë© ®¬¥à ¤¨áª
|
||||||
add a,'A'
|
add a,'A'
|
||||||
ld (lett2),a
|
ld (messages.lett2),a
|
||||||
ld a,5 ; ¨¤¥ªá áâப¨ "Insert destination disk..."
|
ld a,5 ; ¨¤¥ªá áâப¨ "Insert destination disk..."
|
||||||
call print_string
|
call print_string
|
||||||
ld bc,3035h ; ¦¤¥¬ ¦ â¨ï ª« ¢¨è¨
|
ld bc,3035h ; ¦¤¥¬ ¦ â¨ï ª« ¢¨è¨
|
||||||
@ -198,7 +198,7 @@ ok_write1: ;
|
|||||||
;
|
;
|
||||||
ld a,(disk) ; § ¤ ë© ®¬¥à ¤¨áª
|
ld a,(disk) ; § ¤ ë© ®¬¥à ¤¨áª
|
||||||
add a,'A'
|
add a,'A'
|
||||||
ld (lett1),a
|
ld (messages.lett1),a
|
||||||
ld a,1 ; ¨¤¥ªá áâப¨ "System installed on disk "
|
ld a,1 ; ¨¤¥ªá áâப¨ "System installed on disk "
|
||||||
call print_string
|
call print_string
|
||||||
ld a,(confirm_flag)
|
ld a,(confirm_flag)
|
||||||
@ -209,7 +209,7 @@ ok_write1: ;
|
|||||||
cp 2
|
cp 2
|
||||||
jr nc,exit-1 ; ¥ ¤¨áª®¢®¤ë
|
jr nc,exit-1 ; ¥ ¤¨áª®¢®¤ë
|
||||||
add a,'A'
|
add a,'A'
|
||||||
ld (lett3),a
|
ld (messages.lett3),a
|
||||||
ld a,6 ; ¨¤¥ªá áâப¨ "Insert system disk..."
|
ld a,6 ; ¨¤¥ªá áâப¨ "Insert system disk..."
|
||||||
call print_string
|
call print_string
|
||||||
ld bc,3035h ; ¦¤¥¬ ¦ â¨ï ª« ¢¨è¨
|
ld bc,3035h ; ¦¤¥¬ ¦ â¨ï ª« ¢¨è¨
|
||||||
@ -518,41 +518,39 @@ id_mem: db -1 ;
|
|||||||
;
|
;
|
||||||
; á®®¡é¥¨ï
|
; á®®¡é¥¨ï
|
||||||
messages: db 0
|
messages: db 0
|
||||||
db 0Dh,0Ah,"Boot and System files Installer v" ;0
|
db "\r\nBoot and System files Installer v" ;0
|
||||||
db major_version + '0','.'
|
db major_version + '0','.'
|
||||||
db (minor_version / 10) + '0',(minor_version % 10) + '0','.'
|
db (minor_version / 10) + '0',(minor_version % 10) + '0','.'
|
||||||
db 0Dh,0Ah,0Ah
|
db "\r\n\nCopyright (c) 2006-2022 Vasil Ivanov."
|
||||||
db "Copyright (c) 2006-2022 Vasil Ivanov."
|
db "\r\n\nCopyright (c) 2023 Sprinter Team."
|
||||||
db 0Dh,0Ah,0Ah
|
db "\r\n\n",0
|
||||||
db "Copyright (c) 2023 Sprinter Team."
|
|
||||||
db 0Dh,0Ah,0Ah,0
|
|
||||||
;
|
;
|
||||||
db "System successfully installed on disk " ;1
|
db "System successfully installed on disk " ;1
|
||||||
lett1: db "X:",0Dh,0Ah,0Ah,0
|
.lett1: db "X:\r\n\n",0
|
||||||
;
|
;
|
||||||
db "Installing boot loader...",0Dh,0Ah,0Ah,0 ;2
|
db "Installing boot loader...\r\n\n",0 ;2
|
||||||
db "Writing system files...",0Dh,0Ah,0Ah,0 ;3
|
db "Writing system files...\r\n\n",0 ;3
|
||||||
;
|
;
|
||||||
db "Syntax: SYS X:",0Dh,0Ah ;4
|
db "Syntax: SYS X:\r\n" ;4
|
||||||
db " where X: - drive letter (A..Z)",0Dh,0Ah,0Ah,0
|
db " where X: - drive letter (A..Z)\r\n\n",0
|
||||||
;
|
;
|
||||||
db "Insert destination disk in drive " ;5
|
db "Insert destination disk in drive " ;5
|
||||||
lett2: db "X:",0Dh,0Ah
|
.lett2: db "X:\r\n"
|
||||||
db "and strike any key when ready ...",0Dh,0Ah,0Ah,0
|
db "and strike any key when ready ...\r\n\n",0
|
||||||
;
|
;
|
||||||
db "Insert system disk in drive " ;6
|
db "Insert system disk in drive " ;6
|
||||||
lett3: db "X:",0Dh,0Ah
|
.lett3: db "X:\r\n"
|
||||||
db "and strike any key when ready ...",0Dh,0Ah,0Ah,0
|
db "and strike any key when ready ...\r\n\n",0
|
||||||
;
|
;
|
||||||
db "Can't install boot on this disk",0Dh,0Ah,0Ah,0 ;7
|
db "Can't install boot on this disk\r\n\n",0 ;7
|
||||||
db "Invalid drive specification",0Dh,0Ah,0Ah,0 ;8
|
db "Invalid drive specification\r\n\n",0 ;8
|
||||||
db " Error: Can't open file",0Dh,0Ah,0Ah,0 ;9
|
db " Error: Can't open file\r\n\n",0 ;9
|
||||||
db " Error: Can't allocate memory",0Dh,0Ah,0Ah,0 ;10
|
db " Error: Can't allocate memory\r\n\n",0 ;10
|
||||||
db " Error: Need DOS version 1.70.811 or higher",0Dh,0Ah,0Ah,0 ;11
|
db " Error: Need DOS version 1.70.811 or higher\r\n\n",0 ;11
|
||||||
db " Error: Reading error",0Dh,0Ah,0Ah,0 ;12
|
db " Error: Reading error\r\n\n",0 ;12
|
||||||
db " Error: Can't create file",0Dh,0Ah,0Ah,0 ;13
|
db " Error: Can't create file\r\n\n",0 ;13
|
||||||
db " Error: Writing error",0Dh,0Ah,0Ah,0 ;14
|
db " Error: Writing error\r\n\n",0 ;14
|
||||||
endmess: db 0
|
.endmess: db 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -566,7 +564,7 @@ print_string: call get_string ;
|
|||||||
|
|
||||||
; ¯®¨áª áâப¨ ¯® ¥¥ ¨¤¥ªáã ¢ 'a'
|
; ¯®¨áª áâப¨ ¯® ¥¥ ¨¤¥ªáã ¢ 'a'
|
||||||
get_string: ld hl,messages ; ᯨ᮪ ¬¥áá £ ¤«ï ¨¤¥ªá. ¤®áâã¯
|
get_string: ld hl,messages ; ᯨ᮪ ¬¥áá £ ¤«ï ¨¤¥ªá. ¤®áâã¯
|
||||||
ld bc,endmess-messages ; à §¬¥à ᯨáª
|
ld bc,messages.endmess - messages ; à §¬¥à ᯨáª
|
||||||
inc a
|
inc a
|
||||||
ex af,af'
|
ex af,af'
|
||||||
xor a
|
xor a
|
||||||
|
|||||||
@ -67,6 +67,7 @@
|
|||||||
include 'API/GSwitch.asm'
|
include 'API/GSwitch.asm'
|
||||||
include 'API/Environ.ASM'
|
include 'API/Environ.ASM'
|
||||||
include 'API/Lib_Sub.asm'
|
include 'API/Lib_Sub.asm'
|
||||||
|
include "API/EXECUTE.ASM"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -613,20 +613,24 @@ FREE_PROCESS_FMs:
|
|||||||
LD A,(TASK)
|
LD A,(TASK)
|
||||||
.loop: ADD IY,DE
|
.loop: ADD IY,DE
|
||||||
CP (IY+_sFM.TASK_NUM)
|
CP (IY+_sFM.TASK_NUM)
|
||||||
CALL Z,.CLOSE
|
JR NZ,.next
|
||||||
DJNZ .loop
|
; close fm
|
||||||
RET
|
|
||||||
;
|
|
||||||
.CLOSE: PUSH IY
|
|
||||||
PUSH DE
|
|
||||||
PUSH AF
|
PUSH AF
|
||||||
|
XOR A
|
||||||
|
OR (IY+_sFM.TASK_NUM)
|
||||||
|
JR Z,.skip
|
||||||
|
PUSH IY
|
||||||
|
PUSH DE
|
||||||
LD A,FMCOUNT+1
|
LD A,FMCOUNT+1
|
||||||
SUB B
|
SUB B
|
||||||
CALL CLOSE_FN
|
CALL CLOSE_FN
|
||||||
POP AF
|
|
||||||
POP DE
|
POP DE
|
||||||
POP IY
|
POP IY
|
||||||
|
.skip: POP AF
|
||||||
|
;
|
||||||
|
.next: DJNZ .loop
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
@ -42,11 +42,32 @@ FM_BUF: _sFM
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
; ¢ë室¥ ¡¥§ ®è¨¡®ª IY 㪠§ë¢ ¥â ä ©«®¢ë© ¬ ¨¯ã«ïâ®à
|
; ¢ë室¥ ¡¥§ ®è¨¡®ª IY 㪠§ë¢ ¥â ä ©«®¢ë© ¬ ¨¯ã«ïâ®à
|
||||||
MACRO _mFM_FIND
|
; MACRO _mFM_FIND
|
||||||
CP FMCOUNT+1
|
; CP FMCOUNT+1
|
||||||
JR NC,ABS_FM
|
; CCF
|
||||||
PUSH DE
|
; RET C
|
||||||
|
; PUSH DE
|
||||||
|
|
||||||
|
; LD IY,CORE_BUFFERS.FM_BUF
|
||||||
|
; LD DE,CORE_BUFFERS.FM_BUF.Size
|
||||||
|
; AND A
|
||||||
|
; JR Z,.endLoop
|
||||||
|
; .loop: ADD IY,DE
|
||||||
|
; DEC A
|
||||||
|
; JR NZ,.loop
|
||||||
|
; .endLoop:
|
||||||
|
; POP DE
|
||||||
|
; ; A=0
|
||||||
|
; OR (IY) ;+00 NAME
|
||||||
|
; RET
|
||||||
|
; ENDM
|
||||||
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
; ¢ë室¥ ¡¥§ ®è¨¡®ª IY 㪠§ë¢ ¥â ä ©«®¢ë© ¬ ¨¯ã«ïâ®à
|
||||||
|
FM_FIND: CP FMCOUNT+1
|
||||||
|
JR NC,.error
|
||||||
|
;
|
||||||
|
PUSH DE
|
||||||
LD IY,CORE_BUFFERS.FM_BUF
|
LD IY,CORE_BUFFERS.FM_BUF
|
||||||
LD DE,CORE_BUFFERS.FM_BUF.Size
|
LD DE,CORE_BUFFERS.FM_BUF.Size
|
||||||
AND A
|
AND A
|
||||||
@ -54,26 +75,33 @@ FM_BUF: _sFM
|
|||||||
.loop: ADD IY,DE
|
.loop: ADD IY,DE
|
||||||
DEC A
|
DEC A
|
||||||
JR NZ,.loop
|
JR NZ,.loop
|
||||||
.endLoop:
|
.endLoop: POP DE
|
||||||
POP DE
|
|
||||||
; A=0
|
; A=0
|
||||||
OR (IY) ;+00 NAME
|
OR (IY) ;+00 NAME
|
||||||
ENDM
|
RET
|
||||||
////////////////////////////////////////////////////////////////////////
|
.error: XOR A
|
||||||
|
LD A,DSS_Error.sys.INVALID_HANDLE
|
||||||
|
RET
|
||||||
|
|
||||||
SET_FM: _mFM_FIND
|
SET_FM: CALL FM_FIND
|
||||||
LD A,DSS_Error.sys.NO_ERROR
|
; error
|
||||||
RET NZ
|
;LD A,DSS_Error.sys.INVALID_HANDLE
|
||||||
ABS_FM LD A,DSS_Error.sys.INVALID_HANDLE
|
; CF = 1
|
||||||
SCF
|
SCF
|
||||||
|
RET Z
|
||||||
|
; no error
|
||||||
|
XOR A ;LD A,DSS_Error.sys.NO_ERROR
|
||||||
|
; CF = 0
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
|
||||||
RES_FM: _mFM_FIND
|
|
||||||
LD A,DSS_Error.sys.INVALID_HANDLE
|
RES_FM: CALL FM_FIND
|
||||||
;EXX
|
; error
|
||||||
|
; LD A,DSS_Error.sys.INVALID_HANDLE
|
||||||
SCF
|
SCF
|
||||||
RET Z
|
RET Z
|
||||||
|
; no error
|
||||||
XOR A
|
XOR A
|
||||||
LD (IY + _sFM.FS_REC.NAME),A
|
LD (IY + _sFM.FS_REC.NAME),A
|
||||||
RET
|
RET
|
||||||
@ -92,7 +120,7 @@ GET_FM: LD B,FMCOUNT
|
|||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
/*
|
/*
|
||||||
;!TEST CHECK LOCKING 10/11/2023
|
;!TODO CHECK LOCKING 10/11/2023
|
||||||
GET_FM: LD IY,0
|
GET_FM: LD IY,0
|
||||||
LD (.freeHandle),IY
|
LD (.freeHandle),IY
|
||||||
;
|
;
|
||||||
|
|||||||
@ -237,7 +237,6 @@ PORTAL.out_MAIN: ;
|
|||||||
; = -- = -- = -- = -- = = -- = -- = = -- = -- = = -- = -- = -- = -- = --;
|
; = -- = -- = -- = -- = = -- = -- = = -- = -- = = -- = -- = -- = -- = --;
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
;
|
;
|
||||||
CLEAR_BUFFER_AND_INIT_PROC:
|
CLEAR_BUFFER_AND_INIT_PROC:
|
||||||
;------[CLEAR BUFFERS]------;
|
;------[CLEAR BUFFERS]------;
|
||||||
@ -361,8 +360,7 @@ ADRST10: ;DS 512 ;,0
|
|||||||
INCLUDE "FS/FAT/FAT.ASM"
|
INCLUDE "FS/FAT/FAT.ASM"
|
||||||
INCLUDE "FS/FAT/FAT_X.ASM"
|
INCLUDE "FS/FAT/FAT_X.ASM"
|
||||||
INCLUDE "DOS_FM.ASM"
|
INCLUDE "DOS_FM.ASM"
|
||||||
|
;INCLUDE "EXECUTE.ASM"
|
||||||
INCLUDE "EXECUTE.ASM"
|
|
||||||
INCLUDE "INTMOUSE.ASM"
|
INCLUDE "INTMOUSE.ASM"
|
||||||
INCLUDE "Procedures.asm"
|
INCLUDE "Procedures.asm"
|
||||||
INCLUDE "Kernel_Panic.asm"
|
INCLUDE "Kernel_Panic.asm"
|
||||||
|
|||||||
484
DSS/KEYINTER.ASM
484
DSS/KEYINTER.ASM
@ -18,8 +18,8 @@ HOST DB #00
|
|||||||
K_LOCK EQU $-KEYFLAG
|
K_LOCK EQU $-KEYFLAG
|
||||||
LANG_L EQU 7
|
LANG_L EQU 7
|
||||||
PAUSE_L EQU 6
|
PAUSE_L EQU 6
|
||||||
RES5_L EQU 5
|
LANG_R EQU 5 ; á®ç¥â ¨¥ ª« ¢¨è ¤«ï ¯¥à¥ª«î票ï ï§ëª ®â¦ â®
|
||||||
RES4_L EQU 4
|
LANG_S EQU 4 ; á®ç¥â ¨¥ ª« ¢¨è ¤«ï ¯¥à¥ª«î票ï ï§ëª ¦ â®
|
||||||
NUM_L EQU 3
|
NUM_L EQU 3
|
||||||
SCRL_L EQU 2
|
SCRL_L EQU 2
|
||||||
INS_L EQU 1
|
INS_L EQU 1
|
||||||
@ -58,6 +58,7 @@ FLAG_S2 EQU 2
|
|||||||
SF_ALT EQU 1
|
SF_ALT EQU 1
|
||||||
SF_BUFF EQU 0
|
SF_BUFF EQU 0
|
||||||
DB #03
|
DB #03
|
||||||
|
UNCODE DW 0 ; ¯®á«¥¤ïï ®â¦ â ï ª« ¢¨è
|
||||||
|
|
||||||
; D15 - LShift
|
; D15 - LShift
|
||||||
; D14 - RShift
|
; D14 - RShift
|
||||||
@ -87,7 +88,6 @@ SF_BUFF EQU 0
|
|||||||
; D7..D0 - ASCII code
|
; D7..D0 - ASCII code
|
||||||
|
|
||||||
|
|
||||||
UNCODE DW 0
|
|
||||||
|
|
||||||
WAITKEY LD HL,HOST
|
WAITKEY LD HL,HOST
|
||||||
LD A,(HEAD)
|
LD A,(HEAD)
|
||||||
@ -360,6 +360,7 @@ K_CLEAR:
|
|||||||
JR C,.error
|
JR C,.error
|
||||||
LD C,B
|
LD C,B
|
||||||
JP RST_10
|
JP RST_10
|
||||||
|
;
|
||||||
.error: LD A,DSS_Error.sys.INVALID_FUNCTION
|
.error: LD A,DSS_Error.sys.INVALID_FUNCTION
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
@ -408,6 +409,7 @@ GETSYM: LD HL,HOST
|
|||||||
INC L
|
INC L
|
||||||
LD C,(HL)
|
LD C,(HL)
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
|
||||||
FULL_BF:
|
FULL_BF:
|
||||||
EX AF,AF'
|
EX AF,AF'
|
||||||
@ -429,10 +431,9 @@ FULL_BF:
|
|||||||
.E1_KEY:
|
.E1_KEY:
|
||||||
SET FLAG_E1,(IX+KEYFLG)
|
SET FLAG_E1,(IX+KEYFLG)
|
||||||
JR KEYSCAN.RESCAN
|
JR KEYSCAN.RESCAN
|
||||||
|
;
|
||||||
|
|
||||||
|
KEYSCAN: LD IX,KEYFLAG
|
||||||
KEYSCAN:
|
|
||||||
LD IX,KEYFLAG
|
|
||||||
;!TEST SIO INT
|
;!TEST SIO INT
|
||||||
IF KEYBOARD_INT_ENABLED
|
IF KEYBOARD_INT_ENABLED
|
||||||
CALL .RESCAN
|
CALL .RESCAN
|
||||||
@ -440,9 +441,7 @@ KEYSCAN:
|
|||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
RET
|
RET
|
||||||
ENDIF
|
ENDIF
|
||||||
;
|
.RESCAN: IN A,(Z84.SIO.Ch_A.Ctrl)
|
||||||
.RESCAN:
|
|
||||||
IN A,(Z84.SIO.Ch_A.Ctrl)
|
|
||||||
AND 1
|
AND 1
|
||||||
RET Z
|
RET Z
|
||||||
;[ ] 18/02/2024 ¯à®¢¥àª ¯¥à¥¯®«¥¨¥ ¡ãä¥à
|
;[ ] 18/02/2024 ¯à®¢¥àª ¯¥à¥¯®«¥¨¥ ¡ãä¥à
|
||||||
@ -456,67 +455,98 @@ KEYSCAN:
|
|||||||
IN A,(Z84.SIO.Ch_A.Data)
|
IN A,(Z84.SIO.Ch_A.Data)
|
||||||
CP #F0
|
CP #F0
|
||||||
JR Z,FULL_BF.F0_KEY
|
JR Z,FULL_BF.F0_KEY
|
||||||
|
;
|
||||||
CP #E0
|
CP #E0
|
||||||
JR Z,FULL_BF.E0_KEY
|
JR Z,FULL_BF.E0_KEY
|
||||||
|
;
|
||||||
CP #E1
|
CP #E1
|
||||||
JR Z,FULL_BF.E1_KEY
|
JR Z,FULL_BF.E1_KEY
|
||||||
|
;
|
||||||
BIT FLAG_F0,(IX+KEYFLG)
|
BIT FLAG_F0,(IX+KEYFLG)
|
||||||
JR NZ,UN_KEY
|
JR NZ,UN_KEY
|
||||||
|
;
|
||||||
LD L,A
|
LD L,A
|
||||||
CALL XLAT
|
CALL XLAT
|
||||||
CALL SHIFTS
|
CALL SHIFTS
|
||||||
RES FLAG_E0,(IX+KEYFLG)
|
RES FLAG_E0,(IX+KEYFLG)
|
||||||
RES FLAG_E1,(IX+KEYFLG)
|
RES FLAG_E1,(IX+KEYFLG)
|
||||||
;[ ] 29/02/2024 ¢ë£à¥¡á⨠¢¥áì ¡ãä¥à
|
;[ ] ¢ë£à¥¡á⨠¢¥áì ¡ãä¥à
|
||||||
JR Z,.RESCAN ;IT'S SHIFT KEY
|
JR Z,.RESCAN
|
||||||
; RET Z ;IT'S SHIFT KEY
|
; RET Z ;IT'S SHIFT KEY
|
||||||
;
|
;
|
||||||
CALL INPCODE ;L - AT POS. CODE
|
CALL INPCODE ;L - AT POS. CODE
|
||||||
;PUTCODE
|
;PUTCODE
|
||||||
LD HL,#1C00 ;Caps Lock
|
;Caps Lock
|
||||||
|
LD HL,#1C00
|
||||||
AND A
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
CALL Z,CAPS_X
|
CALL Z,CAPS_X
|
||||||
LD HL,#B800 ;Ctrl + Space
|
IFN CHANGE_LANG_CTRL_SHIFT
|
||||||
|
;Ctrl + Space
|
||||||
|
LD HL,#B800
|
||||||
AND A
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
CALL Z,RUS_X
|
CALL Z,LANG_X
|
||||||
LD HL,#5000 ;Insert
|
ENDIF
|
||||||
|
;Insert
|
||||||
|
LD HL,#5000
|
||||||
AND A
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
CALL Z,INS_X
|
CALL Z,INS_X
|
||||||
LD HL,#4900 ;Num Lock
|
;Num Lock
|
||||||
|
LD HL,#4900
|
||||||
AND A
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
CALL Z,NUM_X
|
CALL Z,NUM_X
|
||||||
LD HL,#C900 ;Pause Lock
|
;Pause Lock
|
||||||
|
LD HL,#C900
|
||||||
AND A
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
CALL Z,PAUSE_X
|
CALL Z,PAUSE_X
|
||||||
LD HL,#4800 ;Scroll Lock
|
;Scroll Lock
|
||||||
|
LD HL,#4800
|
||||||
AND A
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
CALL Z,SCL_X
|
CALL Z,SCL_X
|
||||||
|
;Ctrl + Alt + Del
|
||||||
;[x] small optimization)))
|
;[x] small optimization)))
|
||||||
; LD HL,#CF00 ;Ctrl + Alt + Del
|
; LD HL,#CF00
|
||||||
; AND A
|
; AND A
|
||||||
; SBC HL,DE
|
; SBC HL,DE
|
||||||
; CALL Z,RST_X
|
; CALL Z,RST_X
|
||||||
;
|
;
|
||||||
LD BC,(KEYFLAG)
|
LD BC,(KEYFLAG)
|
||||||
CALL PUTSYM
|
CALL PUTSYM
|
||||||
|
;[ ] 29/02/2024 ¢ë£à¥¡á⨠¢¥áì ¡ãä¥à
|
||||||
|
JR .RESCAN
|
||||||
|
;RET
|
||||||
|
;
|
||||||
|
;
|
||||||
|
IF CHANGE_LANG_CTRL_SHIFT
|
||||||
|
UN_KEY: RES FLAG_F0,(IX+KEYFLG)
|
||||||
|
LD L,A
|
||||||
|
CALL XLAT
|
||||||
|
CALL UNSHIFT
|
||||||
|
RES FLAG_E0,(IX+KEYFLG)
|
||||||
|
LD A,(UNCODE)
|
||||||
|
LD H,0
|
||||||
|
LD (UNCODE),HL
|
||||||
|
CP #36 ;L CTRL
|
||||||
|
JR Z,.check_shift
|
||||||
|
CP #29 ;L SHIFT
|
||||||
|
RET NZ
|
||||||
|
; check ctrl
|
||||||
|
LD A,L
|
||||||
|
SUB #36 ;L CTRL
|
||||||
|
JR Z,LANG_X
|
||||||
RET
|
RET
|
||||||
;[ ] 18/02/2024 ¯à®¢¥àª ¯¥à¥¯®«¥¨¥ ¡ãä¥à
|
;
|
||||||
; .Receiver_Overrun:
|
.check_shift: LD A,L
|
||||||
; LD (IX+K_SHIFT),0
|
SUB #29
|
||||||
; LD (IX+KEYFLG),0
|
JR Z,LANG_X
|
||||||
; ; reg 0 - reset errors
|
RET
|
||||||
; LD A,%0011'0000
|
ELSE
|
||||||
; OUT (Z84.SIO.Ch_A.Ctrl),A
|
UN_KEY: RES FLAG_F0,(IX+KEYFLG)
|
||||||
; RET
|
|
||||||
|
|
||||||
|
|
||||||
UN_KEY RES FLAG_F0,(IX+KEYFLG)
|
|
||||||
LD L,A
|
LD L,A
|
||||||
CALL XLAT
|
CALL XLAT
|
||||||
CALL UNSHIFT
|
CALL UNSHIFT
|
||||||
@ -524,14 +554,19 @@ UN_KEY RES FLAG_F0,(IX+KEYFLG)
|
|||||||
LD H,0
|
LD H,0
|
||||||
LD (UNCODE),HL
|
LD (UNCODE),HL
|
||||||
RET
|
RET
|
||||||
|
ENDIF
|
||||||
|
;
|
||||||
|
|
||||||
CAPS_X LD A,(IX+K_LOCK)
|
CAPS_X: LD A,(IX+K_LOCK)
|
||||||
XOR 1<<CAPS_L
|
XOR 1<<CAPS_L
|
||||||
LD (IX+K_LOCK),A
|
LD (IX+K_LOCK),A
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
|
||||||
RUS_X BIT X_CTRL,(IX+K_SHIFT)
|
LANG_X: IFN CHANGE_LANG_CTRL_SHIFT
|
||||||
|
BIT X_CTRL,(IX+K_SHIFT)
|
||||||
RET Z
|
RET Z
|
||||||
|
ENDIF
|
||||||
LD A,(IX+K_LOCK)
|
LD A,(IX+K_LOCK)
|
||||||
XOR 1<<LANG_L
|
XOR 1<<LANG_L
|
||||||
LD (IX+K_LOCK),A
|
LD (IX+K_LOCK),A
|
||||||
@ -543,36 +578,41 @@ RUS_X BIT X_CTRL,(IX+K_SHIFT)
|
|||||||
CALL BEEP
|
CALL BEEP
|
||||||
EXX
|
EXX
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
|
||||||
INS_X LD A,(IX+K_LOCK)
|
INS_X: LD A,(IX+K_LOCK)
|
||||||
XOR 1<<INS_L
|
XOR 1<<INS_L
|
||||||
LD (IX+K_LOCK),A
|
LD (IX+K_LOCK),A
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
|
||||||
NUM_X LD A,(IX+K_LOCK)
|
NUM_X: LD A,(IX+K_LOCK)
|
||||||
XOR 1<<NUM_L
|
XOR 1<<NUM_L
|
||||||
LD (IX+K_LOCK),A
|
LD (IX+K_LOCK),A
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
|
||||||
PAUSE_X BIT X_CTRL,(IX+K_SHIFT)
|
PAUSE_X: BIT X_CTRL,(IX+K_SHIFT)
|
||||||
RET Z
|
RET Z
|
||||||
POP HL ;!!!!! “ ‘ ©¬ ã¡à POP
|
POP HL ; ¡ « á á⥪
|
||||||
LD A,(IX+K_LOCK)
|
LD A,(IX+K_LOCK)
|
||||||
XOR 1<<PAUSE_L
|
XOR 1<<PAUSE_L
|
||||||
LD (IX+K_LOCK),A
|
LD (IX+K_LOCK),A
|
||||||
BIT PAUSE_L,A
|
BIT PAUSE_L,A
|
||||||
RET Z
|
RET Z
|
||||||
EI
|
EI
|
||||||
PAUSE_ HALT
|
.loop: HALT
|
||||||
BIT PAUSE_L,(IX+K_LOCK)
|
BIT PAUSE_L,(IX+K_LOCK)
|
||||||
JR NZ,PAUSE_
|
JR NZ,.loop
|
||||||
DI
|
DI
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
|
||||||
SCL_X LD A,(IX+K_LOCK)
|
SCL_X: LD A,(IX+K_LOCK)
|
||||||
XOR 1<<SCRL_L
|
XOR 1<<SCRL_L
|
||||||
LD (IX+K_LOCK),A
|
LD (IX+K_LOCK),A
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
|
||||||
;small optimization
|
;small optimization
|
||||||
; RST_X BIT X_CTRL,(IX+K_SHIFT)
|
; RST_X BIT X_CTRL,(IX+K_SHIFT)
|
||||||
@ -585,90 +625,89 @@ SCL_X LD A,(IX+K_LOCK)
|
|||||||
; RET
|
; RET
|
||||||
;;;
|
;;;
|
||||||
|
|
||||||
UNSHIFT LD A,L
|
UNSHIFT: LD A,L
|
||||||
CP #37 ;L ALT
|
CP #37 ;L ALT
|
||||||
JR NZ,USH1
|
JR NZ,.USH1
|
||||||
RES L_ALT,(IX+K_SHIFT)
|
RES L_ALT,(IX+K_SHIFT)
|
||||||
BIT R_ALT,(IX+K_SHIFT)
|
BIT R_ALT,(IX+K_SHIFT)
|
||||||
RET NZ
|
RET NZ
|
||||||
RES X_ALT,(IX+K_SHIFT)
|
RES X_ALT,(IX+K_SHIFT)
|
||||||
RET
|
RET
|
||||||
USH1 CP #39 ;R ALT
|
;
|
||||||
JR NZ,USH2
|
.USH1: CP #39 ;R ALT
|
||||||
|
JR NZ,.USH2
|
||||||
RES R_ALT,(IX+K_SHIFT)
|
RES R_ALT,(IX+K_SHIFT)
|
||||||
BIT L_ALT,(IX+K_SHIFT)
|
BIT L_ALT,(IX+K_SHIFT)
|
||||||
RET NZ
|
RET NZ
|
||||||
RES X_ALT,(IX+K_SHIFT)
|
RES X_ALT,(IX+K_SHIFT)
|
||||||
RET
|
RET
|
||||||
USH2 CP #36 ;L CTRL
|
;
|
||||||
JR NZ,USH3
|
.USH2: CP #36 ;L CTRL
|
||||||
|
JR NZ,.USH3
|
||||||
RES L_CTRL,(IX+K_SHIFT)
|
RES L_CTRL,(IX+K_SHIFT)
|
||||||
BIT R_CTRL,(IX+K_SHIFT)
|
BIT R_CTRL,(IX+K_SHIFT)
|
||||||
RET NZ
|
RET NZ
|
||||||
RES X_CTRL,(IX+K_SHIFT)
|
RES X_CTRL,(IX+K_SHIFT)
|
||||||
RET
|
RET
|
||||||
USH3 CP #3A ;R CTRL
|
;
|
||||||
JR NZ,USH4
|
.USH3: CP #3A ;R CTRL
|
||||||
|
JR NZ,.USH4
|
||||||
RES R_CTRL,(IX+K_SHIFT)
|
RES R_CTRL,(IX+K_SHIFT)
|
||||||
BIT L_CTRL,(IX+K_SHIFT)
|
BIT L_CTRL,(IX+K_SHIFT)
|
||||||
RET NZ
|
RET NZ
|
||||||
RES X_CTRL,(IX+K_SHIFT)
|
RES X_CTRL,(IX+K_SHIFT)
|
||||||
RET
|
RET
|
||||||
USH4 CP #29 ;L SHIFT
|
;
|
||||||
JR NZ,USH5
|
.USH4: CP #29 ;L SHIFT
|
||||||
|
JR NZ,.USH5
|
||||||
RES L_SHIFT,(IX+K_SHIFT)
|
RES L_SHIFT,(IX+K_SHIFT)
|
||||||
RET
|
RET
|
||||||
USH5 CP #34 ;R SHIFT
|
;
|
||||||
JR NZ,USH6
|
.USH5: CP #34 ;R SHIFT
|
||||||
|
;JR NZ,.USH6
|
||||||
|
RET NZ
|
||||||
RES R_SHIFT,(IX+K_SHIFT)
|
RES R_SHIFT,(IX+K_SHIFT)
|
||||||
USH6 RET
|
.USH6: RET
|
||||||
|
|
||||||
SHIFTS LD A,L
|
SHIFTS: LD A,L
|
||||||
CP #37 ;L ALT
|
CP #37 ;L ALT
|
||||||
JR NZ,NSH1
|
JR NZ,.NSH1
|
||||||
SET L_ALT,(IX+K_SHIFT)
|
SET L_ALT,(IX+K_SHIFT)
|
||||||
SET X_ALT,(IX+K_SHIFT)
|
SET X_ALT,(IX+K_SHIFT)
|
||||||
RET
|
RET
|
||||||
NSH1 CP #39 ;R ALT
|
;
|
||||||
JR NZ,NSH2
|
.NSH1: CP #39 ;R ALT
|
||||||
|
JR NZ,.NSH2
|
||||||
SET R_ALT,(IX+K_SHIFT)
|
SET R_ALT,(IX+K_SHIFT)
|
||||||
SET X_ALT,(IX+K_SHIFT)
|
SET X_ALT,(IX+K_SHIFT)
|
||||||
RET
|
RET
|
||||||
NSH2 CP #36 ;L CTRL
|
;
|
||||||
JR NZ,NSH3
|
.NSH2: CP #36 ;L CTRL
|
||||||
|
JR NZ,.NSH3
|
||||||
SET L_CTRL,(IX+K_SHIFT)
|
SET L_CTRL,(IX+K_SHIFT)
|
||||||
SET X_CTRL,(IX+K_SHIFT)
|
SET X_CTRL,(IX+K_SHIFT)
|
||||||
RET
|
RET
|
||||||
NSH3 CP #3A ;R CTRL
|
;
|
||||||
JR NZ,NSH4
|
.NSH3: CP #3A ;R CTRL
|
||||||
|
JR NZ,.NSH4
|
||||||
SET R_CTRL,(IX+K_SHIFT)
|
SET R_CTRL,(IX+K_SHIFT)
|
||||||
SET X_CTRL,(IX+K_SHIFT)
|
SET X_CTRL,(IX+K_SHIFT)
|
||||||
RET
|
RET
|
||||||
NSH4 CP #29 ;L SHIFT
|
;
|
||||||
JR NZ,NSH5
|
.NSH4: CP #29 ;L SHIFT
|
||||||
|
JR NZ,.NSH5
|
||||||
SET L_SHIFT,(IX+K_SHIFT)
|
SET L_SHIFT,(IX+K_SHIFT)
|
||||||
RET
|
RET
|
||||||
NSH5 CP #34 ;R SHIFT
|
;
|
||||||
JR NZ,NSH6
|
.NSH5: CP #34 ;R SHIFT
|
||||||
|
;JR NZ,.NSH6
|
||||||
|
RET NZ
|
||||||
SET R_SHIFT,(IX+K_SHIFT)
|
SET R_SHIFT,(IX+K_SHIFT)
|
||||||
NSH6 RET
|
.NSH6: RET
|
||||||
|
|
||||||
;
|
|
||||||
;;
|
XLAT: BIT FLAG_E0,(IX+KEYFLG)
|
||||||
_mInfoALIGN 256,0
|
JR Z,.W_O_E0
|
||||||
; 0 1 2 3 4 5 6 7 8 9 A B C D E F
|
|
||||||
XLAT_T: DB #00,#43,#00,#3F,#3D,#3B,#3C,#46,#00,#44,#42,#40,#3E,#0F,#00,#00 ;00
|
|
||||||
DB #00,#37,#29,#00,#36,#10,#02,#00,#00,#00,#2A,#1E,#1D,#11,#03,#00 ;10
|
|
||||||
DB #00,#2C,#2B,#1F,#12,#05,#04,#00,#00,#38,#2D,#20,#14,#13,#06,#00 ;20
|
|
||||||
DB #00,#2F,#2E,#22,#21,#15,#07,#00,#00,#00,#30,#23,#16,#08,#09,#00 ;30
|
|
||||||
DB #00,#31,#24,#17,#18,#0B,#0A,#00,#00,#32,#33,#25,#26,#19,#0C,#00 ;40
|
|
||||||
DB #00,#00,#27,#00,#1A,#0D,#00,#00,#1C,#34,#28,#1B,#00,#35,#00,#00 ;50
|
|
||||||
DB #00,#00,#00,#00,#00,#00,#0E,#00,#00,#51,#00,#54,#57,#00,#00,#00 ;60
|
|
||||||
DB #50,#4F,#52,#55,#56,#58,#01,#49,#45,#4D,#53,#4C,#4B,#59,#48,#00 ;70
|
|
||||||
DB #00,#00,#00,#41,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00 ;80
|
|
||||||
;
|
|
||||||
XLAT BIT FLAG_E0,(IX+KEYFLG)
|
|
||||||
JR Z,W_O_E0
|
|
||||||
CP #11 ;Right ALT
|
CP #11 ;Right ALT
|
||||||
LD L,#39
|
LD L,#39
|
||||||
RET Z
|
RET Z
|
||||||
@ -685,15 +724,14 @@ XLAT BIT FLAG_E0,(IX+KEYFLG)
|
|||||||
LD L,#47
|
LD L,#47
|
||||||
RET Z
|
RET Z
|
||||||
LD L,A
|
LD L,A
|
||||||
W_O_E0 LD H,high XLAT_T
|
.W_O_E0: LD H,high XLAT_T
|
||||||
LD L,(HL)
|
LD L,(HL)
|
||||||
RET
|
RET
|
||||||
;;
|
|
||||||
;
|
;
|
||||||
|
|
||||||
;INPCODE BIT 1,(IX+1) ;00110000
|
;INPCODE BIT 1,(IX+1) ;00110000
|
||||||
; JR NZ,FN_KEY ;LRCAcaRP
|
; JR NZ,FN_KEY ;LRCAcaRP
|
||||||
INPCODE LD D,L
|
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
|
||||||
@ -708,24 +746,27 @@ INPCODE LD D,L
|
|||||||
LD D,L
|
LD D,L
|
||||||
BIT CAPS_L,(IX+K_LOCK)
|
BIT CAPS_L,(IX+K_LOCK)
|
||||||
LD BC,CAPSTAB
|
LD BC,CAPSTAB
|
||||||
JR NZ,CONVER
|
JR NZ,CONVER.NO_SET
|
||||||
LD BC,NORMTAB
|
LD BC,NORMTAB
|
||||||
CONVER LD H,0
|
JR CONVER.NO_SET
|
||||||
ADD HL,BC
|
;
|
||||||
LD E,(HL)
|
; CONVER: LD H,0
|
||||||
RET
|
; ADD HL,BC
|
||||||
|
; LD E,(HL)
|
||||||
|
; RET
|
||||||
|
|
||||||
SHIFT_L LD BC,SHIFTAB
|
SHIFT_L: LD BC,SHIFTAB
|
||||||
BIT CAPS_L,(IX+K_LOCK)
|
BIT CAPS_L,(IX+K_LOCK)
|
||||||
JR Z,CONVER5
|
JR Z,CONVER.SET
|
||||||
LD BC,SHF2TAB
|
LD BC,SHF2TAB
|
||||||
CONVER5 LD H,0
|
CONVER: ;
|
||||||
|
.SET: SET 7,D
|
||||||
|
.NO_SET: LD H,0
|
||||||
ADD HL,BC
|
ADD HL,BC
|
||||||
LD E,(HL)
|
LD E,(HL)
|
||||||
SET 7,D
|
|
||||||
RET
|
RET
|
||||||
|
|
||||||
RUSCODE LD A,(IX+K_SHIFT)
|
RUSCODE: LD A,(IX+K_SHIFT)
|
||||||
AND #C0
|
AND #C0
|
||||||
JR NZ,SHIFT_R
|
JR NZ,SHIFT_R
|
||||||
SET 7,D
|
SET 7,D
|
||||||
@ -736,24 +777,26 @@ RUSCODE LD A,(IX+K_SHIFT)
|
|||||||
LD D,L
|
LD D,L
|
||||||
BIT CAPS_L,(IX+K_LOCK)
|
BIT CAPS_L,(IX+K_LOCK)
|
||||||
LD BC,CAPSRUS
|
LD BC,CAPSRUS
|
||||||
JR NZ,CONVER2
|
JR NZ,CONVER.NO_SET
|
||||||
LD BC,NORMRUS
|
LD BC,NORMRUS
|
||||||
CONVER2 LD H,0
|
JR CONVER.NO_SET
|
||||||
ADD HL,BC
|
; LD H,0
|
||||||
LD E,(HL)
|
; ADD HL,BC
|
||||||
RET
|
; LD E,(HL)
|
||||||
|
; RET
|
||||||
|
|
||||||
SHIFT_R LD BC,SHIFRUS
|
SHIFT_R: LD BC,SHIFRUS
|
||||||
BIT CAPS_L,(IX+K_LOCK)
|
BIT CAPS_L,(IX+K_LOCK)
|
||||||
JR Z,CONVER4
|
JR Z,CONVER.SET
|
||||||
LD BC,SHF2RUS
|
LD BC,SHF2RUS
|
||||||
CONVER4 LD H,0
|
JR CONVER.SET
|
||||||
ADD HL,BC
|
; .CONVER: SET 7,D
|
||||||
LD E,(HL)
|
; LD H,0
|
||||||
SET 7,D
|
; ADD HL,BC
|
||||||
RET
|
; LD E,(HL)
|
||||||
|
; RET
|
||||||
|
|
||||||
K_SETUP INC B
|
K_SETUP: INC B
|
||||||
DEC B
|
DEC B
|
||||||
JP Z,KEYMAP
|
JP Z,KEYMAP
|
||||||
DEC B
|
DEC B
|
||||||
@ -763,81 +806,185 @@ K_SETUP INC B
|
|||||||
LD A,DSS_Error.sys.INVALID_ACCESS
|
LD A,DSS_Error.sys.INVALID_ACCESS
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
|
||||||
K_SND_R LD A,(SOUND_K)
|
K_SND_R: LD A,(SOUND_K)
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
|
||||||
K_SND_W LD (SOUND_K),A
|
K_SND_W: LD (SOUND_K),A
|
||||||
AND A
|
AND A
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
|
||||||
KEYMAP LD BC,ENDNORM-NORMTAB
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
_mInfoALIGN 256,0 ;;
|
||||||
|
; 0 1 2 3 4 5 6 7 8 9 A B C D E F ;;
|
||||||
|
XLAT_T: DB #00,#43,#00,#3F,#3D,#3B,#3C,#46,#00,#44,#42,#40,#3E,#0F,#00,#00 ;00 ;;
|
||||||
|
DB #00,#37,#29,#00,#36,#10,#02,#00,#00,#00,#2A,#1E,#1D,#11,#03,#00 ;10 ;;
|
||||||
|
DB #00,#2C,#2B,#1F,#12,#05,#04,#00,#00,#38,#2D,#20,#14,#13,#06,#00 ;20 ;;
|
||||||
|
DB #00,#2F,#2E,#22,#21,#15,#07,#00,#00,#00,#30,#23,#16,#08,#09,#00 ;30 ;;
|
||||||
|
DB #00,#31,#24,#17,#18,#0B,#0A,#00,#00,#32,#33,#25,#26,#19,#0C,#00 ;40 ;;
|
||||||
|
DB #00,#00,#27,#00,#1A,#0D,#00,#00,#1C,#34,#28,#1B,#00,#35,#00,#00 ;50 ;;
|
||||||
|
DB #00,#00,#00,#00,#00,#00,#0E,#00,#00,#51,#00,#54,#57,#00,#00,#00 ;60 ;;
|
||||||
|
DB #50,#4F,#52,#55,#56,#58,#01,#49,#45,#4D,#53,#4C,#4B,#59,#48,#00 ;70 ;;
|
||||||
|
DB #00,#00,#00,#41,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00 ;80 ;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
KEYMAP: LD BC,ENDNORM-NORMTAB
|
||||||
BIT 7,A
|
BIT 7,A
|
||||||
JR NZ,READMAP
|
JR NZ,READMAP
|
||||||
|
;
|
||||||
LD DE,NORMTAB
|
LD DE,NORMTAB
|
||||||
OR A
|
OR A
|
||||||
JR Z,LTAB
|
JR Z,.LTAB
|
||||||
LD DE,SHIFTAB
|
LD DE,SHIFTAB
|
||||||
DEC A
|
DEC A
|
||||||
JR Z,LTAB
|
JR Z,.LTAB
|
||||||
LD DE,CAPSTAB
|
LD DE,CAPSTAB
|
||||||
DEC A
|
DEC A
|
||||||
JR Z,LTAB
|
JR Z,.LTAB
|
||||||
LD DE,SHF2TAB
|
LD DE,SHF2TAB
|
||||||
DEC A
|
DEC A
|
||||||
JR Z,LTAB
|
JR Z,.LTAB
|
||||||
LD DE,NORMRUS
|
LD DE,NORMRUS
|
||||||
DEC A
|
DEC A
|
||||||
JR Z,LTAB
|
JR Z,.LTAB
|
||||||
LD DE,SHIFRUS
|
LD DE,SHIFRUS
|
||||||
DEC A
|
DEC A
|
||||||
JR Z,LTAB
|
JR Z,.LTAB
|
||||||
LD DE,CAPSRUS
|
LD DE,CAPSRUS
|
||||||
DEC A
|
DEC A
|
||||||
JR Z,LTAB
|
JR Z,.LTAB
|
||||||
LD DE,SHF2RUS
|
LD DE,SHF2RUS
|
||||||
DEC A
|
DEC A
|
||||||
JR Z,LTAB
|
JR Z,.LTAB
|
||||||
|
;
|
||||||
XOR A ; ????? ¬®¦¥â âãâ ¤® .INVALID_COMMAND ?
|
XOR A ; ????? ¬®¦¥â âãâ ¤® .INVALID_COMMAND ?
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
LTAB LDIR
|
;
|
||||||
|
.LTAB: LDIR
|
||||||
XOR A
|
XOR A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
READMAP RES 7,A
|
READMAP: RES 7,A
|
||||||
LD DE,NORMTAB
|
LD DE,NORMTAB
|
||||||
OR A
|
OR A
|
||||||
JR Z,RTAB
|
JR Z,.RTAB
|
||||||
LD DE,SHIFTAB
|
LD DE,SHIFTAB
|
||||||
DEC A
|
DEC A
|
||||||
JR Z,RTAB
|
JR Z,.RTAB
|
||||||
LD DE,CAPSTAB
|
LD DE,CAPSTAB
|
||||||
DEC A
|
DEC A
|
||||||
JR Z,RTAB
|
JR Z,.RTAB
|
||||||
LD DE,SHF2TAB
|
LD DE,SHF2TAB
|
||||||
DEC A
|
DEC A
|
||||||
JR Z,RTAB
|
JR Z,.RTAB
|
||||||
LD DE,NORMRUS
|
LD DE,NORMRUS
|
||||||
DEC A
|
DEC A
|
||||||
JR Z,RTAB
|
JR Z,.RTAB
|
||||||
LD DE,SHIFRUS
|
LD DE,SHIFRUS
|
||||||
DEC A
|
DEC A
|
||||||
JR Z,RTAB
|
JR Z,.RTAB
|
||||||
LD DE,CAPSRUS
|
LD DE,CAPSRUS
|
||||||
DEC A
|
DEC A
|
||||||
JR Z,RTAB
|
JR Z,.RTAB
|
||||||
LD DE,SHF2RUS
|
LD DE,SHF2RUS
|
||||||
DEC A
|
DEC A
|
||||||
JR Z,RTAB
|
JR Z,.RTAB
|
||||||
XOR A ; ????? ¬®¦¥â âãâ ¤® .INVALID_COMMAND ?
|
XOR A ; ????? ¬®¦¥â âãâ ¤® .INVALID_COMMAND ?
|
||||||
SCF
|
SCF
|
||||||
RET
|
RET
|
||||||
RTAB EX DE,HL
|
;
|
||||||
|
.RTAB: EX DE,HL
|
||||||
LDIR
|
LDIR
|
||||||
XOR A
|
XOR A
|
||||||
RET
|
RET
|
||||||
|
;
|
||||||
|
|
||||||
|
BEEP: LD A,#10
|
||||||
|
OUT (ZX_Beeper),A
|
||||||
|
LD B,D
|
||||||
|
LD C,E
|
||||||
|
.loop1: DEC BC
|
||||||
|
LD A,B
|
||||||
|
OR C
|
||||||
|
JR NZ,.loop1
|
||||||
|
XOR A ;LD A,#00
|
||||||
|
OUT (ZX_Beeper),A
|
||||||
|
LD B,D
|
||||||
|
LD C,E
|
||||||
|
.loop2: DEC BC
|
||||||
|
LD A,B
|
||||||
|
OR C
|
||||||
|
JR NZ,.loop2
|
||||||
|
DEC HL
|
||||||
|
LD A,H
|
||||||
|
OR L
|
||||||
|
JR NZ,BEEP
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
|
||||||
|
KEYBOARD_INIT: DI
|
||||||
|
; reg 0
|
||||||
|
XOR A
|
||||||
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
; reg 4
|
||||||
|
LD A,4
|
||||||
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
;LD A,5 ; parity
|
||||||
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
; reg 3
|
||||||
|
LD A,3
|
||||||
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
LD A,#C1
|
||||||
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
; reg 5
|
||||||
|
LD A,5
|
||||||
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
LD A,#62
|
||||||
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
; reg 1
|
||||||
|
LD A,1
|
||||||
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
IF KEYBOARD_INT_ENABLED
|
||||||
|
LD A,%0001'1001
|
||||||
|
ELSE
|
||||||
|
XOR A
|
||||||
|
ENDIF
|
||||||
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
;
|
||||||
|
EI
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
|
||||||
|
;[x] 18/02/2024 ¯à®¢¥àª ¯¥à¥¯®«¥¨¥ ¡ãä¥à
|
||||||
|
KBD_Receiver_Overrun:
|
||||||
|
; empty the buffer
|
||||||
|
IN A,(Z84.SIO.Ch_A.Data)
|
||||||
|
IN A,(Z84.SIO.Ch_A.Ctrl)
|
||||||
|
RRCA
|
||||||
|
JR C,KBD_Receiver_Overrun
|
||||||
|
; reg 0 - error reset
|
||||||
|
LD A,%0011'0000
|
||||||
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
;!TEST SIO INT
|
||||||
|
; reg 0 - return from int
|
||||||
|
IF KEYBOARD_INT_ENABLED
|
||||||
|
LD A,%0011'1000
|
||||||
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
|
ENDIF
|
||||||
|
;
|
||||||
|
;!TODO ¯à¨ ¤¥â¥ªâ¥ ¯¥à¥¯®«¥¨ï ¡ãä¥à ¯à®æ áïâì ª« ¢¨è¨ ¨§ ¯®àâ #FE ᯥªâàã¬
|
||||||
|
;
|
||||||
|
LD (IX+K_SHIFT),0
|
||||||
|
LD (IX+KEYFLG),0
|
||||||
|
;
|
||||||
|
;AND A
|
||||||
|
RET
|
||||||
|
|
||||||
; `
|
; `
|
||||||
; 0
|
; 0
|
||||||
@ -948,84 +1095,5 @@ SHF2RUS DB #F1,Esc,"!",#22,"#","$",":",#2C,".",";","?","%","_","+",Bcs
|
|||||||
|
|
||||||
;================================
|
;================================
|
||||||
|
|
||||||
BEEP: LD A,#10
|
|
||||||
OUT (ZX_Beeper),A
|
|
||||||
LD B,D
|
|
||||||
LD C,E
|
|
||||||
.loop1: DEC BC
|
|
||||||
LD A,B
|
|
||||||
OR C
|
|
||||||
JR NZ,.loop1
|
|
||||||
XOR A ;LD A,#00
|
|
||||||
OUT (ZX_Beeper),A
|
|
||||||
LD B,D
|
|
||||||
LD C,E
|
|
||||||
.loop2: DEC BC
|
|
||||||
LD A,B
|
|
||||||
OR C
|
|
||||||
JR NZ,.loop2
|
|
||||||
DEC HL
|
|
||||||
LD A,H
|
|
||||||
OR L
|
|
||||||
JR NZ,BEEP
|
|
||||||
RET
|
|
||||||
|
|
||||||
KEYBOARD_INIT:
|
|
||||||
DI
|
|
||||||
; reg 0
|
|
||||||
XOR A
|
|
||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
|
||||||
; reg 4
|
|
||||||
LD A,4
|
|
||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
|
||||||
;LD A,5 ; parity
|
|
||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
|
||||||
; reg 3
|
|
||||||
LD A,3
|
|
||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
|
||||||
LD A,#C1
|
|
||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
|
||||||
; reg 5
|
|
||||||
LD A,5
|
|
||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
|
||||||
LD A,#62
|
|
||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
|
||||||
; reg 1
|
|
||||||
LD A,1
|
|
||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
|
||||||
IF KEYBOARD_INT_ENABLED
|
|
||||||
LD A,%0001'1001
|
|
||||||
ELSE
|
|
||||||
XOR A
|
|
||||||
ENDIF
|
|
||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
|
||||||
;
|
|
||||||
EI
|
|
||||||
RET
|
|
||||||
|
|
||||||
;[x] 18/02/2024 ¯à®¢¥àª ¯¥à¥¯®«¥¨¥ ¡ãä¥à
|
|
||||||
KBD_Receiver_Overrun:
|
|
||||||
; empty the buffer
|
|
||||||
IN A,(Z84.SIO.Ch_A.Data)
|
|
||||||
IN A,(Z84.SIO.Ch_A.Ctrl)
|
|
||||||
RRCA
|
|
||||||
JR C,KBD_Receiver_Overrun
|
|
||||||
; reg 0 - error reset
|
|
||||||
LD A,%0011'0000
|
|
||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
|
||||||
;!TEST SIO INT
|
|
||||||
; reg 0 - return from int
|
|
||||||
IF KEYBOARD_INT_ENABLED
|
|
||||||
LD A,%0011'1000
|
|
||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
|
||||||
ENDIF
|
|
||||||
;
|
|
||||||
;!TODO ¯à¨ ¤¥â¥ªâ¥ ¯¥à¥¯®«¥¨ï ¡ãä¥à ¯à®æ áïâì ª« ¢¨è¨ ¨§ ¯®àâ #FE ᯥªâàã¬
|
|
||||||
;
|
|
||||||
LD (IX+K_SHIFT),0
|
|
||||||
LD (IX+KEYFLG),0
|
|
||||||
;
|
|
||||||
;AND A
|
|
||||||
RET
|
|
||||||
;//MODULE: KEYINTER
|
;//MODULE: KEYINTER
|
||||||
;[END]
|
;[END]
|
||||||
@ -1,22 +1,11 @@
|
|||||||
MACRO PRINT_LINE_KERNEL_PANIC txtString, txtStringSize, txtColor, coordY
|
;
|
||||||
|
MACRO PRINT_LINE_KERNEL_PANIC coordY, txtString, txtStringSize, txtColor
|
||||||
LD HL,txtString
|
LD HL,txtString
|
||||||
LD DE,#A000
|
LD BC,txtColor*256 + txtStringSize
|
||||||
LD BC,txtStringSize
|
LD DE,coordY * 256 + (80 - txtStringSize)/2
|
||||||
LD A,C
|
CALL .PRINT_LINE
|
||||||
LDIR
|
ENDM ; 12 bytes
|
||||||
;
|
;
|
||||||
LD DE,coordY*256 + (80-txtStringSize)/2 ;X=0, Y=15
|
|
||||||
LD C,BIOS.LP_SET_PLACE
|
|
||||||
RST ToBIOS
|
|
||||||
;
|
|
||||||
LD HL,#A000
|
|
||||||
LD DE,0*256 + txtColor
|
|
||||||
LD B,A
|
|
||||||
LD C,BIOS.LP_PRINT_LINE3
|
|
||||||
RST ToBIOS
|
|
||||||
ENDM
|
|
||||||
|
|
||||||
|
|
||||||
;-----------------------[]
|
;-----------------------[]
|
||||||
; HL - á®®¡é¥¨¥
|
; HL - á®®¡é¥¨¥
|
||||||
; E - ª®®à¤¨ â X ⥪á⮢®¬ íªà ¥
|
; E - ª®®à¤¨ â X ⥪á⮢®¬ íªà ¥
|
||||||
@ -40,8 +29,8 @@ KERNEL_PANIC:
|
|||||||
LD A,1
|
LD A,1
|
||||||
OUT (SCREEN_SWITCH),A ; set scr-2
|
OUT (SCREEN_SWITCH),A ; set scr-2
|
||||||
;
|
;
|
||||||
PRINT_LINE_KERNEL_PANIC .kernel_panic, .kernel_panic.size, +(COLORS.CGA.FLASH + COLORS.CGA.PAPER.BLUE + COLORS.CGA.INC.RED), 13
|
PRINT_LINE_KERNEL_PANIC 13, .kernel_panic, .kernel_panic.size, +(COLORS.CGA.FLASH + COLORS.CGA.PAPER.BLUE + COLORS.CGA.INC.RED)
|
||||||
PRINT_LINE_KERNEL_PANIC .press_CAD, .press_CAD.size, +(COLORS.CGA.PAPER.BLUE + COLORS.CGA.INC.WHITE), 18
|
PRINT_LINE_KERNEL_PANIC 18, .press_CAD, .press_CAD.size, +(COLORS.CGA.PAPER.BLUE + COLORS.CGA.INC.WHITE)
|
||||||
;
|
;
|
||||||
POP BC
|
POP BC
|
||||||
POP HL
|
POP HL
|
||||||
@ -63,9 +52,26 @@ KERNEL_PANIC:
|
|||||||
.loop: DI
|
.loop: DI
|
||||||
HALT
|
HALT
|
||||||
JR .loop
|
JR .loop
|
||||||
|
;
|
||||||
.print_line:
|
.PRINT_LINE:
|
||||||
RET
|
PUSH BC
|
||||||
|
PUSH DE
|
||||||
|
LD DE,#A000
|
||||||
|
LD B,E
|
||||||
|
LD A,C
|
||||||
|
LDIR
|
||||||
|
;
|
||||||
|
POP DE
|
||||||
|
LD C,BIOS.LP_SET_PLACE
|
||||||
|
RST ToBIOS
|
||||||
|
;
|
||||||
|
POP DE
|
||||||
|
LD E,D
|
||||||
|
LD HL,#A000
|
||||||
|
LD D,L
|
||||||
|
LD B,A
|
||||||
|
LD C,BIOS.LP_PRINT_LINE3
|
||||||
|
JP ToBIOS
|
||||||
;
|
;
|
||||||
.kernel_panic: DZ "KERNEL PANIC!"
|
.kernel_panic: DZ "KERNEL PANIC!"
|
||||||
.kernel_panic.size EQU $-.kernel_panic
|
.kernel_panic.size EQU $-.kernel_panic
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
947
|
956
|
||||||
@ -17,9 +17,9 @@
|
|||||||
;DEFINE MOUSE_READ_PORT_TIMEOUT 3072 ; Š®áâë«ìë© â ©¬- ãâ ®¦¨¤ ¨¥ ¡ ©â ®â ¬ë誨. <EFBFBD>à®áâ® ¥áâì ªà¨¢ë¥ ¯¥à¥å®¤¨ª¨
|
;DEFINE MOUSE_READ_PORT_TIMEOUT 3072 ; Š®áâë«ìë© â ©¬- ãâ ®¦¨¤ ¨¥ ¡ ©â ®â ¬ë誨. <EFBFBD>à®áâ® ¥áâì ªà¨¢ë¥ ¯¥à¥å®¤¨ª¨
|
||||||
;
|
;
|
||||||
DEFINE KEYBOARD_INT_ENABLED 0 ; INT from SIO ch. A
|
DEFINE KEYBOARD_INT_ENABLED 0 ; INT from SIO ch. A
|
||||||
|
DEFINE CHANGE_LANG_CTRL_SHIFT 1 ; [x] 0: Ctrl + Space, 1: Ctrl + Shift.
|
||||||
;
|
;
|
||||||
|
|
||||||
;
|
|
||||||
;LD_DSK EQU 16 ; ¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ «®£¨ç¥áª¨å HDD ¤¨áª®¢ ¢ á¨á⥬¥
|
;LD_DSK EQU 16 ; ¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ «®£¨ç¥áª¨å HDD ¤¨áª®¢ ¢ á¨á⥬¥
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
311
|
312
|
||||||
Loading…
Reference in New Issue
Block a user