-fixed 2 bugs with attributes and directories

This commit is contained in:
Anatoliy Belyanskiy 2024-01-09 00:06:14 +10:00
parent cc6ab20c6c
commit ec7682cf21
10 changed files with 52 additions and 123 deletions

View File

@ -1,14 +1,19 @@
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00 ; INPUT: HL - "C:\DIR1\DIR2\filename.ext",#00
; A - File attribute
; OUTPUT: A - FM ; OUTPUT: A - FM
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
CREATE_FN: CREATE_FN:
AND FAT_ATTR.NoVolID ; [x] 2/12/23 ¢à¥¬¥­­ë© ä¨ªá ¤«ï volume ID AND FAT_ATTR.NoVolID ; [x] 2/12/23 ¢à¥¬¥­­ë© ä¨ªá ¤«ï volume ID
CREATE: ;!TEST Current Dir ;[x] 15/10/23 CREATE: ;!TEST Current Dir ;[x] 15/10/23
PUSH HL PUSH HL
LD C,A
PUSH BC
CALL DIR_PATH_CHECK CALL DIR_PATH_CHECK
POP BC
POP HL POP HL
RET C RET C
LD A,C
; ;
CALL .Prepare CALL .Prepare
RET C RET C
@ -20,9 +25,13 @@ CREATE: ;!TEST Current Dir ;[x] 15/10/23
AND FAT_ATTR.NoVolID ; [x] 2/12/23 ¢à¥¬¥­­ë© ä¨ªá ¤«ï volume ID AND FAT_ATTR.NoVolID ; [x] 2/12/23 ¢à¥¬¥­­ë© ä¨ªá ¤«ï volume ID
.NEW: ;!TEST Current Dir ;[x] 15/10/23 .NEW: ;!TEST Current Dir ;[x] 15/10/23
PUSH HL PUSH HL
LD C,A
PUSH BC
CALL DIR_PATH_CHECK CALL DIR_PATH_CHECK
POP BC
POP HL POP HL
RET C RET C
LD A,C
; ;
CALL .Prepare CALL .Prepare
RET C RET C

View File

@ -15,11 +15,11 @@ OPEN_FN:;!TEST Current Dir ;[x] 15/10/23
CALL DIR_PATH_CHECK.forceCheck CALL DIR_PATH_CHECK.forceCheck
POP HL POP HL
RET C RET C
JR .start ;JR .start
;!FIXIT ᤥ« âì ª ª ¢ mkdir ¨«¨ rmdir? ;!FIXIT ᤥ« âì ª ª ¢ mkdir ¨«¨ rmdir?
;R008 ; ;R008 ;
;OPEN: ; ;OPEN: ;
LD (.TMP),A ; enter point from CREATE ;LD (.TMP),A ; enter point from CREATE
.start: CALL GETWORD .start: CALL GETWORD
RET C RET C
CALL MASK ; enter point from OPEN_FN CALL MASK ; enter point from OPEN_FN

View File

@ -441,7 +441,7 @@ ADRST10: ;DS 512 ;,0
;---------------------------------------------------------------------------------------------------------------------------------------------------------------; ;---------------------------------------------------------------------------------------------------------------------------------------------------------------;
;[INCLUDE] ;[INCLUDE]
;!TODO § ¬¥­¨âì ¯®-¬ ªá¨¬®¬ã ¢áñ ¢ KEYINTER.ASM ­  ¢ë§®¢ë ¡¨®á  ;!TODO § ¬¥­¨âì ¯®-¬ ªá¨¬®¬ã ¢áñ ¢ KEYINTER.ASM ­  ¢ë§®¢ë ¡¨®á 
INCLUDE "KEYINTER.ASM" ;!FIXIT ¨§-§  ¡ãä¥à  á ¢ëà ¢­¨¢ ­¨¥¬ align 256 ¢ ­ ç «¥ ¯à¨å®¤¨âáï ADRST10 ¤®¡¨¢ âì ­ã«ï¬¨ ¢ ª®­æ¥ INCLUDE "KEYINTER.ASM"
INCLUDE "VIDEO.ASM" INCLUDE "VIDEO.ASM"
INCLUDE "API.ASM" INCLUDE "API.ASM"
INCLUDE "DOS_Proc.asm" INCLUDE "DOS_Proc.asm"
@ -474,14 +474,9 @@ CurrentDirectory: DB '\'
.DEPTH: EQU DIRECTORY_PATH_LENGTH .DEPTH: EQU DIRECTORY_PATH_LENGTH
BLOCK CurrentDirectory.DEPTH,0 ; ­¥ .DEPTH-1 ç⮡ ¡ë« 0 ¢ ª®­æ¥ BLOCK CurrentDirectory.DEPTH,0 ; ­¥ .DEPTH-1 ç⮡ ¡ë« 0 ¢ ª®­æ¥
; ;
IF SAVE_PATH_CODE
WorkDirectory: DB '\' WorkDirectory: DB '\'
.DEPTH: EQU DIRECTORY_PATH_LENGTH .DEPTH: EQU DIRECTORY_PATH_LENGTH
BLOCK WorkDirectory.DEPTH,0 ; ­¥ .DEPTH-1 ç⮡ ¡ë« 0 ¢ ª®­æ¥ BLOCK WorkDirectory.DEPTH,0 ; ­¥ .DEPTH-1 ç⮡ ¡ë« 0 ¢ ª®­æ¥
ELSE
WorkDirectory EQU CurrentDirectory
.DEPTH EQU CurrentDirectory.DEPTH
ENDIF
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
; ;

