mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31:47 +03:00
исправлен баг с клавой (выход за границы таблицы XLAT_T). добавлен ctrl+c для прерывания процесса.
This commit is contained in:
parent
ff2f2b9941
commit
23fa77a8b9
@ -10,7 +10,7 @@
|
|||||||
; 3 - ‚כ₪¥«¨גל ¨¬ן ה ©«
|
; 3 - ‚כ₪¥«¨גל ¨¬ן ה ©«
|
||||||
; 4 - ‚כ₪¥«¨גל א בט¨א¥¨¥ ה ©«
|
; 4 - ‚כ₪¥«¨גל א בט¨א¥¨¥ ה ©«
|
||||||
; 5 - ‚כ₪¥«¨גל ¨¬ן ₪¨ב× , ¯דגל × ה ©«ד, ¨¬ן ה ©« ¨ א בט. ה ©«
|
; 5 - ‚כ₪¥«¨גל ¨¬ן ₪¨ב× , ¯דגל × ה ©«ד, ¨¬ן ה ©« ¨ א בט. ה ©«
|
||||||
; 6 - ‡ १¥à¢¨à®¢ ®
|
; 6 - ‡ १¥à¢¨à®¢ ® ;!TODO ¯à¥®¡à §®¢ âì ®â®á¨â¥«ìë© ¯ãâì ¢ ¯®«ë© ; [ ]
|
||||||
; 7 - ‚כ₪¥«¨גל ¯ א ¬¥גא ×®¬ ₪®© בגא®×¨
|
; 7 - ‚כ₪¥«¨גל ¯ א ¬¥גא ×®¬ ₪®© בגא®×¨
|
||||||
; 8 - <20>א¥®¡א §®¢ גל ¨§ 11 ב¨¬¢®«ל®£® ה®א¬ ג ¢ ה®א¬ ג „<>‘
|
; 8 - <20>א¥®¡א §®¢ גל ¨§ 11 ב¨¬¢®«ל®£® ה®א¬ ג ¢ ה®א¬ ג „<>‘
|
||||||
; 9 - <20>א¥®¡א §®¢ גל ¨§ ה®א¬ ג „<>‘ ¢ 11 ב¨¬¢®«לכ© ה®א¬ ג
|
; 9 - <20>א¥®¡א §®¢ גל ¨§ ה®א¬ ג „<>‘ ¢ 11 ב¨¬¢®«לכ© ה®א¬ ג
|
||||||
|
|||||||
@ -565,11 +565,13 @@ LEAVE: LD A,B
|
|||||||
LD A,(ErrorLevel)
|
LD A,(ErrorLevel)
|
||||||
;R12
|
;R12
|
||||||
CP DSS_Error.sys.UNEXPECTED_APP_TRMN
|
CP DSS_Error.sys.UNEXPECTED_APP_TRMN
|
||||||
JR NZ,.exit
|
JR Z,.error_exit
|
||||||
SCF
|
CP DSS_Error.sys.USER_ABORT
|
||||||
|
JR NZ,.norm_exit
|
||||||
|
.error_exit: SCF
|
||||||
JP (HL)
|
JP (HL)
|
||||||
;
|
;
|
||||||
.exit: AND A
|
.norm_exit: AND A
|
||||||
JP (HL)
|
JP (HL)
|
||||||
;/////////////////////////////////////////////////////////////////////
|
;/////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|||||||
@ -1,101 +1,101 @@
|
|||||||
;
|
;
|
||||||
MACRO BUFFER_KEYINTER
|
; MACRO BUFFER_KEYINTER
|
||||||
_mInfoALIGN 256,0
|
; _mInfoALIGN 256,0
|
||||||
;KEYBOARD BUFFER
|
; ;KEYBOARD BUFFER
|
||||||
SBUF: BLOCK 64,0
|
; SBUF: BLOCK 64,0
|
||||||
|
|
||||||
|
|
||||||
HEAD DB #00
|
; HEAD DB #00
|
||||||
HOST DB #00
|
; 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
|
; RES5_L EQU 5
|
||||||
RES4_L EQU 4
|
; RES4_L 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
|
||||||
CAPS_L EQU 0
|
; CAPS_L EQU 0
|
||||||
KEYFLAG DB #02 ;D0-Key Pressed
|
; KEYFLAG DB #02 ;D0-Key Pressed
|
||||||
|
|
||||||
K_SHIFT EQU $-KEYFLAG
|
; K_SHIFT EQU $-KEYFLAG
|
||||||
L_SHIFT EQU 7
|
; L_SHIFT EQU 7
|
||||||
R_SHIFT EQU 6
|
; R_SHIFT EQU 6
|
||||||
X_CTRL EQU 5
|
; X_CTRL EQU 5
|
||||||
X_ALT EQU 4
|
; X_ALT EQU 4
|
||||||
L_CTRL EQU 3
|
; L_CTRL EQU 3
|
||||||
L_ALT EQU 2
|
; L_ALT EQU 2
|
||||||
R_CTRL EQU 1
|
; R_CTRL EQU 1
|
||||||
R_ALT EQU 0
|
; R_ALT EQU 0
|
||||||
KEYCTRL DB #00
|
; KEYCTRL DB #00
|
||||||
|
|
||||||
KEYFLG EQU $-KEYFLAG
|
; KEYFLG EQU $-KEYFLAG
|
||||||
FLAG_E0 EQU 7
|
; FLAG_E0 EQU 7
|
||||||
FLAG_F0 EQU 6
|
; FLAG_F0 EQU 6
|
||||||
FLAG_E1 EQU 5
|
; FLAG_E1 EQU 5
|
||||||
FLAG_04 EQU 4
|
; FLAG_04 EQU 4
|
||||||
FLAG_03 EQU 3
|
; FLAG_03 EQU 3
|
||||||
FLAG_02 EQU 2
|
; FLAG_02 EQU 2
|
||||||
FLAG_01 EQU 1
|
; FLAG_01 EQU 1
|
||||||
FLAG_00 EQU 0
|
; FLAG_00 EQU 0
|
||||||
DB #00
|
; DB #00
|
||||||
|
|
||||||
SOUND_K EQU $-KEYFLAG
|
; SOUND_K EQU $-KEYFLAG
|
||||||
FLAG_S7 EQU 7
|
; FLAG_S7 EQU 7
|
||||||
FLAG_S6 EQU 6
|
; FLAG_S6 EQU 6
|
||||||
FLAG_S5 EQU 5
|
; FLAG_S5 EQU 5
|
||||||
FLAG_S4 EQU 4
|
; FLAG_S4 EQU 4
|
||||||
FLAG_S3 EQU 3
|
; FLAG_S3 EQU 3
|
||||||
FLAG_S2 EQU 2
|
; FLAG_S2 EQU 2
|
||||||
SF_ALT EQU 1
|
; SF_ALT EQU 1
|
||||||
SF_BUFF EQU 0
|
; SF_BUFF EQU 0
|
||||||
DB #03
|
; DB #03
|
||||||
;
|
; ;
|
||||||
; D15 - LShift
|
; ; D15 - LShift
|
||||||
; D14 - RShift
|
; ; D14 - RShift
|
||||||
; D13 - CTRL
|
; ; D13 - CTRL
|
||||||
; D12 - ALT
|
; ; D12 - ALT
|
||||||
; D11 - LCTRL
|
; ; D11 - LCTRL
|
||||||
; D10 - LALT
|
; ; D10 - LALT
|
||||||
; D9 - RCTRL
|
; ; D9 - RCTRL
|
||||||
; D8 - RALT
|
; ; D8 - RALT
|
||||||
; D7 - Language Lock
|
; ; D7 - Language Lock
|
||||||
; D6 - Reserved
|
; ; D6 - Reserved
|
||||||
; D5 - Reserved
|
; ; D5 - Reserved
|
||||||
; D4 - Reserved
|
; ; D4 - Reserved
|
||||||
; D3 - Num Lock
|
; ; D3 - Num Lock
|
||||||
; D2 - Scroll Lock
|
; ; D2 - Scroll Lock
|
||||||
; D1 - Insert Lock
|
; ; D1 - Insert Lock
|
||||||
; D0 - Caps Lock
|
; ; D0 - Caps Lock
|
||||||
;
|
; ;
|
||||||
; D15 - Keystroke
|
; ; D15 - Keystroke
|
||||||
; D14
|
; ; D14
|
||||||
; D13 \
|
; ; D13 \
|
||||||
; D12 \
|
; ; D12 \
|
||||||
; D11 -- Position code (0...5Ah)
|
; ; D11 -- Position code (0...5Ah)
|
||||||
; D10 /
|
; ; D10 /
|
||||||
; D9 /
|
; ; D9 /
|
||||||
; D8
|
; ; D8
|
||||||
; D7..D0 - ASCII code
|
; ; D7..D0 - ASCII code
|
||||||
;
|
; ;
|
||||||
ENDM
|
; ENDM
|
||||||
;
|
;
|
||||||
|
|
||||||
;
|
;
|
||||||
MACRO TABLE_XLAT_T
|
; MACRO TABLE_XLAT_T
|
||||||
_mInfoALIGN 256,0
|
; _mInfoALIGN 256,0
|
||||||
; 0 1 2 3 4 5 6 7 8 9 A B C D E F
|
; ; 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
|
; 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,#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,#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,#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,#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,#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 #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 #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
|
; DB #00,#00,#00,#41,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00,#00 ;80
|
||||||
ENDM
|
; ENDM
|
||||||
;
|
;
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|||||||
@ -432,6 +432,7 @@ WRT_HND: SET_PAGE_X DIRPAGE
|
|||||||
;----------------------------------------------------------------------;
|
;----------------------------------------------------------------------;
|
||||||
; ‘¡à®á¨âì ª¥è ª â «®£ ¤¨áª.
|
; ‘¡à®á¨âì ª¥è ª â «®£ ¤¨áª.
|
||||||
; ¢å®¤: iy=áâàãªâãà ¤¥áªà¨¯â®à
|
; ¢å®¤: iy=áâàãªâãà ¤¥áªà¨¯â®à
|
||||||
|
; [ ] fat32
|
||||||
SAVEDIR:
|
SAVEDIR:
|
||||||
XOR A
|
XOR A
|
||||||
LD HL,0
|
LD HL,0
|
||||||
@ -529,12 +530,17 @@ RD_BPB: LD C,SLOT3
|
|||||||
LD (FatBuffer.FAT1_SEC_L),HL ; low word first sector FAT #1
|
LD (FatBuffer.FAT1_SEC_L),HL ; low word first sector FAT #1
|
||||||
LD (FatBuffer.FAT2_SEC_L),HL ; low word first sector FAT #2
|
LD (FatBuffer.FAT2_SEC_L),HL ; low word first sector FAT #2
|
||||||
;[ ] fat32 ;!FIXIT
|
;[ ] fat32 ;!FIXIT
|
||||||
LD DE,0
|
XOR A
|
||||||
|
LD D,A
|
||||||
|
LD E,A
|
||||||
LD (FatBuffer.FAT1_SEC_H),DE ; high word first sector FAT #1
|
LD (FatBuffer.FAT1_SEC_H),DE ; high word first sector FAT #1
|
||||||
LD (FatBuffer.FAT2_SEC_H),DE ; high word first sector FAT #1
|
LD (FatBuffer.FAT2_SEC_H),DE ; high word first sector FAT #1
|
||||||
|
LD (FatBuffer.SectorsPerFAT_H),A
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
LD DE,(CORE_BUFFERS.BootSector.SectorsPerFAT16)
|
LD DE,(CORE_BUFFERS.BootSector.SectorsPerFAT16)
|
||||||
|
LD (FatBuffer.SectorsPerFAT_L),DE
|
||||||
|
;
|
||||||
LD A,(CORE_BUFFERS.BootSector.Number_of_FATs) ; amount FATs
|
LD A,(CORE_BUFFERS.BootSector.Number_of_FATs) ; amount FATs
|
||||||
CP 1
|
CP 1
|
||||||
JR Z,.loop1
|
JR Z,.loop1
|
||||||
@ -751,6 +757,8 @@ FatBuffer:
|
|||||||
.FAT1_SEC_H: DW #0000 ; [ ] fat32
|
.FAT1_SEC_H: DW #0000 ; [ ] fat32
|
||||||
.FAT2_SEC_L: DW #0000
|
.FAT2_SEC_L: DW #0000
|
||||||
.FAT2_SEC_H: DW #0000 ; [ ] fat32
|
.FAT2_SEC_H: DW #0000 ; [ ] fat32
|
||||||
|
.SectorsPerFAT_L DW #0000
|
||||||
|
.SectorsPerFAT_H DB #00
|
||||||
.RootDirFirstSector_H: DW #0000 ; MSD_CAT_SEC first sector DIR ; !TODO ®£à ¨ç¥¨¥ ¢ 32 ƒ¨£ ;!FIXIT ¥ ¨á¯®«ì§ã¥âáï
|
.RootDirFirstSector_H: DW #0000 ; MSD_CAT_SEC first sector DIR ; !TODO ®£à ¨ç¥¨¥ ¢ 32 ƒ¨£ ;!FIXIT ¥ ¨á¯®«ì§ã¥âáï
|
||||||
.RootDirFirstSector_L: DW #0000 ; MSD_CAT_SEC first sector DIR
|
.RootDirFirstSector_L: DW #0000 ; MSD_CAT_SEC first sector DIR
|
||||||
.FilesPerSector: DB #00 ; ç¨á«® ä ©«®¢ëå § ¯¨á¥© ¢ ᥪâ®à¥
|
.FilesPerSector: DB #00 ; ç¨á«® ä ©«®¢ëå § ¯¨á¥© ¢ ᥪâ®à¥
|
||||||
|
|||||||
@ -349,22 +349,39 @@ WRITE_TO_FAT: LD DE,(FatBuffer.ENDCLUS_LOW) ;
|
|||||||
;FAT_BLOCK * Sectors_in_Block = SECTOR_OF_FAT
|
;FAT_BLOCK * Sectors_in_Block = SECTOR_OF_FAT
|
||||||
; in: HL - Cache block
|
; in: HL - Cache block
|
||||||
; out: C:HL - logical number
|
; out: C:HL - logical number
|
||||||
|
; B = 0
|
||||||
|
; [x] fat32 ;!TEST
|
||||||
GET_SECTOR_OF_FAT:
|
GET_SECTOR_OF_FAT:
|
||||||
XOR A
|
|
||||||
LD B,A
|
|
||||||
LD C,A
|
|
||||||
DUP FAT_CACHE.Degree ; 4
|
|
||||||
ADD HL,HL ;x2
|
|
||||||
ADC A,C
|
|
||||||
EDUP
|
|
||||||
LD C,A
|
|
||||||
LD A,(FatBuffer.FAT_TYPE)
|
LD A,(FatBuffer.FAT_TYPE)
|
||||||
CP FAT_TYPE.x32
|
LD B,FAT_CACHE.Degree_32 ;!FIXIT ᤥ« âì ç¥à¥§ ¯¥à¥¬¥ãî
|
||||||
RET NZ
|
XOR FAT_TYPE.x32
|
||||||
ADD HL,HL ;x2
|
JR Z,.next
|
||||||
RET NC
|
LD B,FAT_CACHE.Degree ;!FIXIT ᤥ« âì ç¥à¥§ ¯¥à¥¬¥ãî
|
||||||
INC C
|
XOR A
|
||||||
|
.next: LD C,A
|
||||||
|
;
|
||||||
|
.loop: ADD HL,HL ;x2
|
||||||
|
ADC A,C
|
||||||
|
DJNZ .loop
|
||||||
|
;
|
||||||
|
LD C,A
|
||||||
RET
|
RET
|
||||||
|
; GET_SECTOR_OF_FAT:
|
||||||
|
; XOR A
|
||||||
|
; LD B,A
|
||||||
|
; LD C,A
|
||||||
|
; DUP FAT_CACHE.Degree ; 4
|
||||||
|
; ADD HL,HL ;x2
|
||||||
|
; ADC A,C
|
||||||
|
; EDUP
|
||||||
|
; LD C,A
|
||||||
|
; LD A,(FatBuffer.FAT_TYPE)
|
||||||
|
; CP FAT_TYPE.x32
|
||||||
|
; RET NZ
|
||||||
|
; ADD HL,HL ;x2
|
||||||
|
; RET NC
|
||||||
|
; INC C
|
||||||
|
; RET
|
||||||
;;;;;;;;;
|
;;;;;;;;;
|
||||||
|
|
||||||
|
|
||||||
@ -385,23 +402,23 @@ READ_FAT_TABLE: PUSH HL
|
|||||||
;
|
;
|
||||||
CALL GET_SECTOR_OF_FAT
|
CALL GET_SECTOR_OF_FAT
|
||||||
;
|
;
|
||||||
LD DE,(FatBuffer.FAT1_SEC_L)
|
|
||||||
; BC:HL - ®¬¥à «®£.ᥪâ®à
|
; BC:HL - ®¬¥à «®£.ᥪâ®à
|
||||||
|
LD DE,(FatBuffer.FAT1_SEC_L)
|
||||||
ADD HL,DE
|
ADD HL,DE
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD XH,D
|
LD XH,D
|
||||||
LD XL,E
|
LD XL,E
|
||||||
LD HL,(FatBuffer.FAT1_SEC_H)
|
LD HL,(FatBuffer.FAT1_SEC_H)
|
||||||
JR NC,.no_inc
|
; JR NC,.no_inc
|
||||||
INC HL
|
; INC HL
|
||||||
.no_inc: ADD HL,BC
|
.no_inc: ADC HL,BC
|
||||||
; HL:IX - SECTOR FAT FOR READING
|
; HL:IX - SECTOR FAT FOR READING
|
||||||
LD A,(FatBuffer.FAT_TYPE)
|
LD A,(FatBuffer.FAT_TYPE)
|
||||||
CP FAT_TYPE.x32
|
XOR FAT_TYPE.x32
|
||||||
LD BC,FAT_CACHE.Sectors_16 * 256 + Dss.DRV.Read ; ॣ B * FAT_CACHE.Sector_Size = CASH SIZE
|
LD BC,FAT_CACHE.Sectors_16 * 256 + Dss.DRV.Read ; ॣ B * FAT_CACHE.Sector_Size = CASH SIZE
|
||||||
JR NZ,.nxt
|
JR NZ,.next
|
||||||
LD B,FAT_CACHE.Sectors_32 ; ॣ B * FAT_CACHE.Sector_Size = CASH SIZE
|
LD B,FAT_CACHE.Sectors_32 ; ॣ B * FAT_CACHE.Sector_Size = CASH SIZE
|
||||||
.nxt: LD DE,FATPAGE.cache ; ªã¤ ; DE - FAT ADDRESS
|
.next: LD DE,FATPAGE.cache ; ªã¤ ; DE - FAT ADDRESS
|
||||||
LD A,(FatBuffer.DRIVE) ; ®¬¥à ¤¨áª
|
LD A,(FatBuffer.DRIVE) ; ®¬¥à ¤¨áª
|
||||||
RST ToDSS.DRV
|
RST ToDSS.DRV
|
||||||
POP HL
|
POP HL
|
||||||
@ -409,7 +426,7 @@ READ_FAT_TABLE: PUSH HL
|
|||||||
|
|
||||||
|
|
||||||
; <20>®¤ª«îç¨âì ¡ ªã ª¥è FAT ¨ § ¯¨á âì ¥£® ¤¨áª
|
; <20>®¤ª«îç¨âì ¡ ªã ª¥è FAT ¨ § ¯¨á âì ¥£® ¤¨áª
|
||||||
; [ ] fat32
|
; [x] fat32 ;!TEST
|
||||||
WRITE_FAT_TABLE:
|
WRITE_FAT_TABLE:
|
||||||
SET_PAGE_X FATPAGE
|
SET_PAGE_X FATPAGE
|
||||||
PUSH AF
|
PUSH AF
|
||||||
@ -421,70 +438,108 @@ WRITE_FAT_TABLE:
|
|||||||
.Start: LD HL,(FatBuffer.CacheBlock)
|
.Start: LD HL,(FatBuffer.CacheBlock)
|
||||||
;FAT_BLOCK * Sectors_in_Block = SECTOR_OF_FAT
|
;FAT_BLOCK * Sectors_in_Block = SECTOR_OF_FAT
|
||||||
CALL GET_SECTOR_OF_FAT
|
CALL GET_SECTOR_OF_FAT
|
||||||
; BC:HL - ®¬¥à «®£. ᥪâ®à
|
; B=0, C:HL - ᬥ饨¥ ¢ ᥪâ®à å ¢ãâਠ⠡«¨æë FAT ç «® ¡«®ª
|
||||||
; [ ] fat32 ;!FIXIT
|
; [x] fat32 ;!FIXIT
|
||||||
LD B,H
|
LD (.save_hl),HL
|
||||||
LD C,L
|
;LD B,H
|
||||||
; [ ] fat32
|
;LD C,L
|
||||||
LD DE,FAT_CACHE.Sectors_16
|
;
|
||||||
ADD HL,DE ;+ SIZE CASH (16 SECTORS)
|
LD DE,FAT_CACHE.Sectors_32
|
||||||
LD A,E ;!HARDCODE ; MAX ç¨á«® ᥪâ®à®¢ ¤«ï çâ¥¨ï ¢ ªíè
|
LD A,(FatBuffer.FAT_TYPE)
|
||||||
LD DE,(CORE_BUFFERS.BootSector.SectorsPerFAT16) ; ᥪâ®à®¢ FAT
|
CP FAT_TYPE.x32
|
||||||
|
JR Z,.next
|
||||||
|
LD DE,FAT_CACHE.Sectors_16 ; !FIXIT ¡à âì íâ® § 票¥ ¨§ ¯¥à¥¬¥®© ¢¥§¤¥
|
||||||
|
;
|
||||||
|
.next: ADD HL,DE ;+ SIZE CASH (16 SECTORS)
|
||||||
|
JR NC,.no_inc
|
||||||
|
INC C
|
||||||
|
;
|
||||||
|
; C:HL ᬥ饨¥ ¢ ᥪâ®à å ¢ãâਠ⠡«¨æë FAT ª®¥æ ¡«®ª
|
||||||
|
;
|
||||||
|
.no_inc: ; ª®¥æ ¡«®ª ¢ë室¨â § ¯à¥¤¥«ë â ¡«¨æë?
|
||||||
|
LD B,E ; MAX ç¨á«® ᥪâ®à®¢ ¤«ï çâ¥¨ï ¢ ªíè
|
||||||
|
LD A,(FatBuffer.SectorsPerFAT_H)
|
||||||
|
LD (.sub_A),A
|
||||||
|
;LD DE,(CORE_BUFFERS.BootSector.SectorsPerFAT16) ; ᥪâ®à®¢ FAT
|
||||||
|
LD DE,(FatBuffer.SectorsPerFAT_L)
|
||||||
AND A
|
AND A
|
||||||
|
LD A,C
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
JR C,.WALLFAT
|
.sub_A+1: SBC A,0
|
||||||
|
JR C,.WALLFAT ; ‘F=1: ¥ ¢ë室¨â
|
||||||
|
OR A
|
||||||
|
JR NZ,.ERR
|
||||||
;
|
;
|
||||||
EX DE,HL
|
EX DE,HL
|
||||||
LD HL,FAT_CACHE.Sectors_16
|
; DE - ᪮«ìª® ᥪâ®à®¢ ª®¥æ ¡«®ª ¢ë室¨â § ¯à¥¤¥«ë â ¡«¨æë.
|
||||||
|
LD HL,FAT_CACHE.Sectors_16 ; !FIXIT ¡à âì íâ® § 票¥ ¨§ ¯¥à¥¬¥®© ¢¥§¤¥
|
||||||
; CF = 0
|
; CF = 0
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
|
;SBC A,0
|
||||||
JR C,.ERR ;!TODO ¯à®¢¥à¨âì
|
JR C,.ERR ;!TODO ¯à®¢¥à¨âì
|
||||||
LD A,L
|
LD B,L ; ç¨á«® ᥪâ®à®¢ ¤«ï çâ¥¨ï ¢ ªíè
|
||||||
.WALLFAT:
|
.WALLFAT: ;
|
||||||
LD H,B
|
.save_hl+1: LD HL,0
|
||||||
LD L,C
|
;LD H,B
|
||||||
PUSH HL
|
;LD L,C
|
||||||
|
;PUSH HL
|
||||||
|
;
|
||||||
|
; B = ç¨á«® ᥪâ®à®¢
|
||||||
|
LD IX,(FatBuffer.FAT1_SEC_H)
|
||||||
LD DE,(FatBuffer.FAT1_SEC_L)
|
LD DE,(FatBuffer.FAT1_SEC_L)
|
||||||
LD B,A ; ç¨á«® ᥪâ®à®¢
|
;LD B,A
|
||||||
LD C,Dss.DRV.Write ; § ¯¨áì ᥪâ®à®¢
|
;LD C,Dss.DRV.Write ; § ¯¨áì ᥪâ®à®¢
|
||||||
PUSH BC
|
PUSH BC
|
||||||
; á®åà 塞 ¯¥à¢ãî ª®¯¨î FAT
|
;
|
||||||
|
; á®åà 塞 ¯¥à¢ãî ª®¯¨î FAT. ‚室 IX:DE - ç «® â ¡«¨æë FAT
|
||||||
|
; C:HL - ᬥ饨¥ ¢ãâਠ⠡«¨æë
|
||||||
|
; B - ª®«¨ç¥á⢮ ᥪâ®à®¢
|
||||||
CALL .SAVE_FAT_XX
|
CALL .SAVE_FAT_XX
|
||||||
; [ ] ¥á«¨ ¢á¥£® ®¤ â ¡«¨æ FAT, â® ¯®¢â®à®© § ¯¨á¨ ¥ ¯à®¨á室¨â 13/03/2024
|
; [x] ¥á«¨ ¢á¥£® ®¤ â ¡«¨æ FAT, â® ¯®¢â®à®© § ¯¨á¨ ¥ ¯à®¨á室¨â 13/03/2024
|
||||||
LD DE,(FatBuffer.FAT2_SEC_L)
|
POP BC ; B = ç¨á«® ᥪâ®à®¢, C = áâ à訩 ¡ ©â á¬¥é¥¨ï ¢ ᥪâ®à å
|
||||||
LD HL,(FatBuffer.FAT1_SEC_L)
|
LD HL,(FatBuffer.FAT1_SEC_H)
|
||||||
|
LD DE,(FatBuffer.FAT2_SEC_H)
|
||||||
AND A
|
AND A
|
||||||
SBC HL,DE
|
SBC HL,DE
|
||||||
POP BC ; b=ç¨á«® ᥪâ®à®¢
|
JR NZ,.not_one_FAT
|
||||||
POP HL
|
LD HL,(FatBuffer.FAT2_SEC_L)
|
||||||
|
LD DE,(FatBuffer.FAT1_SEC_L)
|
||||||
|
; CF = 0
|
||||||
|
SBC HL,DE
|
||||||
JR Z,.only_one_FAT
|
JR Z,.only_one_FAT
|
||||||
;
|
;
|
||||||
; á®åà 塞 ¢â®àãî ª®¯¨î FAT
|
; á®åà 塞 ¢â®àãî ª®¯¨î FAT
|
||||||
|
.not_one_FAT: LD IX,(FatBuffer.FAT2_SEC_H)
|
||||||
|
LD DE,(FatBuffer.FAT2_SEC_L)
|
||||||
|
LD HL,(.save_hl)
|
||||||
CALL .SAVE_FAT_XX
|
CALL .SAVE_FAT_XX
|
||||||
AND A ;!TODO ¥â ª®âà®«ï ®è¨¡®ª
|
AND A ;!TODO ¥â ª®âà®«ï ®è¨¡®ª
|
||||||
.only_one_FAT:
|
.only_one_FAT: ;
|
||||||
.ERR: LD A,0
|
.ERR: LD A,0
|
||||||
LD (FatBuffer.CacheUpdated),A
|
LD (FatBuffer.CacheUpdated),A
|
||||||
RET
|
RET
|
||||||
;
|
; ‚室: IX:DE - ç «® â ¡«¨æë FAT ¢ ᥪâ®à å
|
||||||
.SAVE_FAT_XX:
|
; C:HL - ᬥ饨¥ ¢ â ¡«¨æ¥ ¢ ᥪâ®à å
|
||||||
ADD HL,DE
|
; B - ª®«¨ç¥á⢮ ᥪâ®à®¢
|
||||||
EX DE,HL
|
.SAVE_FAT_XX: ADD HL,DE
|
||||||
|
;EX DE,HL
|
||||||
|
JR NC,.no_inc_C
|
||||||
|
INC C
|
||||||
; ®¬¥à «®£. ᥪâ®à
|
; ®¬¥à «®£. ᥪâ®à
|
||||||
;LD IX,0
|
.no_inc_C: LD D,0
|
||||||
;ADD IX,DE
|
LD E,C
|
||||||
|
ADD IX,DE
|
||||||
|
LD D,XH
|
||||||
|
LD E,XL
|
||||||
|
EX DE,HL
|
||||||
|
; LD H,0
|
||||||
|
; LD L,C
|
||||||
LD XH,D
|
LD XH,D
|
||||||
LD XL,E
|
LD XL,E
|
||||||
;
|
; HL:IX - ᬥ饨¥ ¢ãâà¨ à §¤¥« ç «® 㦮£® ¡«®ª FAT
|
||||||
LD HL,0 ; áâ. à §àï¤
|
|
||||||
; CF = ADD HL,DE
|
|
||||||
; [ ] fat32 - ¢â®à ï â ¡«¨æ ä â ¬®¦¥â ¦¥ ã¥å âì ¤ «ìè¥ 16-¡¨â «®£¨ç¥áª®£® ᥪâ®à ?
|
|
||||||
IF _FAT32_ENABLE
|
|
||||||
RL L
|
|
||||||
ENDIF
|
|
||||||
;HL:IX - SECTOR OF FAT FOR SAVE
|
|
||||||
LD DE,FATPAGE.cache ; ®âªã¤
|
LD DE,FATPAGE.cache ; ®âªã¤
|
||||||
LD A,(FatBuffer.DRIVE) ; ®¬¥à ¤¨áª
|
LD A,(FatBuffer.DRIVE) ; ®¬¥à ¤¨áª
|
||||||
|
LD C,Dss.DRV.Write
|
||||||
JP ToDSS.DRV
|
JP ToDSS.DRV
|
||||||
|
|
||||||
;-----------------------------------------------------------------------
|
;-----------------------------------------------------------------------
|
||||||
@ -590,7 +645,7 @@ GET_FAT12_CELL:
|
|||||||
AND #07
|
AND #07
|
||||||
;AND FAT_CACHE.Part_Mask_16
|
;AND FAT_CACHE.Part_Mask_16
|
||||||
;
|
;
|
||||||
; [ ] fat32 ¯®¬¥ï«áï ¢å®¤ ¢ ¯à®æ¥¤ãàã READ_FAT_TABLE. <20> ìè¥ ®¬¥à ¡«®ª ¢ ॣ. A ¯¥à¥¤ ¢ «áï
|
; [ ] ¯®¬¥ï«áï ¢å®¤ ¢ ¯à®æ¥¤ãàã READ_FAT_TABLE. <20> ìè¥ ®¬¥à ¡«®ª ¢ ॣ. A ¯¥à¥¤ ¢ «áï
|
||||||
; LD BC,(FatBuffer.CacheBlock) ; BC - BLOCK FAT IN CASH
|
; LD BC,(FatBuffer.CacheBlock) ; BC - BLOCK FAT IN CASH
|
||||||
; CP C
|
; CP C
|
||||||
LD DE,(FatBuffer.CacheBlock) ; BC - BLOCK FAT IN CASH
|
LD DE,(FatBuffer.CacheBlock) ; BC - BLOCK FAT IN CASH
|
||||||
@ -611,7 +666,7 @@ GET_FAT12_CELL:
|
|||||||
;NSECTOR:
|
;NSECTOR:
|
||||||
; in: HL':HL - CLUSTER
|
; in: HL':HL - CLUSTER
|
||||||
; out: HL:IX - SECTOR
|
; out: HL:IX - SECTOR
|
||||||
;[ ] fat32
|
;[x] fat32 ;!TEST
|
||||||
CLUSTER_TO_SECTOR:
|
CLUSTER_TO_SECTOR:
|
||||||
EXX
|
EXX
|
||||||
PUSH HL
|
PUSH HL
|
||||||
@ -747,6 +802,7 @@ BLOCK_READ: PUSH BC
|
|||||||
LD C,Dss.DRV.Read
|
LD C,Dss.DRV.Read
|
||||||
RST ToDSS.DRV
|
RST ToDSS.DRV
|
||||||
JR C,.Error
|
JR C,.Error
|
||||||
|
; [ ] fat32 ???
|
||||||
POP BC
|
POP BC
|
||||||
LD HL,(READ.PointerOnBuffer)
|
LD HL,(READ.PointerOnBuffer)
|
||||||
LD DE,(CORE_BUFFERS.BootSector.BytesPerSector)
|
LD DE,(CORE_BUFFERS.BootSector.BytesPerSector)
|
||||||
@ -952,6 +1008,7 @@ BLOK_WR: PUSH BC
|
|||||||
LD B,C
|
LD B,C
|
||||||
LD C,Dss.DRV.Write
|
LD C,Dss.DRV.Write
|
||||||
RST ToDSS.DRV
|
RST ToDSS.DRV
|
||||||
|
LD A,DSS_Error.sys.WRITE_ERROR
|
||||||
JR C,.ErrorWrite
|
JR C,.ErrorWrite
|
||||||
POP BC
|
POP BC
|
||||||
LD HL,(READ.PointerOnBuffer)
|
LD HL,(READ.PointerOnBuffer)
|
||||||
@ -999,6 +1056,7 @@ BLOK_WR: PUSH BC
|
|||||||
LD B,C
|
LD B,C
|
||||||
LD C,Dss.DRV.Write
|
LD C,Dss.DRV.Write
|
||||||
RST ToDSS.DRV
|
RST ToDSS.DRV
|
||||||
|
LD A,DSS_Error.sys.WRITE_ERROR
|
||||||
JR C,.ErrorWrite
|
JR C,.ErrorWrite
|
||||||
POP BC
|
POP BC
|
||||||
LD HL,(READ.PointerOnBuffer)
|
LD HL,(READ.PointerOnBuffer)
|
||||||
@ -1013,11 +1071,11 @@ BLOK_WR: PUSH BC
|
|||||||
;
|
;
|
||||||
.Error_6: POP BC
|
.Error_6: POP BC
|
||||||
POP BC
|
POP BC
|
||||||
.Error_4: POP BC
|
POP BC
|
||||||
POP BC ;[x] GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE
|
POP BC ;[x] GET/SAVE CLUSTER NUMBER BEFORE/AFTER READ/WRITE
|
||||||
.ErrorWrite: POP BC
|
.ErrorWrite: POP BC
|
||||||
POP DE
|
POP DE
|
||||||
LD A,DSS_Error.sys.WRITE_ERROR
|
;LD A,DSS_Error.sys.WRITE_ERROR
|
||||||
;SCF
|
;SCF
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
@ -1084,6 +1142,7 @@ BLOK_WR: PUSH BC
|
|||||||
; DE - ®á⠢襥áï ᬥ饨¥ ¢ ä ©«¥ ¢ ª« áâ¥à å (áâ à襥 á«®¢®, D=D+1)
|
; DE - ®á⠢襥áï ᬥ饨¥ ¢ ä ©«¥ ¢ ª« áâ¥à å (áâ à襥 á«®¢®, D=D+1)
|
||||||
; BC - ®á⠢襥áï ᬥ饨¥ ¢ ä ©«¥ ¢ ª« áâ¥à å (¬« ¤è¥¥ á«®¢®, B=B+1)
|
; BC - ®á⠢襥áï ᬥ饨¥ ¢ ä ©«¥ ¢ ª« áâ¥à å (¬« ¤è¥¥ á«®¢®, B=B+1)
|
||||||
; ¥ ¯®àâ¨â HL, HL' ¨ DE:BC ¥á«¨ ®¯â¨¬¨§ æ¨ï ¥ áà ¡®â «
|
; ¥ ¯®àâ¨â HL, HL' ¨ DE:BC ¥á«¨ ®¯â¨¬¨§ æ¨ï ¥ áà ¡®â «
|
||||||
|
;[ ] fat32
|
||||||
GetSavedCluster:
|
GetSavedCluster:
|
||||||
XOR A
|
XOR A
|
||||||
CP (IY+_sFM.OptimizedClusters)
|
CP (IY+_sFM.OptimizedClusters)
|
||||||
|
|||||||
486
DSS/KEYINTER.ASM
486
DSS/KEYINTER.ASM
@ -1,31 +1,49 @@
|
|||||||
|
|
||||||
;[BEGIN]
|
;[BEGIN]
|
||||||
;//MODULE: KEYINTER
|
;//MODULE: KEYINTER Keyboard Scan Codes: Set 2
|
||||||
;//CREATE: 19-05-1998 AUTHOR: Denis Parinov
|
;//CREATE: 19-05-1998 AUTHOR: Denis Parinov
|
||||||
;//UPDATE: 24-10-1999 DNS Restore module
|
;//UPDATE: 24-10-1999 DNS Restore module
|
||||||
;------------------------------------------------
|
;------------------------------------------------
|
||||||
;R02 13-04-2023 BAO FIX BUG IN K_CLEAR WITH STACK OVERFLOW
|
;R02 13-04-2023 BAO FIX BUG IN K_CLEAR WITH STACK OVERFLOW
|
||||||
;R01 10-02-2003 DNS Add cursor visualisation
|
;R01 10-02-2003 DNS Add cursor visualisation
|
||||||
;
|
;
|
||||||
_mInfoALIGN 256,0
|
|
||||||
;KEYBOARD BUFFER
|
|
||||||
SBUF: BLOCK 64,0
|
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;KEYBOARD BUFFER
|
||||||
|
_mInfoALIGN 256,0
|
||||||
|
SBUF: BLOCK 64,0
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
; _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 ;;
|
||||||
|
.Size EQU $-XLAT_T ;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
HEAD DB #00
|
HEAD DB #00
|
||||||
HOST DB #00
|
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
|
||||||
LANG_R EQU 5 ; á®ç¥â ¨¥ ª« ¢¨è ¤«ï ¯¥à¥ª«î票ï ï§ëª ®â¦ â®
|
RES5_L EQU 5 ; not used ;X_SHIFT
|
||||||
LANG_S EQU 4 ; á®ç¥â ¨¥ ª« ¢¨è ¤«ï ¯¥à¥ª«î票ï ï§ëª ¦ â®
|
RES4_L EQU 4 ; not used
|
||||||
NUM_L EQU 3
|
NUM_L EQU 3
|
||||||
SCRL_L EQU 2
|
SCRL_L EQU 2
|
||||||
INS_L EQU 1
|
INS_L EQU 1
|
||||||
CAPS_L EQU 0
|
CAPS_L EQU 0
|
||||||
KEYFLAG DB #02 ;D0-Key Pressed
|
KEYFLAG DB #02 ;D0-Key Pressed
|
||||||
|
;
|
||||||
K_SHIFT EQU $-KEYFLAG
|
K_SHIFT EQU $-KEYFLAG
|
||||||
L_SHIFT EQU 7
|
L_SHIFT EQU 7
|
||||||
R_SHIFT EQU 6
|
R_SHIFT EQU 6
|
||||||
@ -36,7 +54,7 @@ L_ALT EQU 2
|
|||||||
R_CTRL EQU 1
|
R_CTRL EQU 1
|
||||||
R_ALT EQU 0
|
R_ALT EQU 0
|
||||||
KEYCTRL DB #00
|
KEYCTRL DB #00
|
||||||
|
;
|
||||||
KEYFLG EQU $-KEYFLAG
|
KEYFLG EQU $-KEYFLAG
|
||||||
FLAG_E0 EQU 7
|
FLAG_E0 EQU 7
|
||||||
FLAG_F0 EQU 6
|
FLAG_F0 EQU 6
|
||||||
@ -45,9 +63,9 @@ FLAG_04 EQU 4
|
|||||||
FLAG_03 EQU 3
|
FLAG_03 EQU 3
|
||||||
FLAG_02 EQU 2
|
FLAG_02 EQU 2
|
||||||
FLAG_01 EQU 1
|
FLAG_01 EQU 1
|
||||||
FLAG_00 EQU 0
|
CTRL_SHIFT EQU 0 ; ctrl+shift = change language
|
||||||
DB #00
|
KEY_FLG DB #00
|
||||||
|
;
|
||||||
SOUND_K EQU $-KEYFLAG
|
SOUND_K EQU $-KEYFLAG
|
||||||
FLAG_S7 EQU 7
|
FLAG_S7 EQU 7
|
||||||
FLAG_S6 EQU 6
|
FLAG_S6 EQU 6
|
||||||
@ -58,6 +76,8 @@ 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 EQU $-KEYFLAG
|
||||||
UNCODE DW 0 ; ¯®á«¥¤ïï ®â¦ â ï ª« ¢¨è
|
UNCODE DW 0 ; ¯®á«¥¤ïï ®â¦ â ï ª« ¢¨è
|
||||||
|
|
||||||
; D15 - LShift
|
; D15 - LShift
|
||||||
@ -69,7 +89,7 @@ UNCODE DW 0 ;
|
|||||||
; D9 - RCTRL
|
; D9 - RCTRL
|
||||||
; D8 - RALT
|
; D8 - RALT
|
||||||
; D7 - Language Lock
|
; D7 - Language Lock
|
||||||
; D6 - Reserved
|
; D6 - Pause Lock
|
||||||
; D5 - Reserved
|
; D5 - Reserved
|
||||||
; D4 - Reserved
|
; D4 - Reserved
|
||||||
; D3 - Num Lock
|
; D3 - Num Lock
|
||||||
@ -201,19 +221,18 @@ Cursor_On: LD C,BIOS.LP_GET_PLACE ; 㧭
|
|||||||
LD BC,NORM_ZG*256+BIOS.WIN_PUT_SYM ; b=§ ª®£¥., á=ᨬ¢®« íªà
|
LD BC,NORM_ZG*256+BIOS.WIN_PUT_SYM ; b=§ ª®£¥., á=ᨬ¢®« íªà
|
||||||
LD A,(Cursor.Flag)
|
LD A,(Cursor.Flag)
|
||||||
OR A
|
OR A
|
||||||
JR Z,.put
|
JR Z,.put_
|
||||||
LD B,CURSOR_ZG ; ç¥àâ
|
|
||||||
LD A,(KEYFLAG) ; ä« £¨ ª« ¢ë
|
|
||||||
;BIT 1,A ; ¡¨â Ins
|
|
||||||
AND %0000'0010 ; ¡¨â Ins
|
|
||||||
JR NZ,.put
|
|
||||||
LD B,INS_CUR_ZG ; ¡«®ª
|
LD B,INS_CUR_ZG ; ¡«®ª
|
||||||
|
LD A,(KEYFLAG) ; ä« £¨ ª« ¢ë
|
||||||
|
AND 1<<INS_L
|
||||||
|
JR Z,.put_
|
||||||
|
LD B,CURSOR_ZG ; ç¥àâ
|
||||||
.put: XOR A ; ®¬¥à ®ª
|
.put: XOR A ; ®¬¥à ®ª
|
||||||
RST ToBIOS
|
.put_: RST ToBIOS
|
||||||
|
;
|
||||||
LD DE,(Cursor_Off.pos)
|
LD DE,(Cursor_Off.pos)
|
||||||
CALL LOCATE
|
CALL LOCATE
|
||||||
|
;
|
||||||
LD A,1
|
LD A,1
|
||||||
LD (Cursor_Off.Flag),A
|
LD (Cursor_Off.Flag),A
|
||||||
LD A,delay_curs
|
LD A,delay_curs
|
||||||
@ -317,7 +336,7 @@ TESTKEY:
|
|||||||
CP (HL)
|
CP (HL)
|
||||||
RET Z
|
RET Z
|
||||||
LD L,(HL)
|
LD L,(HL)
|
||||||
LD H,SBUF/256
|
LD H,high SBUF
|
||||||
LD E,(HL)
|
LD E,(HL)
|
||||||
INC L
|
INC L
|
||||||
LD D,(HL)
|
LD D,(HL)
|
||||||
@ -379,7 +398,7 @@ PUTSYM: LD HL,HEAD
|
|||||||
INC (HL)
|
INC (HL)
|
||||||
RES 6,(HL)
|
RES 6,(HL)
|
||||||
LD L,A
|
LD L,A
|
||||||
LD H,SBUF/256
|
LD H,high SBUF
|
||||||
LD (HL),E
|
LD (HL),E
|
||||||
INC L
|
INC L
|
||||||
LD (HL),D
|
LD (HL),D
|
||||||
@ -400,7 +419,7 @@ GETSYM: LD HL,HOST
|
|||||||
INC (HL)
|
INC (HL)
|
||||||
RES 6,(HL)
|
RES 6,(HL)
|
||||||
LD L,A
|
LD L,A
|
||||||
LD H,SBUF/256
|
LD H,high SBUF
|
||||||
LD E,(HL)
|
LD E,(HL)
|
||||||
INC L
|
INC L
|
||||||
LD D,(HL)
|
LD D,(HL)
|
||||||
@ -411,8 +430,7 @@ GETSYM: LD HL,HOST
|
|||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
|
||||||
FULL_BF:
|
FULL_BF: EX AF,AF'
|
||||||
EX AF,AF'
|
|
||||||
BIT SF_BUFF,(IX+SOUND_K)
|
BIT SF_BUFF,(IX+SOUND_K)
|
||||||
JR Z,.FBF
|
JR Z,.FBF
|
||||||
EXX
|
EXX
|
||||||
@ -422,15 +440,17 @@ FULL_BF:
|
|||||||
EXX
|
EXX
|
||||||
.FBF: EX AF,AF'
|
.FBF: EX AF,AF'
|
||||||
RET
|
RET
|
||||||
.E0_KEY:
|
;
|
||||||
SET FLAG_E0,(IX+KEYFLG)
|
.E0_KEY: SET FLAG_E0,(IX+KEYFLG)
|
||||||
JR KEYSCAN.RESCAN
|
JR KEYSCAN.RESCAN
|
||||||
.F0_KEY:
|
;
|
||||||
SET FLAG_F0,(IX+KEYFLG)
|
.F0_KEY: SET FLAG_F0,(IX+KEYFLG)
|
||||||
JR KEYSCAN.RESCAN
|
JR KEYSCAN.RESCAN
|
||||||
.E1_KEY:
|
;
|
||||||
SET FLAG_E1,(IX+KEYFLG)
|
IF USE_E1_SCANCODE
|
||||||
|
.E1_KEY: SET FLAG_E1,(IX+KEYFLG)
|
||||||
JR KEYSCAN.RESCAN
|
JR KEYSCAN.RESCAN
|
||||||
|
ENDIF
|
||||||
;
|
;
|
||||||
|
|
||||||
KEYSCAN: LD IX,KEYFLAG
|
KEYSCAN: LD IX,KEYFLAG
|
||||||
@ -458,9 +478,12 @@ KEYSCAN: LD IX,KEYFLAG
|
|||||||
;
|
;
|
||||||
CP #E0
|
CP #E0
|
||||||
JR Z,FULL_BF.E0_KEY
|
JR Z,FULL_BF.E0_KEY
|
||||||
;
|
|
||||||
CP #E1
|
CP #E1
|
||||||
|
IF USE_E1_SCANCODE
|
||||||
JR Z,FULL_BF.E1_KEY
|
JR Z,FULL_BF.E1_KEY
|
||||||
|
ELSE
|
||||||
|
JR Z,.RESCAN
|
||||||
|
ENDIF
|
||||||
;
|
;
|
||||||
BIT FLAG_F0,(IX+KEYFLG)
|
BIT FLAG_F0,(IX+KEYFLG)
|
||||||
JR NZ,UN_KEY
|
JR NZ,UN_KEY
|
||||||
@ -469,12 +492,27 @@ KEYSCAN: LD IX,KEYFLAG
|
|||||||
CALL XLAT
|
CALL XLAT
|
||||||
CALL SHIFTS
|
CALL SHIFTS
|
||||||
RES FLAG_E0,(IX+KEYFLG)
|
RES FLAG_E0,(IX+KEYFLG)
|
||||||
|
IF USE_E1_SCANCODE
|
||||||
RES FLAG_E1,(IX+KEYFLG)
|
RES FLAG_E1,(IX+KEYFLG)
|
||||||
;[ ] ¢ë£à¥¡á⨠¢¥áì ¡ãä¥à
|
ENDIF
|
||||||
JR Z,.RESCAN
|
|
||||||
; RET Z ;IT'S SHIFT KEY
|
|
||||||
;
|
;
|
||||||
CALL INPCODE ;L - AT POS. CODE
|
IF CHANGE_LANG_CTRL_SHIFT
|
||||||
|
JR NZ,.check_key
|
||||||
|
; check ctrl+shift
|
||||||
|
BIT X_CTRL,(IX+K_SHIFT)
|
||||||
|
JR Z,.RESCAN ;[x] ¢ë£à¥¡á⨠¢¥áì ¡ãä¥à
|
||||||
|
LD A,(KEYCTRL)
|
||||||
|
AND 1<<L_SHIFT | 1<<R_SHIFT
|
||||||
|
JR Z,.RESCAN ;[x] ¢ë£à¥¡á⨠¢¥áì ¡ãä¥à
|
||||||
|
SET CTRL_SHIFT,(IX+KEYFLG)
|
||||||
|
JR .RESCAN ;[x] ¢ë£à¥¡á⨠¢¥áì ¡ãä¥à
|
||||||
|
ELSE
|
||||||
|
;[x] ¢ë£à¥¡á⨠¢¥áì ¡ãä¥à
|
||||||
|
JR Z,.RESCAN ;IT'S SHIFT KEY
|
||||||
|
;
|
||||||
|
ENDIF
|
||||||
|
;
|
||||||
|
.check_key: CALL INPCODE ;L - AT POS. CODE
|
||||||
;PUTCODE
|
;PUTCODE
|
||||||
;Caps Lock
|
;Caps Lock
|
||||||
LD HL,#1C00
|
LD HL,#1C00
|
||||||
@ -515,37 +553,44 @@ KEYSCAN: LD IX,KEYFLAG
|
|||||||
; SBC HL,DE
|
; SBC HL,DE
|
||||||
; CALL Z,RST_X
|
; CALL Z,RST_X
|
||||||
;
|
;
|
||||||
|
; [x] ®¯ á ï åà¥ì
|
||||||
|
LD HL,BREAK_PROCESS_CODE
|
||||||
|
AND A
|
||||||
|
SBC HL,DE
|
||||||
|
CALL Z,Break_Process
|
||||||
|
;
|
||||||
LD BC,(KEYFLAG)
|
LD BC,(KEYFLAG)
|
||||||
CALL PUTSYM
|
CALL PUTSYM
|
||||||
;[ ] 29/02/2024 ¢ë£à¥¡á⨠¢¥áì ¡ãä¥à
|
;[ ] 29/02/2024 ¢ë£à¥¡á⨠¢¥áì ¡ãä¥à
|
||||||
JR .RESCAN
|
JP .RESCAN
|
||||||
;RET
|
;RET
|
||||||
;
|
;
|
||||||
;
|
;
|
||||||
IF CHANGE_LANG_CTRL_SHIFT
|
; IF CHANGE_LANG_CTRL_SHIFT
|
||||||
UN_KEY: RES FLAG_F0,(IX+KEYFLG)
|
; UN_KEY: RES FLAG_F0,(IX+KEYFLG)
|
||||||
LD L,A
|
; LD L,A
|
||||||
CALL XLAT
|
; CALL XLAT
|
||||||
CALL UNSHIFT
|
; CALL UNSHIFT
|
||||||
RES FLAG_E0,(IX+KEYFLG)
|
; RES FLAG_E0,(IX+KEYFLG)
|
||||||
LD A,(UNCODE)
|
; LD A,(UNCODE)
|
||||||
LD H,0
|
; LD H,0
|
||||||
LD (UNCODE),HL
|
; LD (UNCODE),HL
|
||||||
CP #36 ;L CTRL
|
; ;
|
||||||
JR Z,.check_shift
|
; CP #36 ;L CTRL
|
||||||
CP #29 ;L SHIFT
|
; JR Z,.check_shift
|
||||||
RET NZ
|
; CP #29 ;L SHIFT
|
||||||
; check ctrl
|
; RET NZ
|
||||||
LD A,L
|
; ; check ctrl
|
||||||
SUB #36 ;L CTRL
|
; LD A,L
|
||||||
JR Z,LANG_X
|
; SUB #36 ;L CTRL
|
||||||
RET
|
; JR Z,LANG_X
|
||||||
;
|
; RET
|
||||||
.check_shift: LD A,L
|
; ;
|
||||||
SUB #29
|
; .check_shift: LD A,L
|
||||||
JR Z,LANG_X
|
; SUB #29
|
||||||
RET
|
; JR Z,LANG_X
|
||||||
ELSE
|
; RET
|
||||||
|
; ELSE
|
||||||
UN_KEY: RES FLAG_F0,(IX+KEYFLG)
|
UN_KEY: RES FLAG_F0,(IX+KEYFLG)
|
||||||
LD L,A
|
LD L,A
|
||||||
CALL XLAT
|
CALL XLAT
|
||||||
@ -554,22 +599,24 @@ UN_KEY: RES FLAG_F0,(IX+KEYFLG)
|
|||||||
LD H,0
|
LD H,0
|
||||||
LD (UNCODE),HL
|
LD (UNCODE),HL
|
||||||
RET
|
RET
|
||||||
ENDIF
|
; ENDIF
|
||||||
;
|
;
|
||||||
|
|
||||||
CAPS_X: LD A,(IX+K_LOCK)
|
CAPS_X: LD A,(KEYFLAG)
|
||||||
XOR 1<<CAPS_L
|
XOR 1<<CAPS_L
|
||||||
LD (IX+K_LOCK),A
|
LD (KEYFLAG),A
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
|
||||||
LANG_X: IFN CHANGE_LANG_CTRL_SHIFT
|
LANG_X: IFN CHANGE_LANG_CTRL_SHIFT
|
||||||
BIT X_CTRL,(IX+K_SHIFT)
|
BIT X_CTRL,(IX+K_SHIFT)
|
||||||
RET Z
|
RET Z
|
||||||
|
ELSE
|
||||||
|
RES CTRL_SHIFT,(IX+KEYFLG)
|
||||||
ENDIF
|
ENDIF
|
||||||
LD A,(IX+K_LOCK)
|
LD A,(KEYFLAG)
|
||||||
XOR 1<<LANG_L
|
XOR 1<<LANG_L
|
||||||
LD (IX+K_LOCK),A
|
LD (KEYFLAG),A
|
||||||
BIT SF_ALT,(IX+SOUND_K)
|
BIT SF_ALT,(IX+SOUND_K)
|
||||||
RET Z
|
RET Z
|
||||||
EXX
|
EXX
|
||||||
@ -580,25 +627,25 @@ LANG_X: IFN CHANGE_LANG_CTRL_SHIFT
|
|||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
|
||||||
INS_X: LD A,(IX+K_LOCK)
|
INS_X: LD A,(KEYFLAG)
|
||||||
XOR 1<<INS_L
|
XOR 1<<INS_L
|
||||||
LD (IX+K_LOCK),A
|
LD (KEYFLAG),A
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
|
||||||
NUM_X: LD A,(IX+K_LOCK)
|
NUM_X: LD A,(KEYFLAG)
|
||||||
XOR 1<<NUM_L
|
XOR 1<<NUM_L
|
||||||
LD (IX+K_LOCK),A
|
LD (KEYFLAG),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 HL ; ¡ « á á⥪
|
||||||
LD A,(IX+K_LOCK)
|
LD A,(KEYFLAG)
|
||||||
XOR 1<<PAUSE_L
|
XOR 1<<PAUSE_L
|
||||||
LD (IX+K_LOCK),A
|
LD (KEYFLAG),A
|
||||||
BIT PAUSE_L,A
|
AND 1<<PAUSE_L
|
||||||
RET Z
|
RET Z
|
||||||
EI
|
EI
|
||||||
.loop: HALT
|
.loop: HALT
|
||||||
@ -608,9 +655,9 @@ PAUSE_X: BIT X_CTRL,(IX+K_SHIFT)
|
|||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
|
||||||
SCL_X: LD A,(IX+K_LOCK)
|
SCL_X: LD A,(KEYFLAG)
|
||||||
XOR 1<<SCRL_L
|
XOR 1<<SCRL_L
|
||||||
LD (IX+K_LOCK),A
|
LD (KEYFLAG),A
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -645,6 +692,9 @@ UNSHIFT: LD A,L
|
|||||||
.USH2: CP #36 ;L CTRL
|
.USH2: CP #36 ;L CTRL
|
||||||
JR NZ,.USH3
|
JR NZ,.USH3
|
||||||
RES L_CTRL,(IX+K_SHIFT)
|
RES L_CTRL,(IX+K_SHIFT)
|
||||||
|
IF CHANGE_LANG_CTRL_SHIFT
|
||||||
|
CALL .CHECK_CTRL_SHIFT
|
||||||
|
ENDIF
|
||||||
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)
|
||||||
@ -653,6 +703,9 @@ UNSHIFT: LD A,L
|
|||||||
.USH3: CP #3A ;R CTRL
|
.USH3: CP #3A ;R CTRL
|
||||||
JR NZ,.USH4
|
JR NZ,.USH4
|
||||||
RES R_CTRL,(IX+K_SHIFT)
|
RES R_CTRL,(IX+K_SHIFT)
|
||||||
|
IF CHANGE_LANG_CTRL_SHIFT
|
||||||
|
CALL .CHECK_CTRL_SHIFT
|
||||||
|
ENDIF
|
||||||
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)
|
||||||
@ -661,13 +714,24 @@ UNSHIFT: LD A,L
|
|||||||
.USH4: CP #29 ;L SHIFT
|
.USH4: CP #29 ;L SHIFT
|
||||||
JR NZ,.USH5
|
JR NZ,.USH5
|
||||||
RES L_SHIFT,(IX+K_SHIFT)
|
RES L_SHIFT,(IX+K_SHIFT)
|
||||||
|
IF CHANGE_LANG_CTRL_SHIFT
|
||||||
|
JR .CHECK_CTRL_SHIFT
|
||||||
|
ELSE
|
||||||
RET
|
RET
|
||||||
|
ENDIF
|
||||||
;
|
;
|
||||||
.USH5: CP #34 ;R SHIFT
|
.USH5: CP #34 ;R SHIFT
|
||||||
;JR NZ,.USH6
|
;JR NZ,.USH6
|
||||||
RET NZ
|
RET NZ
|
||||||
RES R_SHIFT,(IX+K_SHIFT)
|
RES R_SHIFT,(IX+K_SHIFT)
|
||||||
|
IFN CHANGE_LANG_CTRL_SHIFT
|
||||||
.USH6: RET
|
.USH6: RET
|
||||||
|
ELSE
|
||||||
|
.CHECK_CTRL_SHIFT:
|
||||||
|
BIT CTRL_SHIFT,(IX+KEYFLG)
|
||||||
|
RET Z
|
||||||
|
JP LANG_X
|
||||||
|
ENDIF
|
||||||
|
|
||||||
SHIFTS: LD A,L
|
SHIFTS: LD A,L
|
||||||
CP #37 ;L ALT
|
CP #37 ;L ALT
|
||||||
@ -697,6 +761,9 @@ SHIFTS: LD A,L
|
|||||||
.NSH4: CP #29 ;L SHIFT
|
.NSH4: CP #29 ;L SHIFT
|
||||||
JR NZ,.NSH5
|
JR NZ,.NSH5
|
||||||
SET L_SHIFT,(IX+K_SHIFT)
|
SET L_SHIFT,(IX+K_SHIFT)
|
||||||
|
; BIT X_CTRL,(IX+K_SHIFT)
|
||||||
|
; RET Z
|
||||||
|
; SET
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
.NSH5: CP #34 ;R SHIFT
|
.NSH5: CP #34 ;R SHIFT
|
||||||
@ -724,8 +791,19 @@ 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)
|
||||||
|
; [ ] 31/03/2024 ¨á¯à ¢«¥ ¡ £ á ¢ë室®¬ § £à ¨æë â ¡«¨æë XLAT_T
|
||||||
|
CP XLAT_T.Size
|
||||||
|
LD L,0
|
||||||
|
RET NC
|
||||||
|
;
|
||||||
|
LD HL,XLAT_T
|
||||||
|
ADD A,L
|
||||||
|
LD L,A
|
||||||
|
JR NC,.no_inc
|
||||||
|
INC H
|
||||||
|
.no_inc: LD L,(HL)
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -735,9 +813,10 @@ 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,(IX+K_SHIFT)
|
LD A,(KEYCTRL)
|
||||||
AND #C0
|
AND 1<<L_SHIFT | 1<<R_SHIFT
|
||||||
JR NZ,SHIFT_L
|
;BIT X_SHIFT,(IX+K_LOCK)
|
||||||
|
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
|
||||||
@ -746,29 +825,25 @@ 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.NO_SET
|
JR NZ,CONVERT.NO_SET
|
||||||
LD BC,NORMTAB
|
LD BC,NORMTAB
|
||||||
JR CONVER.NO_SET
|
JR CONVERT.NO_SET
|
||||||
;
|
;
|
||||||
; CONVER: LD H,0
|
.SHIFT: LD BC,SHIFTAB
|
||||||
; ADD HL,BC
|
|
||||||
; LD E,(HL)
|
|
||||||
; RET
|
|
||||||
|
|
||||||
SHIFT_L: LD BC,SHIFTAB
|
|
||||||
BIT CAPS_L,(IX+K_LOCK)
|
BIT CAPS_L,(IX+K_LOCK)
|
||||||
JR Z,CONVER.SET
|
JR Z,CONVERT.SET
|
||||||
LD BC,SHF2TAB
|
LD BC,SHF2TAB
|
||||||
CONVER: ;
|
CONVERT: ;
|
||||||
.SET: SET 7,D
|
.SET: SET 7,D
|
||||||
.NO_SET: LD H,0
|
.NO_SET: LD H,0
|
||||||
ADD HL,BC
|
ADD HL,BC
|
||||||
LD E,(HL)
|
LD E,(HL)
|
||||||
RET
|
RET
|
||||||
|
|
||||||
RUSCODE: LD A,(IX+K_SHIFT)
|
RUSCODE: LD A,(KEYCTRL)
|
||||||
AND #C0
|
AND 1<<L_SHIFT | 1<<R_SHIFT
|
||||||
JR NZ,SHIFT_R
|
;BIT X_SHIFT,(IX+K_LOCK)
|
||||||
|
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
|
||||||
@ -777,62 +852,21 @@ 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,CONVER.NO_SET
|
JR NZ,CONVERT.NO_SET
|
||||||
LD BC,NORMRUS
|
LD BC,NORMRUS
|
||||||
JR CONVER.NO_SET
|
JR CONVERT.NO_SET
|
||||||
; LD H,0
|
;
|
||||||
; ADD HL,BC
|
.SHIFT: LD BC,SHIFRUS
|
||||||
; LD E,(HL)
|
|
||||||
; RET
|
|
||||||
|
|
||||||
SHIFT_R: LD BC,SHIFRUS
|
|
||||||
BIT CAPS_L,(IX+K_LOCK)
|
BIT CAPS_L,(IX+K_LOCK)
|
||||||
JR Z,CONVER.SET
|
JR Z,CONVERT.SET
|
||||||
LD BC,SHF2RUS
|
LD BC,SHF2RUS
|
||||||
JR CONVER.SET
|
JR CONVERT.SET
|
||||||
; .CONVER: SET 7,D
|
|
||||||
; LD H,0
|
|
||||||
; ADD HL,BC
|
|
||||||
; LD E,(HL)
|
|
||||||
; RET
|
|
||||||
|
|
||||||
|
;-----------------------------------------------------------------------
|
||||||
|
;!TEST
|
||||||
K_SETUP: INC B
|
K_SETUP: INC B
|
||||||
DEC B
|
DJNZ K_SND_R
|
||||||
JP Z,KEYMAP
|
; subfunc 0
|
||||||
DEC B
|
|
||||||
JP Z,K_SND_R
|
|
||||||
DEC B
|
|
||||||
JP Z,K_SND_W
|
|
||||||
LD A,DSS_Error.sys.INVALID_ACCESS
|
|
||||||
SCF
|
|
||||||
RET
|
|
||||||
;
|
|
||||||
|
|
||||||
K_SND_R: LD A,(SOUND_K)
|
|
||||||
AND A
|
|
||||||
RET
|
|
||||||
;
|
|
||||||
|
|
||||||
K_SND_W: LD (SOUND_K),A
|
|
||||||
AND A
|
|
||||||
RET
|
|
||||||
;
|
|
||||||
|
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
_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
|
KEYMAP: LD BC,ENDNORM-NORMTAB
|
||||||
BIT 7,A
|
BIT 7,A
|
||||||
JR NZ,READMAP
|
JR NZ,READMAP
|
||||||
@ -869,7 +903,7 @@ KEYMAP: LD BC,ENDNORM-NORMTAB
|
|||||||
.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
|
||||||
@ -904,6 +938,148 @@ READMAP: RES 7,A
|
|||||||
XOR A
|
XOR A
|
||||||
RET
|
RET
|
||||||
;
|
;
|
||||||
|
; DEC B
|
||||||
|
; JP Z,KEYMAP
|
||||||
|
; DEC B
|
||||||
|
; JP Z,K_SND_R
|
||||||
|
; DEC B
|
||||||
|
; JP Z,K_SND_W
|
||||||
|
; error subfunc
|
||||||
|
K_SETUP.ERROR: LD A,DSS_Error.sys.INVALID_ACCESS
|
||||||
|
SCF
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
K_SND_R: DJNZ K_SND_W
|
||||||
|
; subfunc 1
|
||||||
|
LD A,(SOUND_K)
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
; subfunc 2
|
||||||
|
K_SND_W: DJNZ K_RESET_BUFFER
|
||||||
|
;
|
||||||
|
LD (SOUND_K),A
|
||||||
|
AND A
|
||||||
|
RET
|
||||||
|
;
|
||||||
|
; ;. [ ] 31/03/2024 subfunc 3 㦠«¨?
|
||||||
|
; K_RESET_BUFFER: DJNZ K_SETUP.ERROR
|
||||||
|
; LD A,R
|
||||||
|
; PUSH AF
|
||||||
|
; EI
|
||||||
|
; ;
|
||||||
|
; .Clear_loop: ; empty the buffer
|
||||||
|
; HALT
|
||||||
|
; IN A,(Z84.SIO.Ch_A.Data)
|
||||||
|
; IN A,(Z84.SIO.Ch_A.Ctrl)
|
||||||
|
; RRCA
|
||||||
|
; JR C,.Clear_loop
|
||||||
|
; ;
|
||||||
|
; DI
|
||||||
|
; POP AF
|
||||||
|
; JP PO,KBD_Receiver_Overrun.reset_errors
|
||||||
|
; EI
|
||||||
|
; JP KBD_Receiver_Overrun.reset_errors
|
||||||
|
;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;;;;;;;;
|
||||||
|
; K_SETUP: INC B
|
||||||
|
; DEC B
|
||||||
|
; JP Z,KEYMAP
|
||||||
|
; DEC B
|
||||||
|
; JP Z,K_SND_R
|
||||||
|
; DEC B
|
||||||
|
; JP Z,K_SND_W
|
||||||
|
; LD A,DSS_Error.sys.INVALID_ACCESS
|
||||||
|
; SCF
|
||||||
|
; RET
|
||||||
|
; ;
|
||||||
|
|
||||||
|
; K_SND_R: LD A,(SOUND_K)
|
||||||
|
; AND A
|
||||||
|
; RET
|
||||||
|
; ;
|
||||||
|
|
||||||
|
; K_SND_W: LD (SOUND_K),A
|
||||||
|
; AND A
|
||||||
|
; RET
|
||||||
|
; ;
|
||||||
|
|
||||||
|
|
||||||
|
; KEYMAP: LD BC,ENDNORM-NORMTAB
|
||||||
|
; BIT 7,A
|
||||||
|
; JR NZ,READMAP
|
||||||
|
; ;
|
||||||
|
; LD DE,NORMTAB
|
||||||
|
; OR A
|
||||||
|
; JR Z,.LTAB
|
||||||
|
; LD DE,SHIFTAB
|
||||||
|
; DEC A
|
||||||
|
; JR Z,.LTAB
|
||||||
|
; LD DE,CAPSTAB
|
||||||
|
; DEC A
|
||||||
|
; JR Z,.LTAB
|
||||||
|
; LD DE,SHF2TAB
|
||||||
|
; DEC A
|
||||||
|
; JR Z,.LTAB
|
||||||
|
; LD DE,NORMRUS
|
||||||
|
; DEC A
|
||||||
|
; JR Z,.LTAB
|
||||||
|
; LD DE,SHIFRUS
|
||||||
|
; DEC A
|
||||||
|
; JR Z,.LTAB
|
||||||
|
; LD DE,CAPSRUS
|
||||||
|
; DEC A
|
||||||
|
; JR Z,.LTAB
|
||||||
|
; LD DE,SHF2RUS
|
||||||
|
; DEC A
|
||||||
|
; JR Z,.LTAB
|
||||||
|
; ;
|
||||||
|
; XOR A ; ????? ¬®¦¥â âãâ ¤® .INVALID_COMMAND ?
|
||||||
|
; SCF
|
||||||
|
; RET
|
||||||
|
; ;
|
||||||
|
; .LTAB: LDIR
|
||||||
|
; XOR A
|
||||||
|
; RET
|
||||||
|
|
||||||
|
; READMAP: RES 7,A
|
||||||
|
; LD DE,NORMTAB
|
||||||
|
; OR A
|
||||||
|
; JR Z,.RTAB
|
||||||
|
; LD DE,SHIFTAB
|
||||||
|
; DEC A
|
||||||
|
; JR Z,.RTAB
|
||||||
|
; LD DE,CAPSTAB
|
||||||
|
; DEC A
|
||||||
|
; JR Z,.RTAB
|
||||||
|
; LD DE,SHF2TAB
|
||||||
|
; DEC A
|
||||||
|
; JR Z,.RTAB
|
||||||
|
; LD DE,NORMRUS
|
||||||
|
; DEC A
|
||||||
|
; JR Z,.RTAB
|
||||||
|
; LD DE,SHIFRUS
|
||||||
|
; DEC A
|
||||||
|
; JR Z,.RTAB
|
||||||
|
; LD DE,CAPSRUS
|
||||||
|
; DEC A
|
||||||
|
; JR Z,.RTAB
|
||||||
|
; LD DE,SHF2RUS
|
||||||
|
; DEC A
|
||||||
|
; JR Z,.RTAB
|
||||||
|
; XOR A ; ????? ¬®¦¥â âãâ ¤® .INVALID_COMMAND ?
|
||||||
|
; SCF
|
||||||
|
; RET
|
||||||
|
; ;
|
||||||
|
; .RTAB: EX DE,HL
|
||||||
|
; LDIR
|
||||||
|
; XOR A
|
||||||
|
; RET
|
||||||
|
; ;
|
||||||
|
;-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
BEEP: LD A,#10
|
BEEP: LD A,#10
|
||||||
OUT (ZX_Beeper),A
|
OUT (ZX_Beeper),A
|
||||||
@ -969,7 +1145,7 @@ KBD_Receiver_Overrun:
|
|||||||
RRCA
|
RRCA
|
||||||
JR C,KBD_Receiver_Overrun
|
JR C,KBD_Receiver_Overrun
|
||||||
; reg 0 - error reset
|
; reg 0 - error reset
|
||||||
LD A,%0011'0000
|
.reset_errors: LD A,%0011'0000
|
||||||
OUT (Z84.SIO.Ch_A.Ctrl),A
|
OUT (Z84.SIO.Ch_A.Ctrl),A
|
||||||
;!TEST SIO INT
|
;!TEST SIO INT
|
||||||
; reg 0 - return from int
|
; reg 0 - return from int
|
||||||
@ -980,11 +1156,17 @@ KBD_Receiver_Overrun:
|
|||||||
;
|
;
|
||||||
;!TODO ¯à¨ ¤¥â¥ªâ¥ ¯¥à¥¯®«¥¨ï ¡ãä¥à ¯à®æ áïâì ª« ¢¨è¨ ¨§ ¯®àâ #FE ᯥªâàã¬
|
;!TODO ¯à¨ ¤¥â¥ªâ¥ ¯¥à¥¯®«¥¨ï ¡ãä¥à ¯à®æ áïâì ª« ¢¨è¨ ¨§ ¯®àâ #FE ᯥªâàã¬
|
||||||
;
|
;
|
||||||
LD (IX+K_SHIFT),0
|
XOR A
|
||||||
LD (IX+KEYFLG),0
|
LD (KEYCTRL),A
|
||||||
;
|
LD (KEY_FLG),A
|
||||||
;AND A
|
;LD (UNCODE),A
|
||||||
RET
|
RET
|
||||||
|
; [x] ®¯ á ï åà¥ì
|
||||||
|
Break_Process: LD A,(TASK)
|
||||||
|
XOR 2 ; 2 - task of primary shell
|
||||||
|
RET Z
|
||||||
|
LD B,DSS_Error.sys.USER_ABORT
|
||||||
|
JP LEAVE
|
||||||
|
|
||||||
; `
|
; `
|
||||||
; 0
|
; 0
|
||||||
|
|||||||
@ -186,9 +186,9 @@ HDDRIVE INC C
|
|||||||
DEC C
|
DEC C
|
||||||
JP Z,GBPB_H ; c=4 get BPB
|
JP Z,GBPB_H ; c=4 get BPB
|
||||||
DEC C
|
DEC C
|
||||||
JP Z,READH ; c=5 input (誺平言 嵽芬桌恥)
|
JP Z,READH ; c=5 read (誺平言 嵽芬桌恥)
|
||||||
DEC C
|
DEC C
|
||||||
JP Z,WRITEH ; c=6 output (<28>祠摐 嵽芬桌恥)
|
JP Z,WRITEH ; c=6 write (<28>祠摐 嵽芬桌恥)
|
||||||
DEC C
|
DEC C
|
||||||
JP Z,REMOV_H ; c=7 Removable
|
JP Z,REMOV_H ; c=7 Removable
|
||||||
DEC C
|
DEC C
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
956
|
953
|
||||||
@ -11,13 +11,17 @@
|
|||||||
DEFINE COMPILE_UNUSED_CODE 0
|
DEFINE COMPILE_UNUSED_CODE 0
|
||||||
;
|
;
|
||||||
|
|
||||||
;
|
; MOUSE
|
||||||
DEFINE MOUSE_COM_BAUD 0 ; 1 - 2485, 2 - 4807, else - 1215 (default)
|
DEFINE MOUSE_COM_BAUD 0 ; 1 - 2485, 2 - 4807, else - 1215 (default)
|
||||||
DEFINE MOUSE_INT_ENABLED 0 ; INT from SIO ch. B
|
DEFINE MOUSE_INT_ENABLED 0 ; INT from SIO ch. B
|
||||||
;DEFINE MOUSE_READ_PORT_TIMEOUT 3072 ; Š®áâë«ìë© â ©¬- ãâ ®¦¨¤ ¨¥ ¡ ©â ®â ¬ë誨. <EFBFBD>à®áâ® ¥áâì ªà¨¢ë¥ ¯¥à¥å®¤¨ª¨
|
;DEFINE MOUSE_READ_PORT_TIMEOUT 3072 ; Š®áâë«ìë© â ©¬- ãâ ®¦¨¤ ¨¥ ¡ ©â ®â ¬ë誨. <EFBFBD>à®áâ® ¥áâì ªà¨¢ë¥ ¯¥à¥å®¤¨ª¨
|
||||||
;
|
|
||||||
|
; KEYBOARD
|
||||||
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.
|
DEFINE CHANGE_LANG_CTRL_SHIFT 1 ; [x] 0: Ctrl + Space, 1: Ctrl + Shift.
|
||||||
|
DEFINE BREAK_PROCESS_CODE #AC00 ; CTRL+C
|
||||||
|
DEFINE USE_E1_SCANCODE 0
|
||||||
|
DEFINE CLASSIC_CURSOR 0
|
||||||
;
|
;
|
||||||
|
|
||||||
;LD_DSK EQU 16 ; ¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ «®£¨ç¥áª¨å HDD ¤¨áª®¢ ¢ á¨á⥬¥
|
;LD_DSK EQU 16 ; ¬ ªá¨¬ «ì®¥ ª®«¨ç¥á⢮ «®£¨ç¥áª¨å HDD ¤¨áª®¢ ¢ á¨á⥬¥
|
||||||
@ -94,7 +98,6 @@ DSS_MAX_DRIVES_AMOUNT EQU 26
|
|||||||
DEFINE NeedSafePort_Y 1
|
DEFINE NeedSafePort_Y 1
|
||||||
DEFINE TABisSPACES 0
|
DEFINE TABisSPACES 0
|
||||||
DEFINE EnoughtOnly_LF 0
|
DEFINE EnoughtOnly_LF 0
|
||||||
DEFINE CLASSIC_CURSOR 0
|
|
||||||
DEFINE MINIMUM_BIOS_VERSION 2*256 + 55 ; version 2.55
|
DEFINE MINIMUM_BIOS_VERSION 2*256 + 55 ; version 2.55
|
||||||
DEFINE CHECK_DRIVE_CHANGE 1 ; 1 - â®à¬®§¥¥, ® ¡¥§®¯ ᥥ
|
DEFINE CHECK_DRIVE_CHANGE 1 ; 1 - â®à¬®§¥¥, ® ¡¥§®¯ ᥥ
|
||||||
;
|
;
|
||||||
|
|||||||
@ -222,7 +222,7 @@ cmd_dir:
|
|||||||
ld de,PRM2 ; ªã¤
|
ld de,PRM2 ; ªã¤
|
||||||
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
call ncopy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||||
; %3
|
; %3
|
||||||
ld hl,screen_path
|
ld hl,screen_path ; !FIXIT ¥á«¨ ¢¢¥á⨠"DIR gamez\*.*", â® ®â®¡à ¦ ¥¬ë© ¯ãâì ¢ § £®«®¢ª¥ ¡ã¤¥â ¥¢¥àë¬
|
||||||
ld de,PRM3 ; 16 ¡ãä¥à
|
ld de,PRM3 ; 16 ¡ãä¥à
|
||||||
CALL copy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
CALL copy_string ; ᪮¯¨à. áâபã (á ã«¥¬)
|
||||||
;
|
;
|
||||||
|
|||||||
@ -109,7 +109,7 @@ RUN_EXT: ex de,hl ;
|
|||||||
jp z,RUN_BAT ; ¢ë¯®«¨âì bat-ä ©« (batch.asm)
|
jp z,RUN_BAT ; ¢ë¯®«¨âì bat-ä ©« (batch.asm)
|
||||||
jr RUN_EXE ; ¢ë¯®«¨âì exe-ä ©«
|
jr RUN_EXE ; ¢ë¯®«¨âì exe-ä ©«
|
||||||
.NON_EXT:
|
.NON_EXT:
|
||||||
ld bc,0*256 + Dss.Exec ; § £à. ¨ ¢ë¯®«¨âì ¯à®£à ¬¬ã
|
ld bc,Dss.Exec ; § £à. ¨ ¢ë¯®«¨âì ¯à®£à ¬¬ã
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
;[x] 01/11/23 ;!TEST
|
;[x] 01/11/23 ;!TEST
|
||||||
PUSH AF
|
PUSH AF
|
||||||
@ -158,7 +158,7 @@ RUN_EXT: ex de,hl ;
|
|||||||
; ‚믮«¨âì exe-ä ©«
|
; ‚믮«¨âì exe-ä ©«
|
||||||
; hl=¨¬ï ä ©«
|
; hl=¨¬ï ä ©«
|
||||||
RUN_EXE:
|
RUN_EXE:
|
||||||
ld bc,0*256 + Dss.Exec ; § £à㧨âì ¯à®£à ¬¬ã, ¢ë¯®«¨âì ä ©«
|
ld bc,Dss.Exec ; § £à㧨âì ¯à®£à ¬¬ã, ¢ë¯®«¨âì ä ©«
|
||||||
RST ToDSS
|
RST ToDSS
|
||||||
|
|
||||||
;[x] 01/11/23 ;!TEST
|
;[x] 01/11/23 ;!TEST
|
||||||
|
|||||||
@ -10,7 +10,7 @@ print_err_message:
|
|||||||
ld bc,ERR0.Size ; à §¬¥à ¬ áᨢ
|
ld bc,ERR0.Size ; à §¬¥à ¬ áᨢ
|
||||||
call LCPIR ; ©â¨ áâபã
|
call LCPIR ; ©â¨ áâபã
|
||||||
call PRINTZ ; ä®à¬ â. ¢ë¢®¤ áâப¨
|
call PRINTZ ; ä®à¬ â. ¢ë¢®¤ áâப¨
|
||||||
call newline
|
; call newline
|
||||||
jp newline
|
jp newline
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1 +1 @@
|
|||||||
312
|
314
|
||||||
@ -1 +1 @@
|
|||||||
Subproject commit 3941b4176ff1c200fe0cca11bc5bbe7de1b69b68
|
Subproject commit 18c132c6e9b507cb92d2144f5497278f021a0292
|
||||||
Loading…
Reference in New Issue
Block a user