параметр компиляции для сочетания клавиш на переключение языка раскладки ctrl+space или shift+ctrl

This commit is contained in:
Anatoliy Belyanskiy 2024-03-28 02:59:48 +10:00
parent 32a1547722
commit ff2f2b9941
10 changed files with 691 additions and 588 deletions

View File

@ -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
@ -565,8 +563,8 @@ 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

View File

@ -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"

View File

@ -607,26 +607,30 @@ FREE_PROCESS_MEMORY:
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------
FREE_PROCESS_FMs: FREE_PROCESS_FMs:
LD IY,CORE_BUFFERS.FM_BUF - CORE_BUFFERS.FM_BUF.Size LD IY,CORE_BUFFERS.FM_BUF - CORE_BUFFERS.FM_BUF.Size
LD DE,CORE_BUFFERS.FM_BUF.Size LD DE,CORE_BUFFERS.FM_BUF.Size
LD B,FMCOUNT+1 LD B,FMCOUNT+1
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 PUSH AF
; XOR A
.CLOSE: PUSH IY OR (IY+_sFM.TASK_NUM)
PUSH DE JR Z,.skip
PUSH AF PUSH IY
LD A,FMCOUNT+1 PUSH DE
SUB B LD A,FMCOUNT+1
CALL CLOSE_FN SUB B
POP AF CALL CLOSE_FN
POP DE POP DE
POP IY POP IY
RET .skip: POP AF
;
.next: DJNZ .loop
RET
;
;----------------------------------------------------------------------- ;-----------------------------------------------------------------------

View File

@ -42,57 +42,85 @@ 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 IY,CORE_BUFFERS.FM_BUF
LD DE,CORE_BUFFERS.FM_BUF.Size ; LD DE,CORE_BUFFERS.FM_BUF.Size
AND A ; AND A
JR Z,.endLoop ; JR Z,.endLoop
.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
; ENDM
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
SET_FM: _mFM_FIND ; ­  ¢ë室¥ ¡¥§ ®è¨¡®ª IY 㪠§ë¢ ¥â ­  ä ©«®¢ë© ¬ ­¨¯ã«ïâ®à
LD A,DSS_Error.sys.NO_ERROR FM_FIND: CP FMCOUNT+1
RET NZ JR NC,.error
ABS_FM LD A,DSS_Error.sys.INVALID_HANDLE ;
SCF PUSH DE
RET 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
.error: XOR A
LD A,DSS_Error.sys.INVALID_HANDLE
RET
SET_FM: CALL FM_FIND
; error
;LD A,DSS_Error.sys.INVALID_HANDLE
; CF = 1
SCF
RET Z
; no error
XOR A ;LD A,DSS_Error.sys.NO_ERROR
; CF = 0
RET
RES_FM: _mFM_FIND RES_FM: CALL FM_FIND
LD A,DSS_Error.sys.INVALID_HANDLE ; error
;EXX ; LD A,DSS_Error.sys.INVALID_HANDLE
SCF SCF
RET Z RET Z
XOR A ; no error
LD (IY + _sFM.FS_REC.NAME),A XOR A
RET LD (IY + _sFM.FS_REC.NAME),A
RET
; ;
GET_FM: LD B,FMCOUNT GET_FM: LD B,FMCOUNT
LD C,#FF LD C,#FF
LD IY,CORE_BUFFERS.FM_BUF - CORE_BUFFERS.FM_BUF.Size LD IY,CORE_BUFFERS.FM_BUF - CORE_BUFFERS.FM_BUF.Size
LD DE,CORE_BUFFERS.FM_BUF.Size LD DE,CORE_BUFFERS.FM_BUF.Size
.loop: ADD IY,DE .loop: ADD IY,DE
INC C INC C
LD A,(IY + _sFM.FS_REC.NAME) LD A,(IY + _sFM.FS_REC.NAME)
OR A OR A
RET Z RET Z
DJNZ .loop DJNZ .loop
LD A,DSS_Error.sys.NO_HANDLES LD A,DSS_Error.sys.NO_HANDLES
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
; ;

View File

@ -237,7 +237,6 @@ PORTAL.out_MAIN: ;
; = -- = -- = -- = -- = = -- = -- = = -- = -- = = -- = -- = -- = -- = --; ; = -- = -- = -- = -- = = -- = -- = = -- = -- = = -- = -- = -- = -- = --;
; ;
; ;
CLEAR_BUFFER_AND_INIT_PROC: CLEAR_BUFFER_AND_INIT_PROC:
;------[CLEAR BUFFERS]------; ;------[CLEAR BUFFERS]------;
@ -353,17 +352,16 @@ ADRST10: ;DS 512 ;,0
; DB high WINREST,high PUTCHAR,high PCHARS, high NOPS, high NOPS, high PRINT, high NOPS, high NOPS, high NOPS, high NOPS ; DB high WINREST,high PUTCHAR,high PCHARS, high NOPS, high NOPS, high PRINT, high NOPS, high NOPS, high NOPS, high NOPS
;---------------------------------------------------------------------------------------------------------------------------------------------------------------; ;---------------------------------------------------------------------------------------------------------------------------------------------------------------;
;[INCLUDE] ;[INCLUDE]
;!TODO § ¬¥­¨âì ¯®-¬ ªá¨¬®¬ã ¢áñ ¢ KEYINTER.ASM ­  ¢ë§®¢ë ¡¨®á  ;!TODO § ¬¥­¨âì ¯®-¬ ªá¨¬®¬ã ¢áñ ¢ KEYINTER.ASM ­  ¢ë§®¢ë ¡¨®á 
INCLUDE "KEYINTER.ASM" INCLUDE "KEYINTER.ASM"
INCLUDE "VIDEO.ASM" INCLUDE "VIDEO.ASM"
INCLUDE "API.ASM" INCLUDE "API.ASM"
INCLUDE "DOS_Proc.asm" INCLUDE "DOS_Proc.asm"
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"

File diff suppressed because it is too large Load Diff

View File

@ -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

View File

@ -1 +1 @@
947 956

View File

@ -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 ¤¨áª®¢ ¢ á¨á⥬¥
///////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////

View File

@ -1 +1 @@
311 312