Core: -bug in ATTRIB with OPEN_FN.FM

This commit is contained in:
Anatoliy Belyanskiy committed 2024-05-03 05:01:10 +10:00
1 parent dbc5088978
commit 4083da9fa5
8 files changed
+72 -123

No files matched your search

+49 -43
View File
@@ -35,49 +35,55 @@ ATTRIB: ;!TEST Current Dir ;[x] 15/10/23
;LD A,B
;
RET
;
.B_1: DJNZ .B_2
;
.WRITE_FN: AND FAT_ATTR.NoVolID ; [x] 2/12/23 ä¨ªá ¤«ï volume ID
.WRITE: PUSH AF
XOR A
;!TEST ;[x] 16/11/23 optimize get attribute
LD (OPEN_FN.TMP),A
;
CALL .OPENATR ;R002
;!TEST ;[x] 16/11/23 optimize get attribute
CALL NC,OPEN_FN.FM
;
POP BC
RET C
SET 7,(IY+_sFM.ACCESS_MODE)
;RES 3,B ;CLEAR LABEL ATTR ;R003
LD (IY+_sFM.FS_REC.ATTRIBUT),B
PUSH BC
CALL CLOSE_FN
.error: POP BC
RET C
LD A,B
RET
;R002
; ¢ë室: ¥á«¨ CF = 0, â® DE = record index
;!TEST 9/11/23 record index
.OPENATR: ;!TEST ;[x] 16/11/23 optimize get attribute
;LD (OPEN.TMP),A ; à ¡. ï祩ª  (§¤¥áì  âਡãâ § ¯¨á¨)
;
CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
RET C
CALL MASK
RET C
LD A,FAT_ATTR.NoVolID
;!TEST ;[x] 16/11/23 optimize get attribute
JP SEARCH.Custom
;CALL SEARCH.Custom
;RET C ; § ¯¨áì ­¥ ­ ©¤¥­ 
;JP OPEN.FM ; ­  ¯®¨áª ᢮¡. ¤¥áªà¨¯â®à 
;
;
; [ ] ; !TODO ¤«ï ª®¬ ­¤ë LABEL ¢ Shell
; 1. ¯à®¢¥à¨âì çâ® ¢ HL 㪠§ ­  ⮫쪮 ¬¥âª  ¢ ª ¢ë窠å
; 2. ¥á«¨ ¬¥âª  ¡¥§ ­¥¤®¯ãá⨬ëå ᨬ¢®«®¢, â® ¤¥« ¥¬ ¥ñ ­¥
; ⮫쪮 ¢ BPB, ­® ¨ ­  ª®à­¥¢®¬ à §¤¥«¥, ¨­ ç¥ 㤠«ï¥¬ ­  ª®à­¥¢®¬
; 3. ®âªà뢠¥¬ âà¥¡ã¥¬ë© ¤¨áª ç¥à¥§ .force, ç⮡ á¡à®á¨âì ªíè¨
.B_2: DJNZ .error_fn
;
.error_fn: LD A,DSS_Error.sys.INVALID_FUNCTION
SCF
RET
;
.B_1: DJNZ .error_fn
.WRITE_FN:
AND FAT_ATTR.NoVolID ; [x] 2/12/23 ¢à¥¬¥­­ë© ä¨ªá ¤«ï volume ID
.WRITE: PUSH AF
XOR A
;!TEST ;[x] 16/11/23 optimize get attribute
LD (OPEN_FN.TMP),A
;
CALL .OPENATR ;R002
;!TEST ;[x] 16/11/23 optimize get attribute
CALL NC,OPEN_FN.FM
;
POP BC
RET C
SET 7,(IY+_sFM.ACCESS_MODE)
RES 3,B ;CLEAR LABEL ATTR ;R003 ;!HARDCODE attribute bit
LD (IY+_sFM.FS_REC.ATTRIBUT),B
PUSH BC
CALL CLOSE_FN
.error: POP BC
RET C
LD A,B
RET
;R002
.OPENATR:
;!TEST ;[x] 16/11/23 optimize get attribute
;LD (OPEN.TMP),A ; à ¡. ï祩ª  (§¤¥áì  âਡãâ § ¯¨á¨)
;
CALL GETWORD ; â¥áâ ­  ¤®¯ãáâ. ¨¬ï ¨ ­ áâà. ­  ¤¨áª
RET C
CALL MASK
RET C
LD A,FAT_ATTR.NoVolID
;!TEST ;[x] 16/11/23 optimize get attribute
JP SEARCH.Custom
;CALL SEARCH.Custom
;RET C ; § ¯¨áì ­¥ ­ ©¤¥­ 
;JP OPEN.FM ; ­  ¯®¨áª ᢮¡. ¤¥áªà¨¯â®à 
;
;
;R002
RET
+4 -4
View File
@@ -28,10 +28,10 @@ OPEN_FN: ;!TEST Current Dir ;[x] 15/10/23
RET C
.FILE: CALL SEARCH.File ; enter point from EXEC, CREATE
RET C
;!TEST 9/11/23 record index
PUSH DE ; á®å࠭塞 㪠§ â¥«ì ­  § ¯¨áì ¢ ª â «®£¥ FS (¯®«ã祭 ¨§ SEARCH)
;R002 ;
.FM: CALL GET_FM ; enter point from ATTRIB
;R002 ;!TEST 9/11/23 record index
.FM: PUSH DE ; á®å࠭塞 㪠§ â¥«ì ­  § ¯¨áì ¢ ª â «®£¥ FS (¯®«ã祭 ¨§ SEARCH)
;
CALL GET_FM ; enter point from ATTRIB
RET C
LD A,C
EX AF,AF'