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