View File

@ -388,19 +388,22 @@ LOADDIR:
WRT_HND: SET_PAGE_X DIRPAGE WRT_HND: SET_PAGE_X DIRPAGE
EX AF,AF' EX AF,AF'
; ;
LD IX,DIRPAGE.buffer ;LD IX,DIRPAGE.buffer
LD HL,DIRPAGE.buffer
;TEST 9/11/23 ;TEST 9/11/23
; EXX ; EXX
; LD DE,0 ; LD DE,0
; EXX ; EXX
; ;
.loop: LD A,(IX+00) LD BC,#0020
.loop: ;LD A,(IX+00)
LD A,(HL)
OR A OR A
JR Z,.WRT_HN2 JR Z,.WRT_HN2
CP #E5 CP #E5
JR Z,.WRT_HN2 JR Z,.WRT_HN2
LD BC,#0020 ;ADD IX,BC
ADD IX,BC ADD HL,BC
JR NC,.loop JR NC,.loop
; ;
EX AF,AF' EX AF,AF'
@ -409,8 +412,9 @@ WRT_HND: SET_PAGE_X DIRPAGE
SCF SCF
RET RET
.WRT_HN2: .WRT_HN2:
LD D,XH ;LD D,XH
LD E,XL ;LD E,XL
EX DE,HL
LD HL,HANDBUF LD HL,HANDBUF
LD BC,HANDBUF.SIZE LD BC,HANDBUF.SIZE
LDIR LDIR
@ -617,7 +621,7 @@ RD_BPB: LD C,SLOT3
LD (FatBuffer.DAT_FRM),HL LD (FatBuffer.DAT_FRM),HL
;!TODO ­¥ ¨á¯®«ì§ãîâáï §­ ç¥­¨ï ¢ëç¨á«ï¥¬ë¥ ¨ á®åà ­ï¥¬ë¥ ¢ FatBuffer ;!TODO ­¥ ¨á¯®«ì§ãîâáï §­ ç¥­¨ï ¢ëç¨á«ï¥¬ë¥ ¨ á®åà ­ï¥¬ë¥ ¢ FatBuffer
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
IF COMPILE_UNUSED_CODE ;IF COMPILE_UNUSED_CODE
;LD HL,0 ;LD HL,0
;LD H,B ; âãâ ¢ B ­®«ì ¤®«¦¥­ ¡ëâì ;LD H,B ; âãâ ¢ B ­®«ì ¤®«¦¥­ ¡ëâì
@ -654,7 +658,7 @@ RD_BPB: LD C,SLOT3
SBC HL,DE SBC HL,DE
JR NC,.loop4 JR NC,.loop4
LD (FatBuffer.C_P_B),A ; A - Clusters per bank (16k) LD (FatBuffer.C_P_B),A ; A - Clusters per bank (16k)
ENDIF ;ENDIF
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
LD HL,CORE_BUFFERS.BootSector.ID_FAT ;!!!!!   ¥á«¨ IY ¨á¯®«ì§ã¥âáï ¤«ï ¯¥à¥¬¥­­®£® BootSector, â® ¡ã¤¥â ¡ £  LD HL,CORE_BUFFERS.BootSector.ID_FAT ;!!!!!   ¥á«¨ IY ¨á¯®«ì§ã¥âáï ¤«ï ¯¥à¥¬¥­­®£® BootSector, â® ¡ã¤¥â ¡ £ 
@ -688,7 +692,7 @@ RD_BPB: LD C,SLOT3
;!TODO ­¥ ¨á¯®«ì§ãîâáï §­ ç¥­¨ï ¢ëç¨á«ï¥¬ë¥ ¨ á®åà ­ï¥¬ë¥ ¢ FatBuffer ;!TODO ­¥ ¨á¯®«ì§ãîâáï §­ ç¥­¨ï ¢ëç¨á«ï¥¬ë¥ ¨ á®åà ­ï¥¬ë¥ ¢ FatBuffer
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
IF COMPILE_UNUSED_CODE ;IF COMPILE_UNUSED_CODE
LD HL,0 LD HL,0
@ -702,7 +706,7 @@ RD_BPB: LD C,SLOT3
DEC A DEC A
JR NZ,.BPB_L1 JR NZ,.BPB_L1
LD (FatBuffer.S_X_H),HL LD (FatBuffer.S_X_H),HL
ENDIF ;ENDIF
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
LD DE,(FatBuffer.DAT_FRM) LD DE,(FatBuffer.DAT_FRM)

View File

@ -88,25 +88,6 @@ R_F_FAT:
JR Z,R_F_F12 JR Z,R_F_F12
; fat16, ¯à®áâ® ç¨â âì á«¥¤. ­®¬¥à ; fat16, ¯à®áâ® ç¨â âì á«¥¤. ­®¬¥à
R_F_F16: R_F_F16:
; LD A,H
; LD B,H
; ;AND #0F
; AND FAT_CACHE.Size_Mask_16
; LD H,A
; LD A,B
; ; A=A/16 ; A - BLOCK FAT (1 BLOCK = 8192 BYTES)
; DUP FAT_CACHE.Degree_16
; RRCA
; EDUP
; ;AND #0F
; AND FAT_CACHE.Part_Mask_16
; ;
; ADD HL,HL ; HL - FAT OFFSET (FROM CASH)
; LD BC,(FatCache) ; C - BLOCK FAT IN CASH
; CP C
; CALL NZ,READ_FAT ; A != C - READ NEW BLOCK FAT
; LD DE,FATPAGE.cache ; ­ ç «® ª¥è  FAT- 
; ADD HL,DE ; ­  ï祩ªã FAT
CALL GET_FAT16_CELL CALL GET_FAT16_CELL
LD E,(HL) ; ¯à®ç¨â âì ­®¬¥à ª« áâ¥à  LD E,(HL) ; ¯à®ç¨â âì ­®¬¥à ª« áâ¥à 
INC HL INC HL
@ -122,33 +103,6 @@ R_F_F16:
; ;
R_F_F12: R_F_F12:
CALL GET_FAT12_CELL CALL GET_FAT12_CELL
; LD D,H
; LD E,L
; RR H
; RR L ; ᤢ¨£ ¢¯à ¢® ç¥à¥§ CF
; PUSH AF ; á®åà. ä« £
; ADD HL,DE ; CLUSTER * 1.5
; ;
; ;!FIXIT ®¯â¨¬¨§¨à®¢ âì
; ;IF COMPILE_UNUSED_CODE
; LD A,H
; LD B,H
; AND #1F
; LD H,A
; LD A,B
; RLCA
; RLCA
; RLCA
; AND #07
; LD BC,(FatCache) ; C - BLOCK FAT IN CASH
; CP C
; CALL NZ,READ_FAT ; ¯à®ç¨â âì ¢ ª¥è 16 ᥪâ®à®¢ FAT- 
; ;ENDIF
; ;
; LD DE,FATPAGE.cache ; ­ ç «® ª¥è  FAT- 
; ADD HL,DE ; ­  ï祩ªã FAT
; POP AF ; ¢®ááâ. ä« £
LD E,(HL) LD E,(HL)
INC HL INC HL
LD D,(HL) LD D,(HL)
@ -249,38 +203,6 @@ W_T_F16:
; fat12 ; fat12
W_T_F12: ;!FIXIT ¯¥à¥¤¥« âì ­  ¯¥à¥¬¥­­ë¥ FAT_CACHE W_T_F12: ;!FIXIT ¯¥à¥¤¥« âì ­  ¯¥à¥¬¥­­ë¥ FAT_CACHE
PUSH DE PUSH DE
; LD D,H
; LD E,L
; ; ADD HL,HL
; ; ADD HL,DE
; ; RR H
; ; RR L ;CLUSTER * 1.5
; ; PUSH AF
; RR H
; RR L ; ᤢ¨£ ¢¯à ¢® ç¥à¥§ CF
; PUSH AF ; á®åà. ä« £
; ADD HL,DE ; CLUSTER * 1.5
; ;
; ;!FIXIT ®¯â¨¬¨§¨à®¢ âì
; ;IF COMPILE_UNUSED_CODE
; LD A,H
; LD B,H
; AND #1F
; LD H,A
; LD A,B
; RLCA
; RLCA
; RLCA
; AND #07
; LD BC,(FatCache) ; C - BLOCK FAT IN CASH
; CP C
; CALL NZ,READ_FAT ; ¯à®ç¨â âì ¢ ª¥è 16 ᥪâ®à®¢ FAT- 
; ;ENDIF
; ;
; LD DE,FATPAGE.cache
; ADD HL,DE
; POP AF
CALL GET_FAT12_CELL CALL GET_FAT12_CELL
POP DE POP DE
JR C,W_T_F01 ; ­®¬¥à ­¥çñâ­ë© JR C,W_T_F01 ; ­®¬¥à ­¥çñâ­ë©

View File

@ -909,34 +909,34 @@ REDY+1: LD A,#00
LD (REDY),A LD (REDY),A
RET RET
MODE_M DB #03 MODE_M: DB #03
PIX_X DW 160 PIX_X: DW 160
PIX_Y DW 128 PIX_Y: DW 128
MX DB #00 MX: DB #00
MY DB #00 MY: DB #00
MB DB #00 MB: DB #00
MB_OLD DB #00 ; !FIXIT - ­¥ ­ã¦­®? ;MB_OLD DB #00 ; !FIXIT - ­¥ ­ã¦­®?
MIN_X DW 0 MIN_X: DW 0
MAX_X DW 319 MAX_X: DW 319
MIN_Y DW 0 MIN_Y: DW 0
MAX_Y DW 255 MAX_Y: DW 255
SENSEXY SENSEXY:
SENSE_X DB 0 .X: DB 0
SENSE_Y DB 0 .Y: DB 0
XHOT_SP DW 0 XHOT_SP: DW 0
YHOT_SP DW 0 YHOT_SP: DW 0
ANDXORS DW #FF00 ANDXORS: DW #FF00
ANDXORA DW #FF77 ANDXORA: DW #FF77
M_XSIZE DB 10 M_XSIZE: DB 10
M_YSIZE DB 14 M_YSIZE: DB 14
SKIPXF DW 0 SKIPXF: DW 0
REALXS DW 0 REALXS: DW 0
REALYS DW 0 REALYS: DW 0
; Xx EQU #00 ; Xx EQU #00
; Ww EQU #FE ; Ww EQU #FE

View File

@ -163,7 +163,7 @@ BCD2HEX:
;!TODO hardware ;!TODO hardware
;----------------------------------------------------------------------; ;----------------------------------------------------------------------;
;!FIXIT ¯¥à¥¤¥« âì ¯® ¤®ª¥ ­  „ «« á ¨ § ¨áì ¢ ï祩ª¨ ç á®¢ ;!FIXIT ¯¥à¥¤¥« âì ¯® ¤®ª¥ ­  „ «« á ¨ § ¯¨áì ¢ ï祩ª¨ ç á®¢
; ‡ ¯¨áì ॣ¨áâ஢ CMOS ; ‡ ¯¨áì ॣ¨áâ஢ CMOS
; ¢å®¤: d=­®¬¥à ॣ¨áâà  ; ¢å®¤: d=­®¬¥à ॣ¨áâà 
WCMOS: CALL HEX2BCD WCMOS: CALL HEX2BCD

View File

@ -1 +1 @@
827 831

View File

@ -47,7 +47,6 @@ DSS_MAX_DRIVES_AMOUNT EQU 26
DEFINE TABisSPACES 0 DEFINE TABisSPACES 0
DEFINE EnoughtOnly_LF 0 DEFINE EnoughtOnly_LF 0
DEFINE CLASSIC_CURSOR 0 DEFINE CLASSIC_CURSOR 0
DEFINE SAVE_PATH_CODE 1
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 - â®à¬®§­¥¥, ­® ¡¥§®¯ á­¥¥
; ;

@ -1 +1 @@
Subproject commit 54298bfb52826572bda5ccd0609320a9418d08c9 Subproject commit a6dee8e17ae12b251f306290793a56a6b0dd5ae